![]() |
Главная Микроконтроллеры [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.0011 |