Система охранной сигнализации

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информатика, ВТ, телекоммуникации
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    111,8 Кб
  • Опубликовано:
    2012-12-02
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Система охранной сигнализации

Введение

охранный сигнализация микроконтроллер

Развитие микроэлектроники и широкое применение ее изделий в промышленном производстве, в устройствах и системах управления самыми разнообразными объектами и процессами является в настоящее время одним из основных направлений научно-технического прогресса.

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

За последние годы микроэлектроники бурное развитие получило направление, связанное с выпуском однокристальных микроконтроллеров (ОМК), которые предназначены для «интеллектуализации» оборудования различного назначения. ОМК представляют собой приборы, конструктивно выполненные в виде БИС, и включающие в себя все составные части «голой» микроЭВМ: микропроцессор, память программы, память данных, также программируемые интерфейсные схемы для связи с внешней средой. Использование микроконтроллеров в системах управления обеспечивает достижение исключительно высоких показателей эффективности при столь низкой стоимости (во многих применениях система может состоять только из одной БИС микроконтроллера), что микроконтроллерам, видимо, нет разумной альтернативной базы для построения управляющих и регулирующих систем. К настоящему времени более двух третей мирового рынка микропроцессорных средств составляют именно ОМК.

Объект автоматизации

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

Выбор микроконтроллера

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

-       наличие достаточного количества портов ввода-вывода. К микроконтроллеру необходимо подключить клавиатуру, LCD-дисплей, датчики, блоки управления сигналами тревоги.

-       наличие встроенного АЦП.

-       наличие программного пакета для написания и отладки программы микроконтроллера Hi-Tech.

-       достаточная изученность микроконтроллера.

В моей работе я решил использовать ПИК контроллер PIC16F8776. Это однокристальный 8-разраядный FLASH CMOS микроконтроллер компании Microchip Technology. Микроконтроллеры серии PIC16FXX фирмы Microchip являются электрически программируемыми. Память программ может быть стерта и повторно запрограммирована без удаления из схемы. Микроконтроллеры будут иметь одинаковые параметры для опытного образца, экспериментальной партии и выпуска продукции.

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

Рис. Цоколевка выводов имеет вид

Выводы RA*, RB* и RС* - это контакты ввода/вывода, связанные с регистрами микроконтроллера PORTA, PORTB и PORTC соответственно. VDD и VSS - выводы питания (+Uпит и GND соответственно). Серия 16FXX работает в широком диапазоне питающих напряжений, но обычно VSS подключен к 0В, а VDD подключен +5В. Вывод основного сброса /MCLR обычно подключен к VDD (напрямую или через резистор), потому что микроконтроллер содержит надежную схему сброса при включении питания. Выводы OSC1 и OSC2 подключаются к генератору тактовой частоты и могут быть сконфигурированы для различных его типов, включая режимы кварца и RC-генератора.

Характеристика перефирийных модулей:

·        Три таймера/счётчика:

§  таймер0: 8-ми разрядный таймер/счётчик с 8-ми разрядным предделителем;

§  таймер1: 16-ти разрядный таймер/счётчик с предделителем и возможностью прибавления в спящем режиме от внешнего источника;

§  таймер2: 8-ми разрядный счётчик с 8-ми разрядным предделителем и постделителем;

·        два модуля захвата, сравнения, 10-ти разрядный ШИМ;

·        10-ти разрядный 6-ти канальный Аналогово Цифровой Преобразователь;

·        синхронный последовательный порт с SPI и I2C интерфейсом;

·        универсальный синхронно асинхронный приёмопередатчик.

Микроконтроллер построен по RISC архитектуре, имеет 35 команд. Максимальная рабочая тактовая частота 20 МГц, имеет 256 байт Flash памяти данных, 368 байт ОЗУ и 8 кбайт Flash памяти программ, до 14 источников прерывания, 9-ти уровневый аппаратный стек, сторожевой таймер позволяющий перезагружать микроконтроллер.

Принцип действия устройства. Описание структурной схемы

Структурная схема устройства представлена на чертеже 2201.К04.097.01.00.Э1, она состоит из следующих блоков:

-       микроконтроллер;

-       клавиатура;

-       LCD-дисплей;

-       схемы управления блоками тревоги (электронные ключи);

-       блоки тревоги;

