Смекни!
smekni.com

Разработка термометра с автоматическим контролем температуры на базе микроконтроллера AТ90S2313 (стр. 2 из 3)


1.3 Жидкокристаллический индикатор mt-10t7-7

Данный индикатор может отображать 10 знакомест с точкой. Любой сегмент любого знакоместа можно включать и выключать независимо от остальных сегментов.



Регистры данных в БИС делятся на две тетрады: SGx(L) и SGx(H). Запись данных в знакоместо производится за два такта: сначала в младшую тетраду, затем в старшую. Младшая тетрада отвечает за сегменты g, e, d, a, а старшая – за сегменты h, b, c, d. (см. рис.).


Запись Н вызывает высвечивание соответствующего сегмента, а запись L- его гашение.

Контрастность индикатора зависит от напряжения питания модуля. Управление контрастностью производится подключением внешнего резистора на вывод V0.

Rвнеш.=0 – МАХ контрастность.

Rвнеш.=¥(нет резистора) – MIN контрастность.


Описание интерфейса ЖКИ модуля

Сначала на шине выставляется адрес необходимого знакоместа, который фиксируется в регистре адреса при низком уровне на входе WRx (см.таблицу). Входы WR1 и ^WR2 защелкивают информацию, стоящую на шине, во внутренних регистрах статического типа. Внутри БИС эти входы объединены по схеме WR1 & ^WR2. Таким образом, информация запишется только при WR1 = “H” и ^WR2 = “L” одновременно. Такое решение осуществить функцию CS (выбор кристалла) при большом количестве модулей на шине, или если на шине имеются другие устройства.

При записи адреса знакоместа указатель тетрады сбрасывается в положение SGx(L). Запись данных производится в младшую тетраду при высоком уровне сигнала на входе А0 сигналом WRx. По этому же сигналу указатель тетрады данных переключается в положение SGx(H), сохраняя при этом тот же адрес знакоместа. Данные в старшую тетраду SGx(H) записываются аналогично младшей тетраде SGx(L). После записи второй тетрады содержимое регистра адрема инкрементируется и можно записывать данные в следующее знакоместо без записи адреса.

По адресу 0Fh расположен триггер блокировки шины. Запись в него DB0=”L” вызывает блокировку записи в БИС адресов и данных на 30 сигналов WRx. Разблокировка шины производится записью DB=”H” по адресу 0Fh.

После подачи питания содержимое регистров SGx не определено, поэтому при включении питания необходимо делать программную очистку регистров. Состояние триггера блокировки тоже не определено, поэтому перед началом вывода информации на индикатор необходимо произвести разблокировку шины. Разблокировка шины производится записью DB0=”H” по адресу 0Fh.



2. Схемы сопряжения (функциональная и принципиальная)

2.1 Структурная схема


2.2 Принципиальная схема

3. Алгоритм решения задачи





3. Разработка программы

Разработка программы производится на языке Assembler c параллельной отладкой средствами AVR Studio.

Вывод

В ходе данной курсовой работы был разработан цифровой регулятор температуры на базе термостата DS1620 и микроконтроллера AT90S2313 с рабочим диапазоном температур -55˚С до 125˚С. Поддерживается заданная температура с помощью двух исполнительных органов: «нагревателя» и «охладителя». Текущая температура, а также значение верхнего и нижнего значения температурного коридора отображается на ЖКИ в градусах по Цельсию с точностью 0,5˚С.

Список литературы.

1. Научно- технический журнал «Схемотехника» №2, 2001–2002 гг.

2. Пособие «Средства сопряжения с ПК»

3.Internet:

http://www.atmel.ru

http://www.telesys.users.ru

http://www.kulakov.ru

http://www.platan.ru

http://www.sensorsmag.com

http://www.ferrite.ru


Приложение: программа на языке Assembler

;*************************************************************************

;* Термостат на базе микроконтроллера AT90S2313 *

;* с использованием микросхемы термодатчика DS1620 *

;*************************************************************************

;*************************************************************************

;* Название: Цифровой регулятор температуры

;* Дата разработки: 20.06.02

