- Componenti richiesti:
- Schema elettrico:
- Microcontrollore 8051:
- LCD 16x2:
- Lettore RFID EM-18:
- Funzionamento e spiegazione del codice:
L'identificazione a radiofrequenza (RFID) utilizza la radiofrequenza per leggere le informazioni memorizzate in una scheda o tag RFID. In questo progetto andremo a interfacciare il lettore RFID EM-18 con microcontrollore 8051 e visualizzare il numero di carta RFID sul display LCD 16 * 2. Questa identificazione RF wireless viene utilizzata in molti sistemi come il sistema di presenza basato su RFID, sistemi di sicurezza, macchine per il voto, ecc. Questo progetto servirà anche come interfaccia adeguata di LCD 16 * 2 con microcontrollore 8051.
Componenti richiesti:
- Microcontrollore 8051
- Lettore RFID EM-18
- Display LCD 16 * 2
- Schede / tag RFID
- Potenziometro
- Cavi jumper
Schema elettrico:
Microcontrollore 8051:
Il microcontrollore 8051 è un microcontrollore a 8 bit che ha 128 byte di RAM su chip, 4K byte di ROM su chip, due timer, una porta seriale e quattro porte a 8 bit. Il microcontrollore 8052 è un'estensione del microcontrollore. La tabella seguente mostra il confronto di 8051 membri della famiglia.
Caratteristica |
8051 |
8052 |
ROM (in byte) |
4K |
8 MILA |
RAM (byte) |
128 |
256 |
Timer |
2 |
3 |
Pin di I / O |
32 |
32 |
Porta seriale |
1 |
1 |
Fonti di interrupt |
6 |
8 |
LCD 16x2:
L'LCD 16 * 2 è un display ampiamente utilizzato per applicazioni integrate. Ecco la breve spiegazione sui pin e sul funzionamento del display LCD 16 * 2. Ci sono due registri molto importanti all'interno del display LCD. Sono registro dati e registro comandi. Il registro dei comandi viene utilizzato per inviare comandi come la visualizzazione chiara, il cursore a casa, ecc., Il registro dei dati viene utilizzato per inviare i dati che devono essere visualizzati sull'LCD 16 * 2. La tabella sottostante mostra la descrizione dei pin di 16 * 2 lcd.
Pin |
Simbolo |
I / O |
Descrizione |
1 |
Vss |
- |
Terra |
2 |
Vdd |
- |
+ 5V di alimentazione |
3 |
Vee |
- |
Alimentazione per controllare il contrasto |
4 |
RS |
io |
RS = 0 per registro comandi, RS = 1 per registro dati |
5 |
RW |
io |
R / W = 0 per la scrittura, R / W = 1 per la lettura |
6 |
E |
I / O |
Abilitare |
7 |
D0 |
I / O |
Bus dati a 8 bit (LSB) |
8 |
D1 |
I / O |
Bus dati a 8 bit |
9 |
D2 |
I / O |
Bus dati a 8 bit |
10 |
D3 |
I / O |
Bus dati a 8 bit |
11 |
D4 |
I / O |
Bus dati a 8 bit |
12 |
D5 |
I / O |
Bus dati a 8 bit |
13 |
D6 |
I / O |
Bus dati a 8 bit |
14 |
D7 |
I / O |
Bus dati a 8 bit (MSB) |
15 |
UN |
- |
+ 5V per la retroilluminazione |
16 |
K |
- |
Terra |
La tabella seguente mostra i codici di comando LCD utilizzati di frequente.
Codice (esadecimale) |
Descrizione |
01 |
Schermo di visualizzazione chiaro |
06 |
Cursore di incremento (spostamento a destra) |
0A |
Display spento, cursore acceso |
0C |
Display acceso, cursore spento |
0F |
Display acceso, cursore lampeggiante |
80 |
Forza il cursore all'inizio della 1 ° linea |
C0 |
Forzare il cursore beginningof 2 ° linea |
38 |
2 linee e matrice 5 * 7 |
Lettore RFID EM-18:
Il lettore RFID EM-18 funziona a 125 KHz e viene fornito con un'antenna su chip e può essere alimentato con alimentazione a 5V. Fornisce output seriale insieme a output weigand. La portata è di circa 8-12 cm. i parametri di comunicazione seriale sono 9600 bps, 8 bit di dati, 1 bit di stop. Le sue applicazioni includono l'autenticazione, la tariffazione del pedaggio elettronico, l'emissione di biglietti elettronici per i trasporti pubblici, i sistemi di rilevazione presenze, ecc. Controlla qui tutti i progetti RFID.
L'output fornito dal lettore RFID EM-18 è in formato ASCII a 12 cifre. Su 12 cifre le prime 10 cifre sono il numero della carta e le ultime due cifre sono il risultato XOR del numero della carta. Le ultime due cifre vengono utilizzate per il controllo degli errori.
Ad esempio, il numero della carta è 0200107D0D62 letto dal lettore, quindi il numero della carta sulla carta sarà il seguente.
02 - preambolo
00107D0D = 1080589 in decimale.
62 è il valore XOR per (02 XOR 00 XOR 10 XOR 7D XOR 0D).
Quindi il numero sulla carta è 0001080589.
Funzionamento e spiegazione del codice:
Il programma completo in C e il video dimostrativo per questo progetto sono forniti alla fine di questo progetto. Il codice è suddiviso in piccoli blocchi significativi e spiegato di seguito.
Per l'interfacciamento LCD 16 * 2 con il microcontrollore 8051, dobbiamo definire i pin su cui lcd 16 * 2 è collegato al microcontrollore 8051. Il pin RS di 16 * 2 lcd è collegato a P3.7, il pin RW di 16 * 2 lcd è collegato a P3.6 e il pin E di 16 * 2 lcd è collegato a P3.5. I pin dati sono collegati alla porta 1 del microcontrollore 8051.
sbit rs = P3 ^ 7; sbit rw = P3 ^ 6; sbit en = P3 ^ 5;
Successivamente dobbiamo definire alcune funzioni che vengono utilizzate nel programma. La funzione di ritardo viene utilizzata per creare un ritardo di tempo specificato. La funzione Cmdwrt viene utilizzata per inviare comandi al display LCD 16 * 2. La funzione datawrt viene utilizzata per inviare dati al display lcd 16 * 2. La funzione Rxdata viene utilizzata per ricevere dati dalla porta seriale.
void delay (unsigned int); void cmdwrt (carattere non firmato); void datawrt (carattere non firmato); char rxdata (void);
In questa parte del codice configureremo il microcontrollore 8051 per la comunicazione seriale.
Il registro TMOD viene caricato con 0x20 per il timer 1, modalità 2 (ricarica automatica). Il registro SCON viene caricato con 0x50 per 8 bit di dati, 1 bit di stop e ricezione abilitata. Il registro TH1 viene caricato con 0xfd per una velocità di trasmissione di 9600 bit al secondo. TR1 = 1 viene utilizzato per avviare il timer.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1;
In questa parte del codice, inviamo comandi a 16 * 2 lcd. Comandi come display azzerato, cursore incremento, costringono il cursore all'inizio della 1 ° riga vengono inviati a 16 * 2 display LCD uno per uno dopo un certo certo ritardo di tempo specificato.
per (i = 0; i <5; i ++) {cmdwrt (cmd); ritardo (1); }
In questa parte del codice stiamo ricevendo l'output del lettore RFID EM-18 tramite l'interfaccia seriale del microcontrollore 8051 e memorizzato in una variabile. Il conteggio viene utilizzato per tenere traccia del numero di byte ricevuti. Una volta ricevuti tutti i 12 byte di dati, dobbiamo visualizzarli sul display LCD 16 * 2. Questo processo viene ripetuto all'infinito per leggere carte diverse.
while (1) {count = 0; cmdwrt (0xC2); while (count <12) {input = rxdata (); count ++; } per (i = 0; i <12; i ++) {datawrt (input); ritardo (1); } ritardo (100); }
In questa parte del codice, inviamo comandi al display lcd 16 * 2. Il comando viene copiato sulla porta 1 del microcontrollore 8051. RS è ridotta per la scrittura del comando. RW è ridotto per l'operazione di scrittura. L'impulso da alto a basso viene applicato al pin di abilitazione (E) per avviare l'operazione di scrittura del comando.
void cmdwrt (carattere senza segno x) {P1 = x; rs = 0; rw = 0; en = 1; ritardo (1); en = 0; }
In questa parte del codice, stiamo inviando i dati al display lcd 16 * 2. I dati vengono copiati sulla porta 1 del microcontrollore 8051. RS è elevato per la scrittura del comando. RW è ridotto per l'operazione di scrittura. L'impulso da alto a basso viene applicato al pin di abilitazione (E) per avviare l'operazione di scrittura dei dati.
void datawrt (unsigned char y) {P1 = y; rs = 1; rw = 0; en = 1; ritardo (1); en = 0; } Inoltre, controlla tutti i nostri progetti RFID con altri microcontrollori.