Реалізація цифрового термометра на основі мікроконтролера ATmega 128 з іспользовніє термодатчика

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Федеральне агентство з освіти
Державна освітня установа
Вищої професійної освіти
"Московський державний технічний університет ім. Н. Е. Баумана"
Калузький філія
Факультет електроніки, інформатики та управління
Кафедра "Системи автоматичного управління та електротехніка"
(ЕІУ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кГц);
датчик температури (в ATtiny25 ATtiny45 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 - "тато") DB25 P або DB9 P, виведені на задню панель комп'ютера. Характерною особливістю інтерфейсу є застосування "не ТТЛ" сигналів - всі зовнішні сигнали порту двуполярное.
Гальванічна розв'язка відсутній - схемна земля пристрою, що підключається з'єднується з схемної землею комп'ютера. Швидкість передачі даних може досягати 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: 1x8, 2x12, 3x12, 1x16, 2x16, 2x20, 4x20, 2x24 і 2x40 символів.

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 Integrated Products, до складу якого входить фірма Dallas Semiconductor, як засіб вимірювання. На підтвердження цього факту є документ про те, що дані типи приладів зареєстровані у Державному реєстрі засобів вимірювань і допущені до застосування в Російській Федерації.

2. Конструкторська частина

2.1 Загальні відомості. Функціональне призначення використовуваних програм

