Η ασφάλεια αποτελεί μείζον μέλημα στην καθημερινή μας ζωή και οι ψηφιακές κλειδαριές έχουν καταστεί σημαντικό μέρος αυτών των συστημάτων ασφαλείας. Υπάρχουν πολλοί τύποι τεχνολογιών που διατίθενται για να ασφαλίσουν τον τόπο μας, όπως συστήματα ασφαλείας βάσει PIR, σύστημα ασφαλείας με βάση RFID, συναγερμοί ασφαλείας λέιζερ, συστήματα βιο-μήτρας κ.λπ. περισσότερα πρέπει να κρατήσετε διαφορετικά πλήκτρα, μόνο ένα έξυπνο τηλέφωνο μπορεί να λειτουργήσει όλες τις κλειδαριές, αυτή η ιδέα βασίζεται στο Internet of Things.
Σε αυτό το έργο, έχουμε εξηγήσει ένα απλό ηλεκτρονικό κλείδωμα κώδικα χρησιμοποιώντας 8051 Microcontorller, το οποίο μπορεί να ξεκλειδωθεί μόνο με έναν προκαθορισμένο κωδικό, εάν εισαγάγουμε λάθος κωδικό, το σύστημα ειδοποιεί από τη σειρήνα το βομβητή. Έχουμε ήδη δημιουργήσει ένα ψηφιακό κλείδωμα χρησιμοποιώντας το Arduino.
Επεξήγηση εργασίας:
Αυτό το σύστημα περιέχει κυρίως μικροελεγκτή AT89S52, μονάδα πληκτρολογίου, βομβητή και LCD. Ο μικροελεγκτής At89s52 ελέγχει τις πλήρεις διαδικασίες όπως τη λήψη της μονάδας πληκτρολογίου από τον κωδικό πρόσβασης, τη σύγκριση προκαθορισμένων κωδικών πρόσβασης, τον βομβητή οδήγησης και την κατάσταση αποστολής στην οθόνη LCD Το πληκτρολόγιο χρησιμοποιείται για την εισαγωγή κωδικού πρόσβασης στον μικροελεγκτή. Το Buzzer χρησιμοποιείται για την ένδειξη λανθασμένου κωδικού πρόσβασης και το LCD χρησιμοποιείται για την εμφάνιση της κατάστασης ή των μηνυμάτων σε αυτό. Το Buzzer έχει ενσωματωμένο πρόγραμμα οδήγησης χρησιμοποιώντας ένα τρανζίστορ NPN.
Συστατικά:
- 8051 Μικροελεγκτής (AT89S52)
- Ενότητα πληκτρολογίου 4X4
- Βομβητής
- LCD 16x2
- Αντίσταση (1k, 10k)
- Αντίσταση τραβήγματος (10K)
- Πυκνωτής (10uf)
- Κόκκινο led
- Πίνακας ψωμιού
- IC 7805
- 11,0592 MHz κρύσταλλο
- Παροχή ηλεκτρικού ρεύματος
- Σύνδεση καλωδίων
Λαμβάνοντας είσοδο από το 4X4 Keypad Matrix χρησιμοποιώντας την Πολλαπλή Τεχνική:
Σε αυτό το κύκλωμα χρησιμοποιήσαμε τεχνική πολυπλεξίας για τη διασύνδεση του πληκτρολογίου με τον μικροελεγκτή 8051, για την εισαγωγή του κωδικού πρόσβασης στο σύστημα. Εδώ χρησιμοποιούμε ένα πληκτρολόγιο 4x4 που έχει 16 πλήκτρα. Αν θέλουμε να χρησιμοποιήσουμε 16 πλήκτρα τότε χρειαζόμαστε 16 ακίδες για σύνδεση με 89s52, αλλά στην τεχνική πολυπλεξίας πρέπει να χρησιμοποιήσουμε μόνο 8 ακίδες για διασύνδεση 16 πλήκτρων. Για να είναι ένας έξυπνος τρόπος διασύνδεσης της μονάδας πληκτρολογίου.
Η τεχνική πολυπλεξίας είναι ένας πολύ αποτελεσματικός τρόπος για τη μείωση του αριθμού των ακίδων που χρησιμοποιούνται με τον μικροελεγκτή για την παροχή της εισόδου ή του κωδικού πρόσβασης. Βασικά αυτή η τεχνική χρησιμοποιείται με δύο τρόπους - ο ένας είναι η σάρωση σειράς και ο άλλος είναι η σάρωση στήλης.
Εδώ θα εξηγήσουμε τη σάρωση σειρών:
Πρώτα πρέπει να ορίσουμε 8 ακίδες για τη μονάδα πληκτρολογίου. Στην οποία οι πρώτες 4 ακίδες είναι στήλη και οι τελευταίες 4 ακίδες είναι σειρές.
Για τη σάρωση σειρών πρέπει να δώσουμε δεδομένα ή σήμα σε καρφίτσες στηλών και να διαβάσουμε αυτά τα δεδομένα ή το σήμα από την καρφίτσα σειράς. Ας υποθέσουμε ότι δίνουμε παρακάτω δεδομένα σε καρφίτσες στηλών:
C1 = 0;
C2 = 1;
C3 = 1;
C4 = 1;
Και διαβάζουμε αυτά τα δεδομένα σε ακίδες σειράς (από προεπιλογή οι ακίδες σειράς είναι ΥΨΗΛΕΣ λόγω της αντίστασης έλξης).
Εάν ο χρήστης πατήσει τον αριθμό κλειδιού '1' τότε το R1 αλλάζει ΥΨΗΛΟ σε ΧΑΜΗΛΟ σημαίνει R1 = 0; και ο ελεγκτής κατανοεί ότι ο χρήστης έχει πατήσει το πλήκτρο '1'. Και θα εκτυπώσει το «1» στην οθόνη LCD και θα αποθηκεύσει το «1» σε σειρά. Έτσι, αυτή η αλλαγή HIGH to LOW στο R1, είναι το κύριο πράγμα με το οποίο ο ελεγκτής κατανοεί ότι έχει πατηθεί κάποιο πλήκτρο, που αντιστοιχεί στη στήλη 1.
Τώρα εάν ο χρήστης πατήσει τον αριθμό κλειδιού «2» τότε το R1 παραμένει στο HIGH καθώς το C1 και το R1 και τα δύο βρίσκονται ήδη στο HIGH. Ως εκ τούτου δεν θα υπάρξει αλλαγή, αυτό σημαίνει ότι ο μικροελεγκτής κατανοεί ότι τίποτα δεν έχει πατηθεί στη στήλη 1. Ομοίως, αυτή η αρχή ισχύει για όλες τις άλλες καρφίτσες. Επομένως, σε αυτό το βήμα, ο ελεγκτής περιμένει μόνο κλειδιά στη στήλη: «1», «4», «7» και «*».
Τώρα, εάν θέλουμε να παρακολουθήσουμε τα κλειδιά σε άλλες στήλες (όπως στη στήλη 2), τότε πρέπει να αλλάξουμε τα δεδομένα στις καρφίτσες στηλών:
C1 = 1;
C2 = 0;
C3 = 1;
C4 = 1;
Αυτός ο ελεγκτής χρόνου περιμένει μόνο τα πλήκτρα στη στήλη δύο: '2', '5', '8'και' 0 ', επειδή η αλλαγή (ΥΨΗΛΗ σε χαμηλότερη) εμφανίζεται μόνο όταν θα πατηθούν τα πλήκτρα της στήλης δύο. Εάν πατήσουμε οποιοδήποτε πλήκτρο στις στήλες 1, 3 ή 4, τότε δεν θα υπάρξει αλλαγή, επειδή αυτές οι στήλες βρίσκονται στο HIGH και οι σειρές βρίσκονται ήδη στο HIGH.
Ομοίως, τα πλήκτρα στη στήλη C3 και C4 μπορούν επίσης να παρακολουθούνται κάνοντάς τα 0, κάθε φορά. Δείτε εδώ τη λεπτομερή εξήγηση: Διεπαφή πληκτρολογίου με 8051. Επίσης, διαβάστε την παρακάτω ενότητα Κώδικας για να κατανοήσετε σωστά τη λογική.
Επεξήγηση κυκλώματος:
Το διάγραμμα κυκλώματος για αυτήν την ψηφιακή κλειδαριά χρησιμοποιώντας το 8051 έχει δειχθεί παρακάτω και μπορεί εύκολα να γίνει κατανοητό. Οι ακίδες στήλης της μονάδας πληκτρολογίου συνδέονται απευθείας με τους ακροδέκτες P0.0, P0.1, P0.2, P0.3 και Row συνδέονται με τις θύρες P0.4, P0.5, P0.6, P0.7 της θύρας μικροελεγκτή 89s52 0 Μια LCD 16x2 συνδέεται με μικροελεγκτή 89s52 σε λειτουργία 4-bit. Οι πείροι ελέγχου RS, RW και En συνδέονται απευθείας με τους ακροδέκτες P1.0, GND και P1.2. Και ο ακροδέκτης δεδομένων D4-D7 συνδέεται με τους ακροδέκτες P1.4, P1.5, P1.6 και P1.7 από 89s52. Και ένας βομβητής συνδέεται στον πείρο P2.6 μέσω μιας αντίστασης.
Επεξήγηση προγράμματος:
Έχουμε χρησιμοποιήσει έναν προκαθορισμένο κωδικό πρόσβασης στο πρόγραμμα, αυτός ο κωδικός μπορεί να οριστεί από τον χρήστη στον παρακάτω κώδικα. Όταν ο χρήστης εισάγει έναν κωδικό πρόσβασης στο σύστημα, τότε το σύστημα συγκρίνει τον κωδικό πρόσβασης που έχει εισαχθεί από τον χρήστη με αποθηκευμένο ή προκαθορισμένο κωδικό πρόσβασης στον κώδικα προγράμματος. Εάν συμβεί ένας αγώνας, τότε η οθόνη LCD θα εμφανίσει την ένδειξη "Access Grated" και εάν ο κωδικός πρόσβασης δεν ταιριάζει, τότε η οθόνη LCD θα εμφανίσει την ένδειξη "Access Denied" και ο βομβητής θα ηχήσει συνεχώς για κάποιο χρονικό διάστημα. Εδώ χρησιμοποιήσαμε τη βιβλιοθήκη string.h. Με τη χρήση αυτής της βιβλιοθήκης μπορούμε να συγκρίνουμε ή να ταιριάξουμε με δύο χορδές, χρησιμοποιώντας τη συνάρτηση "strncmp".
Στο πρόγραμμα, πρώτα απ 'όλα συμπεριλαμβάνουμε το αρχείο κεφαλίδας και καθορίζει μεταβλητές και καρφίτσες εισόδου και εξόδου για το πληκτρολόγιο και την οθόνη LCD.
#περιλαμβάνω
Η λειτουργία δημιουργίας καθυστέρησης 1 δευτερολέπτου έχει δημιουργηθεί, μαζί με ορισμένες λειτουργίες LCD, όπως για την εκκίνηση LCD, την εκτύπωση της συμβολοσειράς, για εντολές κ.λπ. Μπορείτε εύκολα να τις βρείτε στον κώδικα. Ανατρέξτε σε αυτό το άρθρο για διασύνδεση LCD με 8051 και τις λειτουργίες του.
Μετά από αυτό, στο κύριο πρόγραμμα έχουμε αρχικοποιήσει την οθόνη LCD και στη συνέχεια διαβάζουμε την είσοδο από το πληκτρολόγιο χρησιμοποιώντας τη συνάρτηση πληκτρολογίου () και αποθηκεύει τα πλήκτρα εισόδου σε έναν πίνακα και στη συνέχεια το συγκρίνουμε από προκαθορισμένα δεδομένα συστοιχίας χρησιμοποιώντας strncmp.
void main () {buzzer = 1; lcd_init (); lcdstring ("Ηλεκτρονικός κώδικας"); lcdcmd (0xc0); lcdstring ("Σύστημα κλειδώματος"); καθυστέρηση (400) lcdcmd (1); lcdstring ("Κύκλωμα Digest"); καθυστέρηση (400) ενώ (1) {i = 0; πληκτρολόγιο (); εάν (strncmp (πέρασμα, "4201", 4) == 0)
Εάν ο κωδικός πρόσβασης που έχει εισαχθεί αντιστοιχεί, τότε η λειτουργία αποδοχής () ονομάζεται:
άκυρη αποδοχή () {lcdcmd (1); lcdstring ("Καλώς ήλθατε"); lcdcmd (192); lcdstring ("Αποδοχή κωδικού πρόσβασης"); καθυστέρηση (200) }
Και εάν ο κωδικός πρόσβασης είναι λανθασμένος τότε καλείται η λειτουργία λάθος
άκυρο λάθος () {buzzer = 0; lcdcmd (1); lcdstring ("Λάθος κωδικός πρόσβασης"); lcdcmd (192); lcdstring ("PLZ Δοκιμάστε ξανά"); καθυστέρηση (200) βομβητής = 1; }
Ελέγξτε τη λειτουργία του πληκτρολογίου παρακάτω στον κωδικό που διαβάζει τη μονάδα πληκτρολογίου φόρμας εισαγωγής.