Рисунок 2.1 - Залежність похибки вимірювань від температури
Призначення виводів датчика показано на рис. 2.2.
Рисунок 2.2 – Виводи датчика DS18B20
Мікросхема DS18B20 це термометр з цифровим введенням / виведенням, який працює з точністю ± 0.5 ° C. Дані зчитуються через 1-провідну послідовну шину в додатковому від 9 до 12 бітному (програмується користувачем) коді з ціною молодшого розряду від 0.5 ° C до 0.0625 ° C.
При використанні в якості термостата, DS18B20 відрізняється наявністю у внутрішній енергонезалежній пам'яті (EEPROM) програмованих користувачем уставок по перевищенню температури (TH) і зі зниження температури (TL). Внутрішній регістр прапора буде виставлений, коли уставка пересічена. Це буде виконано, коли виміряна температура більше ніж TH або менше ніж TL. Якщо термостатування не потрібно, два байти енергонезалежної пам'яті (EEPROM) зарезервовані для уставок можуть бути використані для енергонезалежного зберігання інформації загального призначення.
Кожна мікросхема DS18B20 має унікальний і незмінний 64-бітний серійний номер, який використовується як вузлова адреса датчика. Це дозволяє безлічі мікросхем DS18B20 співіснувати на одній 1-провідний шині. Мікросхема DS18B20 може бути локально запитана від 3.0 В до 5.5 В або вона може бути налаштована таким чином, щоб бути запитаною за допомогою 1-провідної лінії даних.
Принцип роботи термодатчика заснований на порівнянні частот двох внутрішніх генераторів. Один генератор видає постійну частоту незалежно від температури, а частота другого генератора змінюється в залежності від температури корпусу термодатчика. Шляхом обчислень формується вихідний код, що включає також інформацію про знак температури. Необхідна похибка вимірювань задається при ініціалізації мікроконтролерного термодатчика встановленням п’ятого та шостого біту регістра конфігурації.
Підключення термодатчика до мікроконтролера показано на рис. 2.3 шина даних повинна бути підключена до плюса живлення через резистор номіналом 4,7 кОМ., оскільки вихідний транзистор датчика має відкритий сток. При живленні датчика від шини даних вивід 3 залишається вільним.
Рисунок 2.3 – Схема підключення термодатчика
У режимі живлення від шини даних перед прийомом інформації потрібна максимальна пауза тривалістю 750 мс.
Класичний мікроконтролер і8051 (МС551) і вітчизняний аналог КМ1816ВЕ51 виконані на основі високорівневої n-МОП технології і випускалися у корпусі БІС, що має 40 зовнішніх виводів. Цокольовка корпусу і8051 і найменування виводів показані на рис. 2.4 Для роботи і8051 потрібно одне джерело електроживлення +5 В. Через чотири програмованих порти вводу/виводу і805151 взаємодіє із середовищем в стандарті ТТL-схем з трьома станами виходу.
Корпус s8051 має два виводи для підключення кварцового резонатора, чотири вивода для сигналів, керуючих режимом роботи МК, і вісім ліній порту 3, які можуть бути запрограмовані користувачем на виконання спеціалізованих (альтернативних) функції обміну інформацією з середовищем.
електричний схема мікропроцесорний пристрій
Рисунок 2.4 – Призначення висновків мікроконтролера 8051
VSS - потенціал загального проводу ("землі");
VCC - основна напруга живлення +5 В;
ХТАL1, ХТАL2 - виводи для підключення кварцового резонатора;
RESET (RST) - вхід загального скидання мікроконтролера;
РSЕN - дозвіл зовнішньої пам'яті програм: видається тільки при зверненні до зовнішнього ПЗУ;
АLЕ - строб адреси зовнішньої пам'яті;
ЕА - відключення внутрішньої програмної пам'ять, рівень 0 на цьому вході змушує мікроконтролер виконувати програму тільки із зовнішнього ПЗП; ігноруючи внутрішнє (якщо останнє є);
Р0 - восьми бітний двонаправлений порт вводу-виводу інформації: при роботі із зовнішніми ОЗП і ПЗП по лініях порту в режимі тимчасового мультиплексування видається адреса зовнішньої пам'яті, після чого здійснюється передача або прийом даних;
Р1 - восьми бітний квазі двонаправлений порт вводу / виводу: кожен розряд порту може бути запрограмований як на введення, так і на виведення інформації, незалежно від стану інших розрядів;
Р2 - восьми бітний квазі двонаправлений порт, аналогічний Р1; крім того, виводи цього порту використовуються для видачі адресної інформації при зверненні до зовнішньої пам'яті програм або даних (якщо використовується 16-бітова адресація останньої).
РЗ - восьми бітний квазі двонаправлений порт, аналогічний. Р1; крім того, виводи цього порту можуть виконувати ряд альтернативних функцій, які використовуються при роботі таймерів, порту послідовного введення-виведення, контролера переривань і зовнішньої пам'яті програм і даних.
Основу структурної схеми і8051 (рис. 2.5) утворює внутрішня двонаправлена 8-бітна шина, яка зв’язує між собою всі основні вузли та пристрої: резидентну пам'ять програм (RРМ), резидентну пам'ять даних (RDМ), арифметико-логічний пристрій (АLU), блок регістрів спеціальних функцій, пристрій управління (СU) та порти вводу / виводу (РО-РЗ).
Живлення схеми реалізовано у вигляді батареї В1.
Рисунок 2.5 – Структурна схема і8051
LCD на базі HD44780 підключається до мікроконтролера безпосередньо до портів. Є два способи підключення - на 8 біт і на 4 біта. У восьмибітному режимі трішки простіше закидати байти - не потрібно зсовувати байт, зате в чотирьох бітному різко потрібно витрачати на цілих чотири ніжки контролера менше.
Призначення виводів LCDLM016L:
– Виводи D7 ... D0 це шина даних / адреси.
– E - стробуючий вхід. Дригом напруги на цій лінії ми даємо зрозуміти дисплею що потрібно забирати / віддавати дані з / на шину даних.
– RW - визначає в якому напрямку у нас рухаються дані. Якщо 1 - то на читання з дисплея, якщо 0 то на запис у дисплей.
– RS - визначає що у нас передається, команда (RS = 0) або дані (RS = 1). Дані будуть записані в пам'ять за поточною адресою, а команда виконана контролером.
Бібліотека для LCD у даній курсовій роботі складається з двох файлів:
– файл lcd_ds.asm містить усі основні параметри портів і, власне, код.
– файл 2313def.inc містить макроси для роботи з дисплеєм. І використовується для роботи з бібліотекою.
3 РОЗРОБКА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
3.1 Блок-схема алгоритму програми
Принцип роботи мікропроцесорного пристрою для вимірювання температури можна описати наступними етапами:
1. Початок роботи.
2. Ввімкнення живлення. Схема пристрою живиться від батареї B1 +5В.
3. Встановлення початкових установок мікроконтролера. У них встановлюється покажчик стека на останню комірку ОЗП, початковий стан каналів зв'язку з датчиками температури, швидкість обміну по інтерфейсу, дозволяються переривання від таймера/лічильника, переписується кількість і індивідуальні адреси датчиків температури з EEPROM в ОЗП, в регістри записуються необхідні константи. Коли початкові установки завершені, починається частина програми, яка робить опитування датчика температури. Вона буде циклічно повторяться, поки підводиться живлення до мікроконтролера або доки не виникне запит на переривання. Опитування датчика температури починається з сигналу скидання на лінії.
4. Команда початку виміру температури дозволяє перетворення значень температури в цифровий вид для датчика.
5. Аналого-цифрове перетворення значень температури займає час від 750 мс до 800 мс. Тому, щоб набути правильного значення температури, необхідно почекати паузу 750 мс (для термодатчика DS18B20). Пауза витримується за допомогою таймера/лічильника. Під час паузи можна здійснювати інші дії (наприклад, зробити обмін даними з комп'ютером або вивести результати на РКІ).
6. Послідовно зчитуються виміряні значення температури; запис виміряних значень у відповідні комірки ОЗУ.
7. На цьому етапі робиться галуження програми : якщо виміряне значення температури не виходить за межі -10оС<Т<+85оС, то результат виводиться на екран ЖКИ (етап 8). Якщо ж виміряне значення температури виходить за межі діапазону, то відбувається сигнал попередження (етап 9).
8. Якщо необхідно продовжувати вимірювати температуру (етап 10), то переходять до пункту 4, якщо ні, то тоді відбувається завершення програми – етап 11.
Блок-схема даного алгоритму представлена на рис. 3.1
Рисунок 3.1 – Блок-схема алгоритму роботи програми
3.2 Лістинг програми
NAME LCD_TEMPER
DAT EQU P1
RW EQU P3.5
RS EQU P3.6
EN EQU P3.7
SER EQU P0.0
RCK EQU P1.2
OE EQU P1.6
PROGRAM SEGMENT CODE
MYDATA SEGMENT CODE
CSEG AT 0
USING 0
JMP start
RSEG PROGRAM
start:
MOV P1, #0B8h
CLR P1.6
CALL init_lcd
CALL clear_lcd
MOV DPTR, #txt
next:
CLR A
MOVC A, @A+DPTR
CJNE A, #0dh, cont
JMP $
cont:
CALL write_char
INC DPTR
JMP next
;———————————————_
wait_lcd:
SETB P1.6
still_wait:
SETB EN
CLR RS
SETB RW
MOV DAT, #0FFh
MOV C, P1.7
CLR EN
JC still_wait
CLR RW
CLR 1.6
RET
;———————————————_
init_lcd:
SETB EN
CLR RS
CLR RW
MOV A, #38h
CALL shft
CLR EN
CALL wait_lcd
SETB EN
CLR RS
CLR RW
MOV A, #0Eh
CALL shft
MOV DAT, #0Eh
CLR EN
CALL wait_lcd
SETB EN
CLR RS
CLR RW
MOV A, #06h
CALL shft