Контроллер управления системой терморегуляции с выводом показаний на индикатор

 

Техническое задание


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

Так как прибор должен обеспечивать определенный интерфейс с пользователем, предусматривается 4 клавиши управления, которые позволяют установить время, требуемый режим работы и температуры.

Для отображения информации используется семисегментный дисплей.

Для контроля температуры двух зон, которые управляться микроконтроллером используются два цифровых термодатчика.

В качестве исполнительных устройств в данной курсовой работе используются два ключа контролирующих температурные зоны.

После ввода устройству пороговой температуры, она поддерживается с гистерезисом +5, -5 градусов цельсия. Так же производиться вывод температуры и времени на семисегментный дисплей.

Введение


В данной курсовой работе выполняется разработка специализированного контроллера термостата, обеспечивающего управление системой терморегуляции с контролем температуры и выводом текущих показаний на индикатор. Данное устройство, как и большинство приборов такого типа, являются очень удобными и крайне многофункциональными. Эти устройства должны предоставить максимум возможностей при минимуме усилий со стороны пользователей. Однако многофункциональность порождает еще большую сложность таких устройств, поскольку устройства должны контролировать множество параметров и быстро и точно принимать решения. Ввиду сложности, устройства должны быть еще надежнее и безопаснее.

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

В целом, применение и разработка микроконтроллерных систем управления является уже насущной необходимостью для обеспечения управления даже сложной бытовой техникой: кондиционеры, котлы отопления и даже такие казалось простые устройства как электропечи.

1. Разработка функциональной схемы устройства


Рис. 1


ДТ1 - Датчик температуры

ДТ2 - Датчик температуры

КС - Коммутатор сегмента

МПК - управляющий контроллер

Семисегментный индикатор

К1 - Ключ один

К2 - Ключ два

Блок клавиатуры с клавишами

На входе данной системы микропроцессор получает информацию от двух цифровых датчиков температуры. Так как датчик температуры измеряет значение в течении 750мс то тактирование опроса решено сделать 1 раз в секунду.

Управление выполняется через 4-х клавишную клавиатуру, первая клавиша set позволяет установить время, заданный режим работы и установить температуру которою следует поддерживать, при помощи второй «+» и третьей «-» производиться установка времени, выбор режима и температуры, четвертая клавиша позволяет выйти из режима установки параметров.

МПК выполняет постоянный опрос датчиков и клавиатуры, потом подсчитывая время и температуру, выводит их на экран семисегментного индикатора.

Температура и время в течение 3 секунд выводится поочередно на экран со временем. Т.к. коммутация выполняется динамически, то выбор сегментов включается поочередно, в каждый из тактов переполнения таймера переключается сегмент, а на индикатор выводится соответствующая цифра.

Так же в этой схеме используется блок сопряжения с COM - портом.

2. Разработка принципиальной схемы


.1 Выбор управляющего контролера


В качестве управляющего контролера может быть использован любой микропроцессорный контролер, имеющий достаточное кол-во выводов для подключения входных датчиков (2 порта), клавиатуры (4 порта), семисегментного индикатора (8 портов) и исполняющего устройства (2 порт). Для подключения всей периферии требуется 16 портов. Так же необходимо определить минимальную частоту, с которой должен работать контроллер.

Так как изначально планируется использование цифрового датчика температуры как более простого в обращении (он сам выполняет измерение температуры и оцифровку внешних показаний с последующей передачей через цифровой канал данных), поэтому не требует внешний АЦП. Такое решение упрощает и удешевляет конструкцию, но требует реализацию протокола последовательного обмена и IWare при этом в рамках протокола обмена рекомендуется частота тактирования 100 КГц, учитывая необходимость программного управления протоколом и других обслуживаемых функций, частота контролера должна быть не менее 1-2 МГц.

Для правильного выбора было решено рассмотреть три основные серии, и мной были ознакомительно изучены мпк серии PIC, AVR и МК51. Для того чтобы рассмотрение было равнозначным выбираются из серии наиболее похожи чипы по ресурсам и числу портов.

