Разработать программу для микроконтроллера АVR-Mega128, выполняющую измерение температуры

Создание программы, позволяющей проводить непрерывные измерение температуры с помощью датчика ТМР-35 на базе микроконтроллера АVR-Mega128. Синтез электрической принципиальной схемы устройства, разработка алгоритмов его работы, связь с компьютером и ЖКИ.

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид курсовая работа
Язык русский
Дата добавления 12.04.2010
Размер файла 1,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Министерство образования и науки Украины

Харьковский национальный университет радиоэлектроники

Кафедра: БМЕ

Курсовая работа

По курсу: “Цифровые устройства и микропроцессоры”

По теме:

“Разработка программы для микроконтроллера АVR-Mega128, выполняющую измерение температуры”

Выполнила: Шилина И.В.

ст. гр. ЛОЭТ - 06-1

Проверил: Аврунин О.Г

Харьков 2009 г.

Задание

Разработать программу для микроконтроллера АVR-Mega128, выполняющую измерение температуры (с помощью датчика температуры TMP-35) в режиме одиночного преобразования (делитель частоты равен 16) и передающую значение температуры в ПЭВМ с помощью последовательного интерфейса RS232C.

РЕФЕРАТ

Пояснительная записка содержит: 37 страниц текста, 13 рисунков, список использованных литературы из 7 наименований, 1 приложение.

Цель проекта - разработка программы, выполняющей измерение температуры на базе микроконтроллера А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 Программа связи с компьютером

4.3 Программа вывода данных на ЖКИ

4.4 Программа работы клавиатуры

Заключение

Список источников информации

Примечание А. (Программа работы микроконтроллерной системы)

Список используемых сокращений

АЛУ - арифметико-логическое устройство;

АЦП - аналогово- цифровой преобразователь;

ЖКИ - Жидкокристаллический индикатор;

МК - микроконтроллер;

ОЗУ - оперативное запоминающее устройство;

ПЗУ - постоянное запоминающее устройство;

ПЭВМ - персональная электронно-вычислительная машина;

EEPROM - энергетически перепрограммируемая постоянная память данных.

Введение

AVR-микроконтроллеры в сочетании с датчиками позволяют создавать эффективные системы контроля в бытовой и промышленной технике. Их главные достоинства - универсальность, программная гибкость, возможность цифровой обработки данных и реализации сложных алгоритмов управления. Интеграция в одном корпусе большого количества периферийных устройств обеспечивает компактность и низкую стоимость приборов в условиях сжатых сроков разработки и постановки изделий на производство.

Однокристальная микро-ЭВМ (микроконтроллер) представляет собой, построенную вокруг микропроцессора вычислительную систему, которая выполнена на одном кристалле вместе с микропроцессором.

В данной работе используется микроконтроллер AТmega128 фирмы Atmel.

Микросхема выполнена в 40-выводном корпусе, что дает безусловный выигрыш. Таким образом, микроконтроллер имеет (4 внешних порта РА, РВ,РС и РD). Прибор обеспечивает производительность, приближающуюся к 1 МГц. Архитектура эффективно поддерживает как языки высокого уровня, так и программы на языке ассемблер. Микроконтроллер AТmega128 содержит:

4Кбайта загружаемого ПЗУ, 256 байтов СОЗУ дает возможность наращивать память данных, программируемый последовательный UART, программируемый сторожевой таймер и многое другое.

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

Высокопроизводительный, маломощный 8-разрядный AVR-микроконтроллер

Развитая RISC-архитектура:

- 133 мощных инструкций, большинство из которых выполняются за один машинный цикл

- 32 8-разр. регистров общего назначения + регистры управления встроенной периферией

- Полностью статическая работа

- Производительность до 16 млн. операций в секунду при тактовой частоте 16 МГц

- Встроенное умножающее устройство выполняет умножение за 2 машинных цикла

Энергонезависимая память программ и данных

