Beveiliging is een belangrijk aandachtspunt in ons dagelijks leven en digitale sloten zijn een belangrijk onderdeel geworden van deze beveiligingssystemen. Er zijn veel soorten technologieën beschikbaar om onze plaats te beveiligen, zoals op PIR gebaseerde beveiligingssystemen, op RFID gebaseerde beveiligingssystemen, laserveiligheidsalarmen, bio-matrixsystemen enz. Zelfs nu zijn er digitale sloten die kunnen worden bediend met onze smartphones. meer behoefte om verschillende sleutels te houden, slechts één smartphone kan alle sloten bedienen, dit concept is gebaseerd op Internet of Things.
In dit project hebben we een eenvoudig elektronisch codeslot uitgelegd met behulp van 8051 Microcontorller, dat alleen kan worden ontgrendeld met een vooraf gedefinieerde code, als we de verkeerde code invoeren, waarschuwt het systeem via sirene de zoemer. We hebben al een digitaal slot gemaakt met Arduino.
Werkende uitleg:
Dit systeem bevat voornamelijk AT89S52 microcontroller, toetsenbordmodule, zoemer en LCD. De At89s52-microcontroller bestuurt de complete processen, zoals het aannemen van een wachtwoord in de toetsenbordmodule, het vergelijken van het vooraf gedefinieerde wachtwoord, het aansturen van een zoemer en het verzenden van de status naar het LCD-scherm. Toetsenbord wordt gebruikt voor het invoeren van een wachtwoord in de microcontroller. Zoemer wordt gebruikt om een verkeerd wachtwoord aan te geven en LCD wordt gebruikt om de status of berichten erop weer te geven. Buzzer heeft een ingebouwde driver met behulp van een NPN-transistor.
Componenten:
- 8051 Microcontroller (AT89S52)
- 4X4 toetsenbordmodule
- Zoemer
- 16x2 LCD
- Weerstand (1k, 10k)
- Pullup-weerstand (10K)
- Condensator (10uf)
- Rode led
- Broodplank
- IC 7805
- 11,0592 MHz Crystal
- Stroomvoorziening
- Draden aansluiten
Invoer nemen van 4X4 toetsenbordmatrix met behulp van multiplextechniek:
In dit circuit hebben we de multiplextechniek gebruikt om het toetsenbord te koppelen aan de 8051-microcontroller, voor het invoeren van het wachtwoord in het systeem. Hier gebruiken we een 4x4-toetsenbord met 16 toetsen. Als we 16 sleutels willen gebruiken, hebben we 16 pins nodig voor verbinding met 89s52, maar in de multiplextechniek hoeven we slechts 8 pinnen te gebruiken voor het koppelen van 16 sleutels. Zodat het een slimme manier is om de toetsenbordmodule te koppelen.
Multiplexing-techniek is een zeer efficiënte manier om het aantal pinnen te verminderen dat wordt gebruikt met de microcontroller voor het verstrekken van de invoer of het wachtwoord. In principe wordt deze techniek op twee manieren gebruikt: de ene is het scannen van rijen en de andere is het scannen van kolommen.
Hier gaan we het scannen van rijen uitleggen:
Eerst moeten we 8-pins definiëren voor de toetsenbordmodule. Waarin de eerste 4 pinnen een kolom zijn en de laatste 4 pinnen rijen zijn.
Voor het scannen van rijen moeten we gegevens of signaal geven aan kolompinnen en die gegevens of signaal van de rijpen lezen. Stel nu dat we onderstaande gegevens aan kolompinnen geven:
C1 = 0;
C2 = 1;
C3 = 1;
C4 = 1;
En we lezen deze gegevens bij rijpennen (standaard zijn rijpennen HOOG vanwege de pull-upweerstand).
Als de gebruiker toets nummer '1' indrukt, verandert R1 HOOG in LAAG betekent R1 = 0; en de controller begrijpt dat de gebruiker toets '1' heeft ingedrukt. En het zal '1' op het LCD-scherm afdrukken en '1' in array opslaan. Dus deze verandering van HOOG naar LAAG bij R1 is het belangrijkste waardoor de controller begrijpt dat een toets, die overeenkomt met kolom 1, is ingedrukt.
Als de gebruiker nu toets nummer '2' indrukt, blijft R1 op HOOG, aangezien C1 en R1 beide al op HOOG staan. Daarom zal er geen verandering zijn, het betekent dat de microcontroller begrijpt dat er niets is ingedrukt in de eerste kolom. En dit principe geldt ook voor alle andere pinnen. Dus in deze stap wacht de controller alleen op sleutels in kolom één: '1', '4', '7' en '*'.
Als we nu de sleutels in andere kolommen willen volgen (zoals in kolom 2), dan moeten we de gegevens bij kolommenpinnen wijzigen:
C1 = 1;
C2 = 0;
C3 = 1;
C4 = 1;
Deze tijdcontroller wacht alleen op toetsen in kolom twee: '2', '5', '8' en '0', omdat verandering (HIGH naar LOW) alleen plaatsvindt wanneer kolom twee toetsen worden ingedrukt. Als we op een willekeurige toets in kolom 1, 3 of 4 drukken, zal er geen verandering plaatsvinden, omdat deze kolommen op HOOG staan en Rijen al op HOOG.
Op dezelfde manier kunnen sleutels in kolom C3 en C4 ook worden gevolgd door ze per keer 0 te maken. Bekijk hier de gedetailleerde uitleg: Toetsenbordinterface met 8051. Doorloop ook het codegedeelte hieronder om de logica goed te begrijpen.
Circuit uitleg:
Het schakelschema voor dit digitale slot dat 8051 gebruikt, is hieronder weergegeven en kan gemakkelijk worden begrepen. De Kolom-pinnen van de toetsenbordmodule zijn rechtstreeks verbonden met pin P0.0, P0.1, P0.2, P0.3 en de rij-pinnen zijn verbonden met P0.4, P0.5, P0.6, P0.7 van 89s52 microcontroller's poort 0 Een 16x2 LCD is verbonden met 89s52 microcontroller in 4-bit modus. Stuurpen RS, RW en En zijn direct verbonden met pin P1.0, GND en P1.2. En datapin D4-D7 is verbonden met pinnen P1.4, P1.5, P1.6 en P1.7 van 89s52. En een zoemer is aangesloten op pin P2.6 via een weerstand.
Programma uitleg:
We hebben een vooraf gedefinieerd wachtwoord gebruikt in het programma, dit wachtwoord kan door de gebruiker worden gedefinieerd in de onderstaande code. Wanneer de gebruiker een wachtwoord voor het systeem invoert, dan vergelijkt het systeem het door de gebruiker ingevoerde wachtwoord met het opgeslagen of vooraf gedefinieerde wachtwoord in Programmacode. Als er een overeenkomst optreedt, zal het LCD-scherm "Access Grated" tonen en als het wachtwoord niet overeenkomt, zal het LCD-scherm "Toegang geweigerd" tonen en zal de zoemer een tijdje continu piepen. Hier hebben we de string.h-bibliotheek gebruikt. Door deze bibliotheek te gebruiken, kunnen we twee strings vergelijken of matchen, door de functie “strncmp” te gebruiken.
In het programma nemen we allereerst een header-bestand op en definieert variabel en input & output pinnen voor toetsenbord en LCD.
# omvatten
Er is een functie gecreëerd voor het creëren van de vertraging van 1 seconde, samen met enkele LCD-functies zoals LCD-initialisatie, het afdrukken van de string, voor opdrachten enz. U kunt ze gemakkelijk vinden in Code. Bekijk dit artikel voor LCD-interfacing met 8051 en zijn functies.
Hierna hebben we in het hoofdprogramma LCD geïnitialiseerd en vervolgens lezen we de invoer van Keypad met behulp van de keypad () functie en slaan we invoertoetsen op in een array en vergelijken we deze met vooraf gedefinieerde array-gegevens met strncmp.
void main () {buzzer = 1; lcd_init (); lcdstring ("elektronische code"); lcdcmd (0xc0); lcdstring ("Vergrendelingssysteem"); vertraging (400); lcdcmd (1); lcdstring ("Circuit Digest"); vertraging (400); terwijl (1) {i = 0; toetsenbord (); if (strncmp (pass, "4201", 4) == 0)
Als het ingevoerde wachtwoord overeenkomt, wordt de functie accept () aangeroepen:
ongeldig accepteren () {lcdcmd (1); lcdstring ("Welkom"); lcdcmd (192); lcdstring ("Wachtwoord accepteren"); vertraging (200); }
En als het wachtwoord verkeerd is, wordt de functie wrong () aangeroepen:
ongeldig fout () {buzzer = 0; lcdcmd (1); lcdstring ("Wrong Passkey"); lcdcmd (192); lcdstring ("PLZ Try Again"); vertraging (200); zoemer = 1; }
Controleer de toetsenbordfunctie hieronder in de code die het invoerformulier toetsenbordmodule leest.