A biztonság a mindennapi életünkben komoly gondot jelent, és a digitális zárak e biztonsági rendszerek fontos részévé váltak. Számos típusú technológia áll rendelkezésre a helyünk biztosítására, mint például a PIR alapú biztonsági rendszerek, az RFID alapú biztonsági rendszerek, a lézeres biztonsági riasztók, a biomátrix rendszerek stb. több kell tartani a különböző kulcsokat, csak egy okos telefon képes működtetni az összes zárat, ez a koncepció a tárgyak internetén alapul.
Ebben a projektben egy egyszerű, elektronikus kódzárat ismertettünk a 8051 Microcontorller segítségével, amelyet csak egy előre definiált kód oldhat fel, ha rossz kódot adunk meg, a rendszer a hangjelző szirénájával figyelmeztet. Már létrehoztunk egy digitális zárat az Arduino segítségével.
Munka magyarázat:
Ez a rendszer főleg az AT89S52 mikrovezérlőt, a kezelő modult, a hangjelzőt és az LCD-t tartalmazza. Az At89s52 mikrovezérlő vezérli a teljes folyamatokat, például a jelszó formájú kezelő modul felvételét, az előre definiált jelszavak összehasonlítását, a hangjelző meghajtását és az állapotát az LCD kijelzőre. A Kezelő a jelszó behelyezésére szolgál a mikrovezérlőbe. A hangjelző a rossz jelszó jelzésére szolgál, az LCD pedig az állapot vagy az üzenetek megjelenítésére. A hangjelző beépítette az illesztőprogramot egy NPN tranzisztor használatával.
Alkatrészek:
- 8051 mikrokontroller (AT89S52)
- 4X4 kezelő modul
- Berregő
- 16x2 LCD
- Ellenállás (1k, 10k)
- Húzási ellenállás (10K)
- Kondenzátor (10uf)
- Piros vezetett
- Kenyérlap
- IC 7805
- 11,0592 MHz kristály
- Tápegység
- Csatlakozó vezetékek
Bevitel a 4X4 kezelő mátrixból a multiplexelési technika segítségével:
Ebben az áramkörben multiplexelési technikát alkalmaztunk a billentyűzet összekapcsolására a 8051 mikrovezérlővel a jelszó beírásához a rendszerbe. Itt egy 4x4-es kezelőt használunk, amely 16 billentyűvel rendelkezik. Ha 16 kulcsot akarunk használni, akkor 16 tűre van szükségünk a 89s52-höz való csatlakozáshoz, de a multiplexelési technikában csak 8 csapot kell használnunk a 16 kulcs összekapcsolásához. Annak érdekében, hogy intelligens módon illessze a kezelőmodult.
A multiplexelési technika nagyon hatékony módszer a mikrovezérlővel a bemenet vagy a jelszó megadásához használt csapok számának csökkentésére. Alapvetően ezt a technikát kétféleképpen használják - az egyik a soros, a másik az oszlopos.
Itt elmagyarázzuk a sorok beolvasását:
Először meg kell határoznunk a 8 érintkezőt a kezelő modulhoz. Melyikben az első 4 csap az oszlop, az utolsó 4 pedig a sor.
A sor szkenneléséhez adatot vagy jelet kell adnunk az oszlop csapjainak, és le kell olvasnunk ezeket az adatokat vagy jelet a sor csapról. Tegyük fel, hogy az alábbi adatokat adjuk meg az oszlopcsapoknak:
C1 = 0;
C2 = 1;
C3 = 1;
C4 = 1;
És ezeket az adatokat a soros csapoknál olvassuk (alapértelmezés szerint a sorok csapjai magasak a felhúzási ellenállás miatt).
Ha a felhasználó megnyomja az '1' billentyűt, akkor az R1 HIGH értéket LOW értékre változtatja, ez azt jelenti, hogy R1 = 0; és a vezérlő megérti, hogy a felhasználó megnyomta az '1' gombot. És kinyomtatja az 1-et az LCD-re, és az 1-et tárolja tömbben. Tehát ez a HIGH-LOW változás R1-nél az a fő, amellyel a vezérlő megérti, hogy az 1. oszlopnak megfelelő gombot megnyomtak.
Ha a felhasználó megnyomja a „2” billentyűt, akkor R1 HIGH értéken marad, mivel C1 és R1 már HIGH értéket képvisel. Ezért nem lesz változás, ez azt jelenti, hogy a mikrovezérlő megérti, hogy az első oszlopban semmi nem lett megnyomva. És ugyanígy ez az elv minden más csapra vonatkozik. Tehát ebben a lépésben a vezérlő csak az első oszlopban szereplő kulcsokra vár: „1”, „4”, „7” és „*”.
Most, ha más oszlopokban akarjuk nyomon követni a kulcsokat (például a 2. oszlopban), akkor meg kell változtatnunk az adatokat az oszlopok csapjainál:
C1 = 1;
C2 = 0;
C3 = 1;
C4 = 1;
Ez az idővezérlő csak a második oszlopban lévő kulcsokra vár: '2', '5', '8' és '0', mert a változás (HIGH to LOW) csak akkor következik be, amikor a második oszlop gombját megnyomják. Ha bármelyik gombot megnyomjuk az 1., 3. vagy 4. oszlopban, akkor nem történik változás, mert ezek az oszlopok HIGH-ra, a Rows pedig már HIGH-ra állnak.
Tehát a C3 és C4 oszlopban található kulcsok is nyomon követhetők, ha egyszerre 0-t adnak. Ellenőrizze itt a részletes magyarázatot: Kezelő összekapcsolása a 8051-gyel. A logika megfelelő megértéséhez nézze át az alábbi Kód részt is.
Áramkör magyarázat:
A 8051-es digitális zár kapcsolási rajza az alábbiakban látható, és könnyen érthető. A kezelő modul oszlopcsapjai közvetlenül csatlakoznak a P0.0, P0.1, P0.2, P0.3 érintkezőkhöz, a soros csapok pedig a 89s52 mikrovezérlő 0-as portjának 0 Egy 16x2-es LCD-t 4 bites módban 89s52 mikrovezérlővel csatlakoztattak. Az RS, RW és En vezérlőcsapok közvetlenül csatlakoznak a P1.0, GND és P1.2 csapokhoz. A D4-D7 adatcsap pedig a 89s52 P1.4, P1.5, P1.6 és P1.7 érintkezõihez csatlakozik. És egy hangjelző egy ellenálláson keresztül csatlakozik a P2.6 csaphoz.
A program magyarázata:
Előre definiált jelszót használtunk a programban, ezt a jelszót a felhasználó az alábbi kódban határozhatja meg. Amikor a felhasználó beír egy jelszót a rendszerbe, majd a rendszer összehasonlítja a felhasználó által megadott jelszót a programkódban tárolt vagy előre definiált jelszóval. Ha egyezés következik be, akkor az LCD-n az „Access Grated” felirat jelenik meg, és ha a jelszó nem egyezik meg, akkor az LCD-n a „Hozzáférés megtagadva” felirat látható, és a hangjelző egy ideig folyamatosan sípol. Itt a string.h könyvtárat használtuk. A könyvtár használatával két karakterláncot összehasonlíthatunk vagy összeilleszthetünk az „strncmp” függvény használatával.
A programban mindenekelőtt fejlécfájlt tartalmazunk, és meghatározzuk a kezelő és az LCD változó-, illetve bemeneti és kimeneti csapjait.
#include
Létrejött az 1 másodperces késleltetés létrehozására szolgáló funkció, néhány LCD funkcióval együtt, például az LCD inicializálásához, a karakterlánc nyomtatásához, parancsokhoz stb. Könnyen megtalálhatja őket a Code-ban. Ellenőrizze, hogy ebben a cikkben található-e LCD interfész a 8051-hez és annak funkcióihoz.
Ezek után a főprogramban inicializáljuk az LCD-t, majd a billentyűzet () funkció segítségével beolvassuk a billentyűzet bemenetét, és a bemeneti kulcsokat egy tömbbe tároljuk, majd az előre definiált tömbadatokból összehasonlítjuk az strncmp segítségével.
void main () {buzzer = 1; lcd_init (); lcdstring ("Elektronikus kód"); lcdcmd (0xc0); lcdstring ("Lock System"); késés (400); lcdcmd (1); lcdstring ("Circuit Digest"); késés (400); míg (1) {i = 0; kezelő (); if (strncmp (passz, "4201", 4) == 0)
Ha a megadott jelszó megegyezik, akkor az accept () függvényt hívjuk meg:
void accept () {lcdcmd (1); lcdstring ("Welcome"); lcdcmd (192); lcdstring ("Jelszó elfogadása"); késés (200); }
Ha pedig rossz a jelszó, akkor a hibás () függvényt hívjuk meg:
érvénytelen helytelen () {buzzer = 0; lcdcmd (1); lcdstring ("Rossz jelszó"); lcdcmd (192); lcdstring ("PLZ Try again"); késés (200); hangjelző = 1; }
Ellenőrizze az alábbi billentyűzet funkciót abban a kódban, amely beolvassa a beviteli űrlap kezelő modulját.