- Износостойкость 128-ми кбайт внутрисистемно перепрограммируемой флэш-памяти: 1000 циклов запись/стирание

- Опциональный загрузочный сектор с отдельной программируемой защитой

Внутрисистемное программирование встроенной загрузочной программой

Гарантированная двухоперационность: возможность чтения во время записи

- Износостойкость 4 кбайт ЭСППЗУ: 100000 циклов запись/стирание

- Встроенное статическое ОЗУ емкостью 4 кбайт

- Опциональная возможность адресации внешней памяти размером до 64 кбайт

- Программируемая защита кода программы

- Интерфейс SPI для внутрисистемного программирования

Интерфейс JTAG (совместимость со стандартом IEEE 1149.1)

- Граничное сканирование в соответствии со стандартом JTAG

- Обширная поддержка функций встроенной отладки

- Программирование флэш-памяти, ЭСППЗУ, бит конфигурации и защиты через интерфейс JTAG

Отличительные особенности периферийных устройств

- Два 8-разр. таймера-счетчика с раздельными предделителями и режимами сравнения

- Два расширенных 16-разр. таймера-счетчика с отдельными предделителями, режимами сравнения и режимами захвата

- Счетчик реального времени с отдельным генератором

- Два 8-разр. каналов ШИМ

- 6 каналов ШИМ с программируемым разрешением от 2 до 16 разрядов

- Модулятор выходов сравнения

- 8 мультиплексированных каналов 10-разрядного аналогово-цифрового преобразования

ѕ 8 несимметричных каналов

ѕ 7 дифференциальных каналов

ѕ 2 дифференциальных канала с выборочным усилением из 1x, 10x и 200x

- Двухпроводной последовательный интерфейс, ориентированный не передачу данных в байтном формате

- Два канала программируемых последовательных УСАПП

- Последовательный интерфейс SPI с поддержкой режимов ведущий/подчиненный

- Программируемый сторожевой таймер со встроенным генератором

- Встроенный аналоговый компаратор

Специальные возможности микроконтроллера

- Сброс при подаче питания и программируемая схема сброса при снижении напряжения питания

- Встроенный калиброванный RC-генератор

- Внешние и внутренние источники прерываний

- Шесть режимов снижения энергопотребления: холостой ход (Idle), уменьшение шумов АЦП, экономичный (Power-save), выключение (Power-down), дежурный (Standby) и расширенный дежурный (Extended Standby)

- Программный выбор тактовой частоты

- Конфигурационный бит для перевода в режим совместимости с ATmega103

- Общее выключение подтягивающих резисторов на всех линиях портов ввода-вывода

Ввод-вывод и корпуса

- 53 -программируемые линии ввода-вывода

- 64-выв. корпус TQFP

Рабочие напряжения

- 2.7 - 5.5В для ATmega128L

- 4.5 - 5.5В для ATmega128

Градации по быстродействию

- 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;

- блоки прерывания и управления (включая сторожевой таймер).

Рис.1.1. Вид корпуса и обозначение выводов микроконтроллера ATmega128.

Port A (PA7.PA). 8-разрядный двунаправленный порт. К выводам порта могут быть подключены встроенные нагрузочные резисторы (отдельно к каждому разряду). Выходные буферы обеспечивают ток 20 мА и способность прямо управлять светодиодным индикатором. При использовании выводов порта в качестве входов и установке внешнего сигнала в низкое состояние, ток будет вытекать только при подключенных встроенных нагрузочных резисторах. Порт А при наличии внешней памяти данных используется для организации мультиплексируемой шины адреса/данных.

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. Синтез структурной схемы

Согласно заданию схема должна содержать следующие блоки:

1. Микроконтроллер - служит для управления всеми блоками данной схемы;

2. Датчик температуры;

3. Источник питания 5В;

4. Жидкокристаллический индикатор (ЖКИ);

