Мікропроцесорна система управління мікрокліматом теплиці

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информатика, ВТ, телекоммуникации
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    310,36 Кб
  • Опубликовано:
    2014-08-28
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Мікропроцесорна система управління мікрокліматом теплиці

Зміст

Вступ

. Аналіз технічного завдання курсової

.1 Призначення системи

.2 Мета створення системи

.3 Порядок роботи з пристроєм

.4 Функціонування системи

. Розробка і опис структурної схеми

. Розробка принципової схеми і вибір елементної бази

.1 Вибір мікропроцесора

.2 Вибір температурного датчика

.3 Вибір датчика вологості

.4 Вибір засобів індикації

.5 Вибір кнопок управління системою

.6 Вибір виконавчих пристроїв

. Розробка алгоритмів роботи програми

. Написання текстів програми

.1 Проведення аналізу даних із температурного датчика

.2 Проведення аналізу даних із датчика вологості

Висновок

Література

Додатки

Вступ

На значній території нашої країни у зв'язку з тривалою, нерідко суворою зимою і коротким, не завжди теплим літом складаються несприятливі умови для вирощування теплолюбних рослин у відкритому ґрунті.

Для розширення можливості вирощування рослин і постачання населення свіжими продуктами харчування, особливо овочами, в несприятливі періоди року застосовують різні споруди захищеного ґрунту, в яких штучно створюються необхідні умови для росту і розвитку рослин. За ступенем задоволення потреб рослин у комплексі чинників життєзабезпечення або по технологічної складності споруди захищеного грунту поділяють на парники, утеплений ґрунт і теплиці .

У спорудах захищеного ґрунту необхідно прагнути до створення оптимальних параметрів середовища вирощування. На жаль, в найпростіших теплицях на присадибних ділянках в основному на сонячному обігріві не завжди цьому приділяється належна увага. У результаті рослини в таких теплицях постійно перебувають у стресових умовах. Вночі, як правило, рослини переохолоджуватися, вдень у сонячну погоду перегріваються. Особливо поглиблюються несприятливі дії в теплицях, розташованих на садово-городніх ділянках, значно віддалених від місць постійного проживання власників. У таких теплицях, відвідуваних, як правило, лише у вихідні дні, немає можливості оперативно втрутитися у формування клімату, в результаті чого він нерідко далекий від оптимального. Правильний тепловий режим в теплицях дозволяє підвищити врожайність в 2-3 рази.

Існують численні системи автоматизованого управління мікрокліматом теплиць. Як правило, такого роду системи, що поставляються численними фірмами (НВО " схемотехніки ", НВФ " Фіто ", система " Агротем ") містять повний комплекс управління мікрокліматом.

Такі системи, звичайно, хороші і ефективні, але мають цілком відчутним недоліком - високою вартістю. Використання такого роду систем у промисловій агротехніці виправдана: територія теплиць величезна, а така система дозволяє економити на персоналі, отримувати великий урожай, що дозволяє збільшити прибуток, а, отже, окупити систему.

Особливістю агротехніки нашої країни є те, що 70 % населення самі забезпечують себе овочами в літній та осінній період за рахунок вирощування культур на присадибних ділянках. Природно, що в таких умовах вирощування людина не може постійно контролювати мікроклімат у теплиці, а й купувати дорогу систему теж немає можливості . Багато хто з дачників використовують підручні, не завжди надійні та ефективні властивості - гідроциліндри для автоматичного відкривання кватирок при дуже високій температурі, бочку з невеликим отвором для поливу та інше. Ці пристосування не дороги, але малоефективні і не надійні (гідроциліндри часто виходять ладу, тече масло, ущільнювальне кільця швидко приходять в непридатність, температура, при якій відкривається кватирка, вимірюється емпірично і т.д.). Тому необхідно створити просту систему управління основними параметрами мікроклімату: температура і вологість.

1. Аналіз технічного завдання курсової

Метою даного проекту є створення системи контролю мікрокліматом теплиці на базі мікропроцесора AT89C51.

Рисунок 2.1 - Зовнішній вигляд пристрою і схема зв’язків

.1 Призначення системи

1. Контроль температури і вологості в теплиці

. Забезпечення зручного керування мікрокліматом в теплиці.

. Можливість виставляти різні типи мікроклімату в теплиці для вирощування різних типів культур.

