3.5 Инициализация и настройка ЖКИ
#include <tiny2313.h>
/*
#define LCD_E PORTC_Bit4
#define LCD_RW PORTC_Bit5
#define LCD_RS PORTC_Bit6
#define LCD_DATA PORTC
#define LCD_PIN PINC
#define LCD_DDR DDRC
*/
#define E PORTD.2
#define WR PORTD.1
#define RS PORTD.0
#define LCD_DATA PORTD
#define LCD_PIN PIND
#define LCD_DDR DDRD
#define CLRBIT(ADDR, BIT) (ADDR |= (1<<BIT))
#define SETBIT(ADDR, BIT) (ADDR &= ~(1<<BIT))
char ini_cmd[]={0x03,0x03,0x03,0x02,0x02,0x0d,0x00,0x0d,0x00,0x01,0x00,0x06};
//==================================
void Delay(int i) // программная задержка
{
while(--i>0x00);
}
//===============================
void SendDataToDisplay(unsigned char Data, unsigned char Mode)
{
//PORTB - 8bit Data
/*PORTD - PD0 - RS
PD1 - RW
PD2 - E */
CLRBIT(PORTD,E);
if (Mode)
SETBIT(PORTD,RS);
else
CLRBIT(PORTD,RS);
PORTB = Data;
CLRBIT(PORTD,WR);
SETBIT(PORTD,E);
Delay(4);
CLRBIT(PORTD,E);
}
//========================
void DisplayInit(void)
{
Delay(30);
SendDataToDisplay(0x30,1); //режим работы дисплея – ширина шины данных 8 бит
Delay(5);
SendDataToDisplay(0x30,1);
Delay(1);
SendDataToDisplay(0x30,1);
SendDataToDisplay(0x38,1); // шина данных 8 бит
//размер развертки 2 строки
//размер матр. Символов – 5х10
SendDataToDisplay(0x08,1); //выкл. Наличие изображения
SendDataToDisplay(1,1); //очистка экрана
SendDataToDisplay(0x6,1); //счетчик адреса настроить на увеличение
SendDataToDisplay(0xC,1); //вкл. изображение
}
unsigned char ReadDatafromDisplay(unsigned char Mode)
{
unsigned char a;
CLRBIT(PORTD, E);
if (Mode)
SETBIT(PORTD,RS);
else
CLRBIT(PORTD,RS);
DDRB &= 0x00; //установка порта на чтение
PORTB |= 0xFF;
Delay(4);
a = PORTB;
CLRBIT(PORTD,E);
return a;
}
3.6 Проектирование процедуры Main()
Процедура Main(), является основной исполняемой процедурой из которой начинается выполнение программы. Поэтому все действии нужно выполнять в этой процедуре.
В начале процедуры необходимо разместить вызовы процедур инициализации.
Опрос термометра производим постоянно в бесконечном цикле.
В остальное время отображение температуры на ЖК-индикаторе.
//== Main Procedure
void main(void)
{
int Cels1;
char Cels,Ready;
// unsigned int x;
Init();
InitTimers();
DisplayInit(); // lcd.c is needed!
while (1)
{
//--Virtual timer0 is used for LCD display--
if ((TmrFlag[0] & 0x02) != 0)
{
TmrFlag[0] &= ~(0x02);
{
unsigned char data;
data=CircBufGet();
while (data != 0)
{
SendDataToDisplay(data,0); // lcd.c is needed!
data=CircBufGet();
}
}
}
//--Virtual timer1 is used to read a keypad--
if ((TmrFlag[1] & 0x02) != 0)
{
TmrFlag[1] &= ~(0x02);
//Запустить измерение
DS1620Init();
DS1620WriteByte(0xee); //начать преобразование
//проверить готовность измерения
Ready = 0;
while (!Ready)
{
DS1620Init();
DS1620WriteByte(0xac); //read status
Cels = DS1620ReadByte();
if(Cels & 0x80)
{
Ready = 1;
}
else
{
Ready = 0;
}
}
//прочесть результат измерения
DS1620Init();
DS1620WriteByte(0xaa); //read temperature
Cels = DS1620ReadByte();
Cels1 = (int) Cels;
CircBufPut(Cels1);
}
}
}
//==Timer0 Interrupt Routine
interrupt [TIM0_OVF] void TIMER0_OVF_interrupt(void)
{
unsigned char i;
TCNT0=Tmr0_Reload;
for (i=0;i<2;i++)
{
if((TmrFlag[i] & 0x01) != 0) // If counting bit set - serve this timer!
{
if(TmrCnt[i]==0) // If counter is empry - serve this overflow!
{
TmrFlag[i] |= 0x02; // Set timer overflow bit
if(TmrFlag[i] & 0x80) // If Reload bit is set - reload this timer!
{
TmrCnt[i]=TmrPreLoad[i]; // Reload counter
}
else
{
TmrFlag[i] &= ~0x01; // Clear counting bit
}
}
else
{
TmrCnt[i]--;
}
}
}
}
4. Рекомендации по разработке программных и аппаратных диагностических средств для проверки работоспособности устройства
Данное устройство должно осуществлять измерение температуры. Для проверки рекомендуется использовать термостат.
Датчик термометра (DS1620) необходимо поместить в термостат и установить температуру активной зоны 20 °С. Произвести замер температуры по индикатору. Далее аналогичные действия произвести для температур 75°С и 125°С. Если показания отличаются от заданных то произвести расчет погрешности и внести корректировку в программу обработки температуры.
5. Проектирование печатной платы устройства
В пакет OrCAD входит программа Layout. Она позволяет производить разводку печатных плат, как в автоматическом режиме, так и в ручном.
Произведем разводку печатной платы нашего устройства. Для этого мы создадим схему в OrCADe.
Перед разводкой платы необходимо чтобы:
– не было «висячих» проводов;
– все выводы выходящие с платы подключены к разъемам.
В данной схеме не установлен выходной разъем на все исходящие выводы, в связи с тем, что данная схема является частью одного устройства и другие элементы не указаны на схеме.
В результате моделирования мы получили плату, приведенную в приложении Б. Ее следует изготовить из фольгированного стеклотекстолита толщиной 1…1.5 мм. Все отверстия на плате должны быть металлизированы.
Заключение
В данном курсовом проекте произведено проектирование цифрового термометра с возможностью отображения температуры на ЖК индикаторе. Данное устройство обладает высокой скоростью измерения, широким диапазоном измерения температуры.
Также имеет малые габариты, вес, и обладает низким энергопотреблением.
... выхода Windows 2000 NTFS постепенно становится все более и более популярной. Основные отличия от FAT32 - неограниченный размер файлов (до 12 TBytes) и возможность управлять правами доступа к файлам и каталогам. 2. УСОВЕРШЕНСТВОВАНИЕ СИСТЕМЫ РЕГУЛИРОВКИ ТЕМПЕРАТУРЫ ЖЕСТКОГО ДИСКА Все знают, если у человека повышается температура выше 36.6 градусов, значит он заболел. То же можно сказать и о ...
... среды; · расчет разности температур; · автоотключение; · индикатор разряда батареи; · подсветка дисплея; · питание 9 В («Крона»). 2 ОБОСНОВАНИЕ СПОСОБА ПОСТРОЕНИЯ ФУНКЦИОНАЛЬНОЙ СХЕМЫ УСТРОЙСТВА Функциональная схема устройства для измерения температуры в удаленных точках приведена на рис. 2.1. Устройство для измерения температуры в удаленных точках предназначенное для ...
... значительно облегчают процесс изучения контроллеров РІС и написание для них программ. В данном курсовом проекте реализована микропроцессорная система на базе микроконтроллера для терморегулятора аквариума. Проект основывается на микроконтроллере PIC16F84А. 1. Описание объекта и функциональная спецификация Устройство отличается от известных измерителей температуры на DS1820 возможностью ...
... 5 -7м ), что связано с увеличением площади устоев. 2.3. Определение мощности и выбор электродвигателя для электро- механического привода двустворчатых ворот судоходного шлюза. Электроприводы основных механизмов судоходных гидротехнических сооружений являются ответственными элементами электрооборудования шлюзов. Несоответствие выбранного привода технологическому режиму, неполный счет факторов, ...
0 комментариев