5. Клавиатуру (по нажатию какой либо кнопки мы можем измерять температуру или просмотреть уже измеренную);

6. Последовательный интерфейс RS232C для связи с ПК- необходим для передачи полученных данных в персональный компьютер).

На рисунке 2.1. представлена структурная схема данного устройства.

Рисунок 2.1 - Структурная схема цифрового термометра

Микроконтроллер выполняет следующие функции:

1. производит непрерывный циклический опрос датчика температуры;

2. сохраняет в ОЗУ значения температуры, полученные от датчика в каждом цикле опроса температуры;

3. выводит результат на ЖКИ;

4. по требованию компьютера отсылает в компьютер значения температуры из ОЗУ.

3. Синтез электрической принципиальной схемы

На основании структурной схемы устройства была разработана электрическая принципиальная схема, которая представлена на рисунке 3.2.

Для измерения температуры был выбран датчик температуры TMP35 как датчик имеющий максимальную чувствительность, простоту подключения, простоту снятия показаний и обладающий достаточной точностью измерения 10С. ТМР35 обеспечивает выходное напряжение, линейно изменяющееся пропорционально температуре по шкале Цельсия.

На рис.3.1 представлена микросхема TMP35.

Рисунок 3.1- Микросхема TMP35

TMP35 не требует внешней калибровки обеспечивая типичную точность +/-10C при +250C и +/-20C в диапазоне -400C к +1250C. Низкое выходное сопротивление TMP35 и линейность выводного напряжения и отсутствие необходимости точной калибровки упрощает его подключение к электрической схеме терморегулятора, Аналого-цифровым преобразователя. Устройства питается по двухпроводной линии от источника напряжением от 2.7 V к 5.5 V. Питающий ток имеет величину значительно ниже 50мка, обеспечивая очень низкий саморазогрев -- меньше чем 0.10C в невозмущенной атмосфере. Кроме того, заложена функция отключения обеспечивающая снижение питающего тока до величины меньше чем 0.5мка. TMP35 работает при температуре от 100C до

1250C. К выводам датчика подключены ограничивающие резисторы R9 и R13 типа МЛТ -0,125 - 750 Ом ± 10 % ГОСТ 7113-77.

Рисунок 3.2 - Схема цифрового термометра

К выводам микроконтроллера присоединяется микросхема DD1 типа MAX232C, которая позволяет производить обмен информацией с компьютером через последовательный интерфейс RS232C. Схема микросхемы показана на рисунке 3.3 [4- ст.17].

Рисунок 3.3- Микросхема MAX232C

Для этого задействованы выводы T1IN, T1OUT, R1IN, R1OUT. В соответствии с описанием микросхемы к выводам C1+, C1- и C2+, C2- подключаются конденсаторы С3, С4 емкостью 0,1 мкФ. Такие же конденсаторы С1, С2 для создания необходимых уровней питания подключаются к ножке 2 (Vs+) и к шине питания; к ножке 6 (Vs-) и к земле. Устройство можно подключить к компьютеру с помощью разъема XP1.

Для формирования правильного импульса сброса в момент включения питания к выводе (RESET) МК подключена RC-цепочка на элементах:

R7 - Резистор типа МЛТ -0,125 - 10 кОм ± 10 % ГОСТ 7113-77

С7- Конденсатор типа КМ-6-25В-0,1мкФ ±10% ОЖО.460.161ТУ