.2 Мета створення системи

1. Точне дотримання умов вирощування культур для підвищення врожайності.

. Автоматизація операцій поливу і провітрювання, що не вимагають безпосередньої участі у вирощуванні культур.

. Стеження за зміною мікроклімату для захисту культур від несприятливих факторів (різка зміна температур, посуха).

1.3 Порядок роботи з пристроєм

1.   Для включення пристрою підключаємо його до постійного джерела живлення за допомогою виводів "Живлення". Натискаємо клавішу вкл. і одразу загориться "Індикатор роботи" пристрою і на "Дисплеях температури і вологості" відобразяться відповідно значення температури і вологості, тобто температура і вологість на "датчику температури" і "датчику вологості".

2.      Після включення, починають успішно працювати всі, або декілька елементів пристрою. Кількість початково задіяних компонентів визначається відповідно до співвідношення температури чи вологості. Температура і вологість, яку ми хочемо досягнути (відповідно до режимів роботи) і реальної (температура і вологість на відповідних датчиках).

.        По замовчуванню при запуску системи будуть стояти параметри температури і вологості відповідно до 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. Розробка принципової схеми і вибір елементної бази

.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°С

.2 Вибір температурного датчика

Як датчик температури був обраний датчик DS1621 фірми Dallas, представлений на Рисунку 4.3.

 

Рисунок 4.4 - Температурний датчик DS1621.

Основні його властивості:

• Пряме перетворення температури в цифровий код, без додаткових АЦП

• Можливість передачі даних через одне-, двох-провідний інтерфейс

• Можливість адресації декількох датчиків на одній шині

• Заводське калібрування і вбудована корекція нелінійності, не потрібно додаткової підстроювання

• Широкий діапазон виміру температури (-55 ... +125 ° С)

• захист від агресивного середовища

Технічні характеристики датчика наведені в таблиці 4.3:

Таблиця 4.3

Точність

 ±0.5 °С

Час перетворення

 1 с

Кількість біт

 9 бит

Інтерфейс

 2W (I2C)

Тип корпусу

 DIP8, SO8

 

Температурний датчик необхідно встановити таким чином, щоб на нього не потрапляли прямі сонячні промені, а також вода при поливі, прагнучи при цьому максимально зменшити віддаленість від самого пристрою.

.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 - Блок індикації(світлодіодна лінійка)

-HL5 - індикатори режимів роботи системи.- індикатор включення/виключення системи.,HG2 - індикатор температури.,HG4 - індикатор вологості.

 

Рисунок 4.6 - Блок індикації(семи сегментні індикатори)

.5 Вибір кнопок управління системою

 

Рисунок 4.5 - Дискретні кнопки

S1 - кнопка включення/виключення системи.- кнопка для вибору режиму роботи (При натисканні цієї клавіші режим роботи переключається на наступний по-порядку)- кнопка для вибору режиму робот (При натисканні цієї клавіші режим роботи переключається на попередній по-порядку)

.6 Вибір виконавчих пристроїв

В системі мікропроцесор повинен управляти охолодженням, поливом та обігріванням теплиці. Для охолодження та поливу будем використовувати

Мотори(ENG1,ENG2), а для обігріву нагрівальну лампу(L1).

В якості ключових елементів вибираємо транзистори(VT1,VT2,VT3), які комутують напругу на відповідне електромагнітне реле. Для запобігання самоіндукції електромагнітного реле використовуєм діоди(VD1,VD2,VD3).

Для замикання або розмикання електричного кола використовуєм електромагнітне реле(RL1,RL2,RL3).

Рисунок 4.6 - Схема підключення виконавчих пристроїв.

4. Розробка алгоритмів роботи програми

1.   Пристрій вмикається після натиснення клавіші S1. Загорається HL6.

2.      Проводиться опитування датчиків температури і вологості.

.        Виводяться дані про навколишню температуру і вологість на індикатори температури(HL1,HL2) і вологості(HL3,HL4).

.        Якщо натиснута клавіша S2 - проводиться вибір наступного режиму роботи (1 режим по замовчуванню).

.        Якщо натиснута клавіша S3 - проводиться вибір попереднього режиму роботи.