Серия PIC представляет собой RISC архитектуру с набором 34 простых команд и для реализации моего устройства этих команд вполне достаточно. В качестве наиболее распространенных и простых можно рассмотреть PIC16F626. Он является дальнейшим развитие ранее выпущенного PIC1684 и программно почти полностью совместим с ним. Он имеет два 8-ми разрядных порта, частоту тактирования 1-16 МГц, 2Кб ПЗУ программ, такая архитектура обеспечивает нам необходимое кол-во портов и частоту работы свыше 2МГц.


2.1.1 Описание МК PIC16F626

PIC16F626 относится к семейству КМОП микроконтроллеров. Отличается тем, что имеет внутреннее 1K x 14 бит EEPROM для программ, 8-битовые данные и 64байт EEPROM памяти данных. При этом отличаются низкой стоимостью и высокой производительностью. Пользователи, которые знакомы с семейством PIC16F5X могут посмотреть подробный список отличий нового от производимых ранее контроллеров. Все команды состоят из одного слова (14 бит шириной) и исполняются за один цикл (400 нс при 10 МГц), кроме команд перехода, которые выполняются за два цикла (800 нс). PIC16F626 имеет прерывание, срабатывающее от четырех источников, и восьмиуровневый аппаратный стек. Периферия включает в себя 8-битный таймер/счетчик с 8-битным программируемым делителем (фактически 16 - битный таймер) и 13 линий двунаправленного ввода/вывода. Высокая нагрузочная способность (25 мА макс. втекающий ток, 20 мА макс. вытекающий ток) линий ввода/вывода упрощают внешние драйверы и, тем самым, уменьшается общая стоимость системы. Разработки на базе контроллеров PIC16F84 поддерживается ассемблером, программным симулятором, внутрисхемным эмулятором (только фирмы Microchip) и программатором.

Серия PIC16F626 подходит для широкого спектра приложений от схем высокоскоростного управления автомобильными и электрическими двигателями до экономичных удаленных приемопередатчиков, показывающих приборов и связных процессоров. Наличие ПЗУ позволяет подстраивать параметры в прикладных программах (коды передатчика, скорости двигателя, частоты приемника и т.д.).

Следует отметить, что встроенный EEPROM кристалла PIC16F626 позволяет легко подстраивать программу и данные под конкретные требования даже после завершения ассемблирования и тестирования. Эта возможность может быть использована как для отладки когда программа может постоянно меняться.


Рис. 2 - Расположение выводов PIC


2.1.2 Описание МК AVR

Далее мы рассмотрим серию AVR. В данной серии мной был рассмотрен контролер ATiny 2313 аналогичный по функциональности и ресурсам рассмотренному PIC.

Характеристики: RISC архитектура - высококачественная и низкопотребляющая RISC архитектура

команд, большинство которых выполняется за один тактовый цикл

8 битных рабочих регистра общего применения

Полностью статическая архитектура

ОЗУ и энергонезависимая память программ и данных

КБ самопрограммируемой в системе Flash памяти программы, способной выдержать 10 000 циклов записи/стирания

Байт программируемой в системе EEPROM памяти данных, способной выдержать 100 000 циклов записи/стирания

Байт встроенной SRAM памяти (статическое ОЗУ)

Характеристики периферии

Один 8- разрядный таймер/счетчик с отдельным предделителем

Один 16-разрядный таймер/счетчик с отдельным предделителем, схемой сравнения, схемой захвата и двумя каналами ШИМ

Встроенный аналоговый компаратор

Полнодуплексный UART

программируемых линий ввода - вывода

выводной PDIP, 20 выводной SOIC и 32 контактный MLF корпуса

Диапазон напряжения питания

от 1.8 до 5.5 В

Рабочая частота

- 16 МГц


Рис. 3 - Расположение выводов ATtiny2313


