Мікропроцесорна система управління мікрокліматом теплиці
Автоматизація процесу створення оптимальних параметрів середовища вирощування у спорудах захищеного грунту. Розробка структурної і принципової схеми управління мікрокліматом теплиці, алгоритму та програми на мові асемблера для мікропроцесора AT89С51.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 15.06.2014 |
Размер файла | 1017,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Зміст
Вступ
1. Аналіз технічного завдання курсової
1.1 Призначення системи
1.2 Мета створення системи
1.3 Порядок роботи з пристроєм
1.4 Функціонування системи
2. Розробка і опис структурної схеми
3. Розробка принципової схеми і вибір елементної бази
3.1 Вибір мікропроцесора
3.2 Вибір температурного датчика
3.3 Вибір датчика вологості
3.4 Вибір засобів індикації
3.5 Вибір кнопок управління системою
3.6 Вибір виконавчих пристроїв
4. Розробка алгоритмів роботи програми
5. Написання текстів програми
5.1 Проведення аналізу даних із температурного датчика
5.2 Проведення аналізу даних із датчика вологості
Висновок
Література
Додатки
Вступ
На значній території нашої країни у зв'язку з тривалою, нерідко суворою зимою і коротким, не завжди теплим літом складаються несприятливі умови для вирощування теплолюбних рослин у відкритому ґрунті.
Для розширення можливості вирощування рослин і постачання населення свіжими продуктами харчування, особливо овочами, в несприятливі періоди року застосовують різні споруди захищеного ґрунту, в яких штучно створюються необхідні умови для росту і розвитку рослин. За ступенем задоволення потреб рослин у комплексі чинників життєзабезпечення або по технологічної складності споруди захищеного грунту поділяють на парники, утеплений ґрунт і теплиці .
У спорудах захищеного ґрунту необхідно прагнути до створення оптимальних параметрів середовища вирощування. На жаль, в найпростіших теплицях на присадибних ділянках в основному на сонячному обігріві не завжди цьому приділяється належна увага. У результаті рослини в таких теплицях постійно перебувають у стресових умовах. Вночі, як правило, рослини переохолоджуватися, вдень у сонячну погоду перегріваються. Особливо поглиблюються несприятливі дії в теплицях, розташованих на садово-городніх ділянках, значно віддалених від місць постійного проживання власників. У таких теплицях, відвідуваних, як правило, лише у вихідні дні, немає можливості оперативно втрутитися у формування клімату, в результаті чого він нерідко далекий від оптимального. Правильний тепловий режим в теплицях дозволяє підвищити врожайність в 2-3 рази.
Існують численні системи автоматизованого управління мікрокліматом теплиць. Як правило, такого роду системи, що поставляються численними фірмами (НВО " схемотехніки ", НВФ " Фіто ", система " Агротем ") містять повний комплекс управління мікрокліматом.
Такі системи, звичайно, хороші і ефективні, але мають цілком відчутним недоліком - високою вартістю. Використання такого роду систем у промисловій агротехніці виправдана: територія теплиць величезна, а така система дозволяє економити на персоналі, отримувати великий урожай, що дозволяє збільшити прибуток, а, отже, окупити систему.
Особливістю агротехніки нашої країни є те, що 70 % населення самі забезпечують себе овочами в літній та осінній період за рахунок вирощування культур на присадибних ділянках. Природно, що в таких умовах вирощування людина не може постійно контролювати мікроклімат у теплиці, а й купувати дорогу систему теж немає можливості . Багато хто з дачників використовують підручні, не завжди надійні та ефективні властивості - гідроциліндри для автоматичного відкривання кватирок при дуже високій температурі, бочку з невеликим отвором для поливу та інше. Ці пристосування не дороги, але малоефективні і не надійні (гідроциліндри часто виходять ладу, тече масло, ущільнювальне кільця швидко приходять в непридатність, температура, при якій відкривається кватирка, вимірюється емпірично і т.д.). Тому необхідно створити просту систему управління основними параметрами мікроклімату: температура і вологість.
1. Аналіз технічного завдання курсової
Метою даного проекту є створення системи контролю мікрокліматом теплиці на базі мікропроцесора AT89C51.
Рисунок 2.1 - Зовнішній вигляд пристрою і схема зв'язків
1.1 Призначення системи
1. Контроль температури і вологості в теплиці
2. Забезпечення зручного керування мікрокліматом в теплиці.
3. Можливість виставляти різні типи мікроклімату в теплиці для вирощування різних типів культур.
1.2 Мета створення системи
1. Точне дотримання умов вирощування культур для підвищення врожайності.
2. Автоматизація операцій поливу і провітрювання, що не вимагають безпосередньої участі у вирощуванні культур.
3. Стеження за зміною мікроклімату для захисту культур від несприятливих факторів (різка зміна температур, посуха).
1.3 Порядок роботи з пристроєм
1. Для включення пристрою підключаємо його до постійного джерела живлення за допомогою виводів "Живлення". Натискаємо клавішу вкл. і одразу загориться "Індикатор роботи" пристрою і на "Дисплеях температури і вологості" відобразяться відповідно значення температури і вологості, тобто температура і вологість на "датчику температури" і "датчику вологості".
2. Після включення, починають успішно працювати всі, або декілька елементів пристрою. Кількість початково задіяних компонентів визначається відповідно до співвідношення температури чи вологості. Температура і вологість, яку ми хочемо досягнути (відповідно до режимів роботи) і реальної (температура і вологість на відповідних датчиках).
3. По замовчуванню при запуску системи будуть стояти параметри температури і вологості відповідно до 1 режиму роботи(Таблиця 1).
Для зміни режиму роботи використовуються клавіші "+" та "-" на пульті керування. Відповідно до зміни режиму роботи загорається відповідний світлодіод і відповідно змінюються параметри температури і вологості згідно наступного режиму роботи.
1.4 Функціонування системи
Після включення системи проводиться вибір вирощуваної культури. Далі зчитується температура, виводиться на індикатор, аналізується. У разі необхідності - її коригування (включення нагрівача або провітрювання), потім зчитується вологість, аналізується і приймається рішення про необхідність поливу.
Кожен режим характеризується своїми параметрами, представленими в таблиці:
Таблиця 2.1
Режим |
Вирощувана культура |
Температура повітря |
Вологість |
||
1 |
томат |
17 |
22 |
30-60 |
|
2 |
огірок |
19 |
23 |
60-80 |
|
3 |
перець |
18 |
21 |
35-65 |
|
4 |
троянди |
21 |
24 |
70-90 |
|
5 |
баклажани |
25 |
30 |
40-65 |
2. Розробка і опис структурної схеми
Рисунок 3.2 - Структурна схема мікропроцесорної системи
Структурна схема є першою моделлю електронного пристрою, яка відображає принцип роботи пристрою в загальному вигляді. Перевагою структурної схеми є те, що по ній можна швидко одержати уявлення про склад, структуру і виконувані ним функції, не відвертаючи уваги на схемну реалізацію його функціональних частин.
3. Розробка принципової схеми і вибір елементної бази
3.1 Вибір мікропроцесора
мікроклімат теплиця алгоритм мікропроцесор
В якості мікропроцесора в системі управління використовується однокристальна 8-ми розрядна мікро-ЕОМ АТ 89С 51.
Мікросхема містить: 8-ми розрядний центральний процесор, логічний процесор з порозрядною і побайтовою обробкою даних, вмонтований тактовий генератор, вмонтований ОЗП даних (128 байт), 20 регістрів спеціального призначення, 8 шин входу/виходу, 2 вмонтованих 16-ти розрядних таймери-лічильники, двохсторонній порт послідовного входу/виходу, система переривань двома рівнями пріоритетності від двох зовнішніх і трьох внутрішніх пристроїв, адресний простір (64 к) для зовнішньої ПЗП, адресний простір (64 к) для зовнішньої програмної пам'яті. Дана мікросхема складається з 20000 інтегральних елементів.
Два програмованих 16-бітних таймери/лічильника (Т/Л 0 і Т/Л 1) можуть бути використані як таймери або лічильники зовнішніх подій. При роботі як таймер вміст Т/Л інкрементується в кожному машинному циклі, тобто через кожні 12 періодів кварцового резонатора. При роботі в режимі лічильника вміст Т/Л інкрементується після переходу з 1 в 0 зовнішнього вхідного сигналу, який подається на відповідний (Т 0, Т 1). Вміст лічильника буде збільшене на 1, у тому випадку, якщо в попередньому циклі був визначений вхідний сигнал високого рівня (1), а в наступному - сигнал низького рівня (0). На розпізнавання переходу потрібно два машинних цикли, тобто максимальна частота підрахунку вхідних сигналі дорівнює 1/24 частоти резонатора.
Рисунок 4.3 - Умовне графічне позначення мікросхеми AT89C51
Таблиця 4.2 - Призначення виводів AT89C51
Номер вив. |
Найменування |
Призначення |
|
1…8 |
Р 1.0…Р 1.7 |
Входи/виходи 8-ми розрядного двохнаправленого порта 1 |
|
9 |
RST |
Вхід обнуления |
|
10 |
RXD |
Вхід послідовного каналу в асинхронному режимі |
|
11 |
TXD |
Вихід послідовного каналу в асинхронному режимі |
|
12 |
INTO |
Вхід 0 переривання або управління лічильником 0 |
Електричні параметри:
Напруга живлення……- 4,75…5,25В
Вхідна напруга високого рівня……- 0,5…+5,75В
Вхідна напруга низького рівня……- 0,5…+0,8В
Вихідна напруга високого рівня……>2,4В
Вихідна напруга низького рівня при І0ВИХ=1,6 мА……<0,45В
Струм споживання……<150 мА
Струм втрат на входах, при 0<ивх<5,75В ……< |±10|мкА
Споживана потужність……0,69Вт
Ємність навантаження……100 пФ
Тактова частота 3,5...12 МГц
Мінімальний час виконання короткої команди……Імкс
Швидкість обміну даними в послід, порті вводу/виводу……110…375000біт/с
Кількість базових команд……111
Ємність стеку……0,128 кбайт
Об'єм адресної пам'яті команд, даних……64 кбайт
Напруга живлення……<7В
Вхідна напруга високого рівня……<7В
Вхідна напруга низького рівня……<7В
Ємність навантаження……<500 пФ
Температура навколишнього середовища - 10…+70°С
3.2 Вибір температурного датчика
Як датчик температури був обраний датчик DS1621 фірми Dallas, представлений на Рисунку 4.3.
Рисунок 4.4 - Температурний датчик DS1621.
Основні його властивості:
* Пряме перетворення температури в цифровий код, без додаткових АЦП
* Можливість передачі даних через одне-, двох-провідний інтерфейс
* Можливість адресації декількох датчиків на одній шині
* Заводське калібрування і вбудована корекція нелінійності, не потрібно додаткової підстроювання
* Широкий діапазон виміру температури (-55 ... +125 ° С)
* Висока швидкодія (час перетворення від 0.5 до 2 с)
* захист від агресивного середовища
Технічні характеристики датчика наведені в таблиці 4.3:
Таблиця 4.3
Точність |
±0.5 °С |
|
Час перетворення |
1 с |
|
Кількість біт |
9 бит |
|
Інтерфейс |
2W (I2C) |
|
Тип корпусу |
DIP8, SO8 |
Температурний датчик необхідно встановити таким чином, щоб на нього не потрапляли прямі сонячні промені, а також вода при поливі, прагнучи при цьому максимально зменшити віддаленість від самого пристрою.
3.3 Вибір датчика вологості
Як датчик вологості був обраний HIH 4000-003. Він забезпечує широкий діапазон вимірювань, високу надійність і низьку вартість при використанні мікроелектронної технології. Це дозволяє проводити ємності планарного типу тонкоплівкових методом. Завдяки цьому ми маємо мініатюрні габарити чутливого елемента, можливість імплементації на кристалі спеціалізованої інтегральної схеми обробки сигналу. Технологічність і високий вихід придатних кристалів забезпечують малу вартість продукції даного типу. Параметри датчика вологості наведені в таблиці 5. Можливо пряме підключення до АЦП мікроконтролера завдяки стандартному розмаху вихідного сигналу (від 1.0 до 4.0 В). Встановити датчик необхідно таким чином, щоб краплі води при поливі не потрапляли не його, а також захистити від дії прямих сонячних променів, щоб уникнути зниження точності вимірювання.
Таблиця 4.4
Параметр |
Значення |
|
Діапазон вимірювань, % RH |
0...100 |
|
Повторюваність, ±% RH |
0,5 |
|
Напруга живлення, В |
4,0...5,8 |
|
Струм споживання, мА |
0,2 |
|
Робоча температура, °С |
-40...85 |
|
Температура зберігання, °С |
-50...125 |
3.4 Вибір засобів індикації
В системі нам необхідно візуально відображати поточну температуру в теплиці і обраний режим роботи. Для цього будемо використовувати семисегментні індикатори і світлодіодну лінійку.
Рисунок 4.5 - Блок індикації(світлодіодна лінійка)
HL1-HL5 - індикатори режимів роботи системи.
HL6 - індикатор включення/виключення системи.
HG1,HG2 - індикатор температури.
HG3,HG4 - індикатор вологості.
Рисунок 4.6 - Блок індикації(семи сегментні індикатори)
3.5 Вибір кнопок управління системою
Рисунок 4.5 - Дискретні кнопки
S1 - кнопка включення/виключення системи.
S2 - кнопка для вибору режиму роботи (При натисканні цієї клавіші режим роботи переключається на наступний по-порядку)
S3 - кнопка для вибору режиму робот (При натисканні цієї клавіші режим роботи переключається на попередній по-порядку)
3.6 Вибір виконавчих пристроїв
В системі мікропроцесор повинен управляти охолодженням, поливом та обігріванням теплиці. Для охолодження та поливу будем використовувати
Мотори(ENG1,ENG2), а для обігріву нагрівальну лампу(L1).
В якості ключових елементів вибираємо транзистори(VT1,VT2,VT3), які комутують напругу на відповідне електромагнітне реле. Для запобігання самоіндукції електромагнітного реле використовуєм діоди(VD1,VD2,VD3).
Для замикання або розмикання електричного кола використовуєм електромагнітне реле(RL1,RL2,RL3).
Рисунок 4.6 - Схема підключення виконавчих пристроїв.
4. Розробка алгоритмів роботи програми
1. Пристрій вмикається після натиснення клавіші S1. Загорається HL6.
2. Проводиться опитування датчиків температури і вологості.
3. Виводяться дані про навколишню температуру і вологість на індикатори температури(HL1,HL2) і вологості(HL3,HL4).
4. Якщо натиснута клавіша S2 - проводиться вибір наступного режиму роботи (1 режим по замовчуванню).
5. Якщо натиснута клавіша S3 - проводиться вибір попереднього режиму роботи.
6. В залежності від вибраного режиму, в якого є свої конкретні параметри температури чи вологості, починають працювати обігрів, полив чи охолодження, які коректують ці параметри в разі необхідності (якщо завелика температура то вмикається охолодження, якщо навпаки - обігрів, якщо недостатня вологість повітря то включається автоматично полив).
7. В процесі коректування цих параметрів постійно зчитується температура і вологість з датчиків і посилає сигнали(якщо температура чи вологість достатня тоді виключити обігрів, охолодження чи полив)
8. Якщо натиснута клавіша S1 - система виключається.
Рисунок 5.1 - Алгоритм роботи програми
5. Написання текстів програми
$include(mod51)
org 0
wait:
mov p1,#0; очистка p1
mov p3,#0 ; очистка p3
setb p0.2 ; перевірка світлодіодів
setb p0.3
setb p0.4
setb p0.5
setb p0.6
setb p0.7
clr p2.0 ;очистити p2.0
clr p2.1 ;очистити p p2.1
clr p2.2 ;очистити p2.2
;початок роботи
start:
jb p2.3,wait ; включення схеми
clr p0.7 ; подача сигналу на світлодіод
jb p2.4,nok1 ; якщо натиснута s2 то перейти по мітці
jb bitkl1,nok11
setb bitkl1
cjne r1,#5,no01 ;перевірка значення в акумуляторі і перехід по мітці
jmp nok11
no01:
inc r1 ; інкримент регістра r1
jmp nok11
nok1:
clr bitkl1
nok11:
jb p2.5,nok2
jb bitkl2,nok22
setb bitkl2
cjne r1,#1,no02 ;перевірка значення в акумуляторі і перехід по мітці
jmp nok22
no02:
dec r1 ; декримент регістра r1
jmp nok22
nok2:
clr bitkl2
nok22:
cjne r1,#1,ex11 ; включення 1-го режиму і відповідного світлодіода
clr p0.2
setb p0.3
jmp st
ex11:
cjne r1,#2,ex2 ; включення 2-го режиму і відповідного світлодіода
clr p0.3
setb p0.2
setb p0.4
jmp st
ex2:
cjne r1,#3,ex3 ; включення 3-го режиму і відповідного світлодіода
clr p0.4
setb p0.3
setb p0.5
jmp st
ex3:
cjne r1,#4,ex4 ; включення 4-го режиму і відповідного світлодіода
clr p0.5
setb p0.4
setb p0.6
jmp st
ex4:
clr p0.6 ; включення 5-го режиму і відповідного світлодіода
setb p0.5
st:
setb T_1WIRE_1 ; переіхід до 1 - го датчика
setb T_1WIRE_2 ; переіхід до 2 - го датчика
setb type_dat ;вибір 1 - го датчика
call GetTemp ; отримати температуру
clr type_dat ;вибір 2 - го датчика
call GetTemp ; отримати температуру
jmp start
Зчитування і передача значення з датчика температури на індикатор виконується
;======================================================
GetTemp:
jnb type_dat, next1_1
call Reset_1Wire_1
jmp next1_2
next1_1: call Reset_1Wire_2
next1_2:
mov a, #0CCh; Посилаємо команду Skip ROM [CCh].
call RW_Byte
mov a, #044h; Посилаемо команду Convert T [44h].
call RW_Byte
; затримка, не менше 750 мс
mov A,#0
call Big_delay
call Big_delay
call Big_delay
call Big_delay
jnb type_dat, next6_1
call Reset_1Wire_1
jmp next6_2
next6_1: call Reset_1Wire_2
next6_2:
mov A,#165 ; (500 - 4) / 3 = 165
call delay
mov a, #0CCh; Посилаємо команду Skip ROM [CCh].
call RW_Byte
mov a, #0BEh; Посилаємо команду Read Scratchpad [BEh].
call RW_Byte
mov a, #1h
call delay
mov CRC,#0
mov A,#0FFh
call RW_Byte ;byte 0.
mov fTEMPER_L,A ; Молодший байт температури.
call DO_CRC
mov A,#0FFh
call RW_Byte ; byte 1.
mov fTEMPER_H, A ; Старший байт температури.
call DO_CRC
; Дальше 8 непотрібних байти (зчитуємо тільки для формування CRC).
mov A,#0FFh
call RW_Byte ; byte 2.
call DO_CRC
mov A,#0FFh
call RW_Byte ; byte 3.
call DO_CRC
mov A,#0FFh
call RW_Byte ; byte 4.
call DO_CRC
mov A,#0FFh
call RW_Byte ; byte 5.
call DO_CRC
mov A,#0FFh
call RW_Byte ; byte 6.
call DO_CRC
mov A,#0FFh
call RW_Byte ; byte 7.
call DO_CRC
; Зчитуємо CRC.
mov A,#0FFh
call RW_Byte ; byte 8 (CRC).
clr C
subb A,CRC ; A = A - CRC
jz GT_CRC_OK
mov A,#10
call Big_Delay
clr CRC_OK
jmp GT_exit
GT_CRC_OK: ; Якщо CRC - ok.
setb CRC_OK
;перетворення і вивід температури. 0-99градусів
; якщо температура буде від'ємна - в регістрі fTEMPER_h буде значення FF
; значення після коми зберігаються в молодшій тетраді регістра fTEMPER_l
mov a, fTEMPER_l
anl a, #0f0h ;множимо на маску, позбавлючись значень після коми
swap a ;значення молодшого байту - в молодших розрядах акумцлятора
mov fTEMPER_l, a ;нове значення температури
mov a, fTEMPER_h
mov b, #16 ;значення старшого байту
mul AB ;перемножуємо на множник - 16, - результат в акумуляторі
add a, fTEMPER_l ;додаю значення молодшого байту
5.1 Проведення аналізу даних із температурного датчика
jb type_dat, nnext7_1
jmp next7_1
nnext7_1:
mov r0,a
cjne r1,#1,no11
subb a,#17
jnc e1no1
setb p2.0
clr p2.2
jmp GT_ex
e1no1:
subb a,#6
jnc e1no2
clr p2.2
clr p2.0
jmp GT_ex
e1no2:
setb p2.2
clr p2.0
jmp GT_ex
no11:
cjne r1,#2,no21
subb a,#19
jnc e2no1
setb p2.0
clr p2.2
jmp GT_ex
e2no1:
subb a,#5
jnc e2no2
clr p2.0
clr p2.2
jmp GT_ex
e2no2:
setb p2.2
clr p2.0
jmp GT_ex
no21:
cjne r1,#3,no31
subb a,#18
jnc e3no1
setb p2.0
clr p2.2
jmp GT_ex
e3no1:
subb a,#4
jnc e3no2
clr p2.2
clr p2.0
jmp Gt_ex
e3no2:
setb p2.2
clr p2.0
jmp GT_ex
no31:
cjne r1,#4,no41
subb a,#21
jnc e4no1
setb p2.0
clr p2.2
jmp GT_ex
e4no1:
subb a,#4
jnc e4no2
clr p2.0
clr p2.2
jmp Gt_ex
e4no2:
setb p2.2
clr p2.0
jmp GT_ex
no41:
subb a,#25
jnc e5no1
clr p2.2
setb p2.0
jmp GT_ex
e5no1:
subb a,#6
jnc e5no2
clr p2.0
clr p2.2
jmp GT_ex
e5no2:
clr p2.0
setb p2.2
GT_ex:
mov a,r0
mov b, #10 ;розбиваю значення
div ab ;на два числа
swap a ;збираю значення
add a, b ;докупи в акумуляторі
mov p1, a
;виводжу в порт на індикатор 1
jmp GT_exit
5.2 Проведення аналізу даних із датчика вологості
next7_1:
mov r0,a
cjne r1,#1,no1
subb a,#30
jnc e1no
setb p2.1
jmp GT_exit1
e1no:
clr p2.1
jmp GT_exit1
no1:
cjne r1,#2,no2
subb a,#60
jnc e2no
setb p2.1
jmp GT_exit1
e2no:
clr p2.1
jmp Gt_exit1
no2:
cjne r1,#3,no3
subb a,#35
jnc e3no
setb p2.1
jmp GT_exit
e3no:
clr p2.1
jmp Gt_exit1
no3:
cjne r1,#4,no4
subb a,#70
jnc e4no
setb p2.1
jmp GT_exit
e4no:
clr p2.1
jmp Gt_exit
no4:
subb a,#40
jnc e5no
setb p2.1
jmp GT_exit1
e5no:
clr p2.1
GT_exit1:
mov a,r0
mov b, #10 ;розбиваю значення
div ab ;на два числа
swap a ;збираю значення
add a, b ;докупи в акумуляторі
mov p3, a ;виводжу в порт на індикатор 2
GT_exit:
ret ; вихід з GetTemp:
;======================================================
Reset_1Wire_1: ; Скидаємо лінію на час, біля 500 мкс. == 1 datchik
clr T_1WIRE_1
mov A,#165 ; (500 - 4) / 3 = 165
call delay
setb T_1WIRE_1
; Пропускаємо імпульс присутності
mov A,#165 ; (500 - 4) / 3 = 165
call delay
ret
;-----------------------------------------------------------------------------
Reset_1Wire_2: ; Скидаємо лінію на час, біля 500 мкс. == 2 datchik
clr T_1WIRE_2
mov A,#165 ; (500 - 4) / 3 = 165
call delay
setb T_1WIRE_2
; Пропускаємо імпульс присутності
mov A,#165 ; (500 - 4) / 3 = 165
call delay
ret
;------------------------------------------------------------------------------
delay:
mov fCOUNTER,A
D_Loop36:
nop ; 1 us.
DJNZ fCOUNTER,D_Loop36 ; 2 us.
ret
;-----------------------------------------------------------------------------
Big_delay: ;=770*x+1 x=(delay-5)/770 Враховуючи виконання call и return.
mov fCOUNTER2,A
mov fCOUNTER,#0
BD_Loop94:
nop ; 1 us.
djnz fCOUNTER,BD_Loop94 ; 2 us.
djnz fCOUNTER2,BD_Loop94 ; 2 us.
ret
;======================================================
; Ф-ція вводу/виводу на лінию 1-Wire. по черзі, зсуваючи вправо значення в А зчитуємо лінію і формуємо байт
; Виводимо з A и зчитуємо в A.
RW_Byte:
mov fTEMP,A
MOV R2,#8
;--------------------------- цикл
RBLoop:
mov A,fTEMP ; повертаємо значення в акумулятор
jnb type_dat, next2_1
clr T_1WIRE_1 ; Обнуляємо вихід. 1 dat
jmp next2_2
next2_1: clr T_1WIRE_2 ; Обнуляємо вихід. 2 dat
next2_2:
nop
jnb ACC.0,RB_Skip01
jnb type_dat, next3_1
setb T_1WIRE_1 ; Встановлюємо вихід. 1 dat
jmp next3_2
next3_1: setb T_1WIRE_2 ; Встановлюємо вихід. 2 dat
next3_2:
RB_Skip01:
rr A
clr ACC.7 ; Приймаємо в той самий TEMP, з якого передаємо
nop
nop
nop
nop
jnb type_dat, next4_1
jnb T_1WIRE_1, RB_Skip02
jmp next4_2
next4_1: jnb T_1WIRE_2, RB_Skip02
next4_2:
setb ACC.7
RB_Skip02:
mov fTEMP,A ; зберігаємо значення
; дальше даємо час на звільнення лінії веденим девайсом(release = до 45 мкс.)
mov A,#14 ; (60 - 4) / 3 = 18
call delay
; Відпускаємо лінію.
jnb type_dat, next5_1
setb T_1WIRE_1
jmp next5_2
next5_1: setb T_1WIRE_2
next5_2:
; трішки відпочиваємо (на всякий пожарний).
mov A,#1
call delay
; Якщо 8 біт, то виходимо з циклу.
DJNZ R2,RBLoop ; послідовно зчитуємо 8 біт (лічильник рег.R2)
;------------------ цикл
; прийнятий байт.
mov A,fTEMP ; записуємо значення сформованого байту в акумулятор
ret ;
;======================================================
; Процедура обновлення CRC. Параметр в A.
DO_CRC: PUSH ACC ;save accumulator
PUSH B ;save the B register
PUSH ACC ;save bits to be shifted
MOV B,#8 ;set shift = 8 bits ;
CRC_LOOP: XRL A,CRC ;calculate CRC
RRC A ;move it to the carry
MOV A,CRC ;get the last CRC value
JNC ZERO ;skip if data = 0
XRL A,#18H ;update the CRC value
;
ZERO: RRC A ;position the new CRC
MOV CRC,A ;store the new CRC
POP ACC ;get the remaining bits
RR A ;position the next bit
PUSH ACC ;save the remaining bits
DJNZ B,CRC_LOOP ;repeat for eight bits
POP ACC ;clean up the stack
POP B ;restore the B register
POP ACC ;restore the accumulator
RET
;-------------------------------------------------------------------------------
end
Висновок
В процесі виконання курсового проекту було розроблено систему управління мікрокліматом теплиці. Під час виконання даної роботи, я навчився створювати та описувати структурні і принципові схеми, складати алгоритми та програми на мові асемблера для мікропроцесора AT89С 51. Модель мікропроцесорної системи було спроектовано в програмному комплексі Proteus Professional 7.7.
Література
1. В.В. Сташин А.В. УРУСОВ О.Ф. Мологонцева Проектирование цифровых устройств на однокристальных микроконтроллерах Москва Энергоатомиздат 1990г.
2. А.С. Басманов "МП и ОЭВМ", Москва, "Мир", 1988.
3. "Микропроцессоры", Учебное пособие в 5-ти книгах, под редакцией В.А. Шахнова, Москва "Высшая школа", 1988.
4. Фрунзе "Микроконтроллеры? Это же просто!"
5. Магда Ю.С. "Микроконтроллеры серии 8051: практический подход"
6. https://sites.google.com/site/laboratoria101/mps
7. http://www.teplitsa-urojay.ru/rasta/ogurtsy/
8. http://www.zooclub.ru/flora/rouse/14.shtml
9. http://www.greeninfo.ru/vegetables/capsicum_annuum.html/Article/_/aID/335
10. http://www.sadovod.spb.ru/TextShablon.php?LinkPage=222
11. http://www.gaw.ru/
Додаток 1. Текст програми
$include(mod51)
org 0
;*************************************************************
; Порт 0.
T_1WIRE_1 bit P0.0
T_1WIRE_2 bit P0.1
type_dat bit 01h
bitkl1 bit 7fh
bitkl2 bit 7eh
;*************************************************************
fCOUNTER EQU 19h
fCOUNTER2 EQU 1Ah
CRC EQU 1Bh
fTEMP EQU 1Ch
; Температура.
fTEMPER_L EQU 36h
fTEMPER_H EQU 37h
CRC_OK BIT 00h.
;-------------------------------------------------------------
mov r1,#1
wait:
mov p1,#0
mov p3,#0
setb p0.2
setb p0.3
setb p0.4
setb p0.5
setb p0.6
setb p0.7
clr p2.0
clr p2.1
clr p2.2
start:
jb p2.3,wait
clr p0.7
jb p2.4,nok1
jb bitkl1,nok11
setb bitkl1
cjne r1,#5,no01
jmp nok11
no01:
inc r1
jmp nok11
nok1:
clr bitkl1
nok11:
jb p2.5,nok2
jb bitkl2,nok22
setb bitkl2
cjne r1,#1,no02
jmp nok22
no02:
dec r1
jmp nok22
nok2:
clr bitkl2
nok22:
cjne r1,#1,ex11
clr p0.2
setb p0.3
jmp st
ex11:
cjne r1,#2,ex2
clr p0.3
setb p0.2
setb p0.4
jmp st
ex2:
cjne r1,#3,ex3
clr p0.4
setb p0.3
setb p0.5
jmp st
ex3:
cjne r1,#4,ex4
clr p0.5
setb p0.4
setb p0.6
jmp st
ex4:
clr p0.6
setb p0.5
st:
setb T_1WIRE_1
setb T_1WIRE_2
setb type_dat
call GetTemp
clr type_dat
call GetTemp
jmp start
;======================================================
GetTemp:
jnb type_dat, next1_1
call Reset_1Wire_1
jmp next1_2
next1_1: call Reset_1Wire_2
next1_2:
mov a, #0CCh;
call RW_Byte
mov a, #044h;
call RW_Byte
; затримка, не менше 750 мс
mov A,#0
call Big_delay
call Big_delay
call Big_delay
call Big_delay
jnb type_dat, next6_1
call Reset_1Wire_1
jmp next6_2
next6_1: call Reset_1Wire_2
next6_2:
mov A,#165 ; (500 - 4) / 3 = 165
call delay
mov a, #0CCh;
call RW_Byte
mov a, #0BEh;
call RW_Byte
mov a, #1h
call delay
mov CRC,#0
mov A,#0FFh
call RW_Byte ;byte 0.
mov fTEMPER_L,A
call DO_CRC
mov A,#0FFh
call RW_Byte ; byte 1.
mov fTEMPER_H, A
call DO_CRC
mov A,#0FFh
call RW_Byte ; byte 2.
call DO_CRC
mov A,#0FFh
call RW_Byte ; byte 3.
call DO_CRC
mov A,#0FFh
call RW_Byte ; byte 4.
call DO_CRC
mov A,#0FFh
call RW_Byte ; byte 5.
call DO_CRC
mov A,#0FFh
call RW_Byte ; byte 6.
call DO_CRC
mov A,#0FFh
call RW_Byte ; byte 7.
call DO_CRC
mov A,#0FFh
call RW_Byte ; byte 8 (CRC).
clr C
subb A,CRC ; A = A - CRC
jz GT_CRC_OK
mov A,#10
call Big_Delay
clr CRC_OK
jmp GT_exit
GT_CRC_OK:
mov a, fTEMPER_l
anl a, #0f0h
swap a
mov fTEMPER_l, a
mov a, fTEMPER_h
mov b, #16
mul AB
add a, fTEMPER_l
jb type_dat, nnext7_1
jmp next7_1
nnext7_1:
mov r0,a
cjne r1,#1,no11
subb a,#17
jnc e1no1
setb p2.0
clr p2.2
jmp GT_ex
e1no1:
subb a,#6
jnc e1no2
clr p2.2
clr p2.0
jmp GT_ex
e1no2:
setb p2.2
clr p2.0
jmp GT_ex
no11:
cjne r1,#2,no21
subb a,#19
jnc e2no1
setb p2.0
clr p2.2
jmp GT_ex
e2no1:
subb a,#5
jnc e2no2
clr p2.0
clr p2.2
jmp GT_ex
e2no2:
setb p2.2
clr p2.0
jmp GT_ex
no21:
cjne r1,#3,no31
subb a,#18
jnc e3no1
setb p2.0
clr p2.2
jmp GT_ex
e3no1:
subb a,#4
jnc e3no2
clr p2.2
clr p2.0
jmp Gt_ex
e3no2:
setb p2.2
clr p2.0
jmp GT_ex
no31:
cjne r1,#4,no41
subb a,#21
jnc e4no1
setb p2.0
clr p2.2
jmp GT_ex
e4no1:
subb a,#4
jnc e4no2
clr p2.0
clr p2.2
jmp Gt_ex
e4no2:
setb p2.2
clr p2.0
jmp GT_ex
no41:
subb a,#25
jnc e5no1
clr p2.2
setb p2.0
jmp GT_ex
e5no1:
subb a,#6
jnc e5no2
clr p2.0
clr p2.2
jmp GT_ex
e5no2:
clr p2.0
setb p2.2
GT_ex:
mov a,r0
mov b, #10
div ab
swap a
mov p1, a
jmp GT_exit
next7_1:
mov r0,a
cjne r1,#1,no1
subb a,#30
jnc e1no
setb p2.1
jmp GT_exit1
e1no:
clr p2.1
jmp GT_exit1
no1:
cjne r1,#2,no2
subb a,#60
jnc e2no
setb p2.1
jmp GT_exit1
e2no:
clr p2.1
jmp Gt_exit1
no2:
cjne r1,#3,no3
subb a,#35
jnc e3no
setb p2.1
jmp GT_exit
e3no:
clr p2.1
jmp Gt_exit1
no3:
cjne r1,#4,no4
subb a,#70
jnc e4no
setb p2.1
jmp GT_exit
e4no:
clr p2.1
jmp Gt_exit
no4:
subb a,#40
jnc e5no
setb p2.1
jmp GT_exit1
e5no:
clr p2.1
GT_exit1:
mov a,r0
mov b, #10
div ab
swap a
add a, b
mov p3, a
GT_exit:
ret
;======================================================
Reset_1Wire_1:
clr T_1WIRE_1
mov A,#165 ; (500 - 4) / 3 = 165
call delay
setb T_1WIRE_1
mov A,#165 ; (500 - 4) / 3 = 165
call delay
ret
;-----------------------------------------------------------------------------
Reset_1Wire_2: clr T_1WIRE_2
mov A,#165 ; (500 - 4) / 3 = 165
call delay
setb T_1WIRE_2
mov A,#165 ; (500 - 4) / 3 = 165
call delay
ret
;------------------------------------------------------------------------------
delay:
mov fCOUNTER,A
D_Loop36:
nop ; 1 us.
DJNZ fCOUNTER,D_Loop36 ; 2 us.
ret
;-----------------------------------------------------------------------------
Big_delay: ;=770*x+1 x=(delay-5)/770 Враховуючи виконання call и return.
mov fCOUNTER2,A
mov fCOUNTER,#0
BD_Loop94:
nop ; 1 us.
djnz fCOUNTER,BD_Loop94 ; 2 us.
djnz fCOUNTER2,BD_Loop94 ; 2 us.
ret
;======================================================
RW_Byte:
mov fTEMP,A
MOV R2,#8
;--------------------------- цикл
RBLoop:
mov A,fTEMP
jnb type_dat, next2_1
clr T_1WIRE_1 ; Обнуляємо вихід. 1 dat
jmp next2_2
next2_1: clr T_1WIRE_2 ; Обнуляємо вихід. 2 dat
next2_2:
nop
jnb ACC.0,RB_Skip01
jnb type_dat, next3_1
setb T_1WIRE_1 ; Встановлюємо вихід. 1 dat
jmp next3_2
next3_1: setb T_1WIRE_2 ; Встановлюємо вихід. 2 dat
next3_2:
RB_Skip01:
rr A
clr ACC.7
nop
nop
nop
nop
jnb type_dat, next4_1
jnb T_1WIRE_1, RB_Skip02
jmp next4_2
next4_1: jnb T_1WIRE_2, RB_Skip02
next4_2:
setb ACC.7
RB_Skip02:
mov fTEMP,A
)
mov A,#14 ; (60 - 4) / 3 = 18
call delay
jnb type_dat, next5_1
setb T_1WIRE_1
jmp next5_2
next5_1: setb T_1WIRE_2
next5_2:
mov A,#1
call delay
.
DJNZ R2,RBLoop
mov A,fTEMP
ret ;
;======================================================
; Процедура обновлення CRC. Параметр в A.
DO_CRC: PUSH ACC ;save accumulator
PUSH B ;save the B register
PUSH ACC ;save bits to be shifted
MOV B,#8 ;set shift = 8 bits ;
CRC_LOOP: XRL A,CRC ;calculate CRC
RRC A ;move it to the carry
MOV A,CRC ;get the last CRC value
JNC ZERO ;skip if data = 0
XRL A,#18H ;update the CRC value
;
ZERO: RRC A ;position the new CRC
MOV CRC,A ;store the new CRC
POP ACC ;get the remaining bits
RR A ;position the next bit
PUSH ACC ;save the remaining bits
DJNZ B,CRC_LOOP ;repeat for eight bits
POP ACC ;clean up the stack
POP B ;restore the B register
POP ACC ;restore the accumulator
RET
;-------------------------------------------------------------------------------
Додаток 2. Hex-файл програми
:10000000790175900075B000D282D283D284D285F6
:10001000D286D287C2A0C2A1C2A220A3E5C28720F5
:10002000A40F207F0ED27FB905030200330902001E
:1000300033C27F20A50F207E0ED27EB901030200BD
:100040004719020047C27EB90107C282D28302006B
:1000500079B90209C283D282D284020079B9030934
:10006000C284D283D285020079B90409C285D284C0
:10007000D286020079C286D285D280D281D2011284
:100080000089C201120089809130010612024202E9
:10009000009512025174CC120274744412027474EA
:1000A000001202671202671202671202673001062D
:1000B0001202420200B912025174A512026074CCFD
:1000C00012027474BE1202747401120260751B0075
:1000D00074FF120274F5361202C074FF120274F536
:1000E000371202C074FF1202741202C074FF1202AF
:1000F000741202C074FF1202741202C074FF120262
:10010000741202C074FF1202741202C074FF120251
:10011000741202C074FF120274C3951B600A740A41
:10012000120267C200020241D200E53654F0C4F563
:1001300036E53775F010A425362001030201E7F8F3
:10014000B9011D94115007D2A0C2A20201DA94068F
:100150005007C2A2C2A00201DAD2A2C2A00201DAF2
:10016000B9021D94135007D2A0C2A20201DA94056D
:100170005007C2A0C2A20201DAD2A2C2A00201DAD2
:10018000B9031D94125007D2A0C2A20201DA94044E
:100190005007C2A2C2A00201DAD2A2C2A00201DAB2
:1001A000B9041D94155007D2A0C2A20201DA94042A
:1001B0005007C2A0C2A20201DAD2A2C2A00201DA92
:1001C00094195007C2A2D2A00201DA94065007C2C5
:1001D000A0C2A20201DAC2A0D2A2E875F00A84C4C9
:1001E00025F0F590020241F8B9010E941E5005D297
:1001F000A1020237C2A1020237B9020E943C500597
:10020000D2A1020237C2A1020237B9030E942350D1
:1002100005D2A1020241C2A1020237B9040E9446DE
:100220005005D2A1020241C2A10202419428500508
:10023000D2A1020237C2A1E875F00A84C425F0F504
:10024000B022C28074A5120260D28074A51202602E
:1002500022C28174A5120260D28174A512026022AA
:10026000F51900D519FC22F51A75190000D519FCED
:10027000D51AF922F51C7A08E51C300105C2800266
:100280000284C2810030E00A300105D2800202926D
:10029000D28103C2E700000000300106308008026E
:1002A00002A5308102D2E7F51C740E5160300105C1
:1002B000D2800202B7D28174015160DABBE51C2200
:1002C000C0E0C0F0C0E075F008651B13E51B5002EC
:1002D000641813F51BD0E003C0E0D5F0ECD0E0D0FB
:0402E000F0D0E02258
:00000001FF
Размещено на Allbest.ru
Подобные документы
Аналіз технологічного процесу і вибір напрямків автоматизації. Розробка структурної схеми системи управління. Основні вимоги до елементів структурної схеми. Додаткові вимоги до мікропроцесора. Технічна характеристика мікроконтролера Atmel AT89C51AC3.
курсовая работа [316,1 K], добавлен 11.10.2011Характеристика устаткування підприємств м’ясної промисловості. Функціональна схема електроприводу куттера. Розробка структурної, математичної схеми мікропроцесорної САУ, її алгоритму функціонування. Дослідження якості перехідних процесів й точності МПСАУ.
курсовая работа [1,2 M], добавлен 12.05.2014Складання логічної схеми алгоритмів при проектуванні системи управління агрегатом, формування мікрокоманд, що включають логічні та функціональні оператори. Розробка структурної та принципової схеми системи управління, її конструктивне оформлення.
курсовая работа [1,0 M], добавлен 28.09.2011Розробка узагальненої структурної схеми мікропроцесора для збору даних і керування зовнішніми пристроями. Визначення кількості мікросхем для побудови послідовних і паралельних портів та таймерів. Створення логічної схеми підсистеми центрального процесора.
практическая работа [399,7 K], добавлен 17.03.2014Розробка мікропроцесорної системи управління роботом з контролем переміщення на базі мікроконтролера AT89C51. Розробка і опис структурної схеми мікропроцесорної системи. Відстань між світлодіодом і фототранзистором. Розробка алгоритмів програми.
курсовая работа [2,3 M], добавлен 13.04.2013Мнемосхема процесу завантаження вагонеток. Технічні характеристики та конструктивне оформлення системи управління. Розробка принципової схеми: вибір елементної бази, датчиків та основних елементів силової частини. Розрахунок енергоспоживання пристрою.
курсовая работа [228,3 K], добавлен 14.11.2011Розробка структурної схеми мікропроцесора. Узгодження максимальної вхідної напруги від датчиків з напругою, що може обробити МПСза допомогою дільника напруги та аналогового буферного повторювача. Система тактування та живлення. Організація виводу даних.
курсовая работа [354,3 K], добавлен 14.12.2010Розташування виконавчих блоків літака, пульт управління та особливості системи тривоги. Розробка структурної та принципової схеми системи оповіщення пасажирів. Характеристика методики з експлуатації, ремонту та конструкції виконання приладу оповіщення.
дипломная работа [1,4 M], добавлен 13.06.2017Розробка та формалізація алгоритму управління вузлом виготовлення глиняного брусу на базі RS-тригерної моделі. Структурна та принципова схеми системи управління, її конструктивне оформлення. Реалізація системи на дискретних логічних елементах серії К555.
курсовая работа [711,2 K], добавлен 30.09.2011Система реєстрації даних як високопродуктивний обчислювач з процесором або контролером, накопичувачем інформації й інтерфейсом зв'язку. Розробка функціональної схеми й вибір елементної бази. Аналіз принципової електричної схеми. Економічні розрахунки.
дипломная работа [694,4 K], добавлен 20.02.2011