.        В залежності від вибраного режиму, в якого є свої конкретні параметри температури чи вологості, починають працювати обігрів, полив чи охолодження, які коректують ці параметри в разі необхідності (якщо завелика температура то вмикається охолодження, якщо навпаки - обігрів, якщо недостатня вологість повітря то включається автоматично полив).

.        В процесі коректування цих параметрів постійно зчитується температура і вологість з датчиків і посилає сигнали(якщо температура чи вологість достатня тоді виключити обігрів, охолодження чи полив)

.        Якщо натиснута клавіша S1 - система виключається.



Рисунок 5.1 - Алгоритм роботи програми

5. Написання текстів програми

$include(mod51)0 :p1,#0; очистка p1p3,#0 ; очистка p3p0.2 ; перевірка світлодіодівp0.3p0.4p0.5p0.6p0.7p2.0 ;очистити p2.0p2.1 ;очистити p p2.1 p2.2 ;очистити p2.2

;початок роботи

start:p2.3,wait ; включення схеми p0.7 ; подача сигналу на світлодіодp2.4,nok1 ; якщо натиснута s2 то перейти по мітці

jb bitkl1,nok11bitkl1r1,#5,no01 ;перевірка значення в акумуляторі і перехід по мітціnok11:r1 ; інкримент регістра r1nok11:bitkl1:p2.5,nok2bitkl2,nok22bitkl2r1,#1,no02 ;перевірка значення в акумуляторі і перехід по мітціnok22:r1 ; декримент регістра r1nok22:bitkl2:r1,#1,ex11 ; включення 1-го режиму і відповідного світлодіодаp0.2p0.3st:r1,#2,ex2 ; включення 2-го режиму і відповідного світлодіодаp0.3p0.2p0.4st:r1,#3,ex3 ; включення 3-го режиму і відповідного світлодіодаp0.4p0.3p0.5st:r1,#4,ex4 ; включення 4-го режиму і відповідного світлодіодаp0.5p0.4p0.6st:p0.6 ; включення 5-го режиму і відповідного світлодіодаp0.5:T_1WIRE_1 ; переіхід до 1 - го датчикаT_1WIRE_2 ; переіхід до 2 - го датчикаtype_dat ;вибір 1 - го датчикаGetTemp ; отримати температуруtype_dat ;вибір 2 - го датчикаGetTemp ; отримати температуруstart

Зчитування і передача значення з датчика температури на індикатор виконується

;======================================================:type_dat, next1_1Reset_1Wire_1next1_2_1: call Reset_1Wire_2_2:a, #0CCh; Посилаємо команду Skip ROM [CCh].RW_Bytea, #044h; Посилаемо команду Convert T [44h].RW_Byte

; Дальше 8 непотрібних байти (зчитуємо тільки для формування CRC).A,#0FFhRW_Byte ; byte 2.DO_CRCA,#0FFhRW_Byte ; byte 3.DO_CRCA,#0FFhRW_Byte ; byte 4.DO_CRCA,#0FFhRW_Byte ; byte 5.DO_CRCA,#0FFhRW_Byte ; byte 6.DO_CRCA,#0FFhRW_Byte ; byte 7.DO_CRC

; Зчитуємо CRC.A,#0FFhRW_Byte ; byte 8 (CRC).CA,CRC ; A = A - CRCGT_CRC_OKA,#10Big_DelayCRC_OKGT_exit_CRC_OK: ; Якщо CRC - ok.CRC_OK

;перетворення і вивід температури. 0-99градусів

; якщо температура буде від'ємна - в регістрі fTEMPER_h буде значення FF

; значення після коми зберігаються в молодшій тетраді регістра fTEMPER_la, fTEMPER_la, #0f0h ;множимо на маску, позбавлючись значень після комиa ;значення молодшого байту - в молодших розрядах акумцлятораfTEMPER_l, a ;нове значення температуриa, fTEMPER_h b, #16 ;значення старшого байту AB ;перемножуємо на множник - 16, - результат в акумуляторіa, fTEMPER_l ;додаю значення молодшого байту

.1 Проведення аналізу даних із температурного датчика

