Курсовая работа: Цифровой термометр на микропроцессоре AVR-MEGA 128
Программирование МК осуществляется через разъем XP2.
4. Разработка алгоритма работы микроконтроллера
Программа работы микроконтроллера заключается в
следующем:
при нажатии кнопки RESET (SB1) производится непрерывный
(циклический) опрос датчика и сохранение полученных значений температуры в ОЗУ.
непрерывлый вывод полученных значений температуры на ЖКИ
индикатор (цифровое отображение информации на экране)
формирование сигнала предупреждения с помощью блока
светодиодов в случае выхода значения температуры за пределы 300С<Т<400С
(согласно техническому заданию).
Алгоритм программы приведен на рисунке 4.1.
Первым действием в программе производятся начальные
установки микроконтроллера. В них устанавливается указатель стека на последнюю
ячейку ОЗУ, исходное состояние каналов связи с датчиками температуры и UART,
скорость обмена по UART, разрешаются прерывания от таймера/счетчика0 и от UART,
переписывается количество и индивидуальные адреса датчиков температуры из
EEPROM в ОЗУ, в регистры записываются необходимые константы.
Когда начальные установки завершены, начинается часть
программы, которая производит опрос датчика температуры. Она будет циклически
повторятся, пока подводится питание к микроконтроллеру или пока не возникнет
запрос на прерывание. Опрос датчика температуры начинается с сигнала сброса на
линии (блок 2 рисунок 4.1) Затем следует команда игнорирования адреса датчика
температуры SKIP ROM [CCh].
Команда начала измерения температуры CONVERT T [44h]
(блок 4, рисунок 4.1) разрешает преобразование значений температуры в цифровой
вид для датчика.

