Безопасность является серьезной проблемой в нашей повседневной жизни, и цифровые замки стали важной частью этих систем безопасности. Есть много типов технологий, доступных для защиты нашего места, например, системы безопасности на основе PIR, системы безопасности на основе RFID, лазерные охранные сигнализации, биоматричные системы и т. Д. Даже сейчас существуют цифровые замки, которыми можно управлять с помощью наших смартфонов, что означает отсутствие больше нужно хранить разные ключи, всего один смартфон может управлять всеми замками, эта концепция основана на Интернете вещей.
В этом проекте мы объяснили простой электронный кодовый замок с использованием микроконтроллера 8051, который может быть разблокирован только предопределенным кодом, если мы введем неправильный код, система предупредит сиреной зуммером. Мы уже создали цифровой замок с помощью Arduino.
Рабочее объяснение:
Эта система в основном содержит микроконтроллер AT89S52, модуль клавиатуры, зуммер и ЖК-дисплей. Микроконтроллер at89s52 управляет всеми процессами, такими как получение пароля из модуля клавиатуры, сравнение паролей с заранее заданным паролем, включение зуммера и отправка статуса на ЖК-дисплей. Клавиатура используется для ввода пароля в микроконтроллер. Зуммер используется для индикации неправильного пароля, а ЖК-дисплей используется для отображения статуса или сообщений на нем. Зуммер имеет встроенный драйвер на транзисторе NPN.
Составные части:
- Микроконтроллер 8051 (AT89S52)
- Модуль клавиатуры 4X4
- Зуммер
- ЖК-дисплей 16x2
- Резистор (1к, 10к)
- Подтягивающий резистор (10 кОм)
- Конденсатор (10 мкФ)
- Красный светодиод
- Хлебная доска
- IC 7805
- Кристалл 11,0592 МГц
- Источник питания
- Соединительные провода
Прием ввода с матрицы клавиатуры 4X4 с использованием метода мультиплексирования:
В этой схеме мы использовали метод мультиплексирования для сопряжения клавиатуры с микроконтроллером 8051 для ввода пароля в системе. Здесь мы используем клавиатуру 4x4 с 16 клавишами. Если мы хотим использовать 16 ключей, нам понадобится 16 контактов для подключения к 89s52, но в технике мультиплексирования нам нужно использовать только 8 контактов для сопряжения 16 ключей. Так что это разумный способ взаимодействия с модулем клавиатуры.
Метод мультиплексирования - очень эффективный способ уменьшить количество выводов, используемых микроконтроллером для обеспечения ввода или пароля. В основном этот метод используется двумя способами: один - сканирование строк, а другой - сканирование столбцов.
Здесь мы собираемся объяснить сканирование строк:
Сначала мы должны определить 8-контактный разъем для модуля клавиатуры. В котором первые 4 контакта являются столбцами, а последние 4 контакта - строками.
Для сканирования строк нам нужно передать данные или сигнал выводам столбцов и прочитать эти данные или сигнал с вывода строки. Теперь предположим, что мы передаем следующие данные выводам столбцов:
C1 = 0;
C2 = 1;
C3 = 1;
C4 = 1;
И мы читаем эти данные на выводах строки (по умолчанию выводы строки ВЫСОКИЙ из-за подтягивающего резистора).
Если пользователь нажимает клавишу с номером «1», тогда R1 меняет ВЫСОКИЙ на НИЗКИЙ, что означает R1 = 0; и контроллер понимает, что пользователь нажал клавишу «1». И он напечатает «1» на ЖК-дисплее и сохранит «1» в массиве. Таким образом, изменение с ВЫСОКОГО на НИЗКОЕ на R1 - это главное, благодаря чему контроллер понимает, что была нажата какая-то клавиша, соответствующая столбцу 1.
Теперь, если пользователь нажимает кнопку с номером «2», тогда R1 остается на ВЫСОКОМ, так как C1 и R1 оба уже находятся на ВЫСОКОМ. Значит, изменений не будет, значит, микроконтроллер понимает, что в первом столбце ничего не нажали. То же самое относится и ко всем остальным контактам. Таким образом, на этом шаге контроллер ожидает только ключей в первом столбце: «1», «4», «7» и «*».
Теперь, если мы хотим отслеживать ключи в других столбцах (например, в столбце 2), нам нужно изменить данные на выводах столбцов:
C1 = 1;
C2 = 0;
C3 = 1;
C4 = 1;
На этот раз контроллер ожидает только клавиш во втором столбце: «2», «5», «8» и «0», потому что изменение (ВЫСОКИЙ на НИЗКИЙ) происходит только при нажатии клавиш второго столбца. Если мы нажмем любую клавишу в столбце 1, 3 или 4, то никаких изменений не произойдет, потому что эти столбцы находятся на ВЫСОКОМ, а строки уже на ВЫСОКОМ.
Точно так же ключи в столбцах C3 и C4 также можно отслеживать, делая их 0 за раз. Ознакомьтесь с подробным объяснением здесь: Взаимодействие клавиатуры с 8051. Также просмотрите раздел «Код» ниже, чтобы правильно понять логику.
Описание схемы:
Принципиальная схема этого цифрового замка с использованием 8051 показана ниже и ее легко понять. Контакты столбца модуля клавиатуры напрямую подключены к контакту P0.0, P0.1, P0.2, P0.3, а контакты Row подключены к P0.4, P0.5, P0.6, P0.7 порта 0 микроконтроллера 89s52. ЖК-дисплей 16x2 соединен с микроконтроллером 89s52 в 4-битном режиме. Управляющие контакты RS, RW и En напрямую подключены к контактам P1.0, GND и P1.2. Вывод данных D4-D7 подключен к выводам P1.4, P1.5, P1.6 и P1.7 модуля 89s52. И один зуммер подключен к выводу P2.6 через резистор.
Пояснение к программе:
Мы использовали предопределенный пароль в программе, этот пароль может быть определен пользователем в приведенном ниже коде. Когда пользователь вводит пароль в систему, затем система сравнивает введенный пользователем пароль с сохраненным или предварительно заданным паролем в Коде программы. В случае совпадения на ЖК-дисплее отобразится «Доступ запрещен», а если пароль не совпадает, на ЖК-дисплее отобразится «Доступ запрещен», а зуммер будет непрерывно издавать звуковой сигнал в течение некоторого времени. Здесь мы использовали библиотеку string.h. Используя эту библиотеку, мы можем сравнивать или сопоставлять две строки, используя функцию «strncmp».
В программу, прежде всего, мы включаем файл заголовка и определяем переменные и входные и выходные контакты для клавиатуры и ЖК-дисплея.
#включают
Была создана функция для создания задержки в 1 секунду, а также некоторые функции ЖК-дисплея, такие как инициализация ЖК-дисплея, печать строки, команды и т. Д. Вы можете легко найти их в коде. Ознакомьтесь с этой статьей, чтобы узнать о взаимодействии ЖК-дисплея с 8051 и его функциях.
После этого в основной программе мы инициализируем ЖК-дисплей, а затем считываем ввод с клавиатуры с помощью функции keypad () и сохраняем ключи ввода в массив, а затем сравниваем его с предопределенными данными массива с помощью strncmp.
void main () {buzzer = 1; lcd_init (); lcdstring («Электронный код»); lcdcmd (0xc0); lcdstring («Система блокировки»); задержка (400); ЖКД (1); lcdstring («Дайджест схемы»); задержка (400); а (1) {i = 0; клавиатура (); если (strncmp (пройти, "4201", 4) == 0)
Если введенный пароль совпадает, вызывается функция accept ():
недействительным accept () {lcdcmd (1); lcdstring («Добро пожаловать»); ЖКД (192); lcdstring («Принятие пароля»); задержка (200); }
И если пароль неправильный, то вызывается функция invalid ():
недействительно неправильно () {зуммер = 0; ЖКД (1); lcdstring («Неверный ключ доступа»); ЖКД (192); lcdstring («PLZ, попробуйте еще раз»); задержка (200); зуммер = 1; }
Проверьте функцию клавиатуры ниже в коде, который считывает модуль клавиатуры формы ввода.