Сигурността е основна грижа в ежедневието ни и цифровите брави се превърнаха във важна част от тези системи за сигурност. Налични са много видове технологии, за да осигурим нашето място, като базирани на PIR системи за сигурност, базирана на RFID система за сигурност, лазерни аларми за сигурност, системи с био матрица и т.н. повече трябва да запазите различни ключове, само един интелигентен телефон може да управлява всички ключалки, тази концепция се основава на Интернет на нещата.
В този проект ние обяснихме проста електронна кодова ключалка с помощта на микроконтролер 8051, която може да бъде отключена само с предварително дефиниран код, ако въведем грешен код, системата предупреждава със сирена зумера. Вече създадохме цифрова ключалка с помощта на Arduino.
Работно обяснение:
Тази система съдържа главно микроконтролер AT89S52, модул на клавиатурата, зумер и LCD. Микроконтролерът At89s52 контролира цялостните процеси като вземане на парола от модула на клавиатурата, сравняване на предварително зададена парола, задействане на зумер и изпращане на статус на LCD дисплей. Клавиатурата се използва за вмъкване на парола в микроконтролера. Звуков сигнал се използва за индикация на грешна парола, а LCD се използва за показване на състояние или съобщения върху него. Зуммерът има вграден драйвер с помощта на NPN транзистор.
Компоненти:
- 8051 микроконтролер (AT89S52)
- Модул за клавиатура 4X4
- Звънец
- 16x2 LCD
- Резистор (1k, 10k)
- Издърпващ резистор (10K)
- Кондензатор (10uf)
- Червено доведе
- Дъска за хляб
- IC 7805
- 11.0592 MHz кристал
- Захранване
- Свързващи проводници
Вземане на данни от 4X4 матрица на клавиатурата с помощта на мултиплексираща техника:
В тази схема използвахме техника за мултиплексиране, за да свържем клавиатурата с микроконтролера 8051 за въвеждане на паролата в системата. Тук използваме клавиатура 4x4, която има 16 клавиша. Ако искаме да използваме 16 клавиша, тогава ни трябват 16 пина за връзка с 89s52, но в техниката на мултиплексиране трябва да използваме само 8 пина за взаимодействие с 16 ключа. Така че това е интелигентен начин за взаимодействие с модула на клавиатурата.
Техниката на мултиплексиране е много ефективен начин за намаляване на броя на щифтовете, използвани с микроконтролера за предоставяне на вход или парола. По принцип тази техника се използва по два начина - единият е сканиране на редове, а другият е сканиране на колони.
Тук ще обясним сканирането на редове:
Първо трябва да дефинираме 8 пина за модула на клавиатурата. В които първите 4 щифта са колона, а последните 4 щифта са редове.
За сканиране на редове трябва да дадем данни или сигнал на щифтове на колони и да прочетем тези данни или сигнал от щифта на реда. Сега да предположим, че даваме по-долу данни на щифтове на колони:
С1 = 0;
С2 = 1;
СЗ = 1;
С4 = 1;
И четем тези данни при редови щифтове (по подразбиране редовите щифтове са ВИСОКИ поради издърпващ резистор).
Ако потребителят натисне клавишния номер '1', тогава R1 променя HIGH на LOW, означава R1 = 0; и контролерът разбира, че потребителят е натиснал клавиша '1'. И ще отпечата „1“ на LCD дисплея и ще съхрани „1“ в масив. Така че тази промяна HIGH to LOW при R1 е основното нещо, от което контролерът разбира, че е натиснат някакъв бутон, съответстващ на колона 1.
Сега, ако потребителят натисне клавиш номер '2', тогава R1 остава на HIGH, тъй като C1 и R1 и двете вече са на HIGH. Следователно няма да има промяна, това означава, че микроконтролерът разбира, че нищо не е натиснато в първа колона. И по същия начин тази главница се отнася за всички други пинове. Така че в тази стъпка контролерът чака само ключове в първа колона: '1', '4', '7' и '*'.
Сега, ако искаме да проследяваме ключовете в други колони (като в колона 2), тогава трябва да променим данните в пиновете на колони:
С1 = 1;
С2 = 0;
СЗ = 1;
С4 = 1;
Този контролер за време чака само ключове в колона две: '2', '5', '8' и '0', тъй като промяна (HIGH to LOW) настъпва само когато клавишите две колони ще бъдат натиснати. Ако натиснем който и да е клавиш в колони 1, 3 или 4, тогава няма да настъпи промяна, тъй като тези колони са на HIGH, а редовете вече са на HIGH.
По същия начин ключовете в колона C3 и C4 също могат да бъдат проследявани, като ги правите 0, наведнъж. Проверете тук подробното обяснение: Интерфейс на клавиатурата с 8051. Също така преминете през раздела Код по-долу, за да разберете правилно логиката.
Обяснение на веригата:
Схемата на веригата за тази цифрова ключалка с използване на 8051 е показана по-долу и може лесно да бъде разбрана. Пиновете на колоната на модула на клавиатурата са директно свързани към щифт P0.0, P0.1, P0.2, P0.3, а редовите щифтове са свързани към P0.4, P0.5, P0.6, P0.7 от порта на микроконтролера 89s52 0 LCD 16x2 е свързан с микроконтролер 89s52 в 4-битов режим. Контролният щифт RS, RW и En са директно свързани към щифтове P1.0, GND и P1.2. И пинът за данни D4-D7 е свързан към щифтове P1.4, P1.5, P1.6 и P1.7 от 89s52. И един зумер е свързан на щифт P2.6 чрез резистор.
Обяснение на програмата:
Използвали сме предварително зададена парола в програмата, тази парола може да бъде определена от потребителя в кода по-долу. Когато потребителят въведе парола за системата, след това системата сравнява въведената от потребителя парола със съхранена или предварително дефинирана парола в Кода на програмата. Ако се случи съвпадение, тогава LCD ще покаже “Access Grated” и ако паролата не съвпада, тогава LCD ще покаже “Access Denied” и зумерът непрекъснато ще издава звуков сигнал. Тук използвахме библиотеката string.h. С помощта на тази библиотека можем да сравним или съпоставим два низа, като използваме функцията “strncmp”.
В програмата на първо място включваме заглавен файл и дефинира променливи и входно-изходни щифтове за клавиатура и LCD.
#include
Създадена е функция за създаване на закъснение от 1 секунда, заедно с някои LCD функции като за инициализация на LCD, отпечатване на низа, за команди и др. Проверете тази статия за LCD взаимодействие с 8051 и неговите функции.
След това в основната програма ние инициализираме LCD и след това четем входа от клавиатурата с помощта на функцията keypad () и съхраняваме клавишите за въвеждане в масив и след това го сравняваме от предварително дефинирани данни от масива, използвайки 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); }
И ако паролата е грешна, тогава се извиква грешна () функция:
невалидно грешно () {зумер = 0; lcdcmd (1); lcdstring ("Грешен ключ за достъп"); lcdcmd (192); lcdstring ("PLZ Опитайте отново"); забавяне (200); зумер = 1; }
Проверете функцията на клавиатурата по-долу в кода, който чете модула на клавиатурата на формата за въвеждане.