Sigurnost je glavna briga u našem svakodnevnom životu, a digitalne brave postale su važan dio ovih sigurnosnih sustava. Postoje mnoge vrste tehnologija dostupnih za osiguranje našeg mjesta, poput PIR sigurnosnih sustava, RFID sigurnosnog sustava, laserskih sigurnosnih alarma, bio-matričnih sustava itd. Čak i sada postoje digitalne brave kojima se može upravljati pomoću naših pametnih telefona, znači ne više treba držati različite tipke, samo jedan pametni telefon može upravljati svim bravama, ovaj koncept temelji se na Internetu stvari.
U ovom smo projektu objasnili jednostavnu elektroničku bravu koda pomoću mikrokontrolera 8051, koju može otključati unaprijed definirani kôd, ako unesemo pogrešan kôd, sustav upozorava sirenom. Već smo stvorili digitalnu bravu pomoću Arduina.
Radno objašnjenje:
Ovaj sustav uglavnom sadrži AT89S52 mikrokontroler, modul tipkovnice, zujalicu i LCD. Mikrokontroler At89s52 kontrolira cjelovite procese poput uzimanja lozinke iz modula tipkovnice, usporedbe lozinki unaprijed definirane lozinke, vođenja zujanja i slanja statusa na LCD zaslon. Tipkovnica se koristi za umetanje lozinke u mikrokontroler. Zujalica se koristi za naznaku pogrešne lozinke, a LCD služi za prikaz statusa ili poruka na njoj. Zujalica je ugradila upravljački program pomoću NPN tranzistora.

Komponente:
- 8051 mikrokontroler (AT89S52)
- 4X4 modul tipkovnice
- Zujalica
- LCD 16x2
- Otpornik (1k, 10k)
- Otpornik za izvlačenje (10K)
- Kondenzator (10uf)
- Crveni vodio
- Daska za kruh
- IC 7805
- 11,0592 MHz kristal
- Napajanje
- Spajanje žica
Uzimanje podataka s matrice tipkovnice 4X4 koristeći Multiplexing tehniku:
U ovom smo krugu koristili tehniku multipleksiranja za povezivanje tipkovnice s mikrokontrolerom 8051 za unos lozinke u sustav. Ovdje koristimo 4x4 tipkovnicu koja ima 16 tipki. Ako želimo koristiti 16 tipki, tada nam treba 16 pinova za povezivanje s 89s52, ali u tehnici multipleksiranja trebamo koristiti samo 8 pinova za povezivanje 16 tipki. Tako da je to pametan način povezivanja modula tipkovnice.

Tehnika multipleksiranja vrlo je učinkovit način za smanjenje broja pinova koji se koriste s mikrokontrolerom za pružanje ulaza ili lozinke. U osnovi se ova tehnika koristi na dva načina - jedan je skeniranje redaka, a drugi skeniranje stupaca.
Ovdje ćemo objasniti skeniranje redova:
Prvo moramo definirati 8-polni modul tipkovnice. U kojoj su prva 4 pina stupci, a posljednja 4 pina redovi.