Эта цепь используется для задержки запуска микроконтроллера при включении питания, что нужно для его правильного запуска, а также для ручного перезапуска микроконтроллера нажатием на кнопку SB1. Цепь сброса по включению питания обеспечивает запрет включения процессора до тех пор, пока напряжение питания не достигнет безопасного уровня. После того, как напряжение питания достигнет уровня включения, процессор не включается до тех пор, пока встроенный таймер не обработает несколько периодов сторожевого таймера. Внешний сброс обрабатывается по низкому уровню на выходе RESET. Вывод должен удерживаться в низком состоянии, по крайней мере, два периода тактовой частоты. После снятия сигнала 0 с вывода RESET через некоторое время микроконтороллер запускается. Кроме того, для информирования пользователя о рабочем режиме к выводу 21 подключается светодиод VD1. Этот светодиод загорается, когда производится чтение значений расхода из АЦП. В остальное время светодиод не горит. Так как чтение значения расхода происходит непрерывно, кроме случаев прерывания вызванных для связи с компьютером, то светодиод мигает с периодом 0,8 мс. И перестает мигать в момент обмена информацией с компьютером.

К выводам 35 и 36 (PС0, PС1) микроконтроллера с помощью ограничивающих резисторов R1 ? R4 подсоединяется выводами CLK и DI ЖКИ, выполненный на микросхеме НТ1613. Через ограничивающие резисторы R5, R6 к выводу VDD подводится напряжение питания от источника.

Резистор R1,R3,R5 - МЛТ -0,125 - 10 кОм ± 10 % ГОСТ 7113-77

Резистор R2,R4,R6 - МЛТ -0,125 - 3,3 кОм ± 10 % ГОСТ 7113-77

Внешний вид ЖКИ показан на рисунках 3.4 и УГО микросхемы на рис.3.5.

Рис. 3.4- Внешний вид ЖКИ

Рисунок 3.5- УГО Микросхемы НТ1613

Кварцевый резонатор ZQ1 с частотой 8 МГц подсоединяется к выводам 23 (XIN) и 24 (XOUT) микроконтроллера. Для облегчения запуска тактового генератора необходимо подключение двух конденсаторов С8 и С9 типа КЛС-35В-33нф ±10% ОЖО.460.020ТУ.

Устройство получает питание от аккумулятора 5 В через сглаживающий С-фильтр, состоящий из конденсаторов С5 и С6 и стабилизатор напряжения.

С5- Конденсатор типа КМ-6-25В-510 пФ ±10% ОЖО.460.161ТУ

С6- Конденсатор типа К53-4-6В-0,33мкФ ±10% ОЖО.460.037ТУ

Стабилизатор напряжения включается между выходом выпрямителя и нагрузкой. Он выполнен на микросхеме DD3 типа КР142ЕН5А.

4. Разработка алгоритмов

Программа работы микроконтроллера состоит из двух подпрограмм.

Первая подпрограмма - это основная программа работы микроконтроллера. В ней производится опрос датчика и сохранение полученных значений температуры в ОЗУ.

4.1 Основная программа работы микроконтроллера

Алгоритм программы приведен на рисунке 4.1.

Первым действием в программе производятся начальные установки микроконтроллера. В них устанавливается указатель стека на последнюю ячейку ОЗУ, исходное состояние каналов связи с датчикам температуры и UART, скорость обмена по UART (тактовая частота 125 кГц.), разрешаются прерывания от таймера/счетчика0 и от UART, переписывается количество и индивидуальные адреса датчиков температуры из EEPROM в ОЗУ, в регистры записываются необходимые константы.

Когда начальные установки завершены, начинается часть программы, которая производит опрос датчика температуры. Она будет циклически повторятся, пока подводится питание к микроконтроллеру или пока не возникнет запрос на прерывание.

Аналого-цифровое преобразование значений температуры занимает время от 750 мс до 800 мс. Поэтому, чтобы получить правильное значение температуры, необходимо выждать паузу 800 мс (блок 2, рисунок 4.1). Пауза выдерживается с помощью таймера/счетчика 0. Во время паузы можно совершать другие действия (например, произвести обмен данными с компьютером или вывести результат на ЖКИ).

После паузы и ответного сигнала в блоке 3 производится чтение значения температуры и запись его в соответствующие ячейки ОЗУ (блок 4).

В блоке 5 производится ветвление программы: если продолжить измерение температуры, то осуществляется переход в начало программы, в противном случае - выход из программы.