jb type_dat, nnext7_1next7_1_1:r0,ar1,#1,no11a,#17 e1no1p2.0p2.2 GT_exno1:a,#6e1no2p2.2p2.0GT_exno2:p2.2p2.0GT_ex:r1,#2,no21a,#19e2no1p2.0 p2.2GT_exno1:a,#5e2no2p2.0p2.2GT_exno2:p2.2p2.0GT_ex:r1,#3,no31a,#18e3no1p2.0p2.2 GT_exno1:a,#4e3no2p2.2p2.0Gt_exno2:p2.2p2.0GT_ex:r1,#4,no41a,#21e4no1p2.0p2.2 GT_exno1:a,#4e4no2p2.0p2.2Gt_exno2:p2.2p2.0GT_ex:a,#25e5no1p2.2p2.0 GT_exno1:a,#6e5no2p2.0p2.2GT_exno2:p2.0p2.2_ex:a,r0

b, #10 ;розбиваю значення ab ;на два числаa ;збираю значення a, b ;докупи в акумуляторіp1, a

;виводжу в порт на індикатор 1GT_exit

.2 Проведення аналізу даних із датчика вологості

next7_1:r0,ar1,#1,no1a,#30e1nop2.1 GT_exit1 no:p2.1GT_exit1:r1,#2,no2a,#60e2nop2.1 GT_exit1no:p2.1Gt_exit1:r1,#3,no3a,#35e3nop2.1 GT_exitno:p2.1Gt_exit1:r1,#4,no4a,#70e4nop2.1 GT_exitno:p2.1Gt_exit:a,#40e5nop2.1 GT_exit1no:p2.1_exit1:a,r0b, #10 ;розбиваю значення ab ;на два числаa ;збираю значення a, b ;докупи в акумуляторіp3, a ;виводжу в порт на індикатор 2_exit:; вихід з GetTemp:

;======================================================_1Wire_1: ; Скидаємо лінію на час, біля 500 мкс. == 1 datchikT_1WIRE_1A,#165 ; (500 - 4) / 3 = 165delayT_1WIRE_1

; Пропускаємо імпульс присутностіA,#165 ; (500 - 4) / 3 = 165delay

;-----------------------------------------------------------------------------_1Wire_2: ; Скидаємо лінію на час, біля 500 мкс. == 2 datchikT_1WIRE_2A,#165 ; (500 - 4) / 3 = 165delayT_1WIRE_2

; Пропускаємо імпульс присутностіA,#165 ; (500 - 4) / 3 = 165delay

;------------------------------------------------------------------------------:fCOUNTER,A_Loop36:; 1 us.fCOUNTER,D_Loop36 ; 2 us.

;-----------------------------------------------------------------------------_delay: ;=770*x+1 x=(delay-5)/770 Враховуючи виконання call и return.fCOUNTER2,AfCOUNTER,#0_Loop94:; 1 us.fCOUNTER,BD_Loop94 ; 2 us.fCOUNTER2,BD_Loop94 ; 2 us.

;======================================================

; Ф-ція вводу/виводу на лінию 1-Wire. по черзі, зсуваючи вправо значення в А зчитуємо лінію і формуємо байт

; Виводимо з A и зчитуємо в A._Byte:fTEMP,AR2,#8

;--------------------------- цикл :A,fTEMP ; повертаємо значення в акумуляторtype_dat, next2_1T_1WIRE_1 ; Обнуляємо вихід. 1 datnext2_2_1: clr T_1WIRE_2 ; Обнуляємо вихід. 2 dat_2:ACC.0,RB_Skip01type_dat, next3_1T_1WIRE_1 ; Встановлюємо вихід. 1 datnext3_2_1: setb T_1WIRE_2 ; Встановлюємо вихід. 2 dat_2:_Skip01:AACC.7 ; Приймаємо в той самий TEMP, з якого передаємоtype_dat, next4_1T_1WIRE_1, RB_Skip02next4_2_1: jnb T_1WIRE_2, RB_Skip02_2:ACC.7_Skip02:fTEMP,A ; зберігаємо значення

; дальше даємо час на звільнення лінії веденим девайсом(release = до 45 мкс.) A,#14 ; (60 - 4) / 3 = 18delay

; Відпускаємо лінію.type_dat, next5_1T_1WIRE_1next5_2_1: setb T_1WIRE_2_2:

; трішки відпочиваємо (на всякий пожарний).A,#1 delay

; Якщо 8 біт, то виходимо з циклу.R2,RBLoop ; послідовно зчитуємо 8 біт (лічильник рег.R2)