;* Объект: AVR микроконтроллер AT90S2313 и термостат DS1620

;* Автор: Бендюк Максим Сергеевич

;*

;*

;*************************************************************************

.include "2313DEF.INC"

;***** Константы

.equ preset=192 ;T/C0 Preset constant (256-64)

.def result=r16 ;Result and intermediate data

.def temp=r16 ;временный регистр

.def temp1=r17 ;временный регистр

.def temp2=r18 ;временный регистр

.def temp3=r19 ;временный регистр

.def ramsize=r19 ;размер блока

.def tmode=r22 ;Регистр режима

.def key=r20 ;Регистр нажатой клавиши

.def keyc=r21 ;Счетчик для прграммы обработки нажатия клавиши

.def TMIN=r22 ;ячейка с содержимым минимальной температуры термостата

.def TMINL=r22 ;младший

.def TMINH=r23 ;старший

.def TMAX=r24 ;ячейка с содержимым максимальной температуры термостата

.def TMAXL=r24 ;младший

.def TMAXH=r25 ;старший

.def TNORM=r26 ;ячейка с содержимым текущей температуры термостата

.def TNORML=r26 ;младший

.def TNORMH=r27 ;старший

.equ DLCD=$66 ;стартовый адрес SRAM для буфера индикатора

;маладшая ячейка соответствует левому символу

;на дисплее

.def fbinL =r16;двоичное значение, младший байт

.def fbinH =r17;двоичное значение, старший байт

;биты портов

.equ K1 =3 ;бит первой кнопки

.equ K2 =4 ;бит второй кнопки

.equ K3 =5 ;бит третьей кнопки

.equ WR1 =5 ;бит WR1

.equ WR2 =6 ;бит WR2

.equ A0 =7 ;бит A0

.equ DQ =0 ;бит DQ канал данных термостата

.equ CLK =1 ;бит CLK канал синхронизации данных

;*************************************************************************

;*

;* PROGRAM START - программа начинает выполняться с этого места

;*

;*************************************************************************

.cseg

.org $0000

rjmp RESET;Reset handle

.org $0020

RETI

RETI

RETI

RETI

RETI

RETI

RETI

RETI

RETI

RETI

;*************************************************************************

; настройка констант

SETCONST:

ldi temp,20

mov TMINL,temp

ldi temp,0

mov TMINH,temp

ldi temp,25

mov TMAXL,temp

ldi temp,0

mov TMAXH,temp

ret

;*************************************************************************

; передача констант

OUTCONST:

mov temp,TMINl

mov temp1,TMINH

ldi temp2,2 ;запись нижней температуры

rcall TERMOUT2

mov temp,TMAXL

mov temp1,TMAXH

ldi temp2,1 ;запись нижней температуры

rcall TERMOUT2

ldi temp1,0xee ; инициализация термостата

rcall TERMOUT1

ret

;*************************************************************************

; Натройка портов ввода вывода

port_set:

ldi result,$ff ;PORTB настраивается на вывод

out DDRB,result ;для работы с индикатором

ldi result,$00 ;все биты устанавливаются в ноль

out PORTB,result;PORTD настраивается для работы

ldi result,0b01000011 ; с клавиатурой и

out DDRD,result ;микросхемой термометра

ldi result,0b11111001 ; с клавиатурой и

out PORTD,result ;микросхемой термометра

ret

;*************************************************************************

;* очистка буфера ЖКИ

CLRLCD:

ldi ramsize,10 ;очистка буфера индикатора

ldi temp,0

ldi ZH,high(DLCD)

ldi ZL,low(DLCD)

clrlcdloop:

st Z+,temp

dec ramsize

brne clrlcdloop ;если не закончили повторить

rjmp LCDOUT

;*************************************************************************

; Вывод содержимого буфера на индикатор

LCDOUT:

ldi temp,low(DLCD) ;установить Z как указатель на буфер

mov ZL,temp ;индикатора

ldi temp,high(DLCD)

mov ZH,temp

ldi ramsize,10

LCDOUT1:

mov temp,ramsize ;запись в индикатор адреса символа

andi temp,0b00001111