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 мм. Все отверстия на плате должны быть металлизированы.


Заключение

В данном курсовом проекте произведено проектирование цифрового термометра с возможностью отображения температуры на ЖК индикаторе. Данное устройство обладает высокой скоростью измерения, широким диапазоном измерения температуры.

Также имеет малые габариты, вес, и обладает низким энергопотреблением.


Информация о работе «Разработка измерителя температуры жидкости»
Раздел: Коммуникации и связь
Количество знаков с пробелами: 22190
Количество таблиц: 2
Количество изображений: 15

Похожие работы

Скачать
108151
12
8

... выхода Windows 2000 NTFS постепенно становится все более и более популярной. Основные отличия от FAT32 - неограниченный размер файлов (до 12 TBytes) и возможность управлять правами доступа к файлам и каталогам. 2. УСОВЕРШЕНСТВОВАНИЕ СИСТЕМЫ РЕГУЛИРОВКИ ТЕМПЕРАТУРЫ ЖЕСТКОГО ДИСКА Все знают, если у человека повышается температура выше 36.6 градусов, значит он заболел. То же можно сказать и о ...

Скачать
50697
10
15

... среды; ·    расчет разности температур; ·    автоотключение; ·    индикатор разряда батареи; ·    подсветка дисплея; ·    питание 9 В («Крона»). 2 ОБОСНОВАНИЕ СПОСОБА ПОСТРОЕНИЯ ФУНКЦИОНАЛЬНОЙ СХЕМЫ УСТРОЙСТВА   Функциональная схема устройства для измерения температуры в удаленных точках приведена на рис. 2.1. Устройство для измерения температуры в удаленных точках предназначенное для ...

Скачать
20825
2
30

... значительно облегчают процесс изучения контроллеров РІС и написание для них программ. В данном курсовом проекте реализована микропроцессорная система на базе микроконтроллера для терморегулятора аквариума. Проект основывается на микроконтроллере PIC16F84А. 1. Описание объекта и функциональная спецификация Устройство отличается от известных измерителей температуры на DS1820 возможностью ...

Скачать
123264
9
0

... 5 -7м ), что связано с увели­чением площади устоев. 2.3. Определение мощности и выбор электродвигателя для электро- механического привода двустворчатых ворот судоходного шлюза. Электроприводы основных механизмов судоходных гидротехнических сооружений являются ответственными элементами электрооборудования шлюзов. Несоответствие выбранного привода технологическому режиму, неполный счет факторов, ...

0 комментариев


Наверх