Для виконання курсової роботи були використані наступні програмні засоби: компілятор мови С для мікроконтролерів AVR (CodeVisionAVR), генератор початкового коду програми CodeWizard AVR з необхідною конфігурацією периферії МК (AVR Studio).
CodeVision AVR являє собою крос-компілятор мови С, графічну оболонку і автоматичний генератор шаблонів програм, орієнтовані на роботу з сімейством мікроконтролерів AVR фірми Atmel.
Програма являє собою 32-розрядний додаток для роботи в операційних системах Windows 95, 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;
пам'яттю EEPROM DS2430 і DS2433 фірми Dallas Semiconductor;
шиною 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 program was produced by the
CodeWizardAVR V1.25.8 Professional
Automatic Program Generator
© Copyright 1998-2007 Pavel Haiduc, HP InfoTech srl
http://www.hpinfotech.com
Project: Digital Thermometer
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 SRAM size: 0
Data Stack size: 1024
************************************************** *** /
# Include <mega128. h>
# Include <delay. h>
# Include <stdio. h>
# Include <lcd. h> / / Alphanumeric LCD Module functions
# Asm / / повідомляємо куди підключений датчик
. equ __w1_port = 0x1B; PORTA
. equ __w1_bit = 0
# Endasm
/ / Повідомляємо куди підключений РКІ
# Asm
. equ __lcd_port = 0x15; PORTC
# Endasm
# Include <1wire. h> / / 1 Wire Bus functions
# Include <ds18b20. h>
/ * >>>>>>>>>>>>>>>> Maximum number of DS18B20 connected to the 1 Wire bus * /
# Define MAX_DEVICES 8
/ / Declare your global variables here
/ * >>>>>>>>>>>>>> DS18B20 devices ROM code storage area * /
unsigned char devices;
unsigned char rom_code [MAX_DEVICES] [9];
/*>>>>>>>>>*/ Char lcd_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
/ / Declare your local variables here
/ / Input / Output Ports initialization
/ / Port A initialization
/ / Func7 = Out Func6 = Out Func5 = Out Func4 = Out Func3 = Out Func2 = Out Func1 = Out Func0 = Out
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T State0 = T
PORTA = 0x00;
DDRA = 0xFF;
/ / Port B initialization
/ / Func7 = In Func6 = In Func5 = In Func4 = In Func3 = In Func2 = In Func1 = Out Func0 = In
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = 0 State0 = T
PORTB = 0x00;
DDRB = 0x02;
/ / Port C initialization
/ / Func7 = In Func6 = In Func5 = In Func4 = In Func3 = In Func2 = In Func1 = In Func0 = In
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T State0 = T
PORTC = 0x00;
DDRC = 0x00;
/ / Port D initialization
/ / Func7 = In Func6 = In Func5 = In Func4 = In Func3 = In Func2 = In Func1 = In Func0 = In
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T State0 = T
PORTD = 0x00;
DDRD = 0x00;
/ / Port E initialization
/ / Func7 = In Func6 = In Func5 = In Func4 = In Func3 = In Func2 = In Func1 = In Func0 = In
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T State0 = T
PORTE = 0x00;
DDRE = 0x00;
/ / Port F initialization
/ / Func7 = In Func6 = In Func5 = In Func4 = In Func3 = In Func2 = In Func1 = In Func0 = In
/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T State0 = T
PORTF = 0x00;
DDRF = 0x00;
/ / Port G initialization
/ / Func4 = In Func3 = In Func2 = In Func1 = In Func0 = In
/ / State4 = T State3 = T State2 = T State1 = T State0 = T
PORTG = 0x00;
DDRG = 0x00;
/ / Timer / Counter 0 initialization
/ / Clock source: System Clock
/ / Clock value: Timer 0 Stopped
/ / Mode: Normal top = FFh
/ / OC0 output: Disconnected
ASSR = 0x00;
TCCR0 = 0x00;
TCNT0 = 0x00;
OCR0 = 0x00;
/ / Timer / Counter 1 initialization
/ / Clock source: System Clock
/ / Clock value: Timer 1 Stopped
/ / Mode: Normal top = FFFFh
/ / OC1A output: Discon.
/ / OC1B output: Discon.
/ / OC1C output: Discon.
/ / Noise Canceler: Off
/ / Input Capture on Falling Edge
/ / Timer 1 Overflow Interrupt: Off
/ / Input Capture Interrupt: Off
/ / Compare A Match Interrupt: Off
/ / Compare B Match Interrupt: Off
/ / Compare C Match 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 / Counter 2 initialization
/ / Clock source: System Clock
/ / Clock value: Timer 2 Stopped
/ / Mode: Normal top = FFh
/ / OC2 output: Disconnected
TCCR2 = 0x00;
TCNT2 = 0x00;
OCR2 = 0x00;
/ / Timer / Counter 3 initialization
/ / Clock source: System Clock
/ / Clock value: Timer 3 Stopped
/ / Mode: Normal top = FFFFh
/ / Noise Canceler: Off
/ / Input Capture on Falling Edge
/ / OC3A output: Discon.
/ / OC3B output: Discon.
/ / OC3C output: Discon.
/ / Timer 3 Overflow Interrupt: Off
/ / Input Capture Interrupt: Off
/ / Compare A Match Interrupt: Off
/ / Compare B Match Interrupt: Off
/ / Compare C Match 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;
/ / External Interrupt (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;
/ / USART0 initialization
/ / Communication Parameters: 8 Data, 1 Stop, No Parity
/ / USART0 Receiver: On
/ / USART0 Transmitter: Off
/ / USART0 Mode: Asynchronous
/ / USART0 Baud Rate: 57600
UCSR0A = 0x00;
UCSR0B = 0x18;
UCSR0C = 0x06;
UBRR0H = 0x00;
UBRR0L = 0x07;
/ / Analog Comparator initialization
/ / Analog Comparator: Off
/ / Analog Comparator Input Capture by Timer / Counter 1: Off
ACSR = 0x80;
SFIOR = 0x00;
PORTB = 0x00;
DDRB = 0x01;
/ / LCD module initialization
lcd_init (16);
w1_init ();
/*>>>>>>>>>>>>>*/
delay_ms (250);
lcd_clear ();
/ * Detecting device * /
devices = w1_search (0xF0, rom_code);
delay_ms (250);
sprintf (lcd_buffer, "% u DS18B20 \ 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);
};
}
Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
83.9кб. | скачати


Схожі роботи:
Створення вимірювального апаратно-програмного комплексу термометра на основі мікроконтролерів
Створення вимірювального апаратно програмного комплексу термометра на основі мікроконтролерів сім`ї
Проектування мікропроцесорної системи на основі мікроконтролера К1816ВЕ31
Реалізація та аналіз цифрового фільтра з кінцевою імпульсною характеристикою
Реалізація та аналіз цифрового фільтра з кінцевою імпульсною характеристикою 2
Реалізація поштового клієнта і сервера на основі CORBA
Алгоритм шіфрованіяхешірованія двійкових файлів на основі мережі Фейстеля принцип роботи реалізація
Реалізація компетентнісного підходу в процесі навчання шкільного курсу інформатики на основі застосування
Модернізація електронного термометра
© Усі права захищені
написати до нас