-       термодатчик;

-       датчики движения;

-       датчик дыма;

-       линия разрыва.

Клавиатура предназначена для управления устройством. Нажатая клавиша обрабатывается микроконтроллером, который выполняет необходимые действия. Клавиатура состоит из 4-х кнопок: «On/Off», «+», «-», «Sel». Кнопка «On/Off» позволяет включить или выключить режим готовности устройства, кнопки «+», «-» позволяют осуществлять навигацию между режимами контроля над работой устройства, а кнопка «Sel» предназначена для изменения параметров текущего режима работы.дисплей - текстовый дисплей, 2 строки по 16 символов. Он необходим для отображения текущего состояния устройства и отображает один из выбранных режимов.

Режим 1.

Отображение текущего времени и текущей температуры в зоне контроля (если температура в зоне контроля превышает критическую температуру, то в нижнем правом углу индикатора отображается мигающий «!»).

Рисунок 1. Формат отображения 1-го режима.

Режим 2.

Позволят изменить текущее время в интерактивном режиме используя клавиатуру.

Рисунок 2. Формат отображения 2-го режима.

Режим 3.

Позволяет изменить температуру, которая считается критической, т.е. температуры при достижении которой происходит посылается сигнал тревоги «пожар».

Рисунок 3. Формат отображения 3-го режима.

Режим 4.

Отображает информацию о времени срабатывания первого и второго датчиков движения. (Если датчик не срабатывал ни разу, то вместо времени отображается «Not»).

Рисунок 4. Формат отображения 4-го режима.

Режим 5

Отображает информацию о времени срабатывания третьего датчика движения и датчика дыма. (Если датчик не срабатывал ни разу, то вместо времени отображается «Not»).

Рисунок 5. Формат отображения 5-го режима

Термодатчик, датчики движения, датчик дыма, линия разрыва и схемы управления блоками тревоги подключаются к портам микроконтроллера.

В случае превышения критической температуры в зоне контроля происходит подача высокого сигнала на схему управления блоком тревоги «пожар».

В случае срабатывания одного из датчиков движения или датчика дыма в зоне контроля происходит подача высокого сигнала на схему управления блока тревоги «движение» или «дым» соответственно.

При поступлении сигнала о разрыве линии высокий сигнал подаётся на схему управления блоком тревоги «разрыв».

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

При разработке устройства были использованы следующие электронные компоненты:

·        Микроконтроллер PIC16F8776 фирмы Microchip.

·        Термодатчик TL431C.

·        Датчик движения KS-200DLT. Он имеет достаточно низкую частоту ложных срабатываний и высокую помехоустойчивость. Детектор надежен и прост в эксплуатации.

·        Датчик дыма фотоэлектрический MERIDIAN MN-240. Он обеспечивает высокую надёжность в эксплуатации за счёт защиты от воздействия радиопомех, высокого значения коэффициента сигнал/шум и автоматического тестирования.

Описание принципиальной схемы

Схема электрическая принципиальная представлена на чертеже 2201.К04.097.01.00.Э3.

Элемент ZQ1 представляет собой кварцевый резонатор. Так как для данного устройства не требуется высокая скорость обработки информации, то частота кварцевого резонатора выбрана равной 4 МГц для упрощения математических операций при программировании микроконтроллера.

Элемент DA1 представляет собой термодатчик TL431C, выходное значение которого калибруется при помощи резистора R2.

Элементы D2, D3, D4 - датчики движения KS-200DLT. D5 - Датчик дыма MERIDIAN MN-240.

Все датчики подключены к портам микроконтроллера RA0-RA4, настроенным на вход.

На порт микроконтроллера RA5 подключена линия разрыва.

Элементы R1, R3, R4, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15 представляют собой резисторы с сопротивлением 10кОм.

Элемент V1 представляет собой светодиод, предназначенный для индикации работы устройства. Он подключен к источнику питания через резистор R17 сопротивлением 620 Ом.

С1, С2, С3 и С4 - конденсаторы большой ёмкости (1000 мкФ), которые включены по питанию, для сглаживания импульсных помех, возникающих при работе схемы.