Za skeniranje redaka moramo dati podatke ili signal na pinove stupaca i te podatke ili signal očitati s klina retka. Sada pretpostavimo da u nastavku dajemo podatke na igle stupaca:
C1 = 0;
C2 = 1;
C3 = 1;
C4 = 1;
I ove podatke čitamo na zatikima s redovima (prema zadanim postavkama pribadače su VISOKE zbog povlačenja otpora).
Ako korisnik pritisne tipku broj '1', tada R1 mijenja HIGH u LOW, znači R1 = 0; i kontroler razumije da je korisnik pritisnuo tipku '1'. I ispisat će '1' na LCD zaslonu i pohraniti '1' u niz. Dakle, ova promjena HIGH to LOW na R1, glavna je stvar po kojoj kontroler razumije da je pritisnuta neka tipka, koja odgovara stupcu 1.
Sada ako korisnik pritisne tipku broj '2', tada R1 ostaje na VISOKOM jer su C1 i R1 već na VISOKOM. Stoga neće biti promjena, što znači da mikrokontroler razumije da u prvom stupcu nije ništa pritisnuto. A isto tako ova glavnica vrijedi za sve ostale igle. Dakle, u ovom koraku kontroler čeka samo tipke u prvom stupcu: '1', '4', '7' i '*'.
Sada ako želimo pratiti ključeve u drugim stupcima (kao u stupcu 2), tada moramo promijeniti podatke na pribadačama stupaca:
C1 = 1;
C2 = 0;
C3 = 1;
C4 = 1;
Ovaj vremenski kontroler samo čeka tipke u drugom stupcu: '2', '5', '8' i '0', jer se promjena (HIGH u LOW) događa samo kad se pritisnu tipke dva stupca. Ako pritisnemo bilo koju tipku u stupcima 1, 3 ili 4, tada neće doći do promjene, jer su ovi stupci HIGH, a redovi su HIGH.
Tako se i ključevi u stupcima C3 i C4 mogu pratiti ako ih napravite 0, odjednom. Ovdje provjerite detaljno objašnjenje: Povezivanje tipkovnice s 8051. Također pročitajte donji odjeljak Koda kako biste pravilno razumjeli logiku.
Objašnjenje sklopa:
Shema kruga za ovu digitalnu bravu koja koristi 8051 prikazana je u nastavku i lako se može razumjeti. Stupci stupaca modula tipkovnice izravno su povezani na pin P0.0, P0.1, P0.2, P0.3, a redni pinovi povezani su na P0.4, P0.5, P0.6, P0.7 od priključka mikrokontrolera 89s52 0 LCD 16x2 povezan je s mikrokontrolerom 89s52 u 4-bitnom načinu. Upravljački pin RS, RW i En izravno su povezani s pinovima P1.0, GND i P1.2. A podatkovni pin D4-D7 povezan je s pinovima P1.4, P1.5, P1.6 i P1.7 od 89s52. I jedan zujalica spojen je na pin P2.6 kroz otpornik.

Objašnjenje programa:
U programu smo koristili unaprijed definiranu lozinku, koju može definirati korisnik u donjem kodu. Kada korisnik unese lozinku u sustav, zatim sustav uspoređuje lozinku koju je unijeo korisnik sa spremljenom ili unaprijed definiranom lozinkom u Code of Program. Ako se dogodi podudaranje, LCD će prikazati "Access Grated", a ako se lozinka ne podudara, LCD će prikazati "Access Denied" i zujalo će neprekidno oglašavati neko vrijeme. Ovdje smo koristili knjižnicu string.h. Korištenjem ove biblioteke možemo uspoređivati ili podudarati dva niza, pomoću funkcije “strncmp”.
U program, prije svega uključujemo zaglavnu datoteku i definira varijabilne i ulazno-izlazne igle za tipkovnicu i LCD.
#include
Stvorena je funkcija za stvaranje kašnjenja od 1 sekunde, zajedno s nekim LCD funkcijama poput inicijalizacije LCD-a, ispisa niza, naredbi itd. Lako ih možete pronaći u kodu. Pogledajte ovaj članak za LCD povezivanje s 8051 i njegovim funkcijama.
Nakon toga, u glavnom programu inicijaliziramo LCD, a zatim čitamo unos s tipkovnice pomoću funkcije tipkovnice () i pohranjujemo tipke za unos u niz, a zatim ga uspoređujemo s unaprijed definiranim podacima niza pomoću strncmp.
void main () {zujalica = 1; lcd_init (); lcdstring ("Elektronički kod"); lcdcmd (0xc0); lcdstring ("Sustav zaključavanja"); kašnjenje (400); lcdcmd (1); lcdstring ("Sažetak kruga"); kašnjenje (400); dok (1) {i = 0; tipkovnica (); if (strncmp (pass, "4201", 4) == 0)
Ako se podudara unesena lozinka, tada se poziva funkcija accept ():
void accept () {lcdcmd (1); lcdstring ("Dobrodošli"); lcdcmd (192); lcdstring ("Prihvaćam lozinku"); kašnjenje (200); }
A ako je lozinka pogrešna, tada se naziva pogrešna () funkcija:
poništeno pogrešno () {zujalica = 0; lcdcmd (1); lcdstring ("Pogrešna lozinka"); lcdcmd (192); lcdstring ("PLZ Pokušaj ponovno"); kašnjenje (200); zujalica = 1; }
U nastavku provjerite funkciju tipkovnice u kodu koji čita modul tipkovnice u obliku unosa.