Рисунок 4.1 - Алгоритм основной программы

4.2 Программа связи с компьютером

Вторая подпрограмма вызывается по прерыванию, когда через последовательный интерфейс RS232С приходит запрос от компьютера.

Программа связи с компьютером запускается по инициативе компьютера. Как только в последовательном интерфейсе появляются данные, в микроконтроллере устанавливается в единицу бит RXC в регистре USR. Установка этого бита приводит к возникновению прерывания, и, микроконтроллер переходит в подпрограмму обработки прерывания от UART. Алгоритм этой подпрограммы приведен на рисунке 4.2.

Первым байтом следует байт команды. Микроконтроллер может различить три команды: Write RAM, Read RAM, Write EEPROM (Блоки 3, 4, 5). Если код команды, пришедший из компьютера, неизвестен микроконтроллеру, то он игнорирует эту команду и выходит из программы обработки прерывания. Второй байт содержит адрес ОЗУ, с которым будет работать микроконтроллер. В третьем байте содержится информация о количестве ячеек ОЗУ, которые будут обрабатываться микроконтроллером.

Рисунок 4.2 - Алгоритм связи с компьютером

Данные, пришедшие от компьютера должны иметь определенную структуру представленную на рисунке 4.3.

Рисунок 4.3 - Структура данных, поступающих от компьютера

Команда Write RAM записывает данные в ОЗУ. Эта команда дожидается второго байта данных, в котором содержится адрес ячейки ОЗУ, куда следует записать данные. В третьем байте данных содержится информация о количестве байт, которые необходимо записать в ОЗУ. Далее из компьютера передается массив данных, которые необходимо сохранить в ОЗУ.

Команда Read RAM производит чтение данных из ОЗУ и пересылает их в компьютер. Для этой команды второй байт данных содержит информацию о ячейке ОЗУ, с которой будет производиться чтение данных. В третьем байте данных содержится информация о количестве байт, которые необходимо прочесть из ОЗУ.

Команда Write EEPROM позволяет записать данные, хранящиеся в ОЗУ, в EEPROM. Во втором байте данных содержится информация о том, начиная с ка-кой ячейки ОЗУ нужно произвести запись в EEPROM. В третьем байте - сколько байт нужно записать в EEPROM.

4.3 Программа вывода данных на ЖКИ

Для того чтобы загрузить индикатор, нужно сформировать строб записи. Поэтому потребуются две последовательные загрузки регистра одними и теми же битами данных и с противоположными значениями сигнала записи. Это несколько замедляет загрузку, но, учитывая то, что сдвиговый регистр имеет высокое быстродействие, загружать его можно с высокой скоростью, не используя программных задержек.

Алгоритм работы программы вывода данных на ЖКИ показан на рис. 4.4

Рис. 4.4- Алгоритм вывода данных на ЖКИ

Когда модуль находится в режиме отображения реального времени, нажатие кнопки TMR переводит его в режим секундомера. Как и в режиме таймера, кнопкой TMR можно сбросить его значение, запустив счет с нуля, или включить режим удержания показаний. Если в режиме удержания показаний модуль находится 5 сек, то происходит автоматический переход в режим отображения реального времени. Все кнопки подключаются между соответствующими выводами модуля и выводом питания.

При использовании модуля в микроконтроллерной системе для отображения загружаемых по последовательной шине символов, требуется соединить вывод HK с общим проводом, а выводы 12/24, S1, S2 и TMR оставить свободными. Данные подаются на линию DI и защелкиваются по спаду тактовых импульсов на линии SK. Символы отображаются в крайней правой позиции, уже имеющиеся на индикаторе символы сдвигаются влево. После того, как все необходимые данные переданы, линию SK следует оставить в состоянии низкого логического уровня, чтобы предотвратить автоматический переход модуля в режим отображения значения таймера.