Общее описание:- низкопотребляющий 8 битный КМОП микроконтроллер с AVR RISC архитектурой. Выполняя команды за один цикл, ATtiny2313 достигает производительности 1 MIPS при частоте задающего генератора 1 МГц.ядро объединяет богатую систему команд и 32 рабочих регистра общего назначения. Все 32 регистра непосредственно связаны с арифметико-логическим устройством (АЛУ), что позволяет получить доступ к двум независимым регистрам при выполнении одной команды. В результате эта архитектура позволяет обеспечить в десятки раз большую производительность, чем стандартная CISC архитектура. поддерживается различными программными средствами и интегрированными средствами разработки, такими как компиляторы C, макроассемблеры, программные отладчики/симуляторы, внутрисхемные эмуляторы и ознакомительные наборы.


2.1.3 Описание МК 51

Последним рассмотрим контролер серии МК51. В большинстве случаев это контролер с числом портов 4х8, но существует несколько контролеров с меньшим кол-вом портов AT8 C2051 и AT89C4051. Данные контролеры имеют 15 портов ввода вывода, и реализуется в уменьшенном корпусе с числом вывода 20, как и в предшествующем контролере. Данный контролер имеет CISK архитектуру, в нем реализованы команды деления и умножения, которые будут использоваться для выделения отображаемых на индикаторе разрядов, как температуры, так и времени.

В RISK архитектуре для этого потребовалось бы писать достаточно большую подпрограмму для выполнения операций деления и умножения.C2051 - 8-разрядный микроконтроллер с Flash ПЗУ

Особенности:

Совместимость с приборами семейства MCS-51

Емкость перепрограммируемой Flash памяти: 2 Кбайт, 1000 циклов стирание/запись.

Диапазон рабочих напряжений от 2,7 В до 6 В

Полностью статический прибор - диапазон

рабочих частот от 0 Гц до 24 Мгц

Двухуровневая блокировка памяти программ

СОЗУ емкостью 128 байтов

программируемых линий ввода/вывода

16-разрядных таймера/счетчика событий

Шесть источников сигнала прерывания

Выходы прямого управления СИД Рис. 3. Назначение выводов AT89C2051

Встроенный аналоговый компаратор


Рис. 4


Описание: AT89C2051 разработан по технологии КМОП. Микроконтроллер, оснащенный Flash программируемым и стираемым ПЗУ, а также совместим по системе команд и по выводам со стандартными приборами семейства MCS-51. Микроконтроллер AT89C2051 ориентирован на использование в качестве встроенного управляющего контроллера.

Проанализировав всю вышерассмотренную информацию по выбираемым контроллерам можно сказать, что хотя AVR серия наиболее производительна, но для реализации необходимых мне операций умножения и деления придется реализовать достаточно сложную подпрограмму. Другим важным фактором при сходстве параметров рассмотренных выше контроллеров и серии MK51, является то, что он изучен в рамках лабораторных работ, при написании их и отладке на микропроцессорном стенде. Это знание гарантированно обеспечивает большую скорость разработки и реализации чем с PIC и AVR т.к. не требует изучать детально новую архитектуру контролеров.

2.2 Выбор элементной базы


Для последующего схемотехнического проектирования схемы устройства рассмотрим каждый элемент схемы и выполним его обоснованный выбор.

Как уже указывалось раньше, было решено выбрать интеллектуальный цифровой датчик температуры, сейчас наиболее распространены 2 типа датчиков. Один с четырех проводным подключением по шине I2C, второй по шине 2-3-х проводной ware(3-х проводная шина когда дополнительно 3-я используется для питания датчика).

В результате анализа рынка было выяснено, что датчик I2C более дорог по сравнению с датчиком IWare - 50 -70 руб., в качестве датчика было решено использовать датчик IWare DS1820 или его модификацию. Для более детального понимания рассмотрим архитектуру датчика и его работу более подробно.


Рис. 5 - Внешний вид микросхемы цифрового термометра DS18S20


Датчик DS18B20 имеет следующие отличительные особенности:

Точность ±0.5°C от -10°C до +85°C,

Разрешение от 9 до 12 бит, которое настраивается пользователем,

Передача данных посредством 1-проводного последовательного интерфейса, 64-битный уникальный и неизменяемый серийный номер, Многоточечное считывание, Рабочее напряжение от 3.0В до 5.5В.