Конденсаторы С5 и С6 включены по типовой схеме включения кварцевого резонатора ZQ1, обеспечивающего работу тактового генератора контроллера., VD2, VD3, VD4- диоды серии 220Д., VD6, VD7, VD8- стабилитроны серии КС156А, обеспечивающие подачу на входы контроллера напряжения не более 5 вольт.цепочка R16С7 формирует сигнал «сброс» при включении питания, это необходимо для установки микроконтроллера в исходное состояние. При включении питания напряжение на конденсаторе C7 равно нулю, и на вход MCLR микроконтроллера поступает сигнал сброса, через некоторое время конденсатор C5 зарядится до уровня лог.1 через резистор R16, и микроконтроллер начнёт работу.

Текстовый LCD-дисплей HG1 имеет размер экрана 2 строки по 16 символов, размер одного символа - 5х8. Обмен данными с дисплеем производится по 4-х разрядной шине данных, причём сначала передаются старшие 4 байта, а затем младшие, управление - по 3-м линиям: RS - отвечает за формат передаваемых сигналов (1 - данные, 0 - команда); RW - определяет направление передачи информации (0 - запись (от контроллера к дисплею), 1 - чтение (от дисплея к контроллеру) ); Е - сигнал активности дисплея, при Е=0 дисплей не воспринимает сигналы шин данных и управления, при Е=1 ведётся обмен информацией между дисплеем и контроллером. Резистором R18 производится регулировка контрастности изображения на LCD-дисплее.

Клавиатура SA1, SA2, SA3, SA4 подключена к порту В микроконтроллера, так как этот порт имеет прерывание по изменению уровня на линиях RB7..RB4.

Схемы управления блоками тревоги подключены к линиям RB0..RB4 порта В.

Разработка программного обеспечения МПС. Описание алгоритма работы устройства. Описание основных частей программы

В программе можно выделить следующие логические блоки:

·   Блок объявления переменных

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

·   Блок инициализации программы

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

В частности устанавливаются следующие направления передачи данных:

o   Порт RA (RA0-RA5) - полностью на ввод данных. Причем RA0- аналоговый вход для АЦП.

o   RB0-RB3 - вывод, RB4-RB7- ввод.

o   Порт RC (RC0-RC7) - полностью на вывод данных.

·   Основной цикл программы

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

·  Процедура обработки прерываний.

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

·  Функция корректировки времени.

Осуществляет защиту переполнения ячейки памяти, хранящей текущее время.

·  Функция корректировки температуры.

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

·  Процедура чтения данных из индикатора.

Последовательно считывает младшую и старшую тетрады с 4-х разрядной шины данных и конвертирует их в одну 8-ми битовую переменную.

·  Функция записи данных в индикатор.

Последовательно передаёт в индикатор старшую и младшую тетрады 8-ми битовой переменной через 4-х разрядную шину данных.

·  Процедура проверки готовности индикатора.

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

·  Функция записи в индикатор управляющих команд.

·        Функция вывода данных на LCD-дисплей.

Осуществляет заполнение экрана данными, в зависимости от текущего режима управления (1-5).

·  Процедура, вызываемая при нажатии кнопки «On/Off».

·        Процедура, вызываемая при нажатии кнопки «-».

·        Процедура, вызываемая при нажатии кнопки «+».

·        Процедура, вызываемая при нажатии кнопки «Sel».

Описание алгоритма работы главной программы main()

При включении питания микроконтроллер начинает выполнение программы с функции main(). В ней описаны команды инициализации контроллера: настройка АЦП на порт RA0, настройка LCD-дисплея (4-х разрядная шина данных, 2 сточки, последовательное перемещение курсора), конфигурация портов на ввод и на вывод, разрешение прерываний от порта В и таймера 0. Далее происходит зацикливание при помощи бесконечного цикла while(1), в теле которого происходит проверка управляющих флагов и в зависимости от состояния этих флагов осуществляется вызов соответствующих процедур и сброс состояния флага.

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

#include <pic.h>

#define PORTBIT (adr, bit) ((unsigned) (&adr)*8+ (bit))bit RS @ PORTBIT (PORTC, 6);bit RW @ PORTBIT (PORTC, 5);bit E @ PORTBIT (PORTC, 4);probel=0x20 ;//0x20; //0x5Fint _time=0,_settime, _time1=0,_time2=0,_time3=0,_time4=0;char status=0, temperature, settemperature=50, regim=1, subregim=0, mig=0;char d1=0, d2=0, d3=0, d4=0, d5=0, d6=0, kl=0, displayed=1;

