Програмування мікроконтролера термометра
Розробка технічної документації для виготовлення виробу, що включає в себе реалізацію електричної схеми на платі, та програмуванням мікроконтролера термометра. Існуючі варіанти реалізації цифрових термометрів. Вибір терморезистора. Операційний підсилювач.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 09.02.2015 |
Размер файла | 712,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
ВСТУП
Мікроконтролер (англ. Micro Controller Unit, MCU ) - мікросхема, призначена для управління електронними пристроями. Типовий мікроконтроллер поєднує в собі функції процесора і периферійних пристроїв, містить ОЗУ або ПЗУ. По суті, це однокристальний комп'ютер, здатний виконувати прості завдання. З появою однокристальних мікро-ЕОМ пов'язують початок ери масового застосування комп'ютерної автоматизації в галузі управління. Мабуть, ця обставина і визначило термін "контролер" (англ. controller - Регулятор, керуючий пристрій).
При проектуванні мікроконтролерів доводиться дотримувати баланс між розмірами і вартістю з одного боку і гнучкістю і продуктивністю з іншого. Для різних додатків оптимальне співвідношення цих і інших параметрів може розрізнятися дуже сильно. На відміну від звичайних комп'ютерних мікропроцесорів, в мікроконтролерах часто використовується Гарвардська архітектура пам'яті, тобто роздільне зберігання даних і команд в ОЗУ і ПЗУ відповідно.
Використання в сучасному мікроконтролері достатнього потужного обчислювального пристрою з широкими можливостями, побудованого на одній мікросхемі замість цілого набору, значно знижує розміри, енергоспоживання і вартість побудованих на його базі пристроїв.
Широкого застосування набули датчики температури - термометри, на основі мікроконтролерів. Малі габарити, функціональність, простота, відносна дешевизна зробили незамінними використання мікроконтролерів для їх реалізації. Основною задачею є розробка технічної документації для виготовлення виробу, що включає в себе реалізацію електричної схеми на платі, та програмуванням мікроконтролера термометра.
1. ПРИЗНАЧЕННЯ ТА ОБЛАСТЬ ЗАСТОСУВАННЯ
Термометри кімнатні або вуличні, автомобільні або офісні використовуються в побуті кожен день. В наші дні цифрова техніка витісняться спиртові, пружинні і ртутні термометри. Похибка показань і термін експлуатації сучасних цифрових термометрів залежить від призначення приладу і від їх виробника.
Межа вимірювань температури становить -22 °.. +30 ° С. Прилад проектувався в найбільш дешевому варіанті виконання, тому точність вимірювання - в межах останнього знака. Термометр можна використовувати вночі, оскільки індикація температури заснована на світодіодах і тому дуже яскрава. Дані про температуру навколишнього середовища знімаються з терморезистора.
Отже, призначення - безпосереднє вимірювання навколишньої температури. Через обмеженість діапазону вимірювання температури, рекомендовано застосовувати в основному в приміщеннях.
2. ТЕХНІЧНА ХАРАКТЕРИСТИКА
1. Ланцюг живлення:
· +4,5 В для живлення мікроконтролеру і струм 60 мА
· +4,5 В для операційного підсилювача
· +2,6 В для стабілізуючого каналу
2. Виконавчі пристрої:
· Операційний підсилювач КР140УД1208.
· Драйвер SAA1064.
· Мікроконтролер Tiny 15.
· Вимірювальний міст.
· Терморезистор ММТ-1.
· Семисегментні індекатори.
3. Частота мікроконтроллеру - 124 кГц
4. Діапазон робочих температур: від -22оС до +30оС
3. ОГЛЯД ІСНУЮЧИХ РІШЕНЬ І ОБГРУНТУВАННЯ ВИБОРУ ОБРАНОГО ПРИНЦИПУ ПОБУДОВИ ПРИСТРОЮ
3.1 Огляд існуючих варіантів реалізації цифрових термометрів
З появою напівпровідникових елементів рідинні та механічні термометри потіснили цифрові датчики температури, тобто цифрові термометри.
Принцип роботи електричних термометрів ґрунтується на зміні опору провідника при зміні температури навколишнього середовища. Електричні термометри більш широкого діапазону засновані на термопарах (контакт між металами з різною електронегативність створює контактну різницю потенціалів, що залежить від температури).
Найбільш точними і стабільними в часі є термометри опору на основі платинової дроту або платинового напилення на кераміку. Залежність від температури в яких майже лінійна і підпорядковується квадратичним законом при позитивній температурі. Температурний діапазон -200 - +850 ° C.
Іншим менш поширеним варіантом цифрового термометра є оптичні термометри. Оптичні термометри дозволяють реєструвати температуру завдяки зміні рівня світності, спектра та інших параметрів при зміні температури.
Проте, звісно найпростішим та найефективнішим способом вимірювання температури навколишнього середовища є термометр на основі термістора. Який і було використано для розробки.
3.2 Вибір терморезистора
Терморезистор - це пристрій, опір якого суттєво змінюється зі зміною температури. Він має високий температурний коефіцієнт опору (ТКС) в широкому діапазоні температур. Розрізняють терморезистори з негативним ТКС, опір яких падає зі зростанням температури (їх часто називають термісторами), і терморезистори з позитивним ТКС, опір яких збільшується із зростанням температурири (їх називають позисторами).
Терморезистори обох типів виготовляють з напівпровідникових матеріалів. Діапазон зміни їх ТКС становить -6, 5 °.... +70 ° С. Найбільш поширені терморезистори виготовляють на основі мідно-марганцевих (ММТ), кобальто-марганцевих (КМТ) і мідно-кобальто-марганцевих (СТЗ) оксидних напівпровідників.
По конструктивному оформленню терморезистори можна розділити на наступні категорії (рисунок 3.1):
* у вигляді циліндричних стрижнів (КМТ-1, ММТ-1, КМТ-4 ММТ-4);
* у вигляді дисків (СТ1-17, СТЗ-17, СТ5-1);
* у вигляді плоских прямокутників (CT3-23);
* у вигляді мініатюрних бусинок (СТ1-18, СТ1-19).
Рисунок 10.1- Терморезистори
Для проектування термометра було обрано терморезистор ММТ-1 опором 9,0 кОм при 25 ° С.
У терморезисторів також є недоліки, які необхідно враховувати при виборі. Перший недолік - це інерційність вимірювання опору. Було виконано наступний експеримент. Терморезистор ММТ-1 на 9,0 кОм був поміщений в морозильник і підключений до вимірювального пристрою, який сканував опір через певні проміжки часу в мс. Дані передавалися на комп'ютер і записувалися в файл. dat, а потім були перетворені в формат таблиці Excel (таблиці 3.1), і на їх підставі був побудований графік виходу на температури кімнати (рисунок 3.2).
Таблиця 3.1 - Показники терморезистора.
Хвилини |
Секунди |
Повні секунди |
О, кОм |
|
43 |
41 |
0 |
30,44 |
|
43 |
42 |
1 |
30,45 |
|
43 |
44 |
3 |
30,43 |
|
43 |
47 |
6 |
30,28 |
|
43 |
49 |
8 |
28,33 |
|
43 |
50 |
9 |
25,42 |
|
43 |
56 |
15 |
19,52 |
|
44 |
2 |
21 |
16,57 |
|
44 |
11 |
30 |
15,22 |
|
44 |
24 |
43 |
13,89 |
|
44 |
27 |
46 |
13,70 |
|
44 |
36 |
55 |
13,37 |
|
44 |
43 |
62 |
13,10 |
|
44 |
49 |
68 |
13,03 |
|
44 |
58 |
77 |
12,91 |
|
45 |
6 |
85 |
12,87 |
|
45 |
20 |
99 |
12,60 |
|
45 |
28 |
107 |
12,42 |
|
45 |
33 |
112 |
12,38 |
|
45 |
43 |
122 |
12,26 |
|
45 |
54 |
133 |
12,01 |
|
46 |
4 |
143 |
11,98 |
|
46 |
9 |
148 |
11,88 |
|
46 |
13 |
152 |
11,80 |
|
46 |
18 |
157 |
11,81 |
|
46 |
26 |
165 |
11,76 |
|
46 |
30 |
169 |
11,80 |
Рисунок 3.2 - Показники терморезистора
Можна зробити висновок, що для установки точних значень температури необхідно близько двох хвилин. Це пояснює невірні (некоректні) показники температури у випадках, коли термометр був поміщений на відкриту місцевість і при цьому дув вітер, або термометр швидко був переміщений з кімнати на кухню або у ванну, де температура значно відрізняється. Показання приладу будуть явно некоректні, оскільки опір терморезистора змінюється дуже повільно.
Другий недолік терморезисторів - це шуми. Амплітуда шумів, створювана терморезистором, може досягати великих значень, тоді як АЦП мікроконтролера швидко фіксує ці дані з термодатчика. В результаті показання термометра будуть некоректні.
Ці недоліки, а також великий розкид параметрів при виготовлення терморезисторів, обмежують їх масове застосування. Проте можливості мікроконтролерів (мається на увазі не тільки Tiny 15) необмежені, оскільки дані можна не тільки вимірювати, а й опрацьовувати за допомогою математичного аналізу, використавши методи інтеграціі і інтерполяції, а в крайніх випадках - корекцію по еталону.
Отже, було зупенно на такому варіанті, так як він не потребуж прецензійної точності, та є дешевим та простим у виготовленні.
4. РОЗРОБКА ТА ОПИС СТРУКТУРНОЇ ТА ФУНКЦІОНАЛЬНОЇ ЕЛЕКТРИЧНИХ СХЕМ ВИРОБУ
Схема структурна та електрична представленні на рисунку 4.1 та 4.2 відповідно.
Рисунок 4.1 - Структурна схема
Рисунок 4.2 - Електрична-принципова схема
Схема має живлення +4,5 В. Канал виміру має стабілізоване живлення +2,6 В від ланцюга R3-VD1 і складається з вимірювального моста та операційного підсилювача DA1, що виконує роль суматора. Для усунення зміщення нуля операційного підсилювача настроюється баланс R5 і виконується корекція по току нуля R8.
Операційний підсилювач КР140УД1208 може працювати при напрузі живлення від +2,4 В до +18,0 В, тому живлення ОП не стабілізується. До складу мікроконтролера Tiny 15 входить 10-розрядний АЦП, який комутується вбудованим чотирьохканальним мультиплексором при налаштуванні АЦП. На вході АЦП всередині мікроконтролера присутній конденсатор, який компенсує втрати при зчитуванні даних в АЦП, тому після операційного підсилювача немає конденсатора, що виконує роль компенсатора. Мікроконтролер зберігає працездатність при живленні +2,7 В.
Для управління семисегментним індикатором в драйвері присутні дешифратори, а також схема управління мультиплексуванням по два розряди чотирьох розрядного індикатора. Мультиплексори можуть комутувати струм до 110 мА, але в разі застосування світлодіодних матриць з ультраяскравим світінням і зниженням живлення нижче норми драйвер може вийти з ладу. З цієї причини для посилення по струму встановлені транзистори VTl, VT2.
Дуже важливе значення для правильності показань має канал вимірювання. Перш за все, залежність опору терморезистора від температури в ідеалі - лінійна, хоча на практиці спостерігаються відхилення в кожному екземплярі.
5. ВИБІР ТА ОБГРУНТУВАННЯ ОКРЕМИХ ВУЗЛІВ ТА ЕЛЕМЕНТІВ
5.1 Операційний підсилювач
Операційний підсилювач -- підсилювач постійного струму з диференційним входом, що має високий коефіцієнт підсилення. Призначений для виконання різноманітних операцій над аналоговими сигналами, переважно, в схемах з від'ємним зворотним зв'язком (ВЗЗ). Операційні підсилювачі застосовуються в різноманітних схемах радіотехніки, автоматики, інформаційно-вимірювальної техніки, - там, де необхідно підсилювати сигнали, в яких є постійна складова.
В даний час ОП отримали широке застосування, як у вигляді окремих мікросхем, так і у вигляді функціональних блоків - у складі складніших мікросхем. Така популярність обумовлена тим, що ОП є універсальним блоком з характеристиками, близькими до ідеальних, на основі якого можна побудувати безліч різноманітних електронних вузлів.
5.1.1 Характеристики ОП КР140УД1208
Напівпровідникова мікросхема КР140УД1208 - мікропотужний операційний підсилювач з регульованим споживанням потужності. Мікросхема КР140УД1208 призначена для побудови активних фільтрів і інтеграторів. Умовне позначення підсилювача показане на рисунку 5.1.
Рисунок 5.1 - КР140УД1208
Призначення виводів:
-IN - инвертирующий вхід
+ IN - неінвертуючий вхід
OUT - вихід
V - напруга живлення
BAL - балансувальні висновки
CN - висновок струму управління
5.2. Мікроконтролер
Tiny15L є 8-ми розрядним CMOS микроконтролером з низьким рівнем енергоспоживання, основаним на AVR RISC архітектурі. Ядро AVR містить потужний набір інструкцій і 32 робочих регістра загального призначення. Усі 32 регістра безпосередньо підключені до арифметико - логічного пристрою (АЛУ), що забезпечує доступ до двох незалежних регістрах при виконанні однієї інструкції за один такт. В результаті, дана архітектура має більш високу ефективність коду, при підвищенні пропускної здатності, аж до 10 разів, у порівнянні зі стандартними мікроконтролерами CISC. ATtiny15L має: 1 Кбайт Flash пам'яті, 64 байт EEPROM, 6 ліній I / O загального призначення, 32 робочих регістра загального призначення, 2 8-vb розрядних універсальних таймера / лічильника, один з високошвидкісним виходом з ШІМ, вбудовані генератори, внутрішні та зовнішні переривання, програмований стежить таймер, 4-х канальний, 10-ти розрядний АЦП з одним диференціальним входом сигналу напруги з опціональним х20 посиленням, а також, три програмно вибираних режиму економії енергоспоживання. Блок-схема мікроконтролера представлена на рисунку 5.2, розташування виводів - рисунок 5.3
Рисунок 5.2 Блок-схема Tiny15L
Рисунок 5.3 Розташування виводів Tiny15L
5.3 Драйвер SAA1064
Умовне позначення драйверу та розташування його виводів представлене на рисунку 5.3. значення виводів вказано в таблиці 5.1.
Таблиця 5.1 - Призначення виводів
Рисунок 5.4 Розташування виводів
Блок-схема представлена на рисунку 5.5.
Рисунок 5.5- Блок-схема
5.3 Транзистори
Для підсилення сигналів з мультиплексора драйвера використано два транзистори КТ315. КТ315 - тип кремнієвого біполярного транзистора, n-p-n провідності, що отримав найширше розповсюдження в радянській радіоелектронній апаратурі. Характеристики серії 315 приведенні в таблиці 5.1.
Таблиця 5.1 - Характеристики КТ315
6. РОЗРАХУНКИ, ЩО ПІДТВЕРДЖУЮТЬ ПРАЦЕЗДАТНІСТЬ СХЕМИ
6.1 Розрахунок перетворювача для пониження напруг до 5В
електричний мікроконтролер термометр програмування
Для вимірювання температури включений міст Уітстона. Реально міст складається з чотирьох опорів. Рівновага моста досягається підстроюванням резистора R2, в цьому випадку ел. струм дорівнює нулю, отже падіння напруги на всіх чотирьох резисторах однаково. Схема моста показана на рисунку 6.1.
Рисунок 6.1 - міст Уілстона
R1 · I1 = R3 · I3
R2 · I2 = Rt · It
при умові
I1 = I3, I2 = It, I0 = 0
Rt = R2 · R3/R1
При зміні температури опір резистора Rt змінюється, опори R2, R3, R1 - незмінні, тобто
Rt ? R2 · R3/R1
В цьому випадку
I0> 0: I0 = f1 (Rt) = f2 (T)
Якщо вимірювальний прилад має високий вхідний опір, то в діагоналі bd можна виміряти напругу U = f3 (T).
На рисунку 6.2 показано схему ОП.
Рисунок 6.2 - Схема операційного підсилювача
Розрахуємо вибраний підсилювач, тобто визначимо величину вхідного опору R3:
.
Живлення схеми ОП має обмеження 4,5 В. Для вирішення проблеми живлення вимірювального мосту стабілізовано на рівні +2,6 В, а коефіцієнт підсилення ОП дорівнює 13. Подальше зменшення коефіцієнта посилення призведе до спотворень даних і збільшення похибки.
7. РОЗРОБКА І ОПИС ПРИНЦИПІАЛЬНОЇ ЕЛЕКТРИЧНОЇ СХЕМИ
Ключовим елементом електричної схеми є мікроконтролер. До якого через вимірюючий міст, після сумування підсилювачем потрапляє сигнал. В мікроконтролері знаходиться десяти розрядний АЦП, який забезпечує перетворення аналогового сигналу.
Після отримання точних даних АЦП в програмі виділяється по-позитивних і негативне значення температури.. На вході АЦП всередині мікроконтролера присутній конденсатор, який компенсує втрати при зчитуванні даних в АЦП, тому після операційного підсилювача немає конденсатора, що виконує роль компенсатора. Мікроконтролер зберігає працездатність при живленні +2,7 В.
Для управління семисегментним індикатором в драйвері присутні дешифратори, а також схема управління мультиплексуванням по два розряди чотирьох розрядного індикатора. Мультиплексори можуть комутувати струм до 110 мА, але в разі застосування світлодіодних матриць з ультраяскравим світінням і зниженням живлення нижче норми драйвер може вийти з ладу. З цієї причини для посилення по струму встановлені транзистори VTl, VT2.
8. РОЗРОБКА І ОПИС АЛГОРИТМУ УПРАВЛЯЮЧОЇ ПРОГРАМИ
Програма для цифрового термометра реалізована на мові програмування Assembler. Перед написанням програми було зроблено болк-схем роботи пристрою, по якому виконано лістинг.
Структура програми спрощена і не має складних логічних переходів. На початку програми налаштовується конфігурація порту вводу-виводу. Потім кілька разів зчитуються дані з АЦП. Ці дані сумуються і діляться на кількість разів зчитування (обчислюється середнє арифметичне).
АЦП налаштований на перетворення з частотою 50 кГц. Опорна напруга для АЦП споживається від живлення мікроконтролера. У процесі аналого-цифрового перетворення двійкове число Z обчислюється за рівнянням Z=1024*Uвх /UREF, де Uвх при 0 ° С складе 0,58 В, а і UREF=VCC. Для Тiny15 Z = 14716.
ВИСНОВОК
Отже, в даному курсовому проектові мною було розроблено електронний термометр, призначений для вимірювання температури в приміщеннях.
Було розраховано всі елементи, виконано всю технічну документацію по пристрою. Розрахунки робились як аналітично так і експериментально. Так, за допомогою експерименту вдалось взнати інерційність та точність пристрою, що допомогло визначитися на виборі моделей елементів. В основі пристрою лежить мікроконтролер Tiny15, за допомогою якого ведуться всі обрахунки. Для даного пристрою було написано програму. При проектуванні пристрою вдалось зробити наступні інженерські висновки, при виготовленні приладу на SMD-елементах собівартість можна знизити в два рази. Прилад є спробою подолати різні проблеми шляхом математичного. Математичні перетворення виконані на мові асемблера мають обмежуються в ресурсах і розмірах пам'яті мікроконтролером Tiny 15. Для поліпшення характеристик вимірювання температури необхідно реалізувати два канали вимірювання (окремо для позитивної і негативної температури) з хорошими лінійними передавальними характеристиками, а також задіяти більш продуктивний мікроконтролер.
ДОДАТОК
КОД ПРОГРАМИ
.include "D:\Program Files\Atmel\AVR Studio\Appnotes\tn15def.inc"
;Автор: Павлючин Т.А.
;Дата: 10.05.2012
;Версия: 1.3.6
;Имя файла: Test_25_6.asm
;Микроконтроллер: AVR tiny15.
;Тактовая частота: 1.6мГц
;Питание: нестабилизированное 4,5 В
.DEVICE ATtiny15
.list
.deftmp = r25; Рабочий регистр
.deftmp1 = r16; Рабочий регистр
.deftime = r17; Счетчик цикла задержки
.defdbyt = r18; Байт данных для передачи по шине I2C
.defFlg = r19; Флаги программы
.defDig43 = r20; Цифры 4 и 3 для вывода
.defDig21 = r21; Цифры 2 и 1 для вывода
.deftt = r22; Рабочий регистр
.deftt1 = r23; Рабочий регистр
.deftt2 = r24; Рабочий регистр
; Флаги в регистре Flg:
.equAck = 0; Флаг квитирования = разряд 0
; Входы/выходы I2C:
.equ SDA = PB1; SDA = порт B / разряд 1
.equ SCL = PB2; SCL = порт B / разряд 2
.equ ERR = PB0; ERR = порт B / разряд 0
; Адреса ведомых устройств I2C:
.equ DispAdr = $76; Адрес записи SAA1064 (Вывод ADR (1) - Vcc)
.equ DisrAdr = $77; Адрес чтения SAA1064 (Вывод ADR (1) - Vcc)
.cseg
.org 0
rjmpRESET
nop;rjmp EXT_INT0прерывание не используется
nop;rjmp EXT_PINпрерывание не используется
nop;rjmp TIME_OVF0 прерывание от таймера
nop;rjmp EE_RDY прерывание от таймера
nop;rjmp ANA_COMPпрерывание не используется
.org 10
;сброс всех значений
;настройка порта В
RESET:nop
clrtmp; Сброс регистра
outDDRB, tmp
outPORTB, tmp;обнулить порт В
clrtmp
lditmp, $07;РВ0,PB1,РВ2-выходы
outDDRB, tmp
;Начало программы
Initial: nop
ldi dbyt,Low(RAMEND); Функция вспомогательного регистра
out SPL,dbyt; Инициализируем указатель стека
ldi Flg,$01; Сбрасываем в 0 все флаги, кроме Ack
clr tt; Обнуляем переменную
lditmp, $01
outPORTB, tmp; Отменить сообщение об ошибке
ldidig21, $11; Вывод на индикатор плюса
ldidig43, $25; Вывод на индикатор 25
mov tt1,Dig21; Цифры 1 (младшая) и 2 (старшая)
swap tt1; Меняем местами младшую и старшую цифры
andi tt1,$0F; Очищаем старший полубайт (цифра 1)
mov tt2,Dig43; Цифры 3 (младшая)
swap tt2; Меняем местами младшую и старшую цифру
andi tt2,$0F; Очищаем старший полубайт (цифра 3)
nop
;чтение байта управления для сброса флага питания
read:ldidbyt, DisrAdr;назначаем адрес ведомого
rcall Start
RB1:nop
sbiDDRB, SCL;ниспадающий фронт SCL
rcall wait5us; Цикл задержки
cbiDDRB, SCL;нарастающий фронт SCL
RB2:nop
sbisPinB, SCL;состояние ожидания ведомого устройства
rjmpRB2
rcall wait5us; Цикл задержки
clc;сброс флага переноса
sbicPinB, SDA;если SDA=1
sec;установка флага переноса
roldbyt;сдвигаем прочитанный бит в байте
brccRB1;переход если чтение не завершено
SetAck:nop;вывод бита квитирования
sbiDDRB, SCL;ниспадающий фронт SCL
sbrsFlg, Ack;Пропускаем следующую команду, если Ack=1
rjmpSA1;Переход если Аск=0
cbiDDRB, SDA;установка SDA в 1
rjmpSA2
SA1:nop
sbiDDRB, SDA;установка SDA в 0
SA2:nop
rcall wait5us; Цикл задержки
cbiDDRB, SCL;нарастающий фронт SCL
SA3:nop
sbisPinB, SCL;Состояние ожидания ведомого устройства
rjmpSA3
rcall wait5us; Цикл задержки
rcall stopp; Выводим условие завершения
Haupt: nop
; Инициализируем SAA1064
; Передача байта управления в SAA1064
ldi dbyt,DispAdr; Адрес SAA1064, направление - запись
; Передаем условие старта + адрес ведомого
rcall Start; Передаем условие старта + адрес ведомого
sbrc Flg,Ack; Пропускаем следующую команду, если квитирование
rjmpss; Завершаем, если отрицательное квитирование
ldi dbyt,$00; Подадрес - регистр управления
rcall WriteByte; Передаем
sbrc Flg,Ack; Пропускаем следующую команду, если квитирование
rjmpss; Завершаем, если отрицательное квитирование
ldi dbyt,$47; Максим., вывод цифр, динамический режим
rcall WriteByte; Передаем
;Продолжение программы
ss:nop
rcall stopp; Выводим условие завершения
sbrc Flg,Ack; Пропускаем следующую команду, если получено квитирование
rjmp Haupt; Новая попытка, если нет квитирования
; Вывод 4-х цифр в SAA1064
ldi dbyt,DispAdr; Адрес SAA1064, направление - запись
rcall Start; Передаем условие старта + адрес ведомого
sbrc Flg,Ack; Пропускаем следующую команду, если квитирование
rjmp erro; Завершаем, если отрицательное квитирование
ldi dbyt,$01; Подадрес = Digit 1
rcall WriteByte; Передаем
sbrc Flg,Ack; Пропускаем следующую команду, если квитирование
rjmp erro; Завершаем, если отрицательное квитирование
mov tmp1,Dig21; Цифры 1 (младшая) и 2 (старшая)
andi tmp1,$0F; Очищаем старший полубайт (цифра 2)
rcall Get7Segm; Загружаем 7-сегментный код младшего полубайта
rcall WriteByte; Передаем цифру 1
et:rcallStopp
ldi dbyt,DispAdr; Адрес SAA1064, направление - запись
rcall Start; Передаем условие старта + адрес ведомого
sbrc Flg,Ack; Пропускаем следующую команду, если квитирование
rjmp erro; Завершаем, если отрицательное квитирование
ldi dbyt,$02; Подадрес = Digit 1
rcall WriteByte; Передаем
sbrc Flg,Ack; Пропускаем следующую команду, если квитирование
rjmp et;Повторяем
movtmp1, tt2
rcall Get7Segm; Загружаем 7-сегментный код младшего полубайта
rcall WriteByte; Передаем цифру 2
ot:rcallStopp
ldi dbyt,DispAdr; Адрес SAA1064, направление - запись
rcall Start; Передаем условие старта + адрес ведомого
sbrc Flg,Ack; Пропускаем следующую команду, если квитирование
rjmp erro; Завершаем, если отрицательное квитирование
ldi dbyt,$03; Подадрес = Digit 1
rcall WriteByte; Передаем
sbrc Flg,Ack; Пропускаем следующую команду, если квитирование
rjmp ot;Повторяем
mov tmp1,Dig43; Цифры 3 (младшая) и 4 (старшая)
andi tmp1,$0F; Очищаем старший полубайт (цифра 4)
rcall Get7Segm; Загружаем 7-сегментный код младшего полубайта
rcall WriteByte; Передаем цифру 3
rt:rcallStopp
ldi dbyt,DispAdr; Адрес SAA1064, направление - запись
rcall Start; Передаем условие старта + адрес ведомого
sbrc Flg,Ack; Пропускаем следующую команду, если квитирование
rjmp erro; Завершаем, если отрицательное квитирование
ldi dbyt,$04; Подадрес = Digit 1
rcall WriteByte; Передаем
sbrc Flg,Ack; Пропускаем следующую команду, если квитирование
rjmp rt;Повторяем
movtmp1, tt1
rcall Get7Segm; Загружаем 7-сегментный код младшего полубайта
rcall WriteByte; Передаем цифру 4
rcallStopp
rjmp Initial; Возвращаемся в начало программы
erro: nop;Обработка ошибки квитирования
inctt;Увеличить на 1
cpitt, 4;Сравнить количество отказов
brnevb;Если не равно то выход
clrtmp
outPORTB, tmp;Если сбой то сигнализация
rcall stopp; Выводим условие завершения
nop
rcall w200
clrtt;Сброс ошибки
vb:nop
rjmp initial;Возвращаемся в начало программы
Start: nop
clz
sbiDDRB,SDA; SDA = лог. 0: условие старта
rcall wait4us; Цикл задержки
WriteByte: nop; Запись байта в ведомое устройство
clz
sec; Флаг переноса C = 1
rol dbyt; Сдвигаем влево, C->LSB, MSB->C
rjmp bit1; Особая обработка разряда 1
WriteBit: nop
lsl dbyt; Если dbyt пустой,...
bit1:nop
breq GetAck;... то передача завершена
sbiDDRB,SCL; SCL = лог. 0 Ниспадающий фронт SCL
brcc WriteLow; Переход, если флаг C = 0
nop; Чтобы уравновесить время выполнения
cbiDDRB,SDA; SDA - высокоомный Установка SDA в 1
rjmp SCL_High
WriteLow: nop
sbiDDRB,SDA; SDA = лог. 0 Установка SDA в 0
nop; Чтобы уравновесить длительность такта
SCL_High: nop
rcall wait4us; Цикл задержки
cbiDDRB,SCL; SCL - высокоомный Ниспадающий фронт SCL
WB1:nop
sbis PinB,SCL; Состояние ожидания ведомого устройства ?
rjmp WB1
rcall wait5us; Цикл задержки
rjmpWriteBit
GetAck:nop; Считывание бита квитирования от ведомого
sbiDDRB,SCL; SCL = лог. 0 Ниспадающий фронт SCL
cbiDDRB,SDA; SDA - высокоомный SDA - высокоомное состояние
rcall wait5us; Цикл задержки
cbiDDRB,SCL; SCL - высокоомный Нарастающий фронт SCL
GA1: nop
sbis PinB,SCL; Состояние ожидания ведомого устройства
rjmp GA1
cbr Flg,1<<Ack; Флаг Ack = 0
sbic PinB,SDA; Если SDA = 1,
sbr Flg,1<<Ack; флаг Ack = 1
rcall wait4us; Цикл задержки
ret
;Подпрограмма перекодировки данных из 7-ми сегм. кода
Get7Segm: nop
ldiZH,high(2*prog3)
ldiZL,Low(2*prog3)
AddZL,tmp1
lpm
movdbyt, r0
ret
;Подпрограмма передачи флага STOP
Stopp:nop; Вывод условия завершения
sbiDDRB,SCL; SCL = лог. 0 Ниспадающий фронт SCL
sbiDDRB,SDA; SDA = лог. 0; Установка SDA в 0
rcall wait5us; Цикл задержки
cbiDDRB,SCL; SCL - высокоомный Установка SCL в 1
rcall wait5us; Цикл задержки
cbiDDRB,SDA; SDA - высокоомный Нарастающий фронт SCL
rcall wait5us; Цикл задержки
ret
;Подпрограмма задержки 12 мкс
Wait5us:nop; Цикл задержки 12 мкс при f = 1,6 МГц
ldi time,2
W5:nop
dec time; 4 x 2 такта + rcall + ret
brne W5;
ret
;Подпрограмма задержки 6 мкс
Wait4us:; Цикл задержки 6 мкс при f = 1,6 МГц
ldi time,1
W4:nop
dec time; 3 x 1 такт + rcall + ret
brne W4
nop;
ret
W200: nop
;задержка 200 мс
lditt,0;Задержка цикл
lditt1, 0x35;Задержка цикл
clc;Сброс флага переноса
nn:subi tt, 1;Вычитаем 1 с заемом
subi tt1, 0;Вычитаем с заемом
brcc nn;Переход если сброшен флаг переноса
ret
; Таблица 7-сегментных кодов
.ORG$1F0
prog3:
.DB $3F,$06,$5B,$4F,$66,$6D,$7D,$07; Шестнадцатеричные 0..7
.DB $7F,$6F,$77,$7C,$39,$5E,$00,$40; Шестнадцатеричные 8..D,E=пробел,F=минус
.DB $7F,$6F,$77,$7C,$39,$5E,$79,$71; Шестнадцатеричные 8..F
СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ
1. Новацький А.О. Електронний конспект з курсу «Комп'ютерна електроніка».
2. А.О. Новацький, Є.В. Глушко Навчальний посібник з дисципліни «Проектування мікропроцесорних систем» Розділ «Програмування мікроконтролерів родини AVR»
3. Матеріали з сайту http://easyelectronics.ru/avr-uchebnyj-kurs-programmirovanie-na-si-chast-1.html
4. В. С. Подлипенский, Ю. А. Сабинин, Л. Ю. Юрчук Элементы и устройства автоматики Санкт-Петербург, 1995 г.
5. Матеріали з сайту http://avrlab.com/node/90
6. Матеріали з сайту http://www.elekont.ru/catalog//saa1064t.html
7. Матеріали з сайту http://www.chipinfo.ru/dsheets/transistors/1315.html
8. СТП КПИ 2.001-83. Стандарт Предприятия “Курсовые проекты”. Требования к оформлению документации. - К.: КПИ, 1984. - 200с.
Размещено на Allbest.ru
Подобные документы
Розробка термометра на базі мікроконтролера Atmega 8535. Визначення температури через аналогово-цифрове перетворення. Принципова схема пристрою. Варіанти з'єднання ліній портів з сегментами індикатора. Алгоритм роботи мікроконтролера у пристрої.
курсовая работа [1,8 M], добавлен 11.08.2012Загальна характеристика метеорологічних приладів: термометрів, барометрів, психрометрів, гігрометрів. Розробка електричної принципової схеми мікропроцесорної метеостанції, розрахунок її надійності. Вибір мікроконтролера і датчиків, монтаж друкованих плат.
дипломная работа [3,1 M], добавлен 13.06.2012Докладний опис складових електричної схеми. Характеристика мікроконтролера PIC16F877. Рідкокристалічний індикатор МТ12864А. Призначення виводів рідкокристалічного індикатора. Цифро-аналоговий перетворювач MCP 4921. Алгоритм роботи цифрового генератора.
курсовая работа [1,5 M], добавлен 20.09.2011Аналіз способів та засобів цифрової фільтрації сигналів. Розробка структурної схеми інфрачервоного локатора для сліпих. Вибір мікроконтролера, карти пам’яті та мікросхеми, їх основні характеристики. Показники економічної ефективності проектного виробу.
дипломная работа [2,1 M], добавлен 12.06.2013Вплив вихлопних газів автотранспорту на екосистему та наслідки їх дії. Склад вихлопних газів двигунів. Існуючі види газоаналізаторів. Вибір оптимального варіанту структурної схеми. Вибір мікроконтролера, інтерфейс RS-485. Розрахунок похибки вимірювання.
курсовая работа [1,1 M], добавлен 24.01.2011Опис принципу роботи операційного та інвертуючого підсилювача. Структурна схема інвертуючого підсилювача на операційних підсилювачах. Розрахунок та вибір елементів електричної принципової схеми інвертуючого підсилювача. Розрахунок блоку живлення.
курсовая работа [466,6 K], добавлен 15.05.2012Висновок про доцільність розробки світлодіодного годинника. Годинникові механізми, класифікація годинників. Обґрунтування схеми пристрою. Вибір мікроконтролера та огляд його архітектури. Вибір додаткових пристроїв. Розробка програмного забезпечення.
дипломная работа [3,0 M], добавлен 23.09.2014Розробка таймера на базі мікроконтролера AT90S8515. Опис принципової електричної схеми блоку клавіатури і індикації. Використання периферійних пристроїв. Таблиця робочих регістрів. Підпрограми обробки переривання таймера, Oproskl та рахунку часу.
курсовая работа [3,3 M], добавлен 27.02.2014Доцільність розробки світлодіодного годинника. Історія годинника, годинникові механізми. Сонячні, водяні, пісочні, вогняні, механічні та електронні годинники. Вибір та обґрунтування схеми пристрою. Вибір мікроконтролера. Розробка програмного забезпечення.
дипломная работа [3,1 M], добавлен 11.07.2014Функціональна схема мікроконтролера ATMega8. Розробка робота на базі мікроконтролера ATMega8 з можливістю керування електродвигунами за допомогою програми. Функціональна і принципова схеми пристрою з вибором додаткових елементів, алгоритм його роботи.
курсовая работа [1,3 M], добавлен 08.10.2012