Säkerhet är ett stort problem i vårt dagliga liv och digitala lås har blivit en viktig del av dessa säkerhetssystem. Det finns många typer av teknologier tillgängliga för att säkra vår plats, som PIR-baserade säkerhetssystem, RFID-baserade säkerhetssystem, lasersäkerhetslarm, biomatrissystem etc. Även nu finns det digitala lås som kan manövreras med våra smarta telefoner, betyder ingen mer behov av att ha olika nycklar, bara en smart telefon kan hantera alla lås, är detta koncept baserat på Internet of Things.
I det här projektet har vi förklarat ett enkelt elektroniskt kodlås med hjälp av 8051 Microcontorller, som bara kan låsas upp av en fördefinierad kod, om vi anger fel kod, varnar systemet med sirenen summern. Vi har redan skapat ett digitalt lås med Arduino.
Arbetsförklaring:
Detta system innehåller främst AT89S52 mikrokontroller, knappsatsmodul, summer och LCD. At89s52 mikrokontroller kontrollerar hela processerna som att ta lösenordsformulär knappsatsmodul, jämföra lösenord fördefinierat lösenord, köra summer och skicka status till LCD-skärm. Knappsatsen används för att infoga lösenord i mikrokontrollern. Summer används för att indikera fel lösenord och LCD används för att visa status eller meddelanden på det. Summer har inbyggd drivrutin med en NPN-transistor.
Komponenter:
- 8051 Microcontroller (AT89S52)
- 4X4 Knappsatsmodul
- Summer
- 16x2 LCD
- Motstånd (1k, 10k)
- Pullup-motstånd (10K)
- Kondensator (10uf)
- Röd led
- Brödbräda
- IC 7805
- 11.0592 MHz Crystal
- Strömförsörjning
- Anslutande ledningar
Tar inmatning från 4X4 knappsatsmatris med hjälp av multiplexingsteknik:
I den här kretsen har vi använt multiplexeringsteknik för att gränssnitt knappsats till 8051 mikrokontroller för att ange lösenordet i systemet. Här använder vi en 4x4 knappsats som har 16 tangenter. Om vi vill använda 16 tangenter behöver vi 16 stift för anslutning till 89s52, men i multiplexeringsteknik behöver vi bara använda 8 stift för gränssnitt mellan 16 tangenter. Så att det är ett smart sätt att ansluta knappsatsmodulen.
Multiplexeringsteknik är ett mycket effektivt sätt att minska antalet stift som används med mikrokontrollern för att tillhandahålla inmatning eller lösenord. I grund och botten används denna teknik på två sätt - det ena är radskanning och det andra är kolonnskanning.
Här ska vi förklara radskanning:
Först måste vi definiera 8-stift för knappsatsmodul. I vilka de första 4 stiften är kolumn och de sista 4 stiften är rader.
För radskanning måste vi ge data eller signal till kolumnstift och läsa den informationen eller signalen från radstiftet. Antag att vi ger nedan data till kolumnstift:
Cl = 0;
C2 = 1;
C3 = 1;
C4 = 1;
Och vi läser dessa data vid radstift (som standard är radstift HÖGA på grund av uppdragsmotstånd).
Om användaren trycker på tangentnummer '1' ändrar R1 HÖG till LÅG betyder R1 = 0; och styrenheten förstår att användaren har tryckt på knappen '1'. Och det kommer att skriva ut '1' på LCD-skärmen och lagra '1' i array. Så denna HÖG till LÅG förändring vid R1 är det viktigaste genom vilket styrenheten förstår att någon tangent, motsvarande kolumn 1, har tryckts.
Nu om användaren trycker på tangentnummer '2' förblir R1 på HÖG som C1 och R1 är båda redan på HÖG. Därför kommer det inte att ske någon förändring, det betyder att mikrokontroller förstår att ingenting har tryckts i kolumn ett. Och på samma sätt gäller denna rektor för alla andra stift. Så i det här steget väntar styrenheten bara på tangenterna i kolumn ett: '1', '4', '7' och '*'.
Om vi nu vill spåra nycklarna i andra kolumner (som i kol 2), måste vi ändra informationen vid kolumnnålar:
Cl = 1;
C2 = 0;
C3 = 1;
C4 = 1;
Denna tidsstyrning väntar bara på tangenterna i kolumn två: '2', '5', '8' och '0', eftersom ändring (HÖG till LÅG) bara inträffar när kolumn två knappar kommer att tryckas. Om vi trycker på någon knapp i kolumn 1, 3 eller 4 kommer ingen ändring att inträffa, eftersom dessa kolumner är på HÖG och Rader är redan på HÖG.
Således kan tangenter i kolumn C3 och C4 också spåras genom att göra dem 0 åt gången. Kolla här den detaljerade förklaringen: Knappsatsgränssnitt med 8051. Gå också igenom kodavsnittet nedan för att förstå logiken ordentligt.
Kretsförklaring:
Kretsschema för detta digitala lås med 8051 har visats nedan och kan lätt förstås. Knappsatsmodulens kolumnstift är direkt anslutna till stift P0.0, P0.1, P0.2, P0.3 och radstiften är anslutna till P0.4, P0.5, P0.6, P0.7 av 89s52 mikrokontrollers port 0 En 16x2 LCD är ansluten till 89s52 mikrokontroller i 4-bitars läge. Styrstift RS, RW och En är direkt anslutna till stift P1.0, GND och P1.2. Och datapinnen D4-D7 är ansluten till stiften P1.4, P1.5, P1.6 och P1.7 av 89s52. Och en summer är ansluten vid stift P2.6 via ett motstånd.
Programförklaring:
Vi har använt ett fördefinierat lösenord i programmet, detta lösenord kan definieras av användaren i koden nedan. När användaren anger ett lösenord till systemet, sedan jämför systemet det användarinmatade lösenordet med det lagrade eller fördefinierade lösenordet i Programkoden. Om en matchning inträffar kommer LCD-skärmen att visa "Access Grated" och om lösenordet inte matchar kommer LCD-skärmen att visa "Access Nekad" och en summer kommer att pipa kontinuerligt under en tid. Här har vi använt string.h-biblioteket. Genom att använda detta bibliotek kan vi jämföra eller matcha två strängar genom att använda “strncmp” -funktionen.
Först och främst inkluderar vi rubrikfilen och definierar variabla och ingångs- och utgångsstift för knappsats och LCD.
#omfatta
Funktion för att skapa en fördröjning på 1 sekund har skapats, tillsammans med vissa LCD-funktioner som för LCD-initialisering, utskrift av sträng, för kommandon etc. Du kan enkelt hitta dem i kod. Se den här artikeln för LCD-gränssnitt med 8051 och dess funktioner.
Efter detta har vi i huvudprogrammet initialiserat LCD och sedan läser vi inmatningen från tangentbordet med hjälp av tangentbordet () och lagrar inmatningsknappar i en matris och jämför sedan den från fördefinierad matrisdata med strncmp.
ogiltigt huvud () {summer = 1; lcd_init (); lcdstring ("elektronisk kod"); lcdcmd (0xc0); lcdstring ("Låssystem"); fördröjning (400); lcdcmd (1); lcdstring ("Circuit Digest"); fördröjning (400); medan (1) {i = 0; knappsats (); if (strncmp (pass, "4201", 4) == 0)
Om det angivna lösenordet matchas, kallas accept () -funktionen:
ogiltig accept () {lcdcmd (1); lcdstring ("Välkommen"); lcdcmd (192); lcdstring ("Lösenord accepteras"); fördröjning (200); }
Och om lösenordet är fel kallas fel () -funktionen:
ogiltigt fel () {summer = 0; lcdcmd (1); lcdstring ("Fel lösenord"); lcdcmd (192); lcdstring ("PLZ Försök igen"); fördröjning (200); summer = 1; }
Kontrollera knappsatsfunktionen nedan i koden som läser inmatningsmodulens knappsatsmodul.