Министерство образования РФ
Уральский государственный технический университет
Кафедра РЭИС
Пояснительная записка
к курсовой работе
автомобильная сигнализация
По предмету «Цифровые устройства и микропроцессоры»
Екатеринбург 2005
Задание на проектирование
В данной курсовой работе предлагается разработать авто сигнализацию на микроконтроллере КР1816ВЕ51. Основные требования к системе:
Система должна обрабатывать показания следующих датчиков: капота, багажника, дверей и двух уровневого датчика удара (сильного и слабого ударов), так же система должна выполнять блокировку зажигания при включении на охрану и содержать устройство сигнализации (сирену). Авто сигнализация должна работать в двух режимах. Первый режим – полная постановка на охрану с опросом всех датчиков, при втором режиме датчики удара и багажника игнорируются, т. е. можно без проблем открыть багажник, не включив сигнализацию, потом по желанию вернуться в первый режим.
Кроме выше указанных обязательных функций системы разработчику предлагается усложнить систему по своему усмотрению. Функции, предложенные разработчиком, указаны ниже.
Оглавление
Задание на проектирование
Введение
Функции и принцип работы устройства
Разработка схемы устройства
Описание прикладной программы
Заключение
Библиографический список
Приложение 1. Схема электрическая принципиальная
Приложение 2. Блок-схема основной программы
Приложение 3. Блок-схемы подпрограмм
Приложение 4. Программа устройства на языке Assembler
Приложение 5. Листинг программы отлаженной в ProView 32
Введение
Некоторое время назад в микропроцессорной технике выделился самостоятельный класс интегральных схем – микроконтроллеры, которые предназначены для применения в приборах различного назначения.
Использование микроконтроллеров в различных изделиях не только приводит к улучшению всех показателей (стоимость, надежность, потребляемая мощность, габариты) и позволяет многократно сократить сроки разработки и придаёт изделиям принципиально новые потребительские качества, такие как расширенные функциональные возможности и д.р.
Однокристальные (однокорпусные) микроконтроллеры представляют собой приборы, конструктивно выполненные в виде БИС и включающие в себя следующие составные части: микропроцессор, память программ и память данных, а также программируемые интерфейсные схемы для связи с внешней средой.
Цель курсовой работы состоит в развитии навыков проектирования специализированных цифровых радиоэлектронных систем с применением микропроцессорных комплектов. Изучить архитектуру однокристальных микроконтроллеров популярного семейства INTEL8051, а также структуру одного из клонов семейства – микроконтроллера КМ1816ВЕ51, его функциональные узлы и особенности их работы. Изучение основ языка Ассемблер и интегрированной среды ProView фирмы FranklinSoftwareInc., которая предназначена для разработки программного обеспечения микроконтроллеров этого семейства.
Функции и принцип работы устройства
Данная система будет содержать пять двоичных датчиков: сильного и слабого удара, капота, багажника и дверей. Постановка на охрану осуществляется с радиопульта, имеющего две кнопки: первая кнопка осуществляет постановку/снятие системы с охраны и выключение сирены при срабатывании системы (последняя функция осуществляется следующим образом: нажатие кнопки выключает сигнализацию, а автомобиль остаётся на охране, для снятия с которой надо еще раз нажать кнопку 1); вторая кнопка осуществляет постановку в режим 2 (датчики багажника и оба датчика удара игнорируются, блокировка багажника снимается) или снятие с него, в режиме 2 выключение сирены так же осуществляется с помощью кнопки 1.
При включении охраны автоматически происходит блокировка стартера, закрытие дверей и багажника, но если багажник, капот или одна из дверей открыты, то постановки на охрану не происходит, сирена дает 3 характерных звуковых сигнала (сигналы подаются примерно через 0.2 секунды, с таким же интервалом происходят все сигналы сирены и габаритами, описанные ниже), а микроконтроллер переходит в ожидание включения системы. Если все закрыто, то система переходит в режим охраны, символизируя об этом 1 сигналом сирены и габаритами.
При срабатывании датчика слабого удара система дает 5 сигналов сирены. При срабатывание любого из других датчиков происходит включение сирены, сопровождающееся миганием габаритов в течении одной минуты. Отключение сирены можно произвести с пульта кнопкой 1 или с помощью сигнала с Valet’а, который установлен в салоне автомобиля (Valet должен располагаться в потайном месте, что бы взломщики не могли его обнаружить, и возможно может быть защищен паролем, но это уже отдельное устройство, не относящееся к данному курсовому, поэтому мы будем учитывать только сигнал приходящий с него). Если датчик капота, багажника или дверей срабатывает больше пяти раз подряд (скажем, дверь была открыта), то после 5 циклов сирены по 1 минуте, система встает на охрану игнорируя цепь (датчик), которая вызвала срабатывание.
В салоне автомобиля устанавливается светодиод, который при нормальной работе системы мигает приблизительно с интервалом в 1 секунду, а при срабатывании любого датчика, кроме датчика слабого удара, включается на постоянное свечение, символизируя нам, что было вторжение. Так же при выключении системы о вторжении нам говорят 4 сигнала сирены и 4 габаритами, а если не было вторжения, то при выключении будет 2 сигнала сирены и 2 габаритами.
При включении режима 2 система оповещает нас 3 сигналами сирены и 3 габаритами, а система автомобиль остается на полной охране.
При выключении системы происходит разблокировка стартера, дверей и багажника.
Разработка схемы устройства
Схема микроконтроллера электрическая принципиальная представлена в приложении 1. Она содержит RC-цепь для формирования сигнала сброса при включении питания и кварцевый резонатор 12 МГц(ZQ). На вход ЕА подается уровень 1 (+5В).
Связь микроконтроллера с датчиками и исполнительными механизмами обеспечивается через порты (Р0 и Р2), а незадействованные порты могут быть в последствии использованы для расширения функциональных возможностей системы.
Включение/выключение системы, а так же постановка и снятие режима 2, отключение сирены осуществляется с пульта, сигналы с которого принимаются антенной и в виде двоичного кода поступают на входы порта Р0 (Р0.0 и Р0.1):
Таблица 1
P0.0 | P0.1 | Режим системы |
0 | 0 | Режим 2 |
0 | 1 | Режим 1 |
1 | 0 | Выключение сирены в режиме 2 или снятие с охраны |
1 | 1 | Выключение сирены в режиме 1 или снятие с охраны |
Расшифровка таблицы: сигнал 0 на Р0.0 включает систему, до этого Р0.0=1 (система не включена). При включении сирены её можно выключить если нажать на кнопку 1, в результате чего антенна пошлет сигнал Р0.0=1, который сразу после выключения сирены программно сбрасывается Р0.0=0. Аналогично с режимом 2 и Р0.1. Кнопки 1 и 2 на пульте инвертируют сигнал соответственно на входах Р0.0 и Р0.1 микроконтроллера.
Исполнительные механизмы подключены к выходам порта Р0 (Р0.0÷Р0.6). Из-за низкой нагрузочной способности выходов микропроцессора для всех исполнительных механизмов потребуются усилители мощности.
Датчики в системе подключены ко входам порта Р2 (Р2.2÷Р2.6). Пример подключения датчика представлен на рис.1. О срабатывании датчика сообщает низкий уровень на входе порта.
Рис.1. Подключение двоичного датчика
Описание прикладной программы
Блок-схема алгоритма программы была составлена исходя из функций и принципа действия охранной системы, изложенных выше. Текст программы составлен в точности, основываясь на алгоритме в блок-схеме. Программа оперирует с портами Р0 и Р2, регистры R0÷R4 используются в подпрограммах задержки, регистры R5÷R7 являются счетчиками числа срабатывания датчиков капота, багажника и дверей, что бы потом можно было их игнорировать. В программе создается байтовая константа FLAGS внутри сегмента перемещаемого внутрь битовой адресуемой памяти данных. В этой константе используются пять битов, каждый из которых является флагом, использующимся в программе: флаги игнорирования датчиков (капота, багажника и дверей), флаг режима 2 и флаг попытки вторжения. Подпрограммы, начинающиеся с метки SIGNAL** производят сигналы сиреной (число сигналов = первой звездочке) и габаритами (число сигналов = второй звездочке).
Заключение
В ходе выполнения данной курсовой работы была разработана автомобильная охранная система на однокристальном микроконтроллере КР1816ВЕ51. В процессе выполнения курсовой работы система была немного усовершенствована по сравнению с техническим заданием, был разработан алгоритм её работы и составлена блок-схема рабочей программы. Текст программы мы составили на языке assembler и провели её тестирование и отладку в интегрированной среде ProView фирмы FranklinSoftwareInc.
Библиографический список
1. Микропроцессоры. В 3 кн. Кн. 1. Архитектура и проектирование микро-ЭВМ. Организация вычислительных процессов: Учебник для втузов / П.В. Нестеров, В.Ф. Шаньгин, В.Л. Горбунов и др.; Под ред. Л.Н. Преснухина. М.: Высшая школа, 1986. 495 с.
2. Ваша первая программа для микроконтроллера Intel 8051: Методические указания к лабораторной работе №1 по курсу “Микропроцессоры и вычислительные устройства”/ Добряк В.А. Екатеринбург: УГТУ, 1999. 32 с.
3. Система команд микро
4. Программирование микроконтроллера Intel 8051 на языке ассемблера: Методические указания к лабораторной работе №3 по курсу “ Цифровые устройства и микропроцессоры”/ Добряк В.А., Рагозин В.К.. Екатеринбург: УГТУ, 1999. 26 с.
5. Взаимодействие микроконтроллера Intel 8051 с объектами управления: Методические указания к лабораторной работе №4 по курсу “ Цифровые устройства и микропроцессоры”/Добряк. В.А. Екатеринбург: Изд-во УГТУ, 2001. 24 с.
Приложение 1. Схема электрическая принципиальная
Приложение. Программа устройства на языке
Assembler
BEGIN:
JMP START
; переход к программе START
USING 0 ; выбор 0 банка регистров
ORG 30H ; директива размещения программы с адреса ; 30H
SEG_FLAG SEGMENT DATA BITADDRESSABLE ; объявляем сегмент перемещаемый ; внутрь битовой адресуемой памяти ; данных
SEG_PROG SEGMENT CODE ; объявляем сегмент перемещаемый в ; пространство кода программы
OVER_K SET R5 ; назначаем символические
OVER_D SET R6 ; имена регистрам
OVER_B SET R7 ; R5,R6,R7
RSEG SEG_FLAG ; выбор сегмента
FLAGS: DS 1 ; однобайтовая переменная (FLAGS)
FDOOR BIT FLAGS.0 ; флаг игнорирования (да(1) / нет(0)) датчика дверей
FBOX BIT FLAGS.1 ; -------------------- багажника
FKAPOT BIT FLAGS.2 ; ---------------------------------- капота
FMODE2 BIT FLAGS.3 ; флаг режима 2 (да(1)/нет(0))
FALARM BIT FLAGS.4 ; флаг попытки вторжения (да(1)/нет(0))
RSEG SEG_PROG ; выбор сегмента
START:
; установка начальных значений параметров
MOV FLAGS,#00H ; сброс флагов
MOV P0,#00H ; установка режимов портов
MOV P2,#0FFH ;
MOV R0,#00H ; обнуление регистров
MOV R1,#00H ;
MOV R2,#00H ;
MOV R3,#00H ;
MOV R4,#00H ;
MOV OVER_B,#00H ;
MOV OVER_K,#00H ;
MOV OVER_D,#00H ;
CLR A ; обнуление аккумулятора
WAIT:
JB P2.0,WAIT
; ждем сигнала постановки на охрану
JNB P2.4,SIGNAL3
; переходим на метку SIGNAL3,
JNB P2.5,SIGNAL3
; если открыты двери, капот
JNB P2.6,SIGNAL3
; или багажник
JMP BLOCKING
; переход к п/п блокировки
SIGNAL3:
MOV R0,#3 ; программа
LOOP3:
CALL SIGNAL1
; реализации трех
CALL DELAY
; сигналов сиреной
DJNZ R0,LOOP3
; с последующим переходом
JMP BEGIN
; в начало
SIGNAL5:
MOV R0,#5 ; программа
LOOP5:
CALL SIGNAL1
; реализациипяти
CALL DELAY
; сигналовсиреной
DJNZR0,LOOP
5
; с последующим переходом
JMPGAUGE
_
L
; к опросу датчиков GAUGE_L
BLOCKING
:
SETBP0.0 ; блокировка стартера
SETB P0.1 ; закрытие дверей
SETB P0.2 ; закрытие багажника
CALL SIGNAL11
; сигнал сирены и габаритов - СИСТЕМА НА ОХРАНЕ!
GAUGE_L:
JNB P2.2,SIGNAL5
; 5 сигналов сирены, если сработал датчик ; слабого удара
GAUGE_S:
JNB P2.3,LABELB
; переход на метку LABELB, если ; сработал датчик сильного удара
IGN_BOX:
JB FBOX,IGN_KAPOT
; переход к IGN_KAPOT, если датчик ; багажника игнорируется
BOX
:
JBP2.5,IGN
_
KAPOT
; переход к IGN_KAPOT, если датчик ; багажника не срабатывает
INC OVER_B; если датчик багажника сработал, то +1 к ; константе хранящей число срабатываний ; этого датчика
JMP LABELB
; переход на метку LABELB, включающую ; сирену
IGN
_
KAPOT
:
JBFKAPOT,IGN
_
DOOR
; 8 ниже следующих строк выполняют ; аналогичную функцию,
KAPOT
:
JBP2.4,IGN
_
DOOR
; как при опросе датчика багажника (выше),
INCOVER_K; только для датчиков капота и дверей!
JMP LABELB
;
IGN_DOOR:
JB FDOOR,CHECK_ALARM
;
DOOR:
JB P2.6,CHECK_ALARM
;
INC OVER_D;
JMP LABELB
;
CHECK
_
ALARM
:
JBFALARM,CHECK
_
MODE
2
; проверка на вторжение, если да, то ; переходим на метку CHECK_MODE2
LIGHT
_
DIOD
:
MOVR4,#5 ; программа обеспечивающая мигание светодиода
D_CYCLE:
CALL DELAY
; мигание светодиода примерно
DJNZ R4,D_CYCLE
; с интервалом в 1 секунду
CPL P0.5 ;
CHECK_MODE2:
JNB P2.1,LABELA
; если происходит постановка в режим 2, то ; переходим на метку LABELA
CLR FMODE2 ; сброс флага режима 2
MOV OVER_B,#00H ; и констант
MOV OVER_K,#00H ;
MOV OVER_D,#00H ;
SETB P0.2; закрытие багажника на случай если включался ; режим 2
JNB P2.0,GAUGE_L
; если система не выключается, то переход к ; опросу датчиков
JNB FALARM,EXIT
; если не было вторжения в процессе работы, ; то переход на EXIT
CALL SIGNAL44
; если было вторжение, то 4 сигнала сирены и ; габаритов
ANTIBLOKING
:
CLRP0.0 ; разблокирование стартера
CLRP0.1 ; открытие дверей
CLRP0.2 ; открытие багажника
JMPBEGIN
; переход в начало
LABELA:
JB FMODE2,IGN_KAPOT
; если режим 2 уже установлен, то переход ; на IGN_KAPOT, если нет, то:
SETB FMODE2 ; уст. флага режима 2
CALL SIGNAL22
; 2 сигнала сирены и габаритов при постановке в ; режим 2
CALL DELAY
;
CALL SIGNAL11
;
CLRP0.2 ; открытие багажника
JMPIGN
_
KAPOT
; переход к проверке датчиков
LABELB
:
SETBP0.3 ; включение сирены
MOVR0,#3 ; загрузка регистров для
LOOP1:
MOV R4,#100 ; цикла в 60 секунд
LOOP0:
JB P2.0,STOP_PULT
; переход если сирена отключается с пульта
JB P0.6,STOP_VALET
; переход если сирена отключается с Valet`а
CALL DELAY
; задержка 0.2 секунды
CPL P0.4 ; мигание габаритов
DJNZ R4,LOOP0
; внутренний цикл
DJNZ R0,LOOP1
; внешний цикл
JMP SHUTDOWN
; пропускаем 2 строки
STOP_PULT:
CLR P2.0 ; сброс отключения с пульта
STOP_VALET:
CLR P0.6 ; сброс отключения с Valet`а
SHUTDOWN:
CLR P0.3 ; выключение сирены
CLR P0.4 ; выключение габаритов
CJNE OVER_B,#5,SET_FKAPOT
; установка флагов для
SETB FBOX ; игнорирования датчиков
SET_FKAPOT:
CJNE OVER_K,#5,SET_FDOOR
; если воздействие было
SETBFKAPOT ; 5 раз
SET_FDOOR:
CJNE OVER_D,#5,SET_FALARM
;
SETB FDOOR ;
SET_FALARM:
SETB FALARM ; запомнилиБЫЛАПОПЫТКАВТОРЖЕНИЯ!!!
SETBP0.5 ; включаем светодиод на постоянное свечение
JNBP2.1,TO
_
IGN
_
KAPOT
; переход если режим 2 на TO_IGN_KAPOT
JMP GAUGE_S
; переход к опросу датчиков GAUGE_S
TO_IGN_KAPOT:
JMP IGN_KAPOT
; переходна IGN_KAPOT
SIGNAL11:
SETB P0.3 ; вкл. сирены
SETB P0.4 ; вкл. габаритов
CALL DELAY
; задержка 0.2 секунды
CLR P0.3 ; выкл. сирены
CLR P0.4 ; выкл. габаритов
RET ; возврат
SIGNAL22:
CALL SIGNAL11
; 1 сигнал сирены и габаритами
CALL DELAY
; задержка 0.2 секунды
CALL SIGNAL11
; 1 сигнал сирены и габаритами
RET ; возврат
SIGNAL44:
CALL SIGNAL22
; 2 сигнала сирены и габаритами
CALL DELAY
; задерка 0.2 секунды
CALL SIGNAL22
; 2 сигнала сирены и габаритами
RET ; возврат
EXIT:
CALL SIGNAL22
; 2 сигнала сирены и габаритами
JMP BEGIN
; переход в начало
SIGNAL1:
SETB P0.3 ; вкл. сирены
CALL DELAY
; задержка 0.2 секунды
CLR P0.3 ; выкл. сирены
RET ; возврат
DELAY:
MOV R3,#2 ; задержка приблизительно 0.2 секунды
CYCLE2:
MOV R2,#200 ; с помощь вложенных циклов
CYCLE0:
MOV R1,#248 ;
CYCLE1:
DJNZ R1,CYCLE1
;
NOP ;
DJNZ R2,CYCLE0
;
DJNZ R3,CYCLE2
;
RET ; возвраты
END; конец