;------------------ цикл

; прийнятий байт.A,fTEMP ; записуємо значення сформованого байту в акумулятор;

;======================================================

; Процедура обновлення CRC. Параметр в A._CRC: PUSH ACC ;save accumulatorB ;save the B registerACC ;save bits to be shiftedB,#8 ;set shift = 8 bits ;_LOOP: XRL A,CRC ;calculate CRCA ;move it to the carryA,CRC ;get the last CRC valueZERO ;skip if data = 0A,#18H ;update the CRC value

;: RRC A ;position the new CRCCRC,A ;store the new CRCACC ;get the remaining bitsA ;position the next bitACC ;save the remaining bitsB,CRC_LOOP ;repeat for eight bitsACC ;clean up the stackB ;restore the B registerACC ;restore the accumulator

;-------------------------------------------------------------------------------

Висновок

В процесі виконання курсового проекту було розроблено систему управління мікрокліматом теплиці. Під час виконання даної роботи, я навчився створювати та описувати структурні і принципові схеми, складати алгоритми та програми на мові асемблера для мікропроцесора AT89С 51. Модель мікропроцесорної системи було спроектовано в програмному комплексі Proteus Professional 7.7.

Література

1.   В.В. Сташин А.В. УРУСОВ О.Ф. Мологонцева Проектирование цифровых устройств на однокристальных микроконтроллерах Москва Энергоатомиздат 1990г.

2.      А.С. Басманов "МП и ОЭВМ", Москва, "Мир", 1988.

.        "Микропроцессоры", Учебное пособие в 5-ти книгах, под редакцией В.А. Шахнова, Москва "Высшая школа", 1988.

.        Фрунзе "Микроконтроллеры? Это же просто!"

.        Магда Ю.С. "Микроконтроллеры серии 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

.        http://www.sadovod.spb.ru/TextShablon.php?LinkPage=222

11. http://www.gaw.ru/

Додаток 1. Текст програми

$include(mod51)0

;*************************************************************

; Порт 0._1WIRE_1 bit P0.0 _1WIRE_2 bit P0.1 _dat bit 01h bit 7fhbit 7eh

;*************************************************************

fCOUNTER EQU 19hEQU 1AhEQU 1BhEQU 1Ch

; Температура._L EQU 36h _H EQU 37h _OK BIT 00h.

;-------------------------------------------------------------r1,#1:p1,#0p3,#0p0.2p0.3p0.4p0.5p0.6p0.7p2.0p2.1p2.2:p2.3,waitp0.7p2.4,nok1bitkl1,nok11bitkl1r1,#5,no01nok11:r1nok11:bitkl1:p2.5,nok2bitkl2,nok22bitkl2r1,#1,no02nok22:r1nok22:bitkl2:r1,#1,ex11p0.2p0.3st:r1,#2,ex2p0.3p0.2p0.4st:r1,#3,ex3p0.4p0.3p0.5st:r1,#4,ex4p0.5p0.4p0.6st:p0.6p0.5:T_1WIRE_1T_1WIRE_2type_dat GetTemp type_dat GetTemp start

;======================================================:type_dat, next1_1Reset_1Wire_1next1_2_1: call Reset_1Wire_2_2:a, #0CCh;RW_Bytea, #044h;RW_Byte

; затримка, не менше 750 мсA,#0Big_delayBig_delayBig_delayBig_delay

type_dat, next6_1Reset_1Wire_1next6_2_1: call Reset_1Wire_2_2:A,#165 ; (500 - 4) / 3 = 165delaya, #0CCh;RW_Byte a, #0BEh;RW_Byte

a, #1hdelay

CRC,#0

A,#0FFhRW_Byte ;byte 0.fTEMPER_L,A DO_CRCA,#0FFhRW_Byte ; byte 1.fTEMPER_H, A DO_CRCA,#0FFhRW_Byte ; byte 2.DO_CRC

A,#0FFhRW_Byte ; byte 3.DO_CRCA,#0FFhRW_Byte ; byte 4.

DO_CRCA,#0FFhRW_Byte ; byte 5.

DO_CRCA,#0FFhRW_Byte ; byte 6.DO_CRCA,#0FFhRW_Byte ; byte 7.DO_CRCA,#0FFhRW_Byte ; byte 8 (CRC).

