Главная  Микроконтроллеры 

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [ 65 ] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93]

II Отправка следующих 8 байтов и одновременное получение байтов, отправленных раньше

printf{"\n"):

printf{"9(i02X SendByteCOxFO)) printf{"9(,02X ,SendByte{0xF1)) printfC%02X ,SendByte{0xF2)) printf("%02X ",SendByte(0xF3)) printf{"%02X •,SendByte(0xF4)) printf("%02X ,SendByte(0xF5)) printf("9«)2X ,SendByte{0xF6)) printfC%02X SendByteCOxF/)) printfCAn"); prlntf("\n"):

KeyOffO; Отключение питания ключа

Автор: Сафонников В. В. (E-mail: svv@ufanet.ru).

6.11. Кодовый замок

1. Назначение и описание устройства

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

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

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

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

Микроконтроллер имеет 64 байта энергонезависимой памяти (EEPROM), которая используется для записи происходящих событий. Есть 3 типа событий: включение питания, правильный набор ко-



да и неправильный набор кода. Одновременно с событием записывается время, прошедшее после предыдущей записи. Точность записи времени около 8 минут. Если время между записями превысило 50 суток, дальнейший счет времени останавливается. Естественно, что для точного счета времени надо использовать кварцевый, а не встроенный RC-генератор.

Содержимое энергонезависимой памяти постоянно побитно, с частотой 3815 Гц выводится на один из выводов микроконтроллера и может быть считано для контроля внешним компьютером. Объем памяти позволяет хранить 30 записей по 2 байта. Число циклов записи в EEPROM ограничено, поэтому для увеличения срока службы используется специальный формат записи, разобраться в нем можно по исходному коду программы. После включения питания секретный код равен числу 23232. Для его изменения надо: 1) набрать старый код, при этом сработает соленоид, открывающий замок; 2) в момент отключения соленоида должна быть нажата кнопка 2 - это переведет устройство в режим ввода нового пароля; 3) ввести новый пароль, при ошибке можно пользоваться клавишей c6i50ca.

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

2. Схема

AT90S1200-12PI




3. Комментарии к схеме

Питание на микроконтроллер подается постоянно, поэтому желательно использовать сетевой блок питания, а не батарейки.

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

4. План

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

5. Программа

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

INCLUDE •1200def.inc" ; AT90S1200 е 1 МГц .CSEG

.EQU evReset=1

. EOU evPassed=3

. EOU evDenied=5

EOU KeyRing=1 ; Код клавиши звонка

EOU KeyEnter=9 ; Код клавиши сброса

EOU NewPassKey=2 ; Код клавиши, нажимаемой для ввода нового пароля

.ЕОи KeyLen=5 ; Длина секретного кода не должна быть больше 5 цифр

.ЕОи FreqKeyPressed=50 ; Константа частоты для выдачи писка при нажатии ; кнопок

.ЕОи Note 1=227 ; Константы частот и длительности нот

.EQU Note la0 = Note.l

.EOU Note 2=202

.EOU Note ci0 = Note 2

.EQU Note 3=191

.EOU Note do1 = Note 3

.EOU Note 4=170

.EOU Note.rel = Note 4

.EOU Note 5=152

.EOU Note mi1 = Note 5

.EOU Note 6=143

.EOU Note fa1 = Note 6

EOU Note 7=128



[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [ 65 ] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93]

0.0009