Bezpieczeństwo jest głównym problemem w naszym codziennym życiu, a zamki cyfrowe stały się ważną częścią tych systemów zabezpieczeń. Dostępnych jest wiele rodzajów technologii zabezpieczających nasze miejsce, takich jak systemy bezpieczeństwa oparte na PIR, system bezpieczeństwa oparty na RFID, alarmy laserowe, systemy bio-matrycowe itp. Nawet teraz istnieją zamki cyfrowe, które można obsługiwać za pomocą naszych smartfonów, co oznacza brak więcej trzeba trzymać różnych kluczy, tylko jeden inteligentny telefon może obsługiwać wszystkie zamki, koncepcja ta opiera się na Internecie rzeczy.
W tym projekcie wyjaśniliśmy prosty elektroniczny zamek kodowy wykorzystujący mikrokontener 8051, który można odblokować tylko predefiniowanym kodem, jeśli wprowadzimy zły kod, system zaalarmuje syreną brzęczykiem. Stworzyliśmy już zamek cyfrowy za pomocą Arduino.
Objaśnienie robocze:
Ten system zawiera głównie mikrokontroler AT89S52, moduł klawiatury, brzęczyk i wyświetlacz LCD. Mikrokontroler At89s52 steruje całymi procesami, takimi jak pobieranie hasła z modułu klawiatury, porównywanie wstępnie zdefiniowanych haseł, sterowanie brzęczykiem i wysyłanie stanu na wyświetlacz LCD. Klawiatura służy do wpisania hasła do mikrokontrolera. Brzęczyk służy do wskazywania błędnego hasła, a wyświetlacz LCD służy do wyświetlania statusu lub komunikatów na nim. Buzzer ma wbudowany sterownik wykorzystujący tranzystor NPN.
Składniki:
- Mikrokontroler 8051 (AT89S52)
- Moduł klawiatury 4X4
- Brzęczyk
- Wyświetlacz LCD 16x2
- Rezystor (1k, 10k)
- Rezystor podciągający (10 K)
- Kondensator (10 uf)
- Czerwona dioda LED
- Deska do chleba
- IC 7805
- Kryształ 11,0592 MHz
- Zasilacz
- Przewody łączące
Biorąc dane wejściowe z matrycy klawiatury 4X4 przy użyciu techniki multipleksowania:
W tym układzie wykorzystaliśmy technikę multipleksowania do połączenia klawiatury z mikrokontrolerem 8051 w celu wprowadzenia hasła w systemie. Tutaj używamy klawiatury 4x4, która ma 16 klawiszy. Jeśli chcemy użyć 16 kluczy, potrzebujemy 16 pinów do połączenia z 89s52, ale w technice multipleksowania musimy użyć tylko 8 pinów do połączenia 16 kluczy. Dzięki temu jest to inteligentny sposób na połączenie modułu klawiatury.
Technika multipleksowania to bardzo skuteczny sposób na zmniejszenie liczby pinów używanych z mikrokontrolerem do dostarczania danych wejściowych lub hasła. Zasadniczo ta technika jest używana na dwa sposoby - jeden to skanowanie wierszy, a drugi to skanowanie kolumn.
Tutaj wyjaśnimy skanowanie wierszy:
Najpierw musimy zdefiniować 8 pinów dla modułu klawiatury. W którym pierwsze 4 piny to kolumny, a ostatnie 4 piny to rzędy.
Do skanowania wierszy musimy podać dane lub sygnał do pinów kolumny i odczytać te dane lub sygnał z pinów wiersza. Teraz załóżmy, że podajemy poniższe dane do pinów kolumn:
C1 = 0;
C2 = 1;
C3 = 1;
C4 = 1;
Odczytujemy te dane na szpilkach rzędów (domyślnie szpilki rzędów są WYSOKIE ze względu na rezystor podciągający).
Jeśli użytkownik naciśnie klawisz numer „1”, R1 zmieni się z WYSOKIE na NISKIE, co oznacza, że R1 = 0; a kontroler rozumie, że użytkownik nacisnął klawisz „1”. Wydrukuje „1” na wyświetlaczu LCD i zapisze „1” w tablicy. Tak więc zmiana z WYSOKI na NISKI w R1 jest najważniejszą rzeczą, dzięki której kontroler rozumie, że został naciśnięty jakiś klawisz odpowiadający kolumnie 1.
Teraz, jeśli użytkownik naciśnie klawisz numer '2', R1 pozostanie na WYSOKIM, ponieważ C1 i R1 są już na WYSOKIM. Stąd zmiany nie będzie, to znaczy mikrokontroler rozumie, że nic nie zostało wciśnięte w pierwszej kolumnie. Ta zasada dotyczy również wszystkich innych szpilek. Więc w tym kroku kontroler czeka tylko na klucze w pierwszej kolumnie: „1”, „4”, „7” i „*”.
Teraz, jeśli chcemy śledzić klucze w innych kolumnach (jak w kol. 2), to musimy zmienić dane na pinach kolumn:
C1 = 1;
C2 = 0;
C3 = 1;
C4 = 1;
Tym razem sterownik czeka tylko na klawisze w kolumnie drugiej: '2', '5', '8' i '0', ponieważ zmiana (WYSOKI na NISKI) następuje tylko wtedy, gdy klawisze w kolumnie drugiej zostaną wciśnięte. Jeśli naciśniemy dowolny klawisz w kol. 1, 3 lub 4, to nie nastąpi żadna zmiana, ponieważ te kolumny są na WYSOKIEJ, a Wiersze są już na WYSOKIE.
Zatem podobnie klucze w kolumnach C3 i C4 można śledzić, ustawiając je na 0. Sprawdź tutaj szczegółowe wyjaśnienie: Połączenie klawiatury z 8051. Przejrzyj także poniższą sekcję Kod, aby właściwie zrozumieć logikę.
Objaśnienie obwodu:
Schemat obwodu tego zamka cyfrowego przy użyciu 8051 został przedstawiony poniżej i może być łatwo zrozumiały. Kołki kolumnowe modułu klawiatury są bezpośrednio podłączone do pinów P0.0, P0.1, P0.2, P0.3, a szpilki Row są podłączone do P0.4, P0.5, P0.6, P0.7 portu 0 mikrokontrolera 89s52 Wyświetlacz LCD 16x2 jest połączony z mikrokontrolerem 89s52 w trybie 4-bitowym. Piny sterujące RS, RW i En są bezpośrednio podłączone do pinu P1.0, GND i P1.2. A pin danych D4-D7 jest podłączony do pinów P1.4, P1.5, P1.6 i P1.7 na 89s52. A jeden brzęczyk jest podłączony do pinu P2.6 przez rezystor.
Objaśnienie programu:
W programie użyliśmy predefiniowanego hasła, które może być zdefiniowane przez użytkownika w poniższym kodzie. Gdy użytkownik wprowadza hasło do systemu, a następnie system porównuje hasło wprowadzone przez użytkownika z zapisanym lub predefiniowanym hasłem w Kodzie Programu. Jeśli dojdzie do dopasowania, na wyświetlaczu LCD pojawi się komunikat „Access Grated”, a jeśli hasło nie pasuje, na wyświetlaczu LCD pojawi się komunikat „Access Denied” (Odmowa dostępu), a brzęczyk przez pewien czas będzie emitował ciągły dźwięk. Tutaj użyliśmy biblioteki string.h. Korzystając z tej biblioteki, możemy porównać lub dopasować dwa łańcuchy, używając funkcji „strncmp”.
W programie przede wszystkim dołączamy plik nagłówkowy oraz definiujemy piny zmienne oraz wejścia i wyjścia dla klawiatury i wyświetlacza LCD.
#zawierać
Stworzono funkcję tworzenia opóźnienia 1-sekundowego, a także niektóre funkcje LCD, takie jak inicjalizacja LCD, drukowanie ciągu, komendy itp. Można je łatwo znaleźć w Kodzie. Zapoznaj się z tym artykułem, aby uzyskać informacje o połączeniu LCD z 8051 i jego funkcjach.
Następnie w programie głównym inicjalizujemy LCD, a następnie odczytujemy dane wejściowe z klawiatury za pomocą funkcji keypad () i zapisujemy klucze wejściowe w tablicy, a następnie porównujemy je z predefiniowanymi danymi tablicowymi za pomocą strncmp.
void main () {buzzer = 1; lcd_init (); lcdstring („Kod elektroniczny”); lcdcmd (0xc0); lcdstring ("Zablokuj system"); opóźnienie (400); lcdcmd (1); lcdstring ("Circuit Digest"); opóźnienie (400); podczas gdy (1) {i = 0; klawiatura (); if (strncmp (pass, "4201", 4) == 0)
Jeśli wpisane hasło jest zgodne, to funkcja accept () jest wywoływana:
void accept () {lcdcmd (1); lcdstring ("Witamy"); lcdcmd (192); lcdstring ("Akceptuj hasło"); opóźnienie (200); }
A jeśli hasło jest nieprawidłowe, wywoływana jest funkcja błędna ():
void evil () {buzzer = 0; lcdcmd (1); lcdstring („Zły klucz”); lcdcmd (192); lcdstring ("PLZ spróbuj ponownie"); opóźnienie (200); brzęczyk = 1; }
Sprawdź funkcję manipulatora poniżej w kodzie, który odczytuje dane wejściowe z modułu klawiatury.