Вариант датчика с запиткой с линии данных (DS18B20-PAR), , 150mil 8-контактный SOIC, или 1.98мм x 1.37мм корпус с шариковыми выводами (±2.0°C).

Данные в микросхеме DS18B20 считываются через 1-проводную последовательную шину в дополнительном от 9 до 12 битном (программируется пользователем) коде с ценой младшего разряда от 0.5°C до 0.0625°C. Она является термометром с цифровым вводом/выводом, работающим с точностью ±0.5°C.

У каждой микросхемы DS18B20 имеется уникальный и неизменяемый 64-битный серийный номер, используемый как узловой адрес датчика. При этом появляется возможность сосуществовать множеству микросхем DS18B20 на одной 1 проводной шине. Микросхема DS18B20 может быть локально запитана от 3.0В до 5.5В или она может быть сконфигурирована таким образом, чтобы быть запитанной посредством 1-проводной линии данных.

Осуществление передачи команды начала преобразования и других команд, а также считывания значения измеренной температуры производится с помощью 1-проводного интерфейса (1-WireTM).

Используемый 1-проводным интерфейсом протокол не сложен. В любой момент времени на 1-проводной шине можно выделить устройство-мастер, которым может быть микропроцессор или компьютер, и подчиненное устройство, в нашем случае это микросхема система нагрева и охлаждения.

Мастер всегда выступает инициатором обмена по 1-проводной шине. Обмен с датчиком всегда начинается с процесса инициализации. Инициализация производится в следующей последовательности:

1. Формируется импульс сброса не менее 480мкс

. Далее линия отпускается и через некоторое время не более 60мкс она закорачивается самим датчиком это как сигнал готовности к обмену.

. Далее следует выполнить передачу команды и адреса конкретного датчика установленного на шине.


Рис. 6 - Временная диаграмма инициализации


После того, как мастер обнаружил ответ, он может передать датчику одну из команд. Передача ведётся путём формирования мастером специальных временных интервалов (time slots). Каждый временной интервал служит для передачи одного бита. Первым передаётся младший бит. Интервал начинается импульсом низкого уровня, длительность которого лежит в пределах 1 - 15 мкс. Поскольку переход из единицы в ноль менее чувствителен к ёмкости шины (он формируется открытым транзистором, в то время как переход из ноля в единицу формируется подтягивающим резистором), именно этот переход используют 1-проводные устройства для синхронизации с мастером. В подчиненном устройстве запускается схема временной задержки, которая определяет момент считывания данных. Номинальное значение задержки равно 30 мкс, однако, оно может колебаться в пределах 15 - 60 мкс. За импульсом низкого уровня следует передаваемый бит. Он должен удерживаться мастером на шине в течение 60 - 120 мкс от начала интервала. Временной интервал завершается переводом шины в состояние высокого уровня на время не менее 1 мкс. Длительность интервала зависит от собственной емкости линии определяемой длинной. Так как в моем устройстве датчики находятся на большом расстоянии от контроллера, то рекомендуется не мене 15мкс.


Рис. 7 - Временная диаграмма передачи 0го бита


Рис. 8 - Пример передачи 1 бита


Первой командой, которую должен передать мастер для DS18S20 после инициализации, является одна из команд реализуемых устройством функций.

При приеме данных от подчиненного устройства временные интервалы для принимаемых битов тоже формирует мастер. Интервал начинается импульсом низкого уровня длительностью 15 мкс. Затем контроллер отпускает шину и если через 30мкс он считывает 0, то этот бит удерживает термометр, иначе считывается 1. Таким способом, последовательно тактируя каждый бит, контроллер считывает все требуемые ему данные. Прием байта начинается с младшего бита.

