Sikkerhet er en stor bekymring i vårt daglige liv, og digitale låser har blitt en viktig del av disse sikkerhetssystemene. Det er mange typer teknologier tilgjengelig for å sikre oss, som PIR-baserte sikkerhetssystemer, RFID-baserte sikkerhetssystemer, lasersikkerhetsalarmer, biomatrisesystemer osv. Selv nå er det digitale låser som kan betjenes ved hjelp av våre smarttelefoner, betyr ingen mer behov for å ha forskjellige nøkler, bare en smarttelefon kan betjene alle låsene, dette konseptet er basert på tingenes internett.
I dette prosjektet har vi forklart en enkel elektronisk kodelås ved bruk av 8051 Microcontorller, som bare kan låses opp av en forhåndsdefinert kode, hvis vi skriver inn feil kode, varsler systemet ved sirene summeren. Vi har allerede opprettet en digital lås ved hjelp av Arduino.
Arbeidsforklaring:
Dette systemet inneholder hovedsakelig AT89S52 mikrokontroller, tastaturmodul, summer og LCD. At89s52 mikrokontroller styrer hele prosessene, for eksempel å ta passordskjermtastaturmodul, sammenligne forhåndsdefinerte passord, kjøre summer og sende status til LCD-skjerm. Tastatur brukes til å sette inn passord i mikrokontrolleren. Buzzer brukes til å indikere feil passord og LCD brukes til å vise status eller meldinger på det. Buzzer har innebygd driver ved hjelp av en NPN-transistor.
Komponenter:
- 8051 mikrokontroller (AT89S52)
- 4X4 Tastaturmodul
- Summer
- 16x2 LCD
- Motstand (1k, 10k)
- Pullup motstand (10K)
- Kondensator (10uf)
- Rød ledet
- Brettbrett
- IC 7805
- 11.0592 MHz krystall
- Strømforsyning
- Koble ledninger
Tar input fra 4X4 tastaturmatrise ved hjelp av multipleksingsteknikk:
I denne kretsen har vi brukt multipleksingsteknikk for å grensesnitt tastaturet til 8051 mikrokontrolleren, for å legge inn passordet i systemet. Her bruker vi et 4x4-tastatur som har 16 taster. Hvis vi vil bruke 16 nøkler, trenger vi 16 pinner for tilkobling til 89s52, men i multipleksingsteknikk trenger vi bare å bruke 8 pinner for å grense 16 nøkler. Slik at det er en smart måte å grensesnitt på tastaturmodulen.
Multiplexing-teknikk er en veldig effektiv måte å redusere antall pinner som brukes med mikrokontrolleren for å oppgi inndata eller passord. I utgangspunktet brukes denne teknikken på to måter - den ene er radeskanning og den andre er kolonneskanning.
Her skal vi forklare radskanning:
Først må vi definere 8-pins for tastaturmodulen. I hvilke de første 4 pinnene er kolonne og de siste 4 pinnene er rader.
For radskanning må vi gi data eller signal til kolonnepinnene og lese dataene eller signalet fra radpinnen. Anta at vi nedenfor gir data til kolonnepinner:
C1 = 0;
C2 = 1;
C3 = 1;
C4 = 1;
Og vi leser disse dataene på radpinner (som standard er radpinnene HØYE på grunn av opptrekksmotstand).
Hvis brukeren trykker på tasten nummer 1, endrer R1 HIGH til LOW betyr R1 = 0; og kontrolleren forstår at brukeren har trykket på tasten '1'. Og den vil skrive ut '1' på LCD-skjermen og lagre '1' i matrise. Så denne HIGH to LOW-endringen ved R1 er det viktigste som kontrolleren forstår at en eller annen tast, tilsvarende kolonne 1, har blitt trykket.
Nå hvis brukeren trykker på tasten nummer 2, forblir R1 på HØY som C1 og R1 er begge allerede på HØY. Derfor vil det ikke bli noen endring, det betyr at mikrokontroller forstår at ingenting har blitt trykket på i kolonne en. Og på samme måte gjelder denne rektor for alle andre pins. Så i dette trinnet venter kontrolleren bare på nøklene i kolonne en: '1', '4', '7' og '*'.
Nå hvis vi vil spore nøklene i andre kolonner (som i kolonne 2), må vi endre dataene ved kolonnepinnene:
Cl = 1;
C2 = 0;
C3 = 1;
C4 = 1;
Denne tidskontrolleren venter bare på tastene i kolonne to: '2', '5', '8' og '0', fordi endring (HIGH til LOW) bare skjer når kolonne to-tastene blir trykket. Hvis vi trykker på en hvilken som helst tast i kolonne 1, 3 eller 4, vil ingen endring forekomme fordi disse kolonnene er på HØY, og radene allerede er på HØYE.
Så nøkler i kolonne C3 og C4 kan også spores ved å gjøre dem 0 om gangen. Sjekk her den detaljerte forklaringen: Tastaturgrensesnitt med 8051. Gå også gjennom kodeseksjonen nedenfor for å forstå logikken riktig.
Kretsforklaring:
Kretsskjema for denne digitale låsen ved bruk av 8051 er vist nedenfor og kan lett forstås. Tastemodulens kolonnepinner er direkte koblet til pin P0.0, P0.1, P0.2, P0.3 og Row pins er koblet til P0.4, P0.5, P0.6, P0.7 av 89s52 mikrokontrollers port 0 En 16x2 LCD er koblet til 89s52 mikrokontroller i 4-biters modus. Kontrollpinne RS, RW og En er direkte koblet til pinne P1.0, GND og P1.2. Og datapinnen D4-D7 er koblet til pinnene P1.4, P1.5, P1.6 og P1.7 av 89s52. Og en summer er koblet til pinne P2.6 gjennom en motstand.
Programforklaring:
Vi har brukt et forhåndsdefinert passord i programmet, dette passordet kan defineres av brukeren i koden nedenfor. Når brukeren skriver inn et passord til systemet, sammenligner systemet brukerinntastet passord med lagret eller forhåndsdefinert passord i programkoden. Hvis det oppstår en kamp, vil LCD-skjermen vise "Access Grated", og hvis passordet ikke stemmer overens, vil LCD-skjermen vise "Access Denied", og summeren vil kontinuerlig pippe en stund. Her har vi brukt string.h-biblioteket. Ved å bruke dette biblioteket kan vi sammenligne eller matche to strenger ved å bruke “strncmp” -funksjonen.
I programmet inkluderer vi først header-fil og definerer variabel- og inngangs- og utgangspinn for tastatur og LCD.
#inkludere
Funksjon for å lage forsinkelsen på 1 sekund er opprettet, sammen med noen LCD-funksjoner som for LCD initialisering, utskrift av strengen, for kommandoer osv. Du kan enkelt finne dem i Code. Sjekk denne artikkelen for LCD-grensesnitt med 8051 og dens funksjoner.
Etter dette, i hovedprogrammet har vi initialisert LCD, og deretter leser vi inngangen fra tastaturet ved hjelp av tastaturet () -funksjonen og lagrer inngangstastene i en matrise og sammenligner den fra forhåndsdefinerte matardata ved hjelp av 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 det oppgitte passordet samsvarer, kalles aksept () -funksjonen:
ugyldig godta () {lcdcmd (1); lcdstring ("Velkommen"); lcdcmd (192); lcdstring ("Passord godtas"); forsinkelse (200); }
Og hvis passordet er galt, kalles feil () -funksjon:
ugyldig feil () {summer = 0; lcdcmd (1); lcdstring ("Feil passkey"); lcdcmd (192); lcdstring ("PLZ Try Again"); forsinkelse (200); summer = 1; }
Kontroller tastaturfunksjonen nedenfor i koden som leser tastaturmodulen for inndata.