9.4. Инженерная интерпретация задачи
На основе изучения поставленной задачи можно выделить пять состояний, в которых может находиться МК-устройство в процессе работы. Анализ работы МК-устройства иногда удобно проводить с использованием аппарата автоматных графов.
Граф контроллера кодового замка показан на рис. 2.
В начальном состоянии (НАЧ) контроллер оказывается после включения питания. Все исполнительные механизмы при этом выключены, замок закрыт. В этом состоянии контроллер может находиться неопределенное время, пока не будет нажата кнопка. После нажатия кнопки (К=0) осуществляется переход в состояние ввода и сравнения кода (ВСК).В состоянии ВСК контроллер инициирует засветку лампы и производит ввод трех контрольных цифр. Если коды не совпадут, то осуществляется возврат в состояние НАЧ, иначе выполняется переход в состояние ОТКР (открывание двери). В состоянии ОТКР зажигается сигнальная лампа, срабатывает соленоид открывания замка и контроллер ожидает открывания двери.
После закрывания двери (состояние ОЖ ЗАКР) контроллер переходит в начальное состояние. Если в состояниях НАЧ и ВСК контроллер обнаружит попытку открывания двери (поворот ручки защелки, D=0), то осуществляется переход в состояние тревожной сигнализации (СИГНАЛ).
Как видно, граф состояний позволяет (к сожалению, далеко не всегда) выполнить формализованное описание работы МК-устройства, которое не только помогает уточнить задачу, но и облегчает разработку схемы алгоритма ее решения.
9.5. Разработка блок-схемы алгоритма
На основе графа состояний разрабатывается не детализированная блок-схема алгоритма (рис.3). Состояние НАЧ реализуется операторами 1-2, состояние ВСК - операторами 3-10, состояние ОТКР - операторами 11-13, состояние ОЖ ЗАКР - операторами 14-16, а состояние СИГНАЛ - операторами 17-24. Оператор 5 является наиболее сложным для программной реализации.
Как видно, из него имеется второй выход для отслеживания попытки открыть дверь при неправильно набранном коде (D). В блок-схеме отсутствуют операторы ввода. С целью упрощения графического алгоритма они заменены операторами проверки. Это упрощение не искажает смысла процедур, так как в МК51 имеется возможность совмещать в одной команде операцию ввода и операцию проверки бита.
9.6. Разработка прикладной программы
Текст исходной программы работы контроллера системы защиты является основным документом для последующих процедур трансляции, отладки и загрузки объектных кодов в РПП, в которых возможно использование средств автоматизации разработки прикладного программного обеспечения.
Исходный текст программы SEZAM, составленный в полном соответствии со схемой алгоритма, приводится ниже.
;*********************************************
;ОПРЕДЕЛНИЕ СИМВОЛИЧЕСКИХ ИМЕН
;*********************************************
;ОПРЕДЕЛЕНИЕ СИМВОЛИЧЕСКИХ ИМЕН БИТ ПОРТА 1
K BIT P1.2 ;КНОПКА
D BIT P1.3 ;ДАТЧИК ПОВОРОТА РУЧКИ
E BIT P1.5 ;ДАТЧИК ЗАКРЫТИЯ ДВЕРИ
Q BIT P1.4 ;СОЛЕНОИД ЗАМКА
S BIT P1.0 ;ВЫХОД НА ГРОМКОГОВОРИТЕЛЬ
L BIT P1.1 ;ВЫХОД НА ЛАМПУ
CODE_EX DATA 20H ;НАЧАЛО ОБЛАСТИ КОДОВ
;*********************************************
;ПРОГРАММА SEZAM
;*********************************************
ORG 0 ;НАЧАЛЬНЫЙ АДРЕС ПРОГРАММЫ
REPEAT:JNB D,ALARM ;ПЕРЕХОД, ЕСЛИ D=0
JB K,REPEAT ;ПОВТОРИТЬ, ЕСЛИ К=0
JNB K,$ ;ОЖИДАНИЕ ОТЖАТИЯ КНОПКИ
;ВВОД КОДОВ ОТ КНОПКИ
MOV R6,#3 ;(СЧЕТЧИК 1) <— 3
MOV R0,#CODE_EX ;НАЧАЛЬНЫЙ АДРЕС ОБЛАСТИ ;ВВЕДЕННЫХ КОДОВ
CYKLE: CLR А ;СБРОС РЕГИСТРА КОДА
CLR L ;ВКЛЮЧИТЬ ЛАМП/
MOV R5,#l20 ;(СЧЕТЧИК 2) <— 120
LOOP: ACALL DELAY ;ЗАДЕРЖКА 0,05 СЕКУНДЫ
JNB D,ALARM
JNB K,KZERO ;ПЕРЕХОД, ЕСЛИ К=0
DJNZ R5,LOOP ;ЦИКЛ 0ЖИДАНИЯ НЙЖАТИЯ
SJMP PAUSE ;ПЕРЕХО, ЕСЛИ ИСТЕКЛИ 6 СЕК.
KZERO: ACALL DELAY
JNB B,ALARM
JB K,ACCEPT ;ПЕРЕХОД, ЕСЛИ КНОПКИ ОТЖАТА
DJNZ R5,KZERO ;ОЖИДАНИЕ 0ТЖАТИЯ
SJMP PAUSE
ACCEPT:INC А ;ИНКРЕМЕНТ СЧЕТЧИКА НАЖАТИЯ SJMP LOOP
PAUSE: MOV @RO,A ;СОХРАНЕНИЕ ЧИСЛА НАЖАТИЙ INC RO
SETB L ;ВЫКЛЮЧЕНИЕ ЛАМПЫ
ACALL ONESEC ;ЗАДЕРХКА 1 СЕКУНДА
DJNZ R6,CYKLE ;ПОВТОРИТЬ 3 РАЗА
;СРАВНЕНИЕ ВВЕДЕННЫХ ЧИСЕЛ С ЭТАЛОННЫМИ ВАИТАМИ
MOV R0,CODE_EX
CJNE @RO,#7,REPEAT ;СРАВНЕНИЕ СТАРШИХ ЦИФР
INC RO
CJNE @RO,#3,REPEAT ;СРАВНЕНИЕ СРЕДНИХ ЦИФР
INC RO
CJNE @RO,@5,REPEAT;СРАВНЕНИЕ МЛАДВИХ ЦИФР
;ОТКРЫТИЕ ЗАМКА
CLR L ;ВКЛЮЧЕНИЕ ЛАМПЫ
CLR Q ;ОТКРЫТИЕ ЗАМКА
JNB E,$ ;ОЖИДАНИЕ ОТКРЫТИЯ ДВЕРИ
;ЗАКРЫТИЕ ЗАМКА
JB E,$ ;ОЖИДАНИЕ ЗАКРЫТИЯ ДВЕРИ
SETB L ;ВЫКЛЮЧЕНИЕ ЛАМПЫ
SETB Q ;ЗАКРЫТИЕ ЗАМКА
SJMP REPEAT ;ПЕРЕХОД К НАЧАЛУ
;ГРЕВОЖНАЯ СИГНАЛИЗАЦИЯ
;ФОРМИРОВАНИЕ СВЕТОВОГО СИГНАЛА
ALARM: MOV K6,#5 ;(СЧЕТЧИК) <— 5
L3: CLR L ;ВЫКЛЮЧЕНИЕ ЛАМПЫ
CALL ONESEC ;ПАУЗА 1 СЕКУНДА
SETB L ;ВЫКЛПЧЕНИЕ ЛАМПЫ
;ФОРМИРОВАНИЕ ЗВУКОВОГО СИГНАЛА
MOV R5,#5 ;СЧЕТЧИК ПОВТОРЕНИИ
L2: MOV К4,#200 ;ИНТЕРВАЛ 0,2 СЕКУНДЫ
LI: MOV R3,#248 ;ПЕРИОД ПРИБЛИЗИТЕЛЬНО РАВЕН
;1 МИЛЛИСЕКУНДЕ
CPL S ;ИНВЕРТИРОВАНИЕ S
DJNZ R3,$ ;ДЛИТЕЛЬНОСТЬ ИМПУЛЬСА
;ПРИМЕРНО 0,5 МИЛЛИСЕКУНДЫ
BJNZ R4,L1 ;ВНУТРЕННИЙ НИКЛ
DJNZ R5,L2 ;СРЕДНИЙ ЦИКЛ
DJNZ K6,L3 ;ВНЕИНИИ ЦИКЛ
JB D,REPEAT ;ПЕРЕХОД К НАЧАЛУ, ЕСЛИ В=1
MOV R6,#l ;ПРОДОЛЖЕНИЕ ТРЕВОГИ
SJMP L3
;********************************************* ;ПОДПРОГРАММЫ
;*********************************************
;ПОДПРОГРАММА ЗАДЕРжКИ 50 MC, ИСПОЛЬЗУЕТСЯ Т/СО,
;ПОГРЕШНОСТЬ НЕ БОЛЕЕ 2 МКС
DELAY: MOU TMOD,OOOlB ;HACTPUHKA Т/СО
MOV TH0,#HIGH(NOT(50000-16))
MOV TLO,LOW(NOT(50000-16))
SETB TCON.4 ;CTAPT T/CO
DEL-W:JNB TCON.5,DEL_W ;ОЖИДАНИЕ
АNL TCON,#NOT(30H);СТОП Т/СО, СБРОС TFO
RET ;ВОЗВРАТ
;ПОДПРОГРАММА ЗАДЕРЖКИ 1 СЕКУНДА,
! ИСПОЛЬЗУЕТСЯ: ПОДПРОГРАММА DELAY И РЕГИСТР R7
; ПОГРЕШНОСТЬ НЕ БОЛЕЕ 123 МКС
ONESEC: MOV R7,#20 ;СЧЕТЧИК ЦИКЛОВ
SEC_W: ACALL DELAY ;ЗАДЕРХКА 50 МС
OJNZ R7,SEC-W ;ОРГАНИЗАЦИЯ ЦИКЛА
RET ;ВОЗВРАТ
Для реализации временных задержек используются две программы. Подпрограмма DELAY реализует задержку 50 мс с использованием Т/СО. Подпрограмма ONESEC реализует задержку длительностью в 1 с. Для большей наглядности введены символические имена линий порта 1, используемых в работе контроллера замка. После включения питания по сигналу сброса включаются все исполнительные механизмы, в РУС заносится код 07Н, выбирается банк регистров 0 и запрещаются все прерывания. Допустим, что секретная (отпирающая) последовательность цифр образованна цифрами 7, 3 и 5 коды которых задаются в тексте программы.
Опрос кнопки в состоянии ВСК ведется дискретно (один раз в 50 мс), тем самым устраняется дребезг ее контактов. Введенные цифры кода замка сохраняются в РПД, начиная с адреса 20Н (CODE_EX). Генерация звукового сигнала реализуется чисто программным способом, для чего используется трехкратно вложенный цикл. Внутренний цикл задает длительность импульса и паузы примерно по 500 мкс. Тем самым получается периодический сигнал с частотой около 1 кГц и скважностью 2. Следующий цикл (счетчик R4) обеспечивает временной интервал генерации 0,2 с, а внешний цикл (счетчик R5) доводит время звучания до 1 с.
Объектные коды программы должны быть записаны в РПП, начиная с нулевой ячейки.
Длина программы составляет 121 байт; это значит, что МК-устройство допускает значительное расширение своих функциональных возможностей. (Например, можно организовать через УАПП МК51 связь множества кодовых замков с центральным диспетчером для сообщения о количестве человек, находящихся в лабораториях, для экстренных сообщений о многократных попытках несанкционированного входа в лабораторию, для получения от диспетчера нового значения кода и т.п.).
10. Некоторые теоретические и практические вопросы и методы их реализации в КП
10.1. Ввод информации с клавиатуры
Во многих применениях МК работают по заранее заданной программе без вмешательства человека. Наряду с этим существуют интерактивные МК-системы, включающие в контур управления человека-оператора. Простейший пример интерактивной управляющей системы - обслуживаемый МК, требующий ввода информации и ее отображения.
В качестве устройств ввода/вывода информации наиболее широкое распространение в МК-системах получили цифровые, алфавитно-цифровые и специальные клавиатуры, а также линейные дисплеи на семисегментных и матричных светодиодных индикаторах, алфавитно- цифровые и графические дисплеи на газоразрядных, жидкокристаллических и плазменных панелях.
10.1.1. Разновидности клавиатур
В различных по сложности и назначению управляющих системах используются разнообразные клавиатуры для ввода информации:
· простейшие, состоящие из клавиш управления типа СБРОС, ПУСК, ОСТАНОВ и т.д. ;
· цифровые, предназначенные для ввода данных и управления режимом работы МП-системы и состоящей из шестнадцатиричной клавиатуры и управляющих клавиш ЗАГРУЗКА, АДРЕС/ДАННЫЕ, ПОШАГОВЫЙ РЕЖИМ, ИНДИКАЦИЯ и т.д.;
· алфавитно- цифровые
· специализированные клавиатуры, в которых каждой клавише соответствует некоторая процедура процесса управления, например ПОВЫСИТЬ ДАВЛЕНИЕ В МАСЛЯНОЙ МАГИСТРАЛИ, ПОНИЗИТЬ ТЕМПЕРАТУРУ ОХЛАЖДАЮЩЕЙ ЖИДКОСТИ и т.п. ;