Рассмотрим особенности протокола обмена.Вначале после проведения процедуры инициализации передается команда на выполнение определенных функций. Так как на линии подключено три термометра, то можно выполнить запуск измерения температуры сразу для всех термометров и чтобы исключить обмен номерами передаем команду пропустить передачу номера 0xCC. Далее посылаем команду Convert T - 0х44. Это сразу в трех микросхемах термометров запускает измерение и преобразование в цифровой вид температуры. Далее необходимо сформировать задержку от 500 до 750мкс (зависит от конкретного типа микросхемы, поэтому выбираем наибольший интервал). Далее процедура сброса повторяется и теперь для выборки измеренной температуры необходимо передать команду 0xCD после чего передается номер конкретного термометра. а далее посылаем команду Read Scratchpad - BEh. Первый байт содержит знак, если температура « +», то он заполнен 000000000-ми, если «-«, то 11111111-ми. Если температура отрицательна, то значение температуры передается в инверсном дополнительном коде, что требует преобразования температуры.

Для DS18S20 температура представляется в виде 9-битного значения в дополнительном коде. Поскольку это значение занимает 2 байта, все разряды старшего байта равны знаковому разряду. Дискретность представления температуры составляет 0.5°C.


Таблица 1 - Зависимость выходного кода от температуры

ТемператураВыходной код (Binary)Выходной код (Hex)Ст. байтМл. байт+125°C0000 00001111 101000FAh+25°C0000 00000011 00100032h+0.5°C0000 00000000 00010001h0°C0000 00000000 00000000h-0.5°C1111 11111111 1111FFFFh-25°C1111 11111100 1110FFCEh-55°C1111 11111001 0010FF92h

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

Для упрощения индикации используется типовой семисегментный трехразрядный индикатор, из серий, предложенных на рынке, был выбран недорогой индикатор с током управления 10мА.

Для коммутации и автоматического преобразования двоичного кода в код цифр индикатора решено было использовать специализированный дешифратор - K514ИД1. Данный дешифратор позволяет напрямую подключать семисегментные индикаторы среднего размера с не очень большим током потребления.

Для коммутации конкретного разряда - конкретной цифры используется простой транзисторный ключ включения через резистор. В качестве подобных ключей учитывая коммутируемые токи до 80мА, был выбран транзистор КТ361А с током коммутации 150мА, что почти в два раза превышает требуемый ток, управления в базу транзистора включен токоограничивающий резистор 1.5кОм.

В качестве ключей коммутаторов используется транзисторы средней мощности КТ 3102А, управляющие реле. В качестве альтернативного решения может использоваться типовая схема оптосемисторной развязки на МОС306 управляющей мощным семистором КУ208 или его аналогом.

В качестве управляющих клавиш выбраны четыре кнопки нормально разомкнутого типа без фиксации, позволяющие коммутировать небольшие токи и потому имеющие небольшие размеры и цену.

Для связи с компьютером используется специальный преобразователь уровня, т.к. встроенный последовательный порт: выходы Р3.0, Р3.1, RxD, TxD, является UARTом, но с потенциалами 0-5 вольт. Для преобразование в RS232 необходимо 0-5В преобразовать в ±12В, для этого и нужна микросхема MAX232. За счёт емкостей С5-С8 производится умножение напряжения и формирование из 5В питающего напряжения ±12В.

Схема сброса контроллера типовая включает резистор 10Ком, через который происходит разрядка конденсатора емкостью 1мкф. Схема подключения кварцевого резонатора типовая.

3. Разработка управляющей программы


3.1 Принцип функционирования


Работа устройства заключается в следующем: прибор по умолчанию запускается со стандартными установками времени и температуры для первой температурной зоны. После загрузки устройства, производиться установка времени, выбор режима работы и установка температуры поддержания. В зависимости от выбора режима работы изменяется количество настраиваемых параметров.

По умолчанию прибор загружается со следующими параметрами: первая температурная зона:

С 00:00 по 08:00 - 18ºС;

С 08:01 по 15:00 - 25ºС;

С 15:01 по 23:59 - 22ºС.

Для установки параметров работы второй температурной зоны, требуется нажать клавишу «set».


3.2 Описание алгоритма работы программы


Сам контролер функционирует по циклической программе, вначале предварительно настраивает параметры микропроцессора, устанавливает частоту переполнения таймера, настраиваются входные прерывания и внутренние переменные. Основная часть действующей программы выполняется по переполнению прерывания таймера, при этом в каждом такте выполняется подсчет времени, так же выводится по кругу очередная индицируемая цифра.

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