Каждый символ на ЖКИ кодируется 4-мя битами, поэтому всего имеется 16 символов (см. рис. 4.5)

Рис. 4.5-Таблица знакогенератора

4.4 Программа работы клавиатуры

Рис. 4.6.- Алгоритм работы клавиатуры

Заключение

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

В ходе создания программного продукта были разработаны структурная и принципиальная электрическая схемы, алгоритмы работы и текст программы для микроконтроллера.

Разработанный прибор позволяет измерять температуру в одной точке. Он является компактным переносным устройством. Его применение не требует большого объема работ и больших затрат.

Список источников информации

1. Белов А.В. Микроконтроллеры AVR в радиолюбительской практике.- СПб.: Наука и Техника, 2007.-352с.: ил.

2. Голубцов М.С., Кириченкова А.В. Микроконтроллеры AVR: от простого к сложному. Изд.2-е, испр. И доп. - М.: СОЛОН- Пресс, 2006. 304с.- (Серия «Библиотека инженера»).

3. Современные микроконтроллеры: Архитектура, средства проектирования,

примеры применения, ресурсы сети Интернет. "Телесистемы". Под. ред.

Коршуна И.В.; Составление пер. с англ. и литературная обработка

Горбунова Б.Б. М: Изд. "Аким", 1998. 272 С: ил.

4. Сорокин А.Д. Датчики для измерения температуры, февраль 2007 года

5. http://www.planar.ru/index.php?page=component_detail&id=11326

6. MAX220-MAX249 5-вольтовый, многоканальный приемо-передатчик линии RS-232

7. Андрей Крикливый. Цифровой термометр.

Приложение А

Программа работы микроконтроллерной системы

Начальные установки

initlcd:

rcall del

ldi r25,30h

rcall icom

rcall del

ldi r25,30h

rcall icom

rcall del

ldi r25,30h

rcall icom

ldi r25,38h; устанавливаем разрядность шины данных=8,

количество строк =2, шрифт 5х7 точек

rcall icom

ldi r25,08h; включить дисплей, зажечь курсор

rcall icom

ldi r25,01h; очистить дисплей и установить курсор в нулевую позицию

rcall icom

ldi r25,06h; устанавливаем направление сдвига курсор вправо, запретить

сдвиг дисплея вместе со сдвигом курсора

rcall icom

ret

del:

ldi r17,150;задержка ~15 ms при кварце 4 МГц

l: ldi r18,200;

l1: dec r18;

brne l1;

dec r17;

brne l;

ret

icom:

in r0,portA

sbi r0,2; установит RS в 1

out portA,r0

in r0,portA

сbi r0,1; установит W/R в 0

out portA,r0

in r0,portA

sbi r0,0; установит Е в 1

out portC,r0

out portB,r25;записать в ЖКИ команду из регистра r25

in r0,portA

cbi r0,0;сбросить Е в 0

out portA,r0

in r0,portA

sbi r0,1; установит W/R в 1

out portA,r0

ret

Основная программа

include "Atmega128.inc"

def flag=r1

def flagszap =0

def flagklav =1

def flagsbr =2

def flagvyvod =3

def flagdan =4

def flagpr =5

def tmp=r20

cseg

org 0H

rjmp main

main:

rcall init; инициализация контроллера

rcall initlcd; инициализация ЖКИ

rcall priglashenie; программа выдачи начального приглашения

m1:

in r30,PinC; программа опроса клавиатуры и флагов

ldi r31,FEh

cp r30,r31;если равно, то переходим на подпрограмму ввода

rcall vvod

ldi r31,FDh

cp r30,r31;если равно, то переходим на подпрограмму вывода

rcall vyvod

ldi r31,7Fh

cp r30,r31;если равно, то переходим на подпрограмму сброса

rcall sbros

sbrc USR,RxC; проверяем если бит USR,RxC=1, то переходим на подпрограмму приема данных от компьютера, если не равен то пропускаем следующую команду