//Функция корректировки представления времениCorrectTime(unsigned int &ttime)

{(ttime>24*60-1)

{ttime=_time1=_time2=_time3=_time4=0;

}

}

//Функция корректирования температурыCorrectTemperature(unsigned char &ttemperature)

{(ttemperature>99) ttemperature=99;(ttemperature<30) ttemperature=30;

}

//ПаузаWait(uchar kk)

{(kk--);

}

//Читаем из индикатораchar ReadInd(void)

{char DATA;=0x0F;//на ввод 4мл бита порта

RW=1;=1;=(PORTC&&0x0F)<<4;//считываем 4ст. бита=0;=1;=DATA||(PORTC&&0x0F);//считываем 4мл бита=0;=0;(DATA);

}

//Записываем в индикатор код

void WriteInd(uchar Dann)

{stDann, mlDann;=Dann&&0xF0;//старшие тетрады=Dann&&0x0F;//младшие тетрады=0;=0;=PORTC&&0xF0;//очищаем 4мл бита порта С=PORTC||stDann;//передаём 4ст бита

E=1;=0;=PORTC&&0xF0;//очищаем 4мл бита порта С=PORTC||mlDann;//передаём 4мл бита=1;=0;=0x0F;

}

{DATA;//описали переменную DATA типа uchar

RS=0;

{=ReadInd();<<=1;

}(CARRY);//если бит переноса равен 1,то индикатор не готов

}WriteData(uchar kod)

{(20);

Check();=1;(kod);//записать в индикатор код

}WriteCommand(uchar kod)

{(20);//пауза(20 машинных циклов)();//проверить состояния индикатора=0;(kod);//записать в индикатор код

RS=1;

}

//Вывод на дисплейDisplay(int i)

{(_time);(settemperature);(_settime);

WriteCommand(0x01);//(00000001)очистка экрана

// -------Вывод 1-го режима------------

if (i==1) {(status==1)

{(0x4f); //O(0x6E); //n(probel); //_

} else

{(0x4f); //O(0x66); //f(0x66); //f

}(0x7c); //|(probel); //_(0x54); //T(0x69); //i(0x6D); //m(0x65); //e(0x3A); //:(probel); //_(0x30+(_time/60)/10); //desyatki chasov(0x30+(_time/60)%10); //edinitsy chasov(0x3A); //:(0x30+(_time%60)/10); // desytki minut(0x30+(_time%60)%10); // edinitsy minut

//вторая строка(0x54); //T(0x65); //e(0x6D); //m(0x70); //p(0x65); //e(0x72); //r(0x61); //a(0x74); //t(0x75); //u(0x72); //r(0x65); //e(0x3A); //:(probel); //_(0x30+temperature/10); // desyatki temperatury(0x30+temperature%10); // edinitsy temperatury((temperature<settemperature)||(mig==0))(probel); //_(0x21); //!

}

// -------Вывод 2-го режима------------(i==2) {

WriteData(probel); //_(probel); //_(probel); //_(probel); //_(0x53); //S(0x65); //e(0x74); //t(probel); //_(0x54); //T(0x69); //i(0x6D); //m(0x65); //e(0x3A); //:(probel); //_(probel); //_(probel); //_

//вторая строка(probel); //_(probel); //_(probel); //_(probel); //_(probel); //_(probel); //_((mig==1)&&(subregim==1)) {(probel); //_(probel); //_

} else

{(0x30+(_settime/60)/10); //desyatki chasov(0x30+(_settime/60)%10); //edinitsy chasov

}(0x3A); //:((mig==1)&&(subregim==2)) {(probel); //_(probel); //_

} else

{(0x30+(_settime%60)/10); // desytki minut(0x30+(_settime%60)%10); // edinitsy minut

}(probel); //_(probel); //_(probel); //_(probel); //_(probel); //_

}

//-----------------------------------------------------------

// -----Вывод 3-го режима-------------------(i==3) {(probel); //_(probel); //_(probel); //_(probel); //_(0x43); //C(0x72); //r(0x69); //i(0x74); //t(0x69); //i(0x63); //c(0x61); //a(0x6c); //l(probel); //_(probel); //_(probel); //_(probel); //_

