Безпека є головною проблемою у нашому повсякденному житті, і цифрові замки стали важливою частиною цих систем безпеки. Існує безліч типів технологій, що забезпечують наше безпечне місце, наприклад, системи безпеки на основі PIR, система безпеки на основі RFID, лазерні сигналізатори, системи з біоматрицею тощо. Навіть зараз є цифрові замки, якими можна керувати за допомогою наших смартфонів, означає, що ні більше потрібно тримати різні клавіші, лише один смартфон може керувати всіма замками, ця концепція заснована на Інтернеті речей.
У цьому проекті ми пояснили простий електронний блокування коду за допомогою мікроконтролера 8051, який можна розблокувати лише заздалегідь визначеним кодом, якщо ми введемо неправильний код, система попереджає сиреною зумер. Ми вже створили цифровий замок за допомогою Arduino.
Робоче пояснення:
Ця система в основному містить мікроконтролер AT89S52, модуль клавіатури, зуммер та РК-дисплей. Мікроконтролер At89s52 контролює цілі процеси, такі як отримання модуля клавіатури у вигляді пароля, порівняння попередньо визначених паролів, керування зумером та стан надсилання на РК-дисплей. Клавіатура використовується для вставки пароля в мікроконтролер. Звуковий сигнал використовується для вказівки неправильного пароля, а РК-дисплей - для відображення стану або повідомлень на ньому. Зуммер має вбудований драйвер за допомогою транзистора NPN.
Компоненти:
- 8051 мікроконтролер (AT89S52)
- Модуль клавіатури 4X4
- Зумер
- РК-дисплей 16x2
- Резистор (1k, 10k)
- Підтягувальний резистор (10K)
- Конденсатор (10 мкФ)
- Червоний привів
- Хлібна дошка
- IC 7805
- 11,0592 МГц Кристал
- Блок живлення
- Підключення проводів
Беручи введення з матриці клавіатури 4X4 за допомогою мультиплексної техніки
У цій схемі ми використовували техніку мультиплексування для введення інтерфейсу клавіатури в мікроконтролер 8051 для введення пароля в систему. Тут ми використовуємо клавіатуру 4x4, яка має 16 клавіш. Якщо ми хочемо використовувати 16 клавіш, то для підключення до 89s52 нам потрібен 16 штифт, але в техніці мультиплексування нам потрібно використовувати лише 8 штифтів для взаємодії 16 ключів. Так що це розумний спосіб взаємодії з модулем клавіатури.
Техніка мультиплексування - це дуже ефективний спосіб зменшити кількість контактів, що використовуються з мікроконтролером для введення або пароля. В основному цей прийом використовується двома способами - один - сканування рядків, а другий - сканування стовпців.
Тут ми будемо пояснювати сканування рядків:
Спочатку ми повинні визначити 8-контактний модуль для клавіатури. У яких перші 4 шпильки є стовпчиками, а останні 4 шпильки - рядками.
Для сканування рядків нам потрібно подавати дані або сигнал на штифти стовпців і зчитувати ці дані або сигнал із штифта рядка. Тепер припустимо, ми надаємо нижче дані для штифтів стовпців:
C1 = 0;
С2 = 1;
С3 = 1;
С4 = 1;
І ми зчитуємо ці дані на штифтах рядка (за замовчуванням штифти рядків ВИСОКІ завдяки підтягувальному резистору).
Якщо користувач натискає номер клавіші '1', тоді R1 змінює HIGH на LOW, означає R1 = 0; і контролер розуміє, що користувач натиснув клавішу '1'. І він надрукує "1" на РК-дисплеї і збереже "1" у масиві. Отже, ця зміна HIGH to LOW на R1 - це головне, за допомогою чого контролер розуміє, що була натиснута якась клавіша, що відповідає стовпцю 1.
Тепер, якщо користувач натискає номер клавіші '2', тоді R1 залишається HIGH, оскільки C1 і R1 обидва вже HIGH. Отже, змін не буде, це означає, що мікроконтролер розуміє, що в першій колонці нічого не натиснуто. І так само цей головний відповідає всім іншим шпилькам. Отже, на цьому кроці контролер чекає лише ключів у першому стовпці: '1', '4', '7' та '*'.
Тепер, якщо ми хочемо відстежувати ключі в інших стовпцях (наприклад, у колонці 2), тоді нам потрібно змінити дані на штифтах стовпців:
C1 = 1;
C2 = 0;
С3 = 1;
С4 = 1;
Цього часу контролер чекає лише клавіш у другому стовпці: '2', '5', '8' та '0', оскільки зміна (HIGH to LOW) відбувається лише тоді, коли буде натиснуто дві клавіші стовпця. Якщо ми натиснемо будь-яку клавішу в колонці 1, 3 або 4, тоді ніяких змін не відбудеться, оскільки ці стовпці знаходяться у ВИСОКОМ, а рядки вже ВИСОКОМУ.
Так само ключі в стовпцях С3 та С4 також можна відстежувати, роблячи їх 0 за раз. Перевірте тут детальне пояснення: Взаємодія клавіатури з 8051. Також перейдіть до розділу коду нижче, щоб правильно зрозуміти логіку.
Пояснення схеми:
Електрична схема цього цифрового замку з використанням 8051 показана нижче і може бути легко зрозумілою. Виводи стовпців модуля клавіатури безпосередньо підключені до висновків P0.0, P0.1, P0.2, P0.3, а штифти рядків - до P0.4, P0.5, P0.6, P0.7 порту мікроконтролера 89s52 0 РК-дисплей 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 та її функціями.
Після цього в головній програмі ми ініціалізуємо РК-дисплей, а потім зчитуємо введення з клавіатури за допомогою функції клавіатури () і зберігаємо клавіші введення в масив, а потім порівнюємо їх із заздалегідь визначеними даними масиву за допомогою strncmp.
void main () {зумер = 1; lcd_init (); lcdstring ("Електронний код"); lcdcmd (0xc0); lcdstring ("Система блокування"); затримка (400); lcdcmd (1); lcdstring ("Circuit Digest"); затримка (400); в той час як (1) {i = 0; клавіатура (); if (strncmp (pass, "4201", 4) == 0)
Якщо введений пароль відповідає, то викликається функція accept ():
void accept () {lcdcmd (1); lcdstring ("Ласкаво просимо"); lcdcmd (192); lcdstring ("Прийняття пароля"); затримка (200); }
І якщо пароль помилковий, тоді викликається функція wrong ():
void неправильно () {зумер = 0; lcdcmd (1); lcdstring ("Неправильний пароль"); lcdcmd (192); lcdstring ("PLZ Спробуйте ще раз"); затримка (200); зумер = 1; }
Перевірте функцію клавіатури нижче в коді, який читає модуль клавіатури форми введення.