3.3 Описание работы программы


Вначале программы находится блок объявления переменных. В этом блоке регистрам и специальным битам системных регистров присваиваются символьные значения для более удобного обращения к ним. Также описываются и инициализируются вспомогательные управляющие флаги и переменные.

Затем идёт блок инициализации программы. В этом блоке осуществляется первоначальная настройка микроконтроллера.

После задается протокол инициализации шины IWare:

.Формируется импульс сброса не менее 500мкс

.Далее линия отпускается и через некоторое время не более 70мкс происходит считывание линии.

. После выдерживаем паузу не мене 500 мкс, параметр fok=1 - говорит

Процедура обмена с термометром. В первом такте выполняется сброс линии связи с датчиком температуры в 0 (Р3.2=0), и удерживается линия связи в нулевом состоянии до следующего переполнения таймера. В следующем такте линия переводится в единичное состояние (Р3.2=1) и выдерживается пауза в 45 мкс. Затем проверяем линию, что она находится в нулевом состоянии. Это говорит о том, что термометр ответил. Если термометр ответил, выдерживаем паузу в 250 мкс (50 раз повторяя цикл for) и проверяем, что линия сохранила своё состояние в 1 (не закорочена). Это говорит о том, что датчики готовы к обмену.

Далее передаётся команда 0хСС согласно стандарту шины IWare. После чего посылается команда 0х44, запуская конвертирование (измерение температуры цифровым датчиком). Контролируя переменную seksot, когда она равна 77 (т. е. прошло 750 мкс, нужных для измерения температуры), мы выполняем повтор инициализации сбросом и контролем линии и передаём команду 0хb8 (считать данные о температуре). Передав перед этим команду 0хbe и номер конвертированного датчика. Такое действие выполняется 2 раза, считывая температуру с двух датчиков. Далее принимаем 2 байта: 1й - байт знака температуры, 2й - непосредственно измеренная температура. Таким образом, получаем требуемые значения с температурных датчиков.

Далее идёт подсчёт времени. Он ведётся переменной seksot (она отсчитывает сотые доли секунд), инкрементируя её в каждом прерывании таймера, мы получаем при seksot=1 отсчёт первой секунды. Здесь же мы инкрементируем переменную секунды и проверяем, не равна ли она 60, если да, то обнуляем её, а увеличиваем минуты. Аналогично проверяются и минуты. Также контролируются и часы, но до 24.

Далее запускается вывод информации на индикатор. Температура для вывода рассчитывается делением на 10 (десятки) или получением остатка от деления на 10 единицы градусов.

После инициализации программы следует основной цикл программы. При этом осуществляется проверка управляющих флагов и на основе этой проверки вызываются соответствующие процедуры.

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

Заключение


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

Вторым этапом реализации проекта стало написание программной части, которая обеспечивает управление оборудованием по заданному алгоритму. Для реализации функций обмена с температурными датчиками был изучен протокол IWare, который и был далее реализован в виде части программного кода. Также было выполнено описание программы и представлен её код.

Результат проекта представлен в виде отчета имеющего два приложения: листинг программы и принципиальная схема.

Приложение 1


Схема устройства

контроллер программа алгоритм листинг

Приложение 2


Листинг программы


#include<reg51.h>

#include<stdlib.h>xdata out _at_ 0x10; /* xdata 0x10 */

unsigned char sot,sek,chas,min,regim; //shethiki vremeni

unsigned int i,j,n;char budiln[2]={0,0, 18, 8,0, 8,1, 25,15,0, 15,1, 22, 23,59}; //shethiki budilnikchar budiln2[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};char hourh,hourl,minh,minl,sekh,sekl; //shethikichar segment; //otobragaem segmentint interruptcnt;iware=P3^2;k1=P3^4;k2=P3^5;fok;iw;char ind[]={0,0,0,0,0,0,0,0,0,0,0,0}//out ind parametrchar datch1[]={02,0x67,0,0,0,0xbd,0xf3,0x34}//nomer d1char datch2[]={02,0x89,0,0x86,0,0x78,0x3f}//nomer d2