//вторая строка(probel); //_(0x54); //T(0x65); //e(0x6D); //m(0x70); //p(0x65); //e(0x72); //r(0x61); //a(0x74); //t(0x75); //u(0x72); //r(0x65); //e(0x3A); //:(probel); //_((mig==1)&&(subregim==1)) {(probel); //_(probel); //_

} else

{(0x30+settemperature/10); // desyatki temperatury(0x30+settemperature%10); // edinitsy temperatury

}

}

//------Вывод 4-го режима-------(i==4) {

WriteData(0x53); //S(0x65); //e(0x6e); //n(0x73); //s(0x6f); //o(0x72); //r(probel); //_(0x31); //1(0x3A); //:(probel); //_(_time1==0) {(probel); //_(0x4E); //N(0x6F); //o(0x74); //t(probel); //_

} else

{WriteData(0x30+(_time1/60)/10); //desyatki chasov(0x30+(_time1/60)%10); //edinitsy chasov(0x3A); //:(0x30+(_time1%60)/10); //desyatki minut(0x30+(_time1%60)%10); //edinitsy minut

}(probel); //_

//вторая строка(0x53); //S(0x65); //e(0x6e); //n(0x73); //s(0x6f); //o(0x72); //r(probel); //_(0x32); //2(0x3A); //:(probel); //_(_time2==0) {(probel); //_(0x4E); //N(0x6F); //o(0x74); //t(probel); //_

} else

{WriteData(0x30+(_time2/60)/10); //desyatki chasov(0x30+(_time2/60)%10); //edinitsy chasov(0x3A); //:(0x30+(_time2%60)/10); //desyatki minut(0x30+(_time2%60)%10); //edinitsy minut

}(probel); //_

}

//------Вывод 5-го режима-------(i==5) {

(0x53); //S(0x65); //e(0x6e); //n(0x73); //s(0x6f); //o(0x72); //r(probel); //_(0x33); //3(0x3A); //:(probel); //_(_time3==0) {(probel); //_(0x4E); //N(0x6F); //o(0x74); //t(probel); //_

} else

{WriteData(0x30+(_time3/60)/10); //desyatki chasov(0x30+(_time3/60)%10); //edinitsy chasov(0x3A); //:(0x30+(_time3%60)/10); //desyatki minut(0x30+(_time3%60)%10); //edinitsy minut

}(probel); //_

//вторая строка(0x53); //S(0x65); //e(0x6e); //n(0x73); //s(0x6f); //o(0x72); //r(probel); //_(0x34); //4(0x3A); //:(probel); //_(_time4==0) {(probel); //_(0x4E); //N(0x6F); //o(0x74); //t(probel); //_

} else

{WriteData(0x30+(_time4/60)/10); //desyatki chasov(0x30+(_time4/60)%10); //edinitsy chasov(0x3A); //:(0x30+(_time4%60)/10); //desyatki minut(0x30+(_time4%60)%10); //edinitsy minut

}(probel); //_

}

}

//>>--------Нажатие кнопки "On/Off"---------------------on_off() {=!status;

}

//<<----------------------------------------------------

//>>--------Нажатие кнопки "-" -------------------------Down() {(subregim==0)

{regim --;

_settime=_time;(regim<1) regim=1;

}((regim==2)&&(subregim==1)) _settime-=60;((regim==2)&&(subregim==2)) _settime-=1;((regim==3)&&(subregim==1)) settemperature-=1;

}

//<<

//>>-------- Нажатие кнопки "+"-------------------------Up() {(subregim==0)

}((regim==2)&&(subregim==1)) _settime+=60;((regim==2)&&(subregim==2)) _settime+=1;((regim==3)&&(subregim==1)) settemperature+=1;

}

//<<----------------------------------------------------

//>>--------Нажатие кнопки Select-----------------------Select()

{(regim==2){++;(subregim==3)

{subregim=0;=2;

_time=_settime;

}

}(regim==3){++;(subregim==2)

{subregim=0;=3;

}

}

}

//<<-------------------------------------------------------INTR()

