Цифровой термометр на микропроцессоре 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.