rcall priem; подпрограмма приема данных, после своего окончания работы она скидывает флаг USR,RxC

sbrs flagdan; проверяем если 0, то переход на m2, если нет, то пропускаем следующую команду

rjmp m2

sbrs flagpr

rjmp m2

rcall outdan; подпрограмма выдачи данных на компьютер, после выполнения выдачи данных сбрасывает флаг данных и приемника

m2:

rjmp m1

init:

ldi r31,ramend; указываем стек

out SPL,r31

ldi r31,ffh; порт B настроить на вывод

out ddrb,r31

ldi r31, 00h; порт C настроить на ввод

out DDRС, r31

ldi r31,FFh; подключаем резисторы

out PortС, r31

ldi tmp,00011101; инициализация UART

out UCR,tmp;

ldi tmp,25;9600 бит/сек при fclk=4МГц

out UBBR,tmp; инициализация встроенного АЦП

set ADCSR.ADEN;разрешаем работу АЦП

set ADCSR.ADFR;устанавливаем режим циклического преобразования

ldi ADPS,05H;устанавливаем тактовую частоту 125 KHz при внешнем кварце 4MHz

ret

icom:

in r0,portA

sbi r0,2; установит RS в 1

out portA,r0

in r0,portA

сbi r0,1; установит W/R в 0

out portA,r0

in r0,portA

sbi r0,0; установит Е в 1

out portC,r0

out portB,r25;записать в ЖКИ команду из регистра r25

in r0,portA

cbi r0,0;сбросить Е в 0

out portA,r0

in r0,portA

sbi r0,1; установит W/R в 1

out portA,r0

ret

initlcd:

rcall del

ldi r25,30h

rcall icom; осуществляем запись команды в регистр ЖКИ

rcall del

ldi r25,30h

rcall icom; осуществляем запись команды в регистр ЖКИ

rcall del

ldi r25,30h

rcall icom

ldi r25,38h; устанавливаем разрядность шины данных=8, количество строк =2, шрифт 5х7 точек

rcall icom; осуществляем запись команды в регистр ЖКИ

ldi r25,08h; включить дисплей, зажечь курсор

rcall icom

ldi r25,01h; очистить дисплей и установить курсор в нулевую

позицию

rcall icom

ldi r25,06h;устанавливаем направление сдвига курсор в право, запретить сдвиг дисплея вместе со сдвигом курсора

rcall icom

ret

del:

ldi r17,150;задержка ~15 ms при кварце 4 МГц

l: ldi r18,200;

l1: dec r18;

brne l1;

dec r17;

brne l;

ret

vvod:

rcall del;делаем задержку

ldi r31,FEh;проверяем есть ли действительно в регистре r30 указанные числатаким образом устраняем дребезг контактов)

cp r30,r31;если равно, то выполняем следующую программу

in r29,PinC; программа опроса клавиатуры и флагов

ldi r31,FBh

cp r29,r31;если равно, то в r28 записываем адрес ячейки памяти

ldi r28,0060h

ldi r31,F7h

cp r29,r31

ldi r28,0070h

ldi r31,EFh

cp r29,r31

ldi r28,0080h

ldi r31,DFh

cp r29,r31

ldi r28,0090h

ldi r31,BFh

cp r29,r31

ldi r28,00A0h

rcall zapis

ret

vyvod:

rcall del;делаем задержку

ldi r31,FDh;проверяем есть ли действительно в регистре r30 указанные числатаким образом устраняем дребезг контактов)

cp r30,r31;если равно, то выполняем следующую программу

in r29,PinC;программа опроса клавиатуры и флагов

ldi r31,FBh

cp r29,r31; если равно, то в r28 записываем адрес ячейки

ldi r28,0060h

ldi r31,F7h

cp r29,r31

ldi r28,0060h

ldi r31,ЕFh

cp r29,r31

ldi r28,0060h

