Sikkerhed er et stort problem i vores daglige liv, og digitale låse er blevet en vigtig del af disse sikkerhedssystemer. Der er mange typer teknologier til rådighed for at sikre vores plads, som PIR-baserede sikkerhedssystemer, RFID-baseret sikkerhedssystem, Lasersikkerhedsalarmer, bio-matrix-systemer osv. Selv nu er der digitale låse, der kan betjenes ved hjælp af vores smartphones, betyder nej mere behov for at have forskellige nøgler, kun en smartphone kan betjene alle låse, dette koncept er baseret på tingenes internet.
I dette projekt har vi forklaret en simpel elektronisk kodelås ved hjælp af 8051 Microcontorller, som kun kan låses op af en foruddefineret kode. Hvis vi indtaster den forkerte kode, advarer systemet med sirenen summeren. Vi har allerede oprettet en digital lås ved hjælp af Arduino.
Arbejdsforklaring:
Dette system indeholder hovedsageligt AT89S52 mikrokontroller, tastaturmodul, summer og LCD. At89s52 mikrocontroller styrer de komplette processer som at tage adgangskodeformular tastaturmodul, sammenligne adgangskoder foruddefineret adgangskode, køre summer og sende status til LCD-display. Tastatur bruges til at indsætte adgangskode i mikrocontrolleren. Buzzer bruges til at indikere forkert adgangskode, og LCD bruges til at vise status eller meddelelser på den. Summer har indbygget driver ved hjælp af en NPN-transistor.
Komponenter:
- 8051 Microcontroller (AT89S52)
- 4X4 tastaturmodul
- Summer
- 16x2 LCD
- Modstand (1k, 10k)
- Pullup-modstand (10K)
- Kondensator (10uf)
- Rød ledet
- Brødbræt
- IC 7805
- 11.0592 MHz krystal
- Strømforsyning
- Tilslutning af ledninger
At tage input fra 4X4 tastaturmatrix ved hjælp af multipleksningsteknik:
I dette kredsløb har vi brugt multipleksningsteknik til at interface tastaturet til 8051 mikrokontroller til indtastning af adgangskoden i systemet. Her bruger vi et 4x4 tastatur, der har 16 taster. Hvis vi vil bruge 16 nøgler, har vi brug for 16 ben til forbindelse til 89s52, men i multiplexeringsteknik skal vi kun bruge 8 ben til interface 16 nøgler. Så det er en smart måde at interface tastaturmodulet på.
Multiplexing teknik er en meget effektiv måde at reducere antallet af ben, der bruges sammen med mikrocontrolleren til at levere input eller adgangskode. Dybest set bruges denne teknik på to måder - den ene er række scanning og den anden er søjlescanning.
Her skal vi forklare række scanning:
Først skal vi definere 8 ben til tastaturmodulet. I hvilke første 4 ben er søjle og sidste 4 ben er rækker.
Til række scanning er vi nødt til at give data eller signal til kolonnestifter og læse disse data eller signal fra række pin. Antag nu, at vi giver nedenstående data til kolonnestifter:
Cl = 0;
C2 = 1;
C3 = 1;
C4 = 1;
Og vi læser disse data ved rækkestift (som standard er rækkebolte Høje på grund af pull-up-modstand).
Hvis brugeren trykker på tasten nummer '1', ændrer R1 HIGH til LOW betyder R1 = 0; og controller forstår, at brugeren har trykket på tasten '1'. Og den vil udskrive '1' på LCD'et og gemme '1' i array. Så denne HIGH to LOW-ændring ved R1 er den vigtigste ting, hvormed controlleren forstår, at der er blevet trykket på en eller anden tast svarende til kolonne 1.
Hvis brugeren nu trykker på tasten nummer '2', forbliver R1 ved HIGH som C1 og R1 er begge allerede i HIGH. Derfor vil der ikke være nogen ændring, det betyder, at mikrokontroller forstår, at intet er blevet trykket i kolonne 1. Og ligeledes gælder denne rektor for alle andre ben. Så i dette trin venter controller kun på tasterne i kolonne et: '1', '4', '7' og '*'.
Hvis vi nu vil spore nøglerne i andre kolonner (som i kolonne 2), skal vi ændre dataene ved kolonnestifter:
Cl = 1;
C2 = 0;
C3 = 1;
C4 = 1;
Denne tidsregulator venter kun på tasterne i kolonne to: '2', '5', '8' og '0', fordi ændring (HIGH til LOW) kun finder sted, når der trykkes på kolonne to. Hvis vi trykker på en vilkårlig tast i kolonne 1, 3 eller 4, sker der ingen ændringer, fordi disse kolonner er på HØJ, og rækker er allerede i HØJ.
Så nøgler i kolonne C3 og C4 kan også spores ved at gøre dem 0 ad gangen. Tjek her den detaljerede forklaring: Tastaturgrænseflade med 8051. Gå også igennem kodesektionen nedenfor for korrekt forståelse af logikken.
Forklaring af kredsløb:
Kredsløbsdiagram for denne digitale lås ved hjælp af 8051 er vist nedenfor og kan let forstås. Tastaturmodulets søjlestifter er direkte forbundet til pin P0.0, P0.1, P0.2, P0.3 og Row pins er forbundet til P0.4, P0.5, P0.6, P0.7 af 89s52 mikrokontrollers port 0 En 16x2 LCD er forbundet med 89s52 mikrokontroller i 4-bit tilstand. Kontrolstift RS, RW og En er direkte forbundet til pin P1.0, GND og P1.2. Og datapind D4-D7 er forbundet til ben P1.4, P1.5, P1.6 og P1.7 af 89s52. Og en summer er forbundet ved pin P2.6 gennem en modstand.
Programforklaring:
Vi har brugt en foruddefineret adgangskode i programmet, denne adgangskode kan defineres af brugeren i nedenstående kode. Når brugeren indtaster en adgangskode til systemet, sammenligner systemet derefter den brugerindtastede adgangskode med den gemte eller foruddefinerede adgangskode i programkoden. Hvis der opstår en kamp, viser LCD “Access Grated”, og hvis adgangskoden ikke stemmer overens, viser LCD “Access Denied”, og summeren bipper kontinuerligt i nogen tid. Her har vi brugt string.h-biblioteket. Ved at bruge dette bibliotek kan vi sammenligne eller matche to strenge ved hjælp af "strncmp" -funktionen.
I programmet inkluderer vi først header-fil og definerer variable og input & output pins til tastatur og LCD.
#omfatte
Funktion til oprettelse af forsinkelsen på 1 sekund er oprettet sammen med nogle LCD-funktioner som til LCD initialisering, udskrivning af strengen, til kommandoer osv. Du kan nemt finde dem i kode. Se denne artikel for LCD-interface med 8051 og dens funktioner.
Efter dette har vi i hovedprogrammet initialiseret LCD, og derefter læser vi input fra tastatur ved hjælp af tastaturet () -funktionen og gemmer inputtaster i et array og sammenligner det derefter fra foruddefinerede array-data ved hjælp af strncmp.
ugyldig hoved () {summer = 1; lcd_init (); lcdstring ("elektronisk kode"); lcdcmd (0xc0); lcdstring ("Lås system"); forsinkelse (400); lcdcmd (1); lcdstring ("Circuit Digest"); forsinkelse (400); mens (1) {i = 0; tastatur (); hvis (strncmp (pass, "4201", 4) == 0)
Hvis den indtastede adgangskode matches, kaldes accept () -funktionen:
ugyldig accept () {lcdcmd (1); lcdstring ("Velkommen"); lcdcmd (192); lcdstring ("Adgangskode accepteret"); forsinkelse (200); }
Og hvis adgangskoden er forkert, kaldes den forkerte () funktion:
ugyldigt forkert () {summer = 0; lcdcmd (1); lcdstring ("Forkert adgangsnøgle"); lcdcmd (192); lcdstring ("PLZ Prøv igen"); forsinkelse (200); summer = 1; }
Kontroller tastaturfunktionen nedenfor i koden, der læser inputformularens tastaturmodul.