Федеральное агентство по образованию
Государственное образовательное учреждение
Высшего профессионального образования
«Московский государственный технический университет им. Н.Э. Баумана»
Калужский филиал
Факультет электроники, информатики и управления
Кафедра «Системы автоматического управления и электротехника»
(ЭИУ3-КФ)
Расчетно-пояснительнаязаписка к курсовой работе
на тему:
«Реализация цифрового термометра на основе микроконтроллера ATmega 128 (с использовнием термодатчика DS18B20)»
по дисциплине:
Проектирование алгоритмов и программного обеспечения
Калуга, 2009
Содержание
/>/>/>/>1.Теоретическая часть
1.1 Аннотация
1.2 Постановка задачи
1.3 Общие сведения о микроконтроллерах AVR
1.4 Основные параметры AVR
1.5 Программирование микроконтроллера с использованием программы на языке С
1.6 Передача данных на Com-порт
1.7 Вывод значений на ЖКИ
1.8 Описание температурного датчика DS18B20
1.9 Подключение датчика DS18B20 сиспользованием порта 1-Wire
2. Конструкторская часть
2.1 Общие сведения. Функциональное назначение используемыхпрограмм
2.2 Реализация
2.3 Запуск и выполнение
3. Список используемой литературы
Приложение
1. Теоретическая часть
1.1 Аннотация
Данный курсовой проектпредставляет собой термометр, реализованный на микроконтроллере AVR. Устройство может выполнять следующие действия:
определение температурыокружающей среды;
отображение температурыокружающей среды на ЖК дисплее;
отображение температурыокружающей среды в com-порт;
своевременное реагирование наизменение температуры, реализованное с помощью устанавливаемой по желаниюзадержки опроса;/>/>/>/>/>/>1.2 Постановка задачи
Используя средства языкапрограммирования необходимо создать цифровой термометр на основемикроконтроллера ATmega 128 семейства AVR.Должны выполняться действия: измерение температуры окружающей среды, выводзначений температуры на ЖК дисплей и в com-порт.1.3 Общие сведения о микроконтроллерах AVR
/>/>/>/>/>/>/>/>
Микроконтроллер — компьютер наодной микросхеме. Предназначен для управления различными электроннымиустройствами и осуществления взаимодействия между ними в соответствии сзаложенной в микроконтроллер программой. В отличие от микропроцессоров, используемыхв персональных компьютерах, микроконтроллеры содержат встроенные дополнительныеустройства. Эти устройства выполняют свои задачи под управлениеммикропроцессорного ядра микроконтроллера.
С развитием микроэлектроникимикроконтроллеры AVR получили широкое распространение внашей жизни. Это устройства, в которых объединены процессор и периферийноеоборудование. Такое объединение позволяет уменьшить массу стоимость иэнергопотребление проектируемого устройства.
Типичный современныймикроконтроллер имеет следующие встроенные схемы: центральное процессорноеустройство (ЦПУ), память программ, оперативная память данных, тактовыйгенератор, цепь сброса, последовательный порт, таймер, таймер, аналого-цифровойпреобразователь (АЦП). Устройства памяти включают оперативную память (RAM),постоянные запоминающие устройства (ROM), перепрограммируемую ROM (EPROM),электрически перепрограммируемую ROM (EEPROM). Таймеры включают, и часыреального времени, и таймеры прерываний. Средства I/O включают последовательныепорты связи, параллельные порты (I/O линии), аналого-цифровые преобразователи (A/D),цифроаналоговые преобразователи (D/A), драйверы жидкокристаллического дисплея (LCD)или драйверы вакуумного флуоресцентного дисплея (VFD). Встроенные устройстваобладают повышенной надежностью, поскольку они не требуют никаких внешнихэлектрических цепей.
1.4 Основные параметры AVR
Основные параметры AVR:
тактовая частота до 20 МГц;
встроенный программируемыйRC-генератор, частота 1, 2, 4, 8 МГц;
Flash-ПЗУ программ,программируемое в системе, 10 000 циклов перезаписи;
Энергонезависимая память данныхEEPROM (100 000 циклов перезаписи);
внутреннее ОЗУ со временемдоступа 1 такт;
6 аппаратных команд умножения (длясемейства mega);
развитая система адресации,оптимизированная для работы с С-компиляторами;
32 регистра общего назначения (аккумулятора);
синхронный (USART) илиасинхронный (UART) (в mega64 и mega128 их по 2);
синхронный последовательный порт(SPI);
двухпроводный интерфейс TWI,совместимый с интерфейсом I2C;
многоканальный PWM 8-, 9-, 10-,16-битный ШИМ-модулятор;
10-битный АЦП сдифференциальными входами;
программируемый коэффициентусиления перед АЦП 1, 10 и 200;
встроенный источник опорногонапряжения 2,56 В;
аналоговый компаратор;
сторожевой таймер — перезагружаетМК при «зависании»;
настраиваемая схема задержкизапуска после подачи питания;
схема слежения за уровнемнапряжения питания;
JTAG-интерфейс для подключенияэмулятора (в МК с объемом ПЗУ от 16кбайт);
Малое энергопотребление (менее 100мкАв активном режиме на частоте 32кГц);
датчик температуры (в ATtiny25ATtiny45 ATtiny85).
1.5 Программирование микроконтроллера сиспользованием программы на языке С
Таблица 1. Типы данных языка Сдля AVRТип Размер (бит) Диапазон значений bit 1 0, 1 char 8 -128…127 unsigned char 8 0…255 signed char 8 -128…127 int 16 -32768…32767 short int 16 -32768…32767 unsigned int 16 0…65535 signed int 16 -32768…32767 long int 32 -2147483648…2147483647 unsigned long int 32 0…4294967295 signed long int 32 -2147483648…2147483647 float 32 ±1.175e-38…±3.402e38 double 32 ±1.175e-38…±3.402e38
Таблица 2. Зарезервированныесловаbreak else int struct bit enum interrupt switch case extern long typedef char flash register union const float return unsigned continue for short void default funcused signed volatile do goto sizeof while double if sfrw eeprom inline static
Для вывода данных в портиспользуется регистр PORTx, а для ввода — PINx. Для настройки порта на выход в регистр управлениянеобходимо записать единицу, и наоборот, для настройки на вход-ноль.
1.6 Передача данных на Com-порт
Для связи ПК и вашего устройстванеобходим какой-либо физический интерфейс. Очень удобен и прост интерфейс RS232- в ПК он реализован в виде COM-портов.
Универсальный внешнийпоследовательный интерфейс — CОМ-порт (Communications Port — коммуникационный порт) присутствует в PCначиная с первых моделей. Этот порт обеспечивает асинхронный обмен постандарту RS-232C. СОМ-портыреализуются на микросхемах универсальных асинхронных приемопередатчиков (UART), совместимых с семейством i8250/16450/16550.Они занимают в пространстве ввода-вывода по 8 смежных 8-битных регистров имогут располагаться по стандартным базовым адресам 3F8h (СОМ1), 2F8h(COM2), 3E8h (COM3), 2E8h (COM4). Порты могут вырабатывать аппаратныепрерывания IRQ4 (обычно используются для СОМ1 иCOM3) и IRQ3 (для COM2 и COM4). С внешней стороны портыимеют линии последовательных данных передачи и приема, а также набор сигналовуправления и состояния, соответствующий стандарту RS-232C. СОМ-порты имеют внешние разъемы-вилки (male — «папа») DB25P или DB9P, выведенные на заднюю панель компьютера. Характернойособенностью интерфейса является применение «не ТТЛ» сигналов — всевнешние сигналы порта двуполярные.
Гальваническая развязкаотсутствует — схемная земля подключаемого устройства соединяется со схемнойземлей компьютера. Скорость передачи данных может достигать 115 200 бит/с.
Название порта указывает на егоосновное назначение — подключение коммуникационного оборудования (например,модема) для связи с другими компьютерами, сетями и периферийными устройствами. Кпорту могут непосредственно подключаться и периферийные устройств споследовательным интерфейсом: принтеры, плоттеры, терминалы и другие. СОМ-портшироко используется для подключения мыши, а также организации непосредственнойсвязи двух компьютеров. К СОМ-порту подключают и электронные ключи.
Напряжение на выходе данных изCOM-порта ПК (это ножка 3 в 9-ти штырьковом разъеме) по стандарту RS232 таково:
логическая «1» от — 5 до — 15 вольт
логический «0» от+5 до +15 вольт
На самом деле сигналы в COMназываются по-другому! Здесь называется «логический» по аналогииназвания в МК. Для согласования напряжений и логических уровней COM-порта иUSART МК используют микросхемы типа MAX232.
По линии TxD данныепередаются от МК в ПК (через MAX232).
По линии RxD МК принимаетданные от ПК.
Для отправки и приема данныхможно использовать гипертерминал Windows или более удобные программы (мы будемиспользовать Терминал из состава компилятора CodeVisionAVR).
Формат представления данных влабораторной работы мы оставим по умолчанию: 8 Data, 1 Stop, No Parity (8-битовые данные, без проверки четности, 1 стоповыйбит), а скорость выберем произвольно. В этом случае на передачу одного символа(в формате 8N1 — установленном нами выше при настройке UART) тратится время вСек:
10 разделить на скорость USART вбод/сек.1.7 Вывод значений на ЖКИ
Алфавитно-цифровые ЖКИ-модулипредставляют собой недорогое и удобное решение, позволяющее сэкономить время иресурсы при разработке новых изделий, при этом обеспечивают отображениебольшого объема информации при хорошей различимости и низком энергопотреблении.Возможность оснащения ЖКИ-модулей задней подсветкой позволяет эксплуатироватьих в условиях с пониженной или нулевой освещенностью, а исполнение срасширенным диапазоном температур (-20°С… +70°С) в сложных эксплуатационныхусловиях, в том числе в переносной, полевой и даже, иногда, в бортовойаппаратуре.
Контроллер HD44780 потенциальноможет управлять 2-мя строками по 40 символов в каждой (для модулей с 4-мястроками по 40 символов используются два однотипных контроллера), при матрицесимвола 5 х 7 точек. Контроллера также поддерживает символы с матрицей 5 х 10точек, но в последние годы ЖКИ-модули с такой матрицей практически невстречаются, поэтому можно считать, что фактически бывают только символы 5х7точек.
Существует несколько различныхболее-менее стандартных форматов ЖКИ-модулей (символов х строк): 8х2, 16х1,16х2, 16х4, 20х1, 20х2, 20х4, 24х2, 40х2, 40х4. Встречаются и менее распространенныеформаты: 8х1, 12х2, 32х2 и др., — принципиальных ограничений на комбинации иколичество отображаемых символов контроллер не накладывает — модуль может иметьлюбое количество символов от 1 до 80, хотя в некоторых комбинациях программнаяадресация символов может оказаться не очень удобной.
Жидкокристаллический модульMT-16S2H состоит из БИС контроллера управления и ЖК панели. Контроллеруправления КБ1013ВГ6, производства ОАО «АНГСТРЕМ» (www.angstrem.ru),аналогичен HD44780 фирмы HITACHI и KS0066 фирмы SAMSUNG.
Модуль выпускается сосветодиодной подсветкой. Внешний вид приведен на рисунке 1. Модуль позволяетотображать 1 строку из 16 символов. Символы отображаются в матрице 5х8 точек. Междусимволами имеются интервалы шириной в одну отображаемую точку.
Каждому отображаемому на ЖКИсимволу соответствует его код в ячейке ОЗУ модуля.
Модуль содержит два вида памяти — кодов отображаемых символов и пользовательского знакогенератора, а также логикудля управления ЖК панелью.
Модуль позволяет:
модуль имеет программно-переключаемыедве страницы встроенного знакогенератора (алфавиты: русский, украинский,белорусский, казахский и английский)
работать как по 8-ми, так и по4-х битной шине данных (задается при инициализации);
принимать команды с шины данных(перечень команд приведен в таблице 4);
записывать данные в ОЗУ с шиныданных;
читать данные из ОЗУ на шинуданных;
читать статус состояния на шинуданных;
запоминать до 8-ми изображенийсимволов, задаваемых пользователем;
выводить мигающий (или немигающий) курсор двух типов;
управлять контрастностью иподсветкой;
Программирование и управление:
Перед началом рассмотренияпринципов управления ЖКИ-модулем, обратимся к внутренней структуре контроллераHD44780, чтобы понять основные принципы построения ЖКИ-модулей на его основе. Этаинформация позволит понять способы организации модулей различных форматов сточки зрения программной модели, а также мотивации конструкторов ЖКИ-модулей.
Другие элементы не являютсяобъектом прямого взаимодействия с управляющей программой — они участвуют впроцессе регенерации изображения на ЖКИ: знакогенератор, формирователь курсора,сдвиговые регистры и драйверы (напоминаем, что приведенная схема — упрощенная,и многие не важные для получения общей картины промежуточные элементы на нейопущены).
Управление контроллером ведетсяпосредством интерфейса управляющей системы. Основными объектами взаимодействияявляются регистры DR и IR. Выбор адресуемого регистра производится линией RS,если RS = 0 — адресуется регистр команд (IR), если RS = 1 — регистр данных (DR).
Данные через регистр DR, взависимости от текущего режима, могут помещаться (или прочитываться) ввидеопамять (DDRAM) или в ОЗУ знакогенератора (CGRAM) по текущему адресу,указываемому счетчиком адреса (АС). Информация, попадающая в регистр IR,интерпретируется устройством выполнения команд как управляющаяпоследовательность. Прочтение регистра IR возвращает в 7-ми младших разрядахтекущее значение счетчика АС, а в старшем разряде флаг занятости (BF).
Видеопамять, имеющая общий объем80 байтов, предназначена для хранения кодов символов, отображаемых на ЖКИ. Видеопамятьорганизована в две строки по 40 символов в каждой. Эта привязка являетсяжесткой и не подлежит изменению. Другими словами, независимо от того, сколькореальных строк будет иметь каждый конкретный ЖКИ-модуль, скажем, 80 х 1 или 20х 4, адресация видеопамяти всегда производится как к двум строкам по 40символов.
Будучи устройством сдинамической индикацией, контроллер циклически производит обновление информациина ЖКИ. Сам ЖКИ организован как матрица, состоящая в зависимости от режимаработы из 8-ми (одна строка символов 5 х 7 точек), 11-ти (одна строка символов5 х 10 точек) или 16-ти (две строки символов 5 х 7 точек) строк по 200сегментов (когда строка насчитывает 40 символов) в каждой. Собственный драйверконроллера HD44780 имеет только 40 выходов (SEG1… SEG40) и самостоятельноможет поддерживать только 8-ми символьные ЖКИ. Это означает, что ЖКИ-модулиформатов до 8 х 2 реализованы на одной единственной микросхеме HD44780, модули,имеющие большее количество символов, содержат дополнительные микросхемыдрайверов, например, HD44100, каждая из которых дополнительно предоставляетуправление еще 40-ка сегментами.
У контроллера HD44780 существуетнабор внутренних флагов, определяющих режимы работы различных элементовконтроллера (таблица 7). В таблице 8 приведены значения управляющих флаговнепосредственно после подачи на ЖКИ-модуль напряжения питания. Переопределениезначений флагов производится специальными командами, записываемыми в регистрIR, при этом комбинации старших битов определяют группу флагов или команду, амладшие содержат собственно флаги.
Подключение модуля LCD:
Функции работы с LCDиспользуются для интерфейса между программами на C и LCD модулями, построеннымина микросхемах Hitachi HD44780 или аналогичных. Прототипы для этих функцийнаходятся в файле lcd. h.
До включения файла lcd. h, выдолжны объявить порт микроконтроллера, который будет использоваться с модулемLCD. Поддерживаются следующие форматы LCD: 1×8, 2×12, 3×12, 1×16, 2×16, 2×20,4×20, 2×24 и 2×40 символов.
1.8 Описание температурного датчика DS18B20
DS18B20 — Калиброванный цифровойтермометр с однопроводным 1-Wire-интерфейсом и перестраиваемой разрядностьюпреобразования. Диапазон измеряемых температур от — 55°C до +125°C. Считываемыйс микросхемы цифровой код является результатом непосредственного прямогоизмерения температуры и не нуждается в дополнительных преобразованиях. Программируемаяпользователем разрешающая способность встроенного АЦП может быть изменена вдиапазоне от 9 до 12 разрядов выходного кода. Абсолютная погрешностьпреобразования меньше 0,5°C в диапазоне контролируемых температур — 10°C до+85°C. Максимальное время полного 12-ти разрядного преобразования ~750 мс. Энергонезависимаяпамять температурных уставок микросхемы обеспечивает запись произвольныхзначений верхнего и нижнего контрольных порогов. Кроме того, термометр содержитвстроенный логический механизм приоритетной сигнализации в 1-Wire-линию о фактевыхода контролируемой им температуры за один из выбранных порогов. Узел1-Wire-интерфейса компонента организован таким образом, что существуеттеоретическая возможность адресации неограниченного количества подобныхустройств на одной 1-Wire-линии. Термометр имеет индивидуальный 64-разрядныйрегистрационный номер (групповой код 028Н) и обеспечивает возможность работыбез внешнего источника энергии, только за счет паразитного питания 1-Wire-линии.Питание микросхемы через отдельный внешний вывод производится напряжением от3,0 В до 5,5 В. Термометр размещается в транзисторном корпусе TO-92, или в8-контактном корпусе SO для поверхностного монтажа (DS18B20Z), или 8-контактномкорпусе микро-SOP для поверхностного монтажа (DS18B20U).
Выпускается специальная модификацияцифрового термометра, предназначенная только для работы в режиме паразитногопитания DS18B20-PAR. Она размещается в транзисторном корпусе TO-92, один извыводов которого не используется.
1.9 Подключение датчика DS18B20 с использованием порта 1-Wire
Однопроводной интерфейс 1-Wire,разработанный в конце 90-х годов фирмой Dallas Semiconductor, регламентированразработчиками для применения в четырех основных сферах-приложениях:
приборы в специальных корпусахMicroCAN для решения проблем идентификации, переноса или преобразованияинформации (технология iButton),
программирование встроеннойпамяти интегральных компонентов,
идентификация элементовоборудования и защита доступа к ресурсам электронной аппаратуры,
системы автоматизации (технологиясетей 1-Wire-сетей).
Первое из этих направленийшироко известно на мировом рынке и уже давно пользуется заслуженнойпопулярностью. Второе с успехом обеспечивает возможность легкой перестройкифункций полупроводниковых компонентов, производимых фирмой Dallas Semiconductorи имеющих малое количество внешних выводов. Третье позволяет обеспечитьнедорогую, но достаточно эффективную идентификацию и надежную защиту самогоразнообразного оборудования. Что касается четвертого применения, то реализациялокальных распределенных систем на базе 1-Wire-шины является на сегодняде-факто наиболее оптимальным решением для большинства практических задачавтоматизации. В настоящее время Dallas Semiconductor поставляет широкуюноменклатуру однопроводных компонентов различных функциональных назначений дляреализации самых разнообразных сетевых приложений. Поэтому имеется огромноечисло конкретных примеров использования 1-Wire-интерфейса для целейавтоматизации в самых различных областях, и все больше разработчиков проявляютинтерес к этой технологии.
Преимущества 1-Wire-технологии:
простое и оригинальное решениеадресуемости абонентов,
несложный протокол,
простая структура линии связи,
малое потребление компонентов,
легкое изменение конфигурациисети,
значительная протяженность линийсвязи,
исключительная дешевизна всейтехнологии в целом.
Ведомые однопроводныекомпоненты, содержащие 1-Wire-интерфейс, выпускаются в двух различных видах. Либов корпусах MicroCAN, похожих внешне на дисковый металлический аккумулятор, либов обычных корпусах для монтажа на печатную плату.
Однако наиболее популярнымиведомыми компонентами 1-Wire, на базе которых реализовано, пожалуй, наибольшееколичество однопроводных приложений, безусловно, являются цифровые термометрытипа DS1820. Преимущества этих цифровых термометров с точки зрения организациимагистрали, по сравнению с любыми другими интегральными температурнымисенсорами, а также неплохие метрологические характеристики и хорошаяпомехоустойчивость, уже на протяжении полутора десятков лет неизменно выводятих на первое место при построении многоточечных систем температурного контроляв диапазоне от — 55°С до125°С. Они позволяют не только осуществлятьнепосредственный мониторинг температуры в режиме реального времени, но иблагодаря наличию встроенной энергонезависимой памяти температурных уставок,могут обеспечивать приоритетную оперативную сигнализацию в 1-Wire-линию о фактевыхода контролируемого параметра за пределы заданных значений. Такжепоставляются более совершенные термометры DS18В20, у которых скоростьпреобразования определяется разрядностью результата, программируемойнепосредственно по 1-Wire-линии. Цифровой код, считываемый с такого термометра,является прямым результатом измеренного значения температуры и не нуждается в дополнительныхпреобразованиях. Российской фирмой Rainbow Technologies получен сертификатГосстандарта России об утверждении однопроводных цифровых термометров DS1822,DS18B20, DS18S20, DS1920, производимых концерном Dallas/Maxim IntegratedProducts, в состав которого входит фирма Dallas Semiconductor, в качествесредств измерения. В подтверждение этого факта имеется документ о том, чтоданные типы приборов зарегистрированы в Государственном реестре средствизмерений и допущены к применению в Российской Федерации.
2. Конструкторская часть2.1 Общие сведения. Функциональное назначениеиспользуемых программ
Для выполнения курсовой работыбыли использованы следующие программные средства: компилятор языка С длямикроконтроллеров AVR (CodeVisionAVR),генератор начального кода программы CodeWizard AVR с необходимой конфигурациейпериферии МК (AVR Studio).
CodeVision AVR представляет собойкросс-компилятор языка С, графическую оболочку и автоматический генератор шаблоновпрограмм, ориентированные на работу с семейством микроконтроллеров AVR фирмы Atmel.
Программа представляет собой32-разрядное приложение для работы в операционных системах Windows95, 98, Me, NT4.0, 2000, XP.
Кросс-компилятор включает в себяпрактически все элементы, соответствующие стандарту ANSI.Кроме того, в компилятор включены дополнительные возможности, ориентированныена использование архитектурных особенностей микроконтроллеров AVRи встроенных систем в целом.
Объектные файлы COFF позволяют осуществлять отладку программ с просмотромсодержимого переменных. Для этого следует применять свободно распространяемыйфирмой Atmel (www.atmel.com) отладчикAVR Studio.
Для отладки систем, использующихпоследовательную передачу данных, в графической оболочке имеется встроеннаяпрограмма Terminal.
Кроме стандартных библиотекязыка С, компилятор имеет библиотеки для работы с:
ЖКИ индикаторами со встроеннымконтроллером;
шиной I2Cфирмы Philips;
датчиком температуры LM75 фирмы National Semiconductor;
часами реального времени PC8536 и PC8583 фирмы Philips, DS1302 и DS1307 фирмы Dallas Semiconductor;
однопроводным протоколом фирмы Dallas Semiconductor;
датчиками температуры DS1820 и DS1822 фирмы Dallas Semiconductor;
датчиком температуры/термостатомDS1621 фирмы Dallas Semiconductor;
памятью EEPROMDS2430 и DS2433 фирмы DallasSemiconductor;
шиной SPI;
управлением режимами пониженногопотребления энергии;
временными задержками;
преобразованием кодов Грэя.
В CodeVision AVR имеется автоматический генераторшаблонов программ, который позволяет в течение считанных минут получить готовыйкод для следующих функций:
настройка доступа к внешнейпамяти;
определение источника прерыванияReset;
инициализация портовввода/вывода;
инициализация внешних прерываний;
инициализация таймеров/счетчиков;
инициализация сторожевоготаймера;
инициализация UART;
инициализация аналоговогокомпаратора;
инициализация встроенного АЦП;
инициализация интерфейса SPI;
инициализация поддерживаемыхбиблиотеками CodeVision AVR микросхем, работающих с однопроводным интерфейсом и шинойI2C;
инициализация модуля ЖКИ совстроенным контроллером.
Кроме того, среда CodeVision AVRвключает в себя программное обеспечение для работы с различными AVR-программаторами. После компиляции исходной программы наязыке С полученный код может быть сразу записан в память программмикроконтроллера.
2.2 Реализация
Основные компоненты:
1. Микроконтроллер ATmega128
2. Датчик температура DS18B20
3. ЖКИ
Выделим следующие этапы вразработке программного обеспечения термометра:
1. Получение данных с датчика.
2. Передача данных на ЖКИ.
3. Обработка прерывания.
4. Передача данных на ЖКИ.
1. Получение данных с датчика:
Данные получаем с температурногодатчика DS18B20, подключенногона порт В.
2. Передача данных на ЖКИ:
Данные выводим на ЖК индикатор,подключенный на порт А.
3. Обработка прерывания:
Промежуток между измерениями 500мс.
В процессе разработки проектавозникли следующие вопросы:
1. Каким образом подключитьдатчик к шине 1-Wire?
2. Как зашифрована температура,передаваемая датчиком?
3. Какие специализированныекоманды необходимо применять для опроса датчика?
2.3 Запуск и выполнение
Скомпилированная программапредставляет собой файл типа cof, который прошиваем намикроконтроллер ATmega 128 семейства AVR.
Соединяем компоненты рабочеймодели прибора, получаем сигнал с температурного датчика, считываем температуруокружающей среды.
3. Список используемой литературы
1. Белов А.В. Конструирование устройств на микроконтроллерах. — СПб.: Наукаи Техника, 2005. — 256 С.
2. Бородин В.Б., Калинин А.В. Системы на микроконтроллерах и БИСпрограммируемой логики — М.: Издательство ЭКОМ, 2002. — 400 с.: илл.
3. Гребнев В.В. Микроконтроллеры семейства AVR фирмыAtmel М.: ИП РадиоСофт, 2002. — 176 с.
4. Евстифеев А.В. Микроконтроллеры AVR семейств Tiny и Mega фирмы «ATMEL»- М.: Издательский дом «Додека-ХХI», 2004. — 560 с.
5. Шпак Ю.А. Программирование на языке Си для AVR и PIC микроконтроллеров. — К: ”МК-Пресс”, 2006. — 400 С.
Приложение
Код программы
/*****************************************************
This programwas produced by the
CodeWizardAVR V1.25.8Professional
AutomaticProgram Generator
© Copyright1998-2007 Pavel Haiduc, HP InfoTech s. r. l.
www.hpinfotech.com
Project: DigitalThermometer
Version: 1
Date: 24.11.2009
Author: Marina
Company:
Comments:
Chip type: ATmega128
Program type: Application
Clock frequency:7,000000 MHz
Memory model: Small
External SRAMsize: 0
Data Stack size:1024
*****************************************************/
#include
#include
#include
#include // Alphanumeric LCD Module functions
#asm // сообщаемкуда подключен датчик
. equ__w1_port=0x1B; PORTA
. equ__w1_bit=0
#endasm
// сообщаем куда подключён ЖКИ
#asm
. equ__lcd_port=0x15; PORTC
#endasm
#include // 1 Wire Bus functions
#include
/*>>>>>>>>>>>>>>>>maximum numberof DS18B20 connected to the 1 Wire bus */
#defineMAX_DEVICES 8
// Declareyour global variables here
/*>>>>>>>>>>>>>>DS18B20 devices ROMcode storage area */
unsigned chardevices;
unsigned charrom_code [MAX_DEVICES] [9] ;
/*>>>>>>>>>*/charlcd_buffer [33] ;
void main (void)
{ int temp;
unsigned int a;
double d;
UCSR0A=0x00;
UCSR0B=0x10;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0x2D;
// >>>>>>>>>>>>>>>>Declare your local variables here
// Declareyour local variables here
// Input/OutputPorts initialization
// Port Ainitialization
// Func7=OutFunc6= Out Func5= Out Func4= Out Func3= Out Func2= Out Func1= Out Func0= Out
// State7=TState6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0xFF;
// Port Binitialization
// Func7=InFunc6=In Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=In
// State7=TState6=T State5=T State4=T State3=T State2=T State1=0 State0=T
PORTB=0x00;
DDRB=0x02;
// Port Cinitialization
// Func7=InFunc6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=TState6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port Dinitialization
// Func7=InFunc6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=TState6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Port Einitialization
// Func7=InFunc6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=TState6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTE=0x00;
DDRE=0x00;
// Port Finitialization
// Func7=InFunc6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=TState6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTF=0x00;
DDRF=0x00;
// Port Ginitialization
// Func4=InFunc3=In Func2=In Func1=In Func0=In
// State4=TState3=T State2=T State1=T State0=T
PORTG=0x00;
DDRG=0x00;
// Timer/Counter0 initialization
// Clocksource: System Clock
// Clock value:Timer 0 Stopped
// Mode: Normaltop=FFh
// OC0 output:Disconnected
ASSR=0x00;
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter1 initialization
// Clocksource: System Clock
// Clock value:Timer 1 Stopped
// Mode: Normaltop=FFFFh
// OC1A output:Discon.
// OC1B output:Discon.
// OC1C output:Discon.
// NoiseCanceler: Off
// InputCapture on Falling Edge
// Timer 1Overflow Interrupt: Off
// InputCapture Interrupt: Off
// Compare AMatch Interrupt: Off
// Compare BMatch Interrupt: Off
// Compare CMatch Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
OCR1CH=0x00;
OCR1CL=0x00;
// Timer/Counter2 initialization
// Clocksource: System Clock
// Clock value:Timer 2 Stopped
// Mode: Normaltop=FFh
// OC2 output:Disconnected
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// Timer/Counter3 initialization
// Clocksource: System Clock
// Clock value:Timer 3 Stopped
// Mode: Normaltop=FFFFh
// Noise Canceler:Off
// InputCapture on Falling Edge
// OC3A output:Discon.
// OC3B output:Discon.
// OC3C output:Discon.
// Timer 3Overflow Interrupt: Off
// InputCapture Interrupt: Off
// Compare AMatch Interrupt: Off
// Compare BMatch Interrupt: Off
// Compare CMatch Interrupt: Off
TCCR3A=0x00;
TCCR3B=0x00;
TCNT3H=0x00;
TCNT3L=0x00;
ICR3H=0x00;
ICR3L=0x00;
OCR3AH=0x00;
OCR3AL=0x00;
OCR3BH=0x00;
OCR3BL=0x00;
OCR3CH=0x00;
OCR3CL=0x00;
// ExternalInterrupt (s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
// INT3: Off
// INT4: Off
// INT5: Off
// INT6: Off
// INT7: Off
EICRA=0x00;
EICRB=0x00;
EIMSK=0x00;
// Timer (s) /Counter(s) Interrupt (s) initialization
TIMSK=0x00;
ETIMSK=0x00;
// USART0initialization
// CommunicationParameters: 8 Data, 1 Stop, No Parity
// USART0Receiver: On
// USART0Transmitter: Off
// USART0 Mode:Asynchronous
// USART0 BaudRate: 57600
UCSR0A=0x00;
UCSR0B=0x18;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0x07;
// AnalogComparator initialization
// AnalogComparator: Off
// AnalogComparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
PORTB=0x00;
DDRB=0x01;
// LCD moduleinitialization
lcd_init (16);
w1_init ();
/*>>>>>>>>>>>>>*/
delay_ms (250);
lcd_clear ();
/* detectingdevice */
devices=w1_search(0xF0,rom_code);
delay_ms (250);
sprintf (lcd_buffer,”%uDS18B20\nDevice detected”, devices);
lcd_puts (lcd_buffer);
delay_ms (250);
lcd_clear ();
while (1)
{
temp=ds18b20_temperature(0); // чтение температуры с датчика
if (temp>1000) { // преобразование отрицательной температуры
temp=4096-temp;
temp=-temp;
}
sprintf(lcd_buffer,«t=%i.%u\xdfC»,temp,temp%1);// запись температуры в массив для вывода на экран
lcd_clear (); // очистка экрана
lcd_puts (lcd_buffer);// вывод температуры
delay_ms (500); // ожидание 500 мс перед следующим измерением
a = ADCW;
d = (double) a/ 1024 * 5;
printf (“%f\r”,a);
};
}