СОВРЕМЕННАЯ ЭЛЕКТРОНИКА №2/2015
ИНЖЕНЕРНЫЕ РЕШЕНИЯ 48 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 2 2015 Для перевода замка в режим запи- си необходимо после включения питания нажать кнопку S8. При этом загорится точка h в третьем разряде (индикатор HG3). Вводимый с клави- атуры код микроконтроллер индици- рует на дисплее и записывает в ОЗУ. После ввода четырёхразрядного кода необходимо нажать любую из кнопок S1…S7. Код, индицируемый на дис- плее, запишется в память EEPROM микроконтроллера, а дисплей обну- лится. Для выхода из режима записи нужно нажать кнопку S8, после чего точка h в третьем разряде (индикатор HG3) погаснет. ПО ДЛЯ КОДОВОГО ЗАМКА Программное обеспечение микро- контроллеров для пульта и замка было разработано в среде Atmel Studio 6.1. На ассемблере программа для замка зани- мает всего порядка 0,8 Кб памяти и про- писывается к программам микрокон- троллера. В программе замка использованы три прерывания: Reset, прерывание таймера Т0 и прерывание по заверше- нию приёма USART. При переходе на метку Reset инициализируются стек, USART, таймер, порты, а также флаги и переменные величины, используе- мые в программе. В обработчике пре- рывания таймера Т0 осуществляются следующие функции: ● процедура опроса кнопок S1…S8; ● функционирование динамической индикации; ● перекодировка двоичного числа в код для отображения информации на дисплее; ● формирование временно ′ го интерва- ла длительностью пять секунд (уста- новка сигнала лог. 0 на выводе PD6 микроконтроллера); ● запись набранного кода в память EEPROM микроконтроллера и его чтение. В ОЗУ микроконтроллера с адреса $61 по адрес $63 организован буфер ото- бражения для динамической индика- ции (RAM = $60 – начальный адрес рабо- чего участка ОЗУ для буферов отобра- жения и приёма по последовательному каналу). Флаги, задействованные в про- грамме, находятся в регистрах R19 (flo) и R25 (flo1). Загрузить эталонный код в память EEPROM микроконтроллера можно и с пульта. В данном случае в обработ- ке прерывания по завершениюприёма буфера, из регистра UDR данные пере- писываются в буфер приёма с адреса RAM+12 по адрес RAM+16. По адресу RAM+12 находится число, определяю- щее адрес замка, которому адресова- на посылка (эталонный код). Соответ- ственно, по адресам RAM+13…RAM+16 записан эталонный код. Для примера в листинге приведёнфрагмент програм- мы для замка №1, где принятый адрес сравнивается с адресом «1» и далее пере- писывается в память EEPROM микро- контроллера (переход на метку ACP). Полный вариант листинга см. в допол- нительных материалах к статье на сай- те журнала. Рассмотрим алгоритм работы пуль- та. После подачи питания пульт пере- ходит в рабочий режим, на дисплее индицируется число 0000. Перед вводом эталонного кода необходи- мо установить в четвёртом разряде (индикатор HG4 на рисунке 3) адрес (число) того замка, в который необ- ходимо загрузить эталонный код. Если установлен адрес 1, то эталон- ный код загрузится в замок №1, если установлен адрес 2, то – в замок №2 и так далее. Затем с клавиатуры нуж- но набрать четырёхразрядный код. Три младших разряда индицируют- ся на дисплее замка (индикаторы HG1…HG3 на рисунке 2). После набо- ра четырёхразрядного кода необходи- мо нажать кнопку S5. Код, индициру- емый на дисплее, запишется в память EEPROM микроконтроллера выбран- ного замка. Далее для обнуления дис- плея нужно нажать любую из кнопок S1…S4 или S6…S8. Основные функциональные узлы пульта и замка идентичны. Динами- ческая индикация собрана на тран- зисторах VT1…VT4 и цифровых семи- сегментных индикаторах HG1…HG4 с ограничительными резисторами R4… R11. В интерфейс управления добав- лен дополнительный разряд для чис- ла, определяющего адрес замка. Кнопки S1…S4 и S6…S8 обозначены соответственно цифрами 1…7. Они задают трёхразрядный эталонный код, отображаемый на четырёхразрядном дисплее. Кнопка S5 предназначена для записи эталонного кода в выбранный замок. В программе пульта также исполь- зованы три прерывания: Reset, пре- рывание таймера Т0 и прерывание по событию «регистр данных USART пуст». При переходе на метку Reset инициализируются стек, USART, тай- мер, порты, а также флаги и перемен- ные величины, используемые в про- грамме. В обработчике прерывания таймера Т0 осуществляются следую- щие функции: ● процедура опроса кнопок S1…S8; ● функционирование динамической индикации; ● перекодировка двоичного числа в код для отображения информации на индикаторах. Листинг. Фрагмент программы для замка №1 ldi YL,low(RAM+12) ; обработка буфера по RS-485 ldi YH,high(RAM+12) ; ld t2,Y ; CPI t2,1 ; Brne S9 ; Ldi t2,0 ; ST Y,t2 DAL2: ldi YL,low(RAM+13) ; обработка буфера по RS-485 ldi YH,high(RAM+13) ; ldi ZL,low(RAM+1) ; ldi ZH,high(RAM+1) ; ldi t1,4 ; DAL1: ld tec,Y+ ; ST Z+,tec ; Dec t1 ; Brne DAL1 ; Rjmp ACP ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; S9: cpi catod1,5 ;4-ый разряд введен? Brne mss1
RkJQdWJsaXNoZXIy MTQ4NjUy