Цифровой термометр на микропроцессоре AVR-MEGA 128
Разработка программы, выполняющей измерение температуры на базе микроконтроллера АVR-Mega128, описание, отличительные особенности. Синтез структурной и электрической принципиальной схемы цифрового термометра. Разработка алгоритма работы микроконтроллера.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 12.04.2010 |
Размер файла | 824,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Министерство образования и науки Украины
Харьковский национальный университет радиоэлектроники
Кафедра: БМЕ
Курсовая работа
По курсу: “Цифровые устройства и микропроцессоры”
По теме:
“Цифровой термометр на микропроцессоре AVR - MEGA 128”
Выполнила:
ст. гр. ЛОЭТ - 06-1
Рыжова Л.А.
Проверил Бармин В.И.
Зач.кн. N7211113
Харьков 2009 г.
Техническое задание
Разработать программу для микроконтроллера АVR-Mega128, выполняющую измерение температуры (с помощью датчика температуры TMP-35) в режиме непрерывного преобразования (делитель частоты равен 32) и передающую значение температуры в ПЭВМ с помощью последовательного интерфейса RS232C.
Реферат
Пояснительная записка содержит: 35 страниц текста, 8 рисунков, 1 таблица список использованных материалов источников из 4 наименований.
Цель проекта - разработка программы, выполняющей измерение температуры на базе микроконтроллера АVR-Mega128.
В данном курсовом проекте была создана программа на базе микроконтроллера АVR-Mega128, позволяющая проводить непрерывные измерение температуры с помощью датчика ТМР-35. Измеренные значения температуры при необходимости можно передать для дальнейшей обработки в ПЭВМ через последовательный интерфейс RS232С
Ключевые слова: датчик температуры, микроконтроллер, последовательный интерфейс, цифровой термометр, алгоритм работы, регистр, память, адресация.
Содержание
Список используемых сокращений
Введение
1. Микроконтроллер AT MEGA128
1.1 Описание AT MEGA128
1.2 Отличительные особенности AT MEGA128
1.3 Назначение выводов
2. Синтез структурной схемы
3. Синтез электрической принципиальной схемы цифрового термометра
4. Разработка алгоритмов работы микроконтроллера
4.1 Основная программа работы микроконтроллера
4.2 Программа связи с компъютером
Заключение
Список источников информации
Примечание А (Основная программа работы микроконтроллерной системы)
Примечание Б (Программа связи с компьютером через COM ПОРТ)
Список используемых сокращений
АЛУ- арифметико-логическое устройство;
АЦП- аналогово- цифровой преобразователь;
МК - микроконтроллер;
ОЗУ - оперативное запоминающее устройство;
ПЗУ - постоянное запоминающее устройство;
ПЭВМ - персональная электронно-вычислительная машина;
Д - датчик температуры;
EEPROM - энергетически перепрограммируемая постоянная память данных.
Введение
Трудно представить современную микроэлектронику без такой важной составляющей как микроконтроллеры (МК). МК незаметно завоевал весь мир. Одно и то же устройство, которое раньше собиралось на традиционных элементах, будучи собрано с применением МК, становится проще, не требует регулировки и меньше по размерам. Кроме того с появлением МК появляются практически безграничные возможности по добавлению новых потребительских функций и возможностей к существующим устройствам [1-ст.10].
Мировая промышленность выпускает огромную номенклатуру МК. Одна из самых популярных серий универсальных МК- AVR, выпускаемые американской фирмой Atmel [1-ст.11].
Эти МК позволяют решить множество задач встроенных систем. Они отличаются от других распространенных в наше время микроконтроллеров большей скоростью работы, большей универсальностью. Кроме того, они очень легко программируются. Их можно перепрограммировать до 1000 раз, причем непосредственно в собранной схеме [2- ст. 9]. Интересной особенностью семейства МК является то, что система команд всего семейства совместима при переносе программы со слабого на более мощный микроконтроллер [2- ст. 11].
МК AVR обладают следующими достоинствами:
1. очень быстрая гарвардская RISC- архитектура загрузки и выполнения большинства инструкций в течении одного цикла тактового генератора;
2. программы содержаться в электрически программируемой постоянной памяти программ FLASH ROM;
3. очень большое потребление энергии и наличие нескольких режимов работы с пониженным энергопотреблением делает эти МК идеальными для применения в конструкциях, питающихся от батареек;
4. наличие дешевых и простых в использовании программных средств;
5. все МК имеют энергетически перепрограммируемую постоянную память данных EEPROM;
6. система команд МК изначально проектировалась с учетом особенностей языка программирования высокого уровня C, что в результате позволяет получать после компиляции программ на С гораздо более эффективный код, чем для других МК [2- ст. 10,11].
Таким образом, можно сделать вывод, что МК AVR вполне подходят для создания программы, которая производит непрерывное измерение температуры.
1. Микроконтроллер AT MEGA128
Для написания программы измерения температуры был задан МК типа AT MEGA128. Опишем этот МК.
1.1 Описание AT MEGA128
ATmega128 - маломощный 8-разр. КМОП микроконтроллер, основанный на расширенной AVR RISC-архитектуре. За счет выполнения большинства инструкций за один машинный цикл ATmega128 достигает производительности 1 млн. операций в секунду/МГц, что позволяет проектировщикам систем оптимизировать соотношение энергопотребления и быстродействия.
Ядро AVR сочетает богатый набор инструкций с 32 универсальными рабочими регистрами. Все 32 регистра непосредственно подключены к арифметико-логическому устройству (АЛУ), который позволяет указать два различных регистра в одной инструкции и выполнить ее за один цикл. Данная архитектура обладает большей эффективностью кода за счет достижения производительности в 10 раз выше по сравнению с обычными CISC-микроконтроллерами.
ATmega128 содержит следующие элементы: 128 кбайт внутрисистемно программируемой флэш-памяти с поддержкой чтения во время записи, 4 кбайт ЭСППЗУ, 4 кбайт статического ОЗУ, 53 линии универсального ввода-вывода, 32 универсальных рабочих регистра, счетчик реального времени (RTC), четыре гибких таймера-счетчика с режимами сравнения и ШИМ, 2 УСАПП, двухпроводной последовательный интерфейс ориентированный на передачу байт, 8-канальный 10-разр. АЦП с опциональным дифференциальным входом с программируемым коэффициентом усиления, программируемый сторожевой таймер с внутренним генератором, последовательный порт SPI, испытательный интерфейс JTAG совместимый со стандартом IEEE 1149.1, который также используется для доступа к встроенной системе отладке и для программирования, а также шесть программно выбираемых режимов уменьшения мощности. Режим холостого хода (Idle) останавливает ЦПУ, но при этом поддерживая работу статического ОЗУ, таймеров-счетчиков, SPI-порта и системы прерываний. Режим выключения (Powerdown) позволяет сохранить содержимое регистров, при остановленном генераторе и выключении встроенных функций до следующего прерывания или аппаратного сброса. В экономичном режиме (Power-save) асинхронный таймер продолжает работу, позволяя пользователю сохранить функцию счета времени в то время, когда остальная часть контроллера находится в состоянии сна. Режим снижения шумов АЦП (ADC Noise Reduction) останавливает ЦПУ и все модули ввода-вывода, кроме асинхронного таймера и АЦП для минимизации импульсных шумов в процессе преобразования АЦП. В дежурном режиме (Standby) кварцевый/резонаторный генератор продолжают работу, а остальная часть микроконтроллера находится в режиме сна. Данный режим характеризуется малой потребляемой мощностью, но при этом позволяет достичь самого быстрого возврата в рабочий режим. В расширенном дежурном режиме (Extended Standby) основной генератор и асинхронный таймер продолжают работать.
Микроконтроллер производится по технологии высокоплотной энергонезависимой памяти компании Atmel. Встроенная внутрисистемно программируемая флэш-память позволяет перепрограммировать память программ непосредственно внутри системы через последовательный интерфейс SPI с помощью простого программатора или с помощью автономной программы в загрузочном секторе. Загрузочная программа может использовать любой интерфейс для загрузки прикладной программы во флэш-память. Программа в загрузочном секторе продолжает работу в процессе обновления прикладной секции флэш-памяти, тем самым поддерживая двухоперационность: чтение во время записи. За счет сочетания 8-разр. RISC ЦПУ с внутрисистемно самопрограммируемой флэш-памятью в одной микросхеме ATmega128 является мощным микроконтроллером, позволяющим достичь высокой степени гибкости и эффективной стоимости при проектировании большинства приложений встроенного управления.
1.2 Отличительные особенности AT MEGA128
1. Высокопроизводительный, маломощный 8-разрядный AVR-микроконтроллер
2. Развитая RISC-архитектура: - 133 мощных инструкций, большинство из которых выполняются за один машинный цикл - 32 8-разр. регистров общего назначения + регистры управления встроенной периферией - Полностью статическая работа - Производительность до 16 млн. операций в секунду при тактовой частоте 16 МГц - Встроенное умножающее устройство выполняет умножение за 2 машинных цикла
3. Энергонезависимая память программ и данных - Износостойкость 128-ми кбайт внутрисистемно перепрограммируемой флэш-памяти: 1000 циклов запись/стирание - Опциональный загрузочный сектор с отдельной программируемой защитой
4. Внутрисистемное программирование встроенной загрузочной программой
5. Гарантированная двухоперационность: возможность чтения во время записи - Износостойкость 4 кбайт ЭСППЗУ: 100000 циклов запись/стирание - Встроенное статическое ОЗУ емкостью 4 кбайт - Опциональная возможность адресации внешней памяти размером до 64 кбайт - Программируемая защита кода программы - Интерфейс SPI для внутрисистемного программирования
6. Интерфейс JTAG (совместимость со стандартом IEEE 1149.1) - Граничное сканирование в соответствии со стандартом JTAG - Обширная поддержка функций встроенной отладки - Программирование флэш-памяти, ЭСППЗУ, бит конфигурации и защиты через интерфейс JTAG
7. Отличительные особенности периферийных устройств - Два 8-разр. таймера-счетчика с раздельными предделителями и режимами сравнения - Два расширенных 16-разр. таймера-счетчика с отдельными предделителями, режимами сравнения и режимами захвата - Счетчик реального времени с отдельным генератором - Два 8-разр. каналов ШИМ - 6 каналов ШИМ с программируемым разрешением от 2 до 16 разрядов - Модулятор выходов сравнения - 8 мультиплексированных каналов 10-разрядного аналогово-цифрового преобразования
ѕ 8 несимметричных каналов
ѕ 7 дифференциальных каналов
ѕ 2 дифференциальных канала с выборочным усилением из 1x, 10x и 200x
8. - Двухпроводной последовательный интерфейс, ориентированный не передачу данных в байтном формате - Два канала программируемых последовательных УСАПП - Последовательный интерфейс SPI с поддержкой режимов ведущий / подчиненный - Программируемый сторожевой таймер со встроенным генератором - Встроенный аналоговый компаратор
9. Специальные возможности микроконтроллера - Сброс при подаче питания и программируемая схема сброса при снижении напряжения питания - Встроенный калиброванный RC-генератор - Внешние и внутренние источники прерываний - Шесть режимов снижения энергопотребления: холостой ход (Idle), уменьшение шумов АЦП, экономичный (Power-save), выключение (Power-down), дежурный (Standby) и расширенный дежурный (Extended Standby) - Программный выбор тактовой частоты - Конфигурационный бит для перевода в режим совместимости с ATmega103 - Общее выключение подтягивающих резисторов на всех линиях портов ввода-вывода
10. Ввод-вывод и корпуса - 53 -программируемые линии ввода-вывода - 64-выв. корпус TQFP
11. Рабочие напряжения - 2.7 - 5.5 В для ATmega128L - 4.5 - 5.5В для ATmega128
12. Градации по быстродействию - 0 - 8 МГц для ATmega128L - 0 - 16 МГц для ATmega128
1.3 Назначение выводов
На рисунке 1.1 изображен корпус МК и приведено назначение выводов микроконтроллера. В скобках указана альтернативная функция вывода.
Микроконтроллер ATmega128 включает следующие функциональные блоки: - 8-разрядное арифметическо-логическое устройство (АЛУ);
- внутреннюю флэш-память программ объемом 128 Кбайт с возможностью внутрисистемного программирования через последовательный интерфейс;
- 32 регистра общего назначения;
- внутреннюю EEPROM память данных объемом 4 Кбайт;
- внутреннее ОЗУ данных объемом 4 Кбайт;
- 6 параллельных 8-разрядных портов;
- 4 программируемых таймера-счетчика;
- 10-разрядный 8-канальный АЦП и аналоговый компаратор;
- последовательные интерфейсы UART0, UART0, TWI и SPI;
- блоки прерывания и управления (включая сторожевой таймер).
Port A (PA7..PA). 8-разрядный двунаправленный порт. К выводам порта могут быть подключены встроенные нагрузочные резисторы (отдельно к каждому разряду). Выходные буферы обеспечивают ток 20 мА и способность прямо управлять светодиодным индикатором. При использовании выводов порта в качестве входов и установке внешнего сигнала в низкое состояние, ток будет вытекать только при подключенных встроенных нагрузочных резисторах. Порт А при наличии внешней памяти данных используется для организации мультиплексируемой шины адреса/данных.
Рис.1.1. Вид корпуса и обозначение выводов микроконтроллера ATmega128
Port B (PB7.PB0). 8-разрядный двунаправленный порт со встроенными нагрузочными резисторами. Выходные буферы обеспечивают ток 20 мА. При использовании выводов порта в качестве входов и установке внешнего сигнала в низкое состояние, ток будет вытекать только при подключенных встроенных нагрузочных резисторах. Порт В используется также при реализации специальных функций.
Port C (PC7.PC0). Порт С является 8-разрядным выходным портом. Выходные буферы обеспечивают ток 20 мА. Порт C при наличии внешней памяти данных используется для организации шины адреса.
Port D (PD7.PD0). 8-разрядный двунаправленный порт со встроенными нагрузочными резисторами. Выходные буферы обеспечивают ток 20 мА. При использовании выводов порта в качестве входов и установке внешнего сигнала в низкое состояние, ток будет вытекать только при подключенных встроенных нагрузочных резисторах. Порт D используется также при реализации специальных функций.
Port Е (PЕ7.PЕ0). 8-разрядный двунаправленный порт со встроенными нагрузочными резисторами. Выходные буферы обеспечивают ток 20 мА. При использовании выводов порта в качестве входов и установке внешнего сигнала в низкое состояние, вытекающий через них ток обеспечивается только при подключенных встроенных нагрузочных резисторах. Порт E используется также при реализации специальных функций.
Port F (PF7.PF0). 8-разрядный входной порт. Входы порта используются также как аналоговые входы аналого-цифрового преобразователя.
#RESET. Вход сброса. Для выполнения сброса необходимо удерживать низкий уровень на входе более 50 нс.
XTAL1, XTAL2. Вход и выход инвертирующего усилителя генератора тактовой частоты.
TOSC1, TOSC2. Вход и выход инвертирующего усилителя генератора таймера/счетчика.
#WR, #RD. Стробы записи и чтения внешней памяти данных.
ALE. Строб разрешения фиксации адреса внешней памяти. Строб ALE используется для фиксации младшего байта адреса с выводов AD0-AD7 в защелке адреса в течение первого цикла обращения. В течение второго цикла обращения выводы AD0-AD7 используются для передачи данных.
AVCC. Напряжение питания аналого-цифрового преобразователя. Вывод подсоединяется к VCC через низкочастотный фильтр.
AREF. Вход опорного напряжения для аналого-цифрового преобразователя. На этот вывод подается напряжение в диапазоне между AGND и AVCC.
AGND. Это вывод должен быть подсоединен к отдельной аналоговой земле, если она есть на плате. В ином случае вывод подсоединяется к общей земле.
#PEN. Вывод разрешения программирования через последовательный интерфейс. При удержании сигнала на этом выводе на низком уровне после включения питания, прибор переходит в режим программирования по последовательному каналу.
VСС, GND. Напряжение питания и земля [2-ст.7].
2. Синтез структурной схемы
На рисунке 2.1 представлена структурная схема для цифрового термометра.
Рисунок 2.1 - Структурная схема цифрового термометра
На рисунке 2.1 показаны датчик, микроконтроллер, кнопка, последовательный интерфейс RS232С и компьютер.
Микроконтроллер выполняет две основные функции:
1. производит циклический опрос датчика температуры и сохраняет в ОЗУ значения температуры, полученные от датчика в каждом цикле опроса температуры;
2. по требованию компьютера, микроконтроллер отсылает в компьютер значения температуры из ОЗУ от всех датчиков температуры.
Самую важную роль в работе цифрового термометра будет играть компьютер. Если микроконтроллер только производит измерение и сохранение температуры, то компьютер позволит получить и сохранить неограниченное количество значений температуры, но и произвести их статистический анализ значений температуры, а также вывести на экран полученные значения и проследить за их изменением во времени.
Связь с компьютером осуществляется с помощью последовательного интерфейса RS232С.
3. Синтез электрической принципиальной схемы цифрового термометра
На основании структурной схемы устройства была разработана электрическая принципиальная схема, которая представлена на рисунке 3.1.
Рисунок 3.1 - Схема цифрового термометра
Схема электрическая принципиальная цифрового термометра состоит из микроконтроллера AT MEGA128, датчика температуры ТМР-35, последовательного интерфейса RC232C, кварцевого резонатора ZQ1 устройства питания 5В. Элементы схемы подключаются непосредственно к микроконтроллеру через ограничивающие резисторы R1…R5.
R2 - Резистор типа МЛТ -0,125 - 1МОм ± 10 % ГОСТ 7113-77
R3…R5 - Резистор типа МЛТ -0,125 - 750 Ом ± 10 % ГОСТ 7113-77
На рис.3.2 представлена микросхема TMP35.
Рисунок 3.2- Микросхема TMP35
Датчики ряда TMP имеют зависимость выходного напряжения от температуры показанную на рисунке 3.3
Рисунок 3.3- зависимость выходного напряжения от температуры
ТМР35 обеспечивает выходное напряжение, линейно изменяющееся пропорционально температуре по шкале Цельсия. TMP35 не требует внешней калибровки обеспечивая типичную точность +/-10C при +250C и +/-20C в диапазоне -400C к +1250C. Низкое выходное сопротивление TMP35 и линейность выводного напряжения и отсутствие необходимости точной калибровки упрощает его подключение к электрической схеме терморегулятора, Аналого-цифровым преобразователя. Устройства питается по двухпроводной линии от источника напряжением от 2.7 V к 5.5 V. Питающий ток имеет величину значительно ниже 50мка, обеспечивая очень низкий саморазогрев -- меньше чем 0.10C в невозмущенной атмосфере. Кроме того, заложена функция отключения обеспечивающая снижение питающего тока до величины меньше чем 0.5мка. TMP35 работает при температуре от 100C до 1250C. Резисторы R12 и R13 ограничивают ток, проходящий через датчик [3].
К выводам микроконтроллера присоединяется микросхема DD1 типа MAX232C, которая позволяет производить обмен информацией с компьютером через последовательный интерфейс RS232C. Схема микросхемы показана на рисунке 3.3, основные параметры - в таблице 3.1 [4- ст.17].
Таблица 3.1
Основные параметры микросхемы MAX232C
Скорость (макс.),МБод |
0.12 |
|
Tx,шт |
2 |
|
Rx,шт |
2 |
|
Cap. Value,мкФ |
1 |
|
Cap.,шт |
4 |
|
VCC,В |
от 4.5 до 5.5 |
|
ICC,мА |
5 |
|
TA,°C |
от 0 до 70 |
|
Корпус |
DIP-16 SOIC-16 SOIC-16-Wide |
Рисунок 3.4- Микросхема MAX232C
Для этого задействованы выводы T1IN, T1OUT, R1IN, R1OUT. В соответствии с описанием микросхемы к выводам C1+, C1- и C2+, C2- подключаются конденсаторы С3, С4 емкостью 0,1 мкФ. Такие же конденсаторы С1, С2 для создания необходимых уровней питания подключаются к ножке 2 (Vs+) и к шине питания; к ножке 6 (Vs-) и к земле. Устройство можно подключить к компьютеру с помощью разъема XP1.
Для формирования правильного импульса сброса в момент включения питания к первой ножке (RESET) микроконтроллера подключена RC-цепочка на элементах:
R1 - Резистор типа МЛТ -0,125 - 10 кОм ± 10 % ГОСТ 7113-77
С7 - Конденсатор типа КМ-6-25В-0,1мкФ ±10% ОЖО.460.161ТУ
Эта цепь используется для задержки запуска микроконтроллера при включении питания, что нужно для его правильного запуска, а также для ручного перезапуска микроконтроллера нажатием на кнопку SB1. Цепь сброса по включению питания обеспечивает запрет включения процессора до тех пор, пока напряжение питания не достигнет безопасного уровня. После того, как напряжение питания достигнет уровня включения, процессор не включается до тех пор, пока встроенный таймер не обработает несколько периодов сторожевого таймера. Внешний сброс обрабатывается по низкому уровню на выходе RESET. Вывод должен удерживаться в низком состоянии, по крайней мере, два периода тактовой частоты. После снятия сигнала 0 с вывода RESET через некоторое время микроконтороллер запускается. Кроме того, для информирования пользователя о рабочем режиме к выводу 21 подключается светодиод VD1. Этот светодиод загорается, когда производится чтение значений расхода из АЦП. В остальное время светодиод не горит. Так как чтение значения расхода происходит непрерывно, кроме случаев прерывания вызванных для связи с компьютером, то светодиод мигает с периодом 0,8 мс. И перестает мигать в момент обмена информацией с компьютером.
К выводам 8 (XIN) и 8 (XOUT) микроконтроллера подсоединяется кварцевый резонатор ZQ1 с частотой 8 МГц. Для облегчения запуска тактового генератора необходимо подключение двух конденсаторов С6 и С7 типа КЛС-35В-33нф ±10% ОЖО.460.020ТУ.
Устройство получает питание от аккумулятора 5 В через сглаживающий С-фильтр, состоящий из конденсаторов С8 и С9 и стабилизатор напряжения.
С8- Конденсатор типа КМ-6-25В-510 пФ ±10% ОЖО.460.161ТУ
С9- Конденсатор типа К53-4-6В-0,33мкФ ±10% ОЖО.460.037ТУ
Стабилизатор напряжения включается между выходом выпрямителя и нагрузкой. Он выполнен на микросхеме DD2 типа КР142ЕН5А.
4. Разработка алгоритмов работы микроконтроллера
Программа работы микроконтроллера состоит из двух подпрограмм.
Первая подпрограмма - это основная программа работы микроконтроллера. В ней производится опрос датчика и сохранение полученных значений температуры в ОЗУ.
Вторая подпрограмма вызывается по прерыванию, когда через последовательный интерфейс RS232С приходит запрос от компьютера.
4.1 Основная программа работы микроконтроллера
Алгоритм программы приведен на рисунке 4.1.
Первым действием в программе производятся начальные установки микроконтроллера. В них устанавливается указатель стека на последнюю ячейку ОЗУ, исходное состояние каналов связи с датчиками температуры и UART, скорость обмена по UART, разрешаются прерывания от таймера/счетчика 0 и от UART, переписывается количество и индивидуальные адреса датчиков температуры из EEPROM в ОЗУ, в регистры записываются необходимые константы.
Когда начальные установки завершены, начинается часть программы, которая производит опрос датчика температуры. Она будет циклически повторяться, пока подводится питание к микроконтроллеру или пока не возникнет запрос на прерывание. Опрос датчиков температуры начинается с сигнала сброса на линии (блок 2 рисунок 4.1). Затем следует команда присвоения индивидуального адреса датчику температуры (блок 3 рисунок 4.1). Команда начала измерения температуры CONVERT T [44h] (блок 4, рисунок 4.1) разрешает преобразование значений температуры в цифровой вид для.
Аналого-цифровое преобразование значений температуры занимает время от 750 мс до 800 мс. Поэтому, чтобы получить правильное значение температуры, необходимо выждать паузу 800 мс (блок 4, рисунок 4.1). Пауза выдерживается с помощью таймера/счетчика0. Во время паузы можно совершать другие действия (например, произвести обмен данными с компьютером).
Рисунок 4.1 - Алгоритм основной программы
После паузы и ответного сигнала в блоке 6 производится чтение значения температуры и запись его в соответствующие ячейки ОЗУ (блок 7).
В блоке 8 производится ветвление программы: если продолжить измерение температуры, то осуществляется переход в начало программы, в противном случае - выход из программы.
4.2 Программа связи с компьютером
Программа связи с компьютером запускается по инициативе компьютера. Как только в последовательном интерфейсе появляются данные, в микроконтроллере устанавливается в единицу бит RXC в регистре USR. Установка этого бита приводит к возникновению прерывания, и, микроконтроллер переходит в под-программу обработки прерывания от UART. Алгоритм этой подпрограммы приведен на рисунке 4.2
произвести подключение нового датчика температуры. Эта команда позволяет узнать индивидуальный адрес датчика температуры. Для этого необходимо отсоединить от платы все датчики температуры и на их место установить датчик, чей адрес необходимо узнать. Для запуска команды достаточно первого байта данных, остальные не используются. Полученные восемь байт индивидуального адреса датчика температуры, хранятся в ОЗУ, начиная с адреса B1h. Чтобы получить этот адрес необходимо воспользоваться командой Read RAM с входными параметрами: первый байт - 88h, второй байт - B1h, третий байт - 08h.
Команда Write EEPROM [55h] позволяет записать данные, хранящиеся в ОЗУ, в EEPROM. Во втором байте данных содержится информация о том, начиная с какой ячейки ОЗУ нужно произвести запись в EEPROM. В третьем байте - сколько байт нужно записать в EEPROM. Эта команда используется для сохранения индивидуальных адресов датчиков температуры в EEPROM. При помощи Write EEPROM, можно изменить количество датчиков, изменив только первый байт в ОЗУ.
Рисунок 4.2 - Алгоритм связи с компьютером
Заключение
В данном проекте был разработан цифровой термометр, позволяющий снимать температуру, обрабатывать полученную информацию и выводить результат измерений в цифровом виде на компьютер с помощью последовательного интерфейса.
В ходе проектирования были разработаны структурная и принципиальная электрическая схемы, алгоритмы работы и текст программы для микроконтроллерной системы.
Таким образом, разработанный цифровой термометр является компактным, переносным устройством, дающим точную информацию об измеренной температуре.
Список источников информации
1. Белов А.В. Микроконтроллеры AVR в радиолюбительской практике.- СПб.: Наука и Техника, 2007.-352с.: ил.
2. Голубцов М.С., Кириченкова А.В. Микроконтроллеры AVR: от простого к сложному. Изд.2-е, испр. И доп. - М.: СОЛОН- Пресс, 2006. 304с.- (Серия «Библиотека инженера»).
3. http://pdfserv.maxim-ic.com/arpdf/DS18S20.pdf. Датчики для измерения температуры.
4. http://www.planar.ru/index.php?page=component_detail&id=11326
MAX220-MAX249 5-вольтовый, многоканальный приемо-передатчик линии RS-232
Приложение А
Основная программа работы микроконтроллерной системы
include"mega128def.inc"
определение переменных
definetemperatyra= r16
definework= r17
definehelp= r18
defineload tmr0= r0
definepresc tmr0= r1
описание микроконтроллера
//описание UART
equport uart=portd
equdir uart=ddrd
equpin uart=pind
equRxD=0x00
equTxD=0x01
// определение управляющих сигналов для MAX1241
define NSHDN PORTB.0;Команда начала измерения
define NCS PORTB.1;Контроль процесса преобразования и сбора информации
define DOUT PINB.6;Последовательный цифровой сигнал
//описание таймера Т0
equpre t0 64= 0x03
equload res0= 0x50
equpre t0 rslot= 0x01
cseg; начало сегмента кода
org 0; установка счетчика в значение 0
rjmpirqRESET
rjmpirqINT0
rjmpirqINT1
rjmpirqICP1
rjmpirqOC1
rjmpirqOVF1
rjmpirqOVF0
rjmpirqURXC
rjmpirqUDRE
rjmpirqUTXC
rjmpirqACI
irqRESET:
irqINT0:
irqINT1:
irqICP1:
irqOC1:
irqOVF1:
irqUDRE:
irqUTXC:
irqACI:
//установка указателя стека в крайнее положение
lditemperatyra, low(ramend)
outspl, temperatyra
//исходное состояние канала связи с АЦП
sbiport_ds18xx,ds18xx_
cbidir_ds18xx,ds18xx_
//исходное состояние выводов с UART
sbiport_uart,TxD_
sbidir_uart,TxD_
sbiport_uart,RxD_
cbidir_uart,RxD_
//исходное состояние светодиод не горит
sbi port ds18xx, led
sbi dir ds18xx, led
//установка параметров обмена:
//скорость обмена задается записью байта в UBR, значение байта зависит от кварцевого резонатора
//микроконтроллера и требуемой скорости обмена. Для резонатора 8 МГц и скорости 9600 значение равно 51=0x33
lditemperatyra,0x33
outubrr, temperatyra
//примем формат 8 бит данных с одним стоп-битом и разрешим работу uart на передачу
sbiucr,rxen
sbiucr,txen
sbiucr,rxcie
// разрешение прерываний от тамера 0
ldi temperatyra, 0x02
out timsk, temperatyra
//перезапись из EEPROM в ОЗУ
ldi zl, 0xС0;используется для работы с ОЗУ
ldi zh, 0x00
rd_eeprom:sbic eecr, eewe
rump rd_eeprom
out eear, temperatyra
sbi eecr, eere
in work, eedr
cbi eecr, eere
st z+, work
inc temperatyra
dec help
brne rd_eeprom
sei
//основная программа
ldi work, 0x00;адрес датчика
rcall w byte
ldi work, NSHDN; датчик готовится к передачи данных
rcall w byte
ldi help, 50; начало задержки 800 мс
long_pause: ldi temperatyra, 0x05; происходит ожидание, когда произойдет измерение температуры
dec help
brne long_pause; конец задержки
new data rd: cbi port ds18xx, led; зажеч светодиод
sbi dir ds18xx, led
rcall reset
ldi work, 0x00
rcall w byte
rcall w byte
ldd work, z+0 ;1
rcall w byte
ldd work, z+1 ;2
rcall w byte
ldd work, z+2 ;3
rcall w byte
ldd work, z+3; 4
rcall w byte
ldd work, z+4; 5
rcall w byte
ldd work, z+5; 6
rcall w byte
ldd work, z+6; 7
rcall w byte
ldd work, z+7; 8
rcall w byte
ldi work, DOUT; чтение из датчика
rcall w byte
rcall r byte
std y+0, work
rcall r byte
std y+1, work
adiw zl, 0x08
adiw yl, 0x02
sbi port ds18xx, led
sbi dir ds18xx, led
sleep
r byte:ldihelp,0x08; чтение байта
sei
next rbit:cbiport ds18xx,ds18xx
sbidir ds18xx,ds18xx
nop
nop
nop
nop
nop
sbiport ds18xx,ds18xx
cbidir ds18xx,ds18xx
dechelp; завершение чтения бита
brnenext rbit
sei
ret
w byte:ldihelp,0x08; запись байта
sei
next wbit:cbiport ds18xx,ds18xx
sbidir ds18xx,ds18xx
nop
nop
nop
rorwork
brccw 0 bit
sbiport ds18xx,ds18xx
cbidir ds18xx,ds18xx
w 0 bit:dechelp; завершение записи бита
brnenext wbit
sei
ret
импульс сброса на линии
reset:
cbiport ds18xx,ds18xx
sbidir ds18xx,ds18xx
ldit temperatyra,load res0
movload tmr0, temperatyra
lditemperatyra,pre t0 64
sei
movpresc tmr0, temperatyra
rcallpause
cli
sbiport ds18xx,ds18xx
cbidir ds18xx,ds18xx
sei
serwork
если датчик отсутствует - разряд ds18xx регистра work останется равным 1
ldihelp,0x20
next_test_sens:sei
lditemperatyra,255-15
movload tmr0, temperatyra
lditemperatyra,2*pre t0 rslot
movpresc tmr0, temperatyra
rcallpause
cli
intemperatyra,pin_ds18xx
andwork, temperatyra
dechelp
brnenext test sens
sei
ret
работа с линией требует довольно точного контроля временных интервалов. Для этого используем таймер 0. При необходимости отсчета временного интервала достаточно установить требуемые значения переменных load tmr0 и presc tmr0, а затем вызвать программу pause
pause:outtcnt0,load tmr0
outtccr0,presc tmr0
wait_pause:tstpresc_tmr0
brnewait_pause
ret
include "com.asm"
Приложение Б
Подпрограмма связи с компьютером через COM ПОРТ
define temperatyra _ua = r23
define work_ua = r24
define adr_ozu = r10
define col_byte = r11
define temperatyra _2 = r20
equ wr_com = 0x11
equ rd_com = 0x88
equ write_eeprom = 0x55
irqURXC: in work_ua, udr
cli; запрет на прерывание
mov temperatyra_ua, work_ua
rcall load_udr
ldi temperatyra_ 2, rd_com
eor temperatyra_ ua, temperatyra_ 2
breq rd_com_m; переход на выполнение команды чтения ОЗУ
mov temperatyra_ ua, work_ua
ldi temperatyra_ 2, wr_com
eor temperatyra_ ua, temperatyra_ 2
breq wr_com_m ; переход на выполнение команды записи в ОЗУ
mov temperatyra_ ua, work_ua
ldi temperatyra_2, write_eeprom
eor temperatyra _ua, temperatyra _2
breq write_eeprom_m ;запись в eeprom
to_reti: sei; разрешение прерывания
reti
// запуск подпрограммы, когда приходит команда чтения из ОЗУ от компьютора
rd_com_m: rcall rd_2com
pered_ozu: ld temperatyra_ ua, x+
nop
nop
nop
nop
rcall load_udr
dec col_byte
brne pered_ozu
rjmp to_reti
// запуск подпрограммы, когда приходит команда записи в ОЗУ от компьютора
wr_com_m: rcall rd_2com
new_wr: sbis usr, rxc
rjmpnew_wr; если пришел новый бит выполнить дальше
in temperatyra _ua, udr
st x+, temperatyra _ua
dec col_byte
brne new_wr
rjmp to_reti
write_eeprom_m: ldi temperatyra _ua, 0x51; команда записи в eeprom
ldi temperatyra _2, 0x00
ldi xl, 0x60
ldi xh, 0x00
wr_eeprom: sbic eecr, eewe
rjmp wr_eeprom
out eear, temperatyra _2
ld work_ua, x+
nop
nop
nop
nop
out eedr, work_ua
sbi eecr, eemwe
sbi eecr, eewe
inc temperatyra _2
dec temperatyra _ua
brne wr_eeprom
cbi eecr, eemwe
rjmp to_reti
rd_2com: sbis usr,rxc; если пришел новый бит выполнить дальше
rjmp rd_2com
in temperatyra_ua, udr
rcall load_udr
mov adr_ozu, temperatyra_ua
rd_com_2: sbis usr, rxc; если пришел новый бит выполнить дальше
rjmp rd_com_2
in temperatyra _ua, udr
rcall load_udr
mov col_byte, temperatyra _ua
mov xl, adr_ozu
ldi xh, 0x00
ret
load_udr: sbis usr,udre
rjmp load_udr
out udr, temperatyra_ _ua
end_transmit: sbis usr,txc
rjmp end_transmit; завершение передачи данных
ret
Подобные документы
Особенности разработки и алгоритм программы для микроконтроллера АVR-Mega 128, выполняющую измерение температуры с помощью датчика ТМР-35 в режиме непрерывного преобразования. Синтез и описание схемы электрической принципиальной цифрового термометра.
курсовая работа [891,0 K], добавлен 11.04.2010Функциональная спецификация и структурная схема электронных автомобильных часов-термометра-вольтметра. Разработка алгоритма работы и принципиальной электрической схемы. Получение прошивки программы для памяти микроконтроллера в результате ассеблирования.
курсовая работа [2,0 M], добавлен 26.12.2009Роль микроконтроллерных технологий в развитии микроэлектроники. Алгоритм разработки микропроцессорной системы термометр-часы на базе микроконтроллера PIC16F84A. Разработка схемы электрической принципиальной устройства и программы для микроконтроллера.
курсовая работа [584,1 K], добавлен 19.03.2012Проектирование цифрового термометра с возможностью отображения температуры на ЖК индикаторе. Аналитический обзор цифрового термометра. Схема включения микропроцессора, формирования тактовых импульсов. Разработка программного обеспечения микроконтроллера.
курсовая работа [671,4 K], добавлен 19.12.2010Методика проектирования, разработки, практической апробации цифрового регулятора температуры на базе микросхемы-термометра DS1620, который совмещает температурный датчик, схему управления и АЦП в одном кристалле, и микроконтроллера фирмы Atmel AT90S2313.
курсовая работа [755,6 K], добавлен 19.06.2010Изучение цифрового термометра DS18B20: диапазон измерений, уникальный код, блок-схема, особенности функционирования. Устройство и назначение микроконтроллера PIC16F84, его технические характеристики. Описание алгоритма работы термометра-термостата.
контрольная работа [2,5 M], добавлен 20.12.2012Построение структурной, функциональной и принципиальной схем электронного термометра на основе микроконтороллера, выбор элементной базы, оптимальной для реализации поставленных задач по диапазону характеристик, алгоритм работы системы и программный код.
курсовая работа [2,4 M], добавлен 27.12.2009Функциональная спецификация, описание объекта, структура системы и ресурсов микроконтроллера. Ассемблирование, программирование микроконтроллера и разработка алгоритма работы устройства, описание выбора элементной базы и работы принципиальной схемы.
курсовая работа [2,2 M], добавлен 02.01.2010Функциональная спецификация и структурная схема автомобильных вольтметра-термометра-часов. Описание ресурсов микроконтроллера, назначение выводов микросхемы. Ассемблирование и разработка алгоритма работы, коды кнопок и описание команд управления.
курсовая работа [2,0 M], добавлен 27.12.2009Разработка малогабаритного автомобильного термометра на базе микроконтроллера и требования к нему. Проектирование функциональной схемы, работа измерителя. Выбор элементной базы. Схема включения усилителя. Архитектура и элементы микроконтроллера.
контрольная работа [841,4 K], добавлен 22.05.2015