Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств

Шаг 5. Переходим непосредственно к разработке устройств и программ 295 идеально подходит для хранения кода. Причем такой код всегда легко поменять. При разработке замка мне не хотелось быть тривиальным. Поэтому я предлагаю не совсем обычный замок. Представьте себе кодовый замок, который может воспринимать в качестве кодовой комбинации не только отдельно нажимаемые кнопки, но и любые их сочетания. Например, попарно нажимаемые кнопки, комбинации типа «Нажать кнопку 6 и, не отпуская, набрать код 257». И вообще, выбрать любую комбинацию любых кнопок в любом соче ­ тании. Мною был разработан такой замок. Его я и хочу предложить вашему вниманию. Принцип действия замка следующий: в режиме записи кода владелец нажимает кнопки набора кода в любом порядке и в любых комбинациях. Микроконтроллер отслеживает все изменения на клавиатуре и записы ­ вает их в ОЗУ. Длина кодовой последовательности ограничена только размерами ОЗУ. Сигналом к окончанию ввода кода служит прекращение манипуляций с клавиатурой. Считается, что манипуляции закончились, если состояние клавиатуры не изменилось в течение контрольного промежутка времени. Я выбрал его примерно равным одной секунде. Сразу по окончании процесса ввода кода (по окончании контрольного промежутка времени) микропроцес ­ сор записывает принятый таким образом код в EEPROM. Код представ ­ ляет собой последовательность байтов, отражающих все состояния кла ­ виатуры во время набора. После того, как коды будут записаны, замок можно перевести в рабочий режим. Для этого предусмотрен специаль ­ ный тумблер выбора режимов. В рабочем режиме замок ждет ввода кода. Для открывания двери необ ­ ходимо повторить те же самые манипуляции с кнопками, которые вы делали в режиме записи. Микроконтроллер так же, как и в предыдущем случае, отслеживает эти манипуляции и записывает полученный таким образом код в ОЗУ По окончании ввода кода (по истечении контрольного проме ­ жутка времени) программа переходит в режим сверки кода, находящегося в ОЗУ, и кода, записанного в EEPROM. Сначала сравнивается длина обоих кодов. Затем коды сверяются побайтно. Если сравнение прошло успешно, микроконтроллер подает сигнал на механизм открывания замка. Итак, сформулируем задачу следующим образом: «Создать схему и программу электронного кодового замка, имеющего десять кнопок для ввода кода, обозначенных цифрами от «О» до «9». Замок должен иметь переключатель режимов «Записъ/Работа». В слу ­ чае правильного набора кода замок должен включать исполнительный механизм замка (соленоид или электромагнитную защелку). Ввод кода должен производиться описанным выше способом.»

RkJQdWJsaXNoZXIy MTExODQxMg==