unsigned char pk1,pk2,tin1,tin2;

void delay (void char t)

{

unsigned char dd;(dd=0;dd<t;dd++)//timeuot na 5*t mks

}

void resetiw (void)

{

if (!iware) delay(100);//esli linia =0 timeout 500mks=0;(iware) //start proc

{ iware=0;

delay(100); //timeout 500mks=1;(14);//timeout 70 mks(iware)

{

delay(100); //500mks(iware) {fok=1;}

}

}

}

void readiw (void)//read IWare

{

unsigned char pp,nn;=0;(nn=0;nn<8;nn++)

{=0; delay (3); //start obmena bit=1; delay(6); //+30mks dla chtenia=iware;pp=pp>1;(14);iware=1;(3);}=pp;//save rezultat

}writeiw (void char t)//read IWare

{unsigned char pp,nn;=t;(nn=0;nn<8;nn++)

{=0; delay (3);=pp>1; iware=CY;

delay(20);iware=1;(3);

}

}timer0 (void) interrupt 1 using 2 /*Function interrupt timer0*/

{ =0xd8; /*set timer0=55539*/=0xf3;++;(seksot==100)

{seksot=0;sec++;(60 == sek)

{=0;min++;}(60== min)

{

min=0;

{++;(24== hour){hour=0;}

}

//kontrol sostoania(chas==budiln[0])&&(min==budiln[1]) (tin1<budiln[2]) k1=1 elsek1=0;if (chas==budiln[5])&&(min==budiln[6]) (tin1<budiln[7]) k1=1 elsek1=0;if (chas==budiln[10])&&(min==budiln[11]) (tin1<budiln[12]) k1=1 elsek1=0;(chas==budiln[15])&&(min==budiln[16]) (tin1<budiln[17]) k2=1 elsek1=0;if (chas==budiln[20])&&(min==budiln[21]) (tin1<budiln[22]) k2=1 elsek1=0;if (chas==budiln[25])&&(min==budiln[26]) (tin1<budiln[27]) k2=1 elsek1=0;

}

}(++segment==4) segment=0;if (segment==0) {P1=ind[segment+sm]|0xe0;}if (segment==1) {P1=ind[segment+sm]|0xd0;}if (segment==2) {P1=ind[segment+sm]|0xb0;}if (segment==3) {P1=ind[segment+sm]|0x70;}(!P3^3) if (key==segment)

{key=segment;(key==0)setaram++(setparam==33) setparam=0;(key==3) setparam=32;(setparam==0)&&(key==1) chas++;if (setparam==0)&&(key==2) chas--;if (setparam==1)&&(key==1) min++;if (setparam==1)&&(key==1) min--;if (setparam<32)&&(key==1) budiln1[setparam-2]++; ///ustanovka budilnif (setparam<30)&&(key==1) budiln1[setparam-2]--;

}(sot==2)

{resetiw; if (fok) {writeiw(0xcc); writeiw(0x44);}//komanda zapusk ocifrovki T(sot==78)

{resetiw; if (fok) {writeiw(0x55); for(i=0;i<8;i++) writeiw(datch1[i]); //vibor datchika(0xb8); readiw();readiw();tin1=iw>>1; }//read T1(sot==79)

{resetiw; if (fok) {writeiw(0x55); for(i=0;i<8;i++) writeiw(datch2[i]); //vibor datchika(0xb8); readiw();readiw();tin2=iw>>1; }//read T2

}}

}

}main (void)

{=0x50;

TH1=0xfd; //skor 9600 8 bit dannih=0; /*time 1s*/=0xd8; /*set timer0=55635*/=0xef;=0x21; /*1 regim 0 2regim 1*/=1; /*enable interrupt timer0*/=0; /*priority = 0*/=1; /*enable interrupt*/=1; /*start time0 & 1*/=1;(1)

{((RI)&&(SBUF==0xff)) {chas=0;min=0;}(sek==56) SBUF=chas;(sek==57) SBUF=min;(sek==58) SBUF=tin1;(sek==59) SBUF=tin2;

}

}



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

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