- Erforderliche Komponenten:
- Schaltplan:
- 8051 Mikrocontroller:
- 16x2 LCD:
- EM-18 RFID-Lesegerät:
- Arbeits- und Codeerklärung:
Radio Frequency Identification (RFID) verwendet Radiofrequenz zum Lesen von Informationen, die auf einer RFID-Karte oder einem Tag gespeichert sind. In diesem Projekt werden wir den EMID 18-RFID-Leser mit dem 8051-Mikrocontroller verbinden und die RFID-Kartennummer auf dem 16 * 2-LCD-Display anzeigen. Diese drahtlose RF-Identifikation wird in vielen Systemen wie dem RFID-basierten Anwesenheitssystem, Sicherheitssystemen, Abstimmungsgeräten usw. verwendet. Dieses Projekt wird auch als ordnungsgemäße Schnittstelle zwischen 16 * 2-LCD und 8051-Mikrocontroller dienen.
Erforderliche Komponenten:
- 8051 Mikrocontroller
- EM-18 RFID-Lesegerät
- 16 * 2 LCD-Anzeige
- RFID-Karten / Tags
- Potentiometer
- Überbrückungsdrähte
Schaltplan:
8051 Mikrocontroller:
Der 8051-Mikrocontroller ist ein 8-Bit-Mikrocontroller mit 128 Byte On-Chip-RAM, 4 KByte On-Chip-ROM, zwei Timern, einem seriellen Port und vier 8-Bit-Ports. Der 8052-Mikrocontroller ist eine Erweiterung des Mikrocontrollers. Die folgende Tabelle zeigt den Vergleich von 8051 Familienmitgliedern.
Merkmal |
8051 |
8052 |
ROM (in Bytes) |
4K |
8 TAUSEND |
RAM (Bytes) |
128 |
256 |
Timer |
2 |
3 |
E / A-Pins |
32 |
32 |
Serielle Schnittstelle |
1 |
1 |
Quellen unterbrechen |
6 |
8 |
16x2 LCD:
16 * 2 LCD ist ein weit verbreitetes Display für eingebettete Anwendungen. Hier finden Sie eine kurze Erläuterung der Stifte und der Funktionsweise des 16 * 2-LCD-Displays. Es gibt zwei sehr wichtige Register im LCD. Sie sind Datenregister und Befehlsregister. Das Befehlsregister wird zum Senden von Befehlen wie Löschen der Anzeige, Cursor zu Hause usw. verwendet. Das Datenregister wird zum Senden von Daten verwendet, die auf dem 16 * 2-LCD angezeigt werden sollen. Die folgende Tabelle zeigt die Pin-Beschreibung von 16 * 2 LCD.
Stift |
Symbol |
I / O. |
Beschreibung |
1 |
Vss |
- - |
Boden |
2 |
Vdd |
- - |
+ 5V Stromversorgung |
3 |
Vee |
- - |
Netzteil zur Kontrastregelung |
4 |
RS |
ich |
RS = 0 für Befehlsregister, RS = 1 für Datenregister |
5 |
RW |
ich |
R / W = 0 zum Schreiben, R / W = 1 zum Lesen |
6 |
E. |
I / O. |
Aktivieren |
7 |
D0 |
I / O. |
8-Bit-Datenbus (LSB) |
8 |
D1 |
I / O. |
8-Bit-Datenbus |
9 |
D2 |
I / O. |
8-Bit-Datenbus |
10 |
D3 |
I / O. |
8-Bit-Datenbus |
11 |
D4 |
I / O. |
8-Bit-Datenbus |
12 |
D5 |
I / O. |
8-Bit-Datenbus |
13 |
D6 |
I / O. |
8-Bit-Datenbus |
14 |
D7 |
I / O. |
8-Bit-Datenbus (MSB) |
15 |
EIN |
- - |
+ 5V für Hintergrundbeleuchtung |
16 |
K. |
- - |
Boden |
Die folgende Tabelle zeigt häufig verwendete LCD-Befehlscodes.
Code (hex) |
Beschreibung |
01 |
Bildschirm löschen |
06 |
Cursor erhöhen (Rechtsverschiebung) |
0A |
Anzeige aus, Cursor ein |
0C |
Anzeige ein, Cursor aus |
0F |
Anzeige ein, Cursor blinkt |
80 |
Zwingen Sie den Cursor von 1 bis Anfang st Linie |
C0 |
Zwingen Sie den Cursor auf beginningof 2 nd Linie |
38 |
2 Zeilen und 5 * 7 Matrix |
EM-18 RFID-Lesegerät:
Der EM-18-RFID-Leser arbeitet mit 125 kHz, wird mit einer On-Chip-Antenne geliefert und kann mit einer 5-V-Stromversorgung betrieben werden. Es bietet serielle Ausgabe zusammen mit Weigand-Ausgabe. Die Reichweite beträgt ca. 8-12cm. Die seriellen Kommunikationsparameter sind 9600 Bit / s, 8 Datenbits und 1 Stoppbit. Zu den Anwendungen gehören Authentifizierung, Straßenbenutzungsgebühren, elektronisches Ticketing für öffentliche Verkehrsmittel, Anwesenheitssysteme usw. Überprüfen Sie alle RFID-Projekte hier.
Die Ausgabe des EM-18-RFID-Lesegeräts erfolgt im 12-stelligen ASCII-Format. Von 12 Ziffern sind die ersten 10 Ziffern die Kartennummer und die letzten beiden Ziffern sind das XOR-Ergebnis der Kartennummer. Die letzten beiden Ziffern werden zur Fehlerprüfung verwendet.
Die Kartennummer lautet beispielsweise 0200107D0D62 und wird vom Lesegerät gelesen. Die Kartennummer auf der Karte lautet wie folgt.
02 - Präambel
00107D0D = 1080589 in Dezimalzahl.
62 ist der XOR-Wert für (02 XOR 00 XOR 10 XOR 7D XOR 0D).
Daher lautet die Nummer auf der Karte 0001080589.
Arbeits- und Codeerklärung:
Das vollständige C-Programm und das Demonstrationsvideo für dieses Projekt finden Sie am Ende dieses Projekts. Der Code ist in kleine sinnvolle Abschnitte unterteilt und wird unten erläutert.
Für die 16 * 2-LCD-Schnittstelle mit dem 8051-Mikrocontroller müssen Pins definiert werden, an denen 16 * 2-LCD mit dem 8051-Mikrocontroller verbunden sind. Der RS-Pin von 16 * 2 lcd ist mit P3.7 verbunden, der RW-Pin von 16 * 2 lcd ist mit P3.6 verbunden und der E-Pin von 16 * 2 lcd ist mit P3.5 verbunden. Datenpins sind mit Port 1 des 8051-Mikrocontrollers verbunden.
sbit rs = P3 ^ 7; sbit rw = P3 ^ 6; sbit en = P3 ^ 5;
Als nächstes müssen wir einige Funktionen definieren, die im Programm verwendet werden. Die Verzögerungsfunktion wird verwendet, um eine bestimmte Zeitverzögerung zu erstellen. Mit der Cmdwrt- Funktion werden Befehle an die 16 * 2-LCD-Anzeige gesendet. Mit der Funktion datawrt werden Daten an eine 16 * 2-LCD-Anzeige gesendet. Die Rxdata- Funktion wird verwendet, um Daten von der seriellen Schnittstelle zu empfangen.
ungültige Verzögerung (unsigned int); void cmdwrt (vorzeichenloses Zeichen); void datawrt (vorzeichenloses Zeichen); char rxdata (void);
In diesem Teil des Codes werden wir den 8051-Mikrocontroller für die serielle Kommunikation konfigurieren.
Das TMOD-Register wird mit 0x20 für Timer 1, Modus 2 (automatisches Neuladen) geladen. Das SCON-Register wird mit 0x50 für 8 Datenbits, 1 Stoppbit und Empfang aktiviert. Das TH1-Register wird mit 0xfd für eine Baudrate von 9600 Bit pro Sekunde geladen. TR1 = 1 wird zum Starten des Timers verwendet.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1;
In diesem Teil des Codes senden wir Befehle an 16 * 2 lcd. Befehle wie klare Anzeige, Cursor - Inkrement, zwingen die Cursor von 1 bis beginnend st Zeile wird mit einem bis 16 * 2 LCD - Anzeige eines gesendet, nachdem einig einig spezifizierte Zeitverzögerung.
für (i = 0; i <5; i ++) {cmdwrt (cmd); Verzögerung (1); }}
In diesem Teil des Codes empfangen wir die Ausgabe des RFID- Lesegeräts EM-18 über die serielle Schnittstelle des 8051-Mikrocontrollers und werden in einer Variablen gespeichert. Count wird verwendet, um die Anzahl der empfangenen Bytes zu verfolgen. Sobald alle 12 Bytes Daten empfangen wurden, müssen wir sie als nächstes auf einer 16 * 2-LCD-Anzeige anzeigen. Dieser Vorgang wird für immer wiederholt, um verschiedene Karten zu lesen.
während (1) {count = 0; cmdwrt (0xC2); while (Anzahl <12) {input = rxdata (); count ++; } für (i = 0; i <12; i ++) {datawrt (Eingabe); Verzögerung (1); } delay (100); }}
In diesem Teil des Codes senden wir Befehle an die 16 * 2-LCD-Anzeige. Der Befehl wird auf Port 1 des 8051-Mikrocontrollers kopiert. RS wird für das Schreiben von Befehlen niedrig gemacht. RW wird für den Schreibvorgang auf niedrig gesetzt. Ein hoher bis niedriger Impuls wird an den Aktivierungsstift (E) angelegt, um den Befehlsschreibvorgang zu starten.
void cmdwrt (vorzeichenloses Zeichen x) {P1 = x; rs = 0; rw = 0; en = 1; Verzögerung (1); en = 0; }}
In diesem Teil des Codes senden wir Daten an das 16 * 2-LCD-Display. Die Daten werden auf Port 1 des 8051-Mikrocontrollers kopiert. RS ist für das Schreiben von Befehlen hoch eingestellt. RW wird für den Schreibvorgang auf niedrig gesetzt. Ein hoher bis niedriger Impuls wird an den Freigabepin (E) angelegt, um den Datenschreibvorgang zu starten.
void datawrt (vorzeichenloses Zeichen) {P1 = y; rs = 1; rw = 0; en = 1; Verzögerung (1); en = 0; } Überprüfen Sie auch alle RFID-Projekte mit anderen Mikrocontrollern.