ldi r31,DFh

cp r29,r31

ldi r28,0060h

ldi r31,BFh

cp r29,r31

ldi r28,0060h

RCALL VYVOD1

ret

zapis:

nop;задержка

nop

nop

nop

MOV EEARH,00H;старший байт адреса ячейки

MOV EEARL,R28;младший байт адреса ячейки

nop;задержка

nop

nop

nop

MOV EEDR, ADCL;ввод данных с регистра данных АЦП

SET EERC,2;разрешение записи

SET EERC,1;запись

RET

VYVOD1:

MOV R27,#00H

MOV EEARH,00H

MOV EEARL,R28

SET EERC,0;разрешение чтения

MOV R27,EEDR

Rcall VYVODZKI;переход к процедуре вывода данных на ЖКИ

RET


Подобные документы

  • Особенности разработки и алгоритм программы для микроконтроллера АVR-Mega 128, выполняющую измерение температуры с помощью датчика ТМР-35 в режиме непрерывного преобразования. Синтез и описание схемы электрической принципиальной цифрового термометра.

    курсовая работа [891,0 K], добавлен 11.04.2010

  • Разработка и создание электронного устройства с датчиком температуры DS18B20 на базе PIC16F628A и их трансляцией на семи-сегментный индикатор. Выбор устройства отображения информации, программного обеспечения. Блок-схема работы микроконтроллера.

    дипломная работа [2,1 M], добавлен 25.06.2017

  • Проектирование устройства, измеряющего температуру в помещении. Выбор датчика температуры, микроконтроллера и отладочной платы. Изучение работы встроенного датчика температуры. Разработка программного обеспечения. Функциональная организация программы.

    курсовая работа [2,0 M], добавлен 26.12.2013

  • Синтез принципиальной схемы системы централизованного контроля температуры. Выбор основных элементов устройства, их характеристики и технические требования. Метрологический анализ устройства. Алгоритм работы микроконтроллера, программное обеспечение.

    курсовая работа [1,9 M], добавлен 21.11.2013

  • Роль микроконтроллерных технологий в развитии микроэлектроники. Алгоритм разработки микропроцессорной системы термометр-часы на базе микроконтроллера PIC16F84A. Разработка схемы электрической принципиальной устройства и программы для микроконтроллера.

    курсовая работа [584,1 K], добавлен 19.03.2012

  • Функциональная спецификация, описание объекта, структура системы и ресурсов микроконтроллера. Ассемблирование, программирование микроконтроллера и разработка алгоритма работы устройства, описание выбора элементной базы и работы принципиальной схемы.

    курсовая работа [2,2 M], добавлен 02.01.2010

  • Функциональная спецификация и структурная схема электронных автомобильных часов-термометра-вольтметра. Разработка алгоритма работы и принципиальной электрической схемы. Получение прошивки программы для памяти микроконтроллера в результате ассеблирования.

    курсовая работа [2,0 M], добавлен 26.12.2009

  • Разработка принципиальной электрической схемы на базе микропроцессора. Механизм работы устройства, его зависимость от сигналов, приходящих на микроконтроллер от датчиков присутствия человека в помещении. Выбор датчика присутствия. Расчет параметров реле.

    курсовая работа [491,6 K], добавлен 03.04.2017

  • Методика проектирования, разработки, практической апробации цифрового регулятора температуры на базе микросхемы-термометра DS1620, который совмещает температурный датчик, схему управления и АЦП в одном кристалле, и микроконтроллера фирмы Atmel AT90S2313.

    курсовая работа [755,6 K], добавлен 19.06.2010

  • Разработка структурной и принципиальной схем электронного тахометра. Изучение принципа работы датчика магнитного поля. Выбор микроконтроллера. Проектирование управляющей программы для микроконтроллера. Адаптация устройства к промышленному применению.

    курсовая работа [1,1 M], добавлен 22.01.2015

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