{(T0IF)//запрос прерывания от таймера

{=0x6;//(00000110)загрузка в таймер начального значения (переполнение через 250 циклов, 1 цикл = 1 мкс)++;//отсчёт четвертей миллисекунд((ms==2000)||(ms==4000)) mig=!mig; //флаг мигания курсора(ms>4000)//если миллисекунд больше 1000

{ms=0;//обнуление

_time++;

//>>------------Проверка термодатчика-----------------------------=1;

//<<--------------------------------------------------------------

//>>----------Проверка 1-го датчика движения----------------------((RA1==0)&&(status==1)) d2=1;

//<<--------------------------------------------------------------

//>>----------Проверка 2-го датчика движения----------------------((RA2==0)&&(status==1)) d3=1;

//<<--------------------------------------------------------------

//>>----------Проверка 3-го датчика движения----------------------((RA3==0)&&(status==1)) d4=1;

//<<--------------------------------------------------------------

//>>----------Проверка датчика дыма-------------------------------((RA4==0)&&(status==1)) d5=1;

//<<--------------------------------------------------------------

//>>----------Проверка линии разрыва------------------------------((RA5==1)&&(status==1)) d6=1;

//<<--------------------------------------------------------------

//>>-----При включённом состоянии мигание светодиода -------------

if ((status==1)&&(mig==1)) RC7=0; else RC7=1;

//<<--------------------------------------------------------------=1;

}IF=0;//сброс флага запроса прерывания от таймера

}(RBIF)//запрос прерывания от клавиатуры

{// прерывание от клавиатуры(!RB7) kl=1;

if (!RB6) kl=2;(!RB5) kl=3;

if (!RB4) kl=4;=0;//сброс флага запроса прерывания от клавиатуры

}

}//конец обработки прерыванийmain ()

{=0xFF;// настройка RA<0-5> как входы=0xF0;//(11110000)конфигурация порта на ввод=0;//конфигурация порта на вывод(0x30);

WriteCommand(0x28);//(00101000) 5x8, 2 строки, 4 разр. SD(0x0С);//(00001100) включение ЖК(0x06);//(00000110) настройка курсора (сдвиг на 1 вправо)ADCON0=0x41;//(01000001)включение модуля АЦП, частота Fosc/8;=0x8E;//(10001110)// включаем 0-й каналов АЦП=0xA8;//(10101000)

// бит 7 - разрешены все немаскированные прерывания (GIE)

// бит 6 - запрещены прерывания от переферийных модулей (PEIE)

// бит 5 - разрешены прерывания по переполнению TMR0 (T0IE)

// бит 4 - запрещены внешние прерывания INT (INTE)

// бит 3 - Разрешены прерывания по изменению сигналов на входах-RB4 (RBIE)

// бит 2 - флаг прерывания по переполнению TMR0 (T0IF)

// бит 1 - флаг внешнего прерывания INT (INTF)

// бит 0 - флаг прерывания по изменению сигналов на входах-RB4 (RBIF)(1)

{

//проверка термодатчика(d1==1)

{ d1=0;=1;//запускаем АЦП(ADGO);//ждем пока АЦП закончит преобразование

temperature=(ADRESL+ADRESH*256)*5000/1023;//вычисляем температуру((temperature>settemperature)&&(status==1))

RB0=1 else RB0=1; // сработал датчик температуры

}(d2==1) _time1=_time; // сработал 1-й датчик движения(d3==1) _time2=_time; // сработал 2-й датчик движения(d4==1) _time3=_time; // сработал 3-й датчик движения

if (d1||d2||d3) {RB1=1; d1=d2=d3=0;} else RB1=0;(d5==1) {RB2=1; d5=0} else RB2=0; //сработал датчик дыма(d6==1) {RB3=1; _time4=_time; d6=0} else RB3=0; //сработала линия разрыва(displayed) {Display(Regim); displayed=0;}(kl==1) {on_off(); kl=0;}(kl==2) {Down(); kl=0;}(kl==3) {Up(); kl=0;}

if (kl==4) {Select(); kl=0;}

};

}

Заключение

При выполнении данного курсового проекта была изучена архитектура микроконтроллера PIC16F876 фирмы Microchip и построена на его основе микропроцессорная система сигнализации. При этом также был изучен текстовый жидкокристаллический дисплей WH1602A-YYK-CP фирмы Winstar и встроенный в него контроллер HD44780. Приобретены навыки программирования микропроцессорных систем и построения на их основе устройств сбора и обработки информации.

Похожие работы на - Система охранной сигнализации

 

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