CA,CRC ; A = A - CRCGT_CRC_OKA,#10Big_Delay

CRC_OK

GT_exit

_CRC_OK:

a, fTEMPER_la, #0f0h a fTEMPER_l, a a, fTEMPER_h b, #16 AB a, fTEMPER_l type_dat, nnext7_1next7_1_1:r0,ar1,#1,no11a,#17e1no1p2.0p2.2 GT_exno1:a,#6e1no2p2.2p2.0GT_exno2:p2.2p2.0GT_ex:r1,#2,no21a,#19e2no1p2.0 p2.2GT_exno1:a,#5e2no2p2.0p2.2GT_exno2:p2.2p2.0GT_ex:r1,#3,no31a,#18e3no1p2.0p2.2 GT_exno1:a,#4e3no2p2.2p2.0Gt_exno2:p2.2p2.0GT_ex:r1,#4,no41a,#21e4no1p2.0p2.2 GT_exno1:a,#4e4no2p2.0p2.2Gt_exno2:p2.2p2.0GT_ex:a,#25e5no1p2.2p2.0 GT_exno1:a,#6e5no2p2.0p2.2GT_exno2:p2.0p2.2_ex:a,r0

b, #10 ab a p1, a

GT_exit_1:r0,ar1,#1,no1a,#30e1nop2.1 GT_exit1no:p2.1GT_exit1:r1,#2,no2a,#60e2nop2.1 GT_exit1no:p2.1Gt_exit1:r1,#3,no3a,#35e3nop2.1 GT_exitno:p2.1Gt_exit1:r1,#4,no4a,#70e4nop2.1 GT_exitno:p2.1Gt_exit:a,#40e5nop2.1 GT_exit1no:p2.1_exit1:a,r0

b, #10 ab a a, b p3, a _exit:

;-----------------------------------------------------------------------------_1Wire_2: clr T_1WIRE_2A,#165 ; (500 - 4) / 3 = 165delayT_1WIRE_2A,#165 ; (500 - 4) / 3 = 165delay

;------------------------------------------------------------------------------:fCOUNTER,A_Loop36:; 1 us.fCOUNTER,D_Loop36 ; 2 us.

;-----------------------------------------------------------------------------_delay: ;=770*x+1 x=(delay-5)/770 Враховуючи виконання call и return.fCOUNTER2,AfCOUNTER,#0_Loop94:; 1 us.fCOUNTER,BD_Loop94 ; 2 us.fCOUNTER2,BD_Loop94 ; 2 us.

;======================================================_Byte:fTEMP,AR2,#8

;--------------------------- цикл :A,fTEMP type_dat, next2_1T_1WIRE_1 ; Обнуляємо вихід. 1 datnext2_2_1: clr T_1WIRE_2 ; Обнуляємо вихід. 2 dat_2:ACC.0,RB_Skip01

type_dat, next3_1T_1WIRE_1 ; Встановлюємо вихід. 1 datnext3_2_1: setb T_1WIRE_2 ; Встановлюємо вихід. 2 dat_2:_Skip01:AACC.7 type_dat, next4_1T_1WIRE_1, RB_Skip02next4_2_1: jnb T_1WIRE_2, RB_Skip02_2:ACC.7_Skip02:fTEMP,A

) A,#14 ; (60 - 4) / 3 = 18delaytype_dat, next5_1T_1WIRE_1next5_2_1: setb T_1WIRE_2_2:A,#1 delay

.R2,RBLoop A,fTEMP ;

;======================================================

; Процедура обновлення CRC. Параметр в A._CRC: PUSH ACC ;save accumulatorB ;save the B registerACC ;save bits to be shiftedB,#8 ;set shift = 8 bits ;_LOOP: XRL A,CRC ;calculate CRCA ;move it to the carryA,CRC ;get the last CRC valueZERO ;skip if data = 0A,#18H ;update the CRC value

;: RRC A ;position the new CRCCRC,A ;store the new CRCACC ;get the remaining bitsA ;position the next bitACC ;save the remaining bitsB,CRC_LOOP ;repeat for eight bitsACC ;clean up the stackB ;restore the B registerACC ;restore the accumulator

;-------------------------------------------------------------------------------

Додаток 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

Похожие работы на - Мікропроцесорна система управління мікрокліматом теплиці

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!