Рисунок 4.1 – Алгоритм работы микроконтроллера
Аналого-цифровое преобразование значений температуры
занимает время от 750 мс до 800 мс. Поэтому, чтобы получить правильное значение
температуры, необходимо выждать паузу 800 мс (блок 5, рисунок 4.1). Пауза
выдерживается с помощью таймера/счетчика 0. Во время паузы можно совершать другие
действия (например, произвести обмен данными с компьютером или вывести
результаты на ЖКИ).
После паузы производится опрос датчика. Опрос датчика
начинается с сигнала сброса на линии связи с датчиком (блок 6, рисунок 4.1).
После сигнала сброса и ответного сигнала от датчика следует команда MATCH ROM
[55h]. Эта команда сообщает датчику, что после неё на линии связи будет
выставлен индивидуальный 64-х битовый адрес датчика. После того, как адрес
выставлен на линии, датчик температуры сравнивает выставленный адрес со своим
собственным адресом, и, после этого к работе с микроконтроллером датчик готов.
В блоке 7 производится чтение значения температуры и
запись его в соответствующие ячейки ОЗУ.
В блоке 8 производится ветвление программы: если измеренное
значение температуры не выходит за пределы 300С<Т<400С , то результат
выводится на экран ЖКИ (блок 9). Если же измеренное значение температуры
выходит за пределы диапазона, то загорятся световые индикаторы: VD1- если
температура меньше 30 0С или VD2 –если больше 400С (блок 10).
Если необходимо продолжать измерять температуру (блок
11), то переходят к блоку 4, если нет, то тогда происходит завершение
программы.
Программа работы микроконтроллера для измерения
температуры приведена в приложении А.
Заключение
В данном курсовом проекте был разработан цифровой
термометр, позволяющий снимать температуру датчиком температуры ТМР35,
обрабатывать полученную информацию и выводить результат измерений в цифровом
виде на экран ЖК индикатора. Также с помощью последовательного интерфейса
возможна их передача на экран персонального компьютера для получения и
сохранения неограниченного количество этих значений, проведения статистического
анализа и слежение за изменением температуры во времени для разных этапов измерения.
В ходе проектирования были разработаны структурная и
принципиальная электрическая схемы, алгоритм работ и текст программы для
микроконтроллерной системы.
Таким образом, разработанный цифровой термометр является
компактным, переносным устройством, дающим точную информацию о температуре, что
позволяет расширить возможности измерений.
Список источников информации
1.
Голубцов М.С., Кириченкова А.В. Микроконтроллеры AVR: от простого к сложному.
Изд.2-е, испр. И доп. – М.: СОЛОН- Пресс, 2006. 304с.- (Серия «Биб-лиотека
инженера»).
2. Китаев
Ю.В. Основы программирования микроконтроллеров AT MEGA128 и 68HC908. Учебное
пособие : СПб: СпбГУ ИТМО, 2007, 107с.
УДК
681.32
3. Low
Voltage Temperature Sensors. TMP35/TMP36/TMP37
4. http://pdfserv.maxim-ic.com/arpdf/DS18S20.pdf.
Датчики для измерения температуры.
5.
Температурные измерения. Справочник./ Геращенко О.А. Гордов А.Н., Еремина А.К.,
и др.; отрв. Ред. Геращенко О.А.; АН УССР Ин-т проблем энергосбережения. –
Киев: Наук. думка, 1989г. 704 с.
6. http://www.chip-dip.ru/product0/61922.aspx
Кнопки тактовые.
Приложение А
Текст программы
; Системные определения для 320 STK/EVK
TOOL SET 0 ; 0 = STK/EVK ОЗУ
; 1 = Симулятор
; 2 = Встроенное ПЗУ
STACK EQU 003DEH ; Указатель стека
RAM_ORIG EQU 00200H ; Начальный адрес памяти ОЗУ
ROM_ORIG EQU 0C100H ; Начальный адрес памяти ПЗУ
IF TOOL = 0
I_VECTORS EQU 003FFH ; Вектора прерываний в ОЗУ
MAIN EQU RAM_ORIG+20H ; Стартовый адрес программы в ОЗУ
BTLOAD EQU 035H ; Прерывания раз в 0,5 сек.
ELSEIF TOOL = 1
I_VECTORS EQU 0FFFFH ; Вектора прерываний в ПЗУ
MAIN EQU ROM_ORIG ; Стартовый адрес программы в ПЗУ
BTLOAD EQU 011H ; Частые прерывания (не 1 сек)
ELSE
I_VECTORS EQU 0FFFFH ; Вектора прерываний в ПЗУ
MAIN EQU ROM_ORIG ; Стартовый адрес программы в ПЗУ
BTLOAD EQU 035H ; Прерывания раз в 0,5 сек.
.ENDIF
; Определения для АЦП на базе модуля TIMER PORT
TPCTL EQU 04BH ;Рег.управ.модулем TIMER PORT (04BH)
TPSSEL0 EQU 040H ;Источник тактирования:0=CMP,
;1=ACLK (Бит 6 в TPCTL)
ENB EQU 020 ;Контроль сигнала EN1 в TPCNT1
;1(+ENA=1)=CMP (Бит 5 в TPCTL)
ENA EQU 010H ;Контроль сигнала EN1 в TPCNT1
;1(+ENB=1)=CMP (Бит 4 в TPCTL)
EN1 EQU 008H ;Сигнал ENABLE в TPCNT1 только
;для чтения (Бит 3 в TPCTL)
RC2F EQU 004H ;Флаг перепол.TPCNT2(Бит2в TPCTL)
EN1FG EQU 001H ;Флаг EN1 (Бит 0 в TPCTL)
TPIE EQU 004H ;Разреш.прерыв.от TIMER(Бит3вIE2)
TPCNT1 EQU 04CH ;Младший байт счётчика
TPCNT2 EQU 04DH ;Старший байт счётчика
TP EQU 04EH ;Регистр данных TP(0–5=Выход TP,
;6=CPON,7=B16=2x8 Бит или1x16Бит
B16 EQU 080H ;Раздел.тайм-ы(0)или один16-бит(1)
CPO EQU 040H ;Компаратор выкл (0) / вкл (1)
TPDMAX EQU 002H ;бит вых.TPD.MAX(2=Бит1=TPD.1)
TPE EQU 04FH ;Рег.разреш.выходов 0–5=биты разреш
.TPD (6–7=ист.тактир.TPCNT2)
MSTACK EQU 03D2H ;1-е слово стека результата
PRESET EQU 0E8H ;Предустановка TPCNT2 для заряда С
;счёт останавливается при
;переполнении TPCNT2, значение
;рассчитано на постоянную врем.6RC
; Определения управляющих регистров
IE1 EQU 0H ;Регистр разрешения прерываний 1
IE2 EQU 01H ;Регистр разрешения прерываний 2
P01IE EQU 08H ;Разрешение прерываний отP0.1в IE1
BTIE EQU 080H ;Разреш.прерыв.от BASIC TIMER в IE2
IFG1 EQU 02H ;Регистр флагов прерываний 1
IFG2 EQU 03H ;Регистр флагов прерываний 2
LCDCTL EQU 030H ;Регистр управления ЖКИ
LCDM1 EQU 031H ;Первая ячейка памяти ЖКИ
BTCTL EQU 040H ;Регистр управления BASIC TIMER
BTCNT1 EQU 0046H ;Счётчик 1 BASIC TIMER
BTCNT2 EQU 0047H ;Счётчик 2 BASIC TIMER
WDTCTL EQU 0120H ;Регистр управления WATCHDOG
WDTHOLD EQU 080H ;Маска останова WATCHDOG
WDT_KEY EQU 05A00H ;Ключ доступа к WATCHDOG
WDT_STOP EQU 05A80H ;WATCHDOG маска + ключ
GIE SET 8H ;Общее разрешение прерываний
CPUOFF SET 10H ;Бит выключения CPU
OSCOFF SET 20H ;Бит выключения генератора
SCG0 SET 40H ;Контр.сист.тактирования,бит0
SCG1 SET 80H ;Контр.сист.тактирования,бит1
LPM0 SET CPUOFF ;Биты установки режима LPM0
LPM1 SET SCG0+CPUOFF ;Биты установки режима LPM1
LPM2 SET SCG1+CPUOFF ;Биты установки режима LPM2
LPM3 SET SCG1+SCG0+CPUOFF ;Биты установки режима LPM3
LPM4 SET OSCOFF+CPUOFF ;Биты установки режима LPM4
; Служебные регистры для вычисления сопротивления датчика
MLTPLR_HW EQU R5
TEN_K EQU R6
BITTEST EQU R7
MRESLT_HW EQU R8
MRESLT_LW EQU R9
LPCNTR EQU R10
RESULT EQU R11
; Начало программы
SECT ”MAIN”,MAIN
RESET MOV #STACK,SP ;Инициализация указателя стека
; Конфигурация периферии
SETUP
SETUPINT MOV.B #P01IE,&IE1 ;Разреш.P0.1/UART для S232
MOV.B #BTIE+TPIE,&IE2 ;Разреш.прерыв.от B.TIMER,&TMR.PORT
CLR.B &IFG1 ; Очистить все флаги прерываний
CLR.B &IFG2
EINT ;Разрешить прерывания
SETUPWDT MOV #WDT_STOP,&WDTCTL ; Остановить WATCHDOG
TIMER
SETUPLCD MOV.B #0FFH,&LCDCTL ; ЖКИ STK, все сегменты,
4MUX
SETUPBT MOV.B #BTLOAD,&BTCTL ; Загруз.част.прерыв в
BASIC TIMER
CLR.B &BTCNT1 ; Очистить счётчик BT 1
CLR.B &BTCNT2 ; Очистить счётчик BT 2
CLEARLCD MOV #15,R6 ; Очистить 15 ячеек памяти ЖКИ
CLEAR1 MOV.B #0,LCDM1–1(R6) ; записав туда «0»
DEC R6 ; Вся памяти ЖКИ очищена?
JNZ CLEAR1 ; нет, чистим дальше
; Начало основной программы
BEGIN BIS #LPM3,SR ; Установить SR-биты для LPM3
;Подпрограмма измерения с запрещёнными прерываниями.
TP.2–.5 не
;используются поэтому переписаны. Используются только
TPD.0 & 1.
;Начальная инициализация: Указатель стека = 0, Начало с
TPD.1
Страницы: 1, 2, 3, 4 |