- Components necessaris:
- Esquema de connexions:
- Microcontrolador 8051:
- LCD de 16 x 2:
- Lector RFID EM-18:
- Funcionament i explicació del codi:
La identificació per radiofreqüència (RFID) utilitza la freqüència de ràdio per llegir la informació emmagatzemada en una targeta o etiqueta RFID. En aquest projecte anirem a la interfície lector RFID EM-18 amb microcontrolador 8051 i mostrarem el número de targeta RFID a la pantalla LCD de 16 * 2. Aquesta identificació sense fils de RF s’utilitza en molts sistemes com el sistema d’assistència basat en RFID, sistemes de seguretat, màquines de votació, etc. Aquest projecte també servirà com a interfície adequada de 16 * 2 LCD amb microcontrolador 8051.
Components necessaris:
- Microcontrolador 8051
- Lector RFID EM-18
- Pantalla LCD de 16 * 2
- Targetes / etiquetes RFID
- Potenciòmetre
- Filferros de pont
Esquema de connexions:

Microcontrolador 8051:
El microcontrolador 8051 és un microcontrolador de 8 bits que té 128 bytes de RAM del xip, 4K bytes de ROM del xip, dos temporitzadors, un port sèrie i quatre ports de 8 bits. El microcontrolador 8052 és una extensió del microcontrolador. La taula següent mostra la comparació de 8051 membres de la família.
|
Funció |
8051 |
8052 |
|
ROM (en bytes) |
4K |
8K |
|
RAM (bytes) |
128 |
256 |
|
Temporitzadors |
2 |
3 |
|
Pines d'E / S |
32 |
32 |
|
Port sèrie |
1 |
1 |
|
Interrompre fonts |
6 |
8 |
LCD de 16 x 2:
16 * 2 LCD és una pantalla àmpliament utilitzada per a aplicacions incrustades. Aquí teniu una breu explicació sobre els pins i el funcionament de la pantalla LCD de 16 * 2. Hi ha dos registres molt importants dins de la pantalla LCD. Són registre de dades i registre d’ordres. El registre d’ordres s’utilitza per enviar ordres com ara la visualització neta, el cursor a casa, etc., el registre de dades s’utilitza per enviar dades que es mostraran a la pantalla LCD de 16 * 2. A la taula següent es mostra la descripció del pin de 16 * 2 lcd.
|
Pin |
Símbol |
E / S |
Descripció |
|
1 |
Vss |
- |
Terra |
|
2 |
Vdd |
- |
Alimentació + 5V |
|
3 |
Vee |
- |
Font d'alimentació per controlar el contrast |
|
4 |
RS |
Jo |
RS = 0 per al registre d'ordres, RS = 1 per al registre de dades |
|
5 |
RW |
Jo |
R / W = 0 per a escriptura, R / W = 1 per a lectura |
|
6 |
E |
E / S |
Activa |
|
7 |
D0 |
E / S |
Bus de dades de 8 bits (LSB) |
|
8 |
D1 |
E / S |
Bus de dades de 8 bits |
|
9 |
D2 |
E / S |
Bus de dades de 8 bits |
|
10 |
D3 |
E / S |
Bus de dades de 8 bits |
|
11 |
D4 |
E / S |
Bus de dades de 8 bits |
|
12 |
D5 |
E / S |
Bus de dades de 8 bits |
|
13 |
D6 |
E / S |
Bus de dades de 8 bits |
|
14 |
D7 |
E / S |
Bus de dades de 8 bits (MSB) |
|
15 |
A |
- |
+ 5V per a la llum de fons |
|
16 |
K |
- |
Terra |
A la taula següent es mostren els codis d’ordres LCD d’ús freqüent.
|
Codi (hexadecimal) |
Descripció |
|
01 |
Esborra la pantalla |
|
06 |
Cursor d'increment (desplaçament a la dreta) |
|
0A |
Visualització desactivada, cursor activat |
|
0C |
Visualització activada, cursor desactivat |
|
0F |
Pantalla activada, el cursor parpelleja |
|
80 |
Força el cursor al començament de la primera línia |
|
C0 |
Força el cursor al començament de la segona línia |
|
38 |
2 línies i matriu 5 * 7 |
Lector RFID EM-18:
El lector RFID EM-18 funciona a 125 KHz i inclou una antena amb xip i es pot alimentar amb una font d’alimentació de 5 V. Proporciona sortida en sèrie juntament amb sortida de Weigand. El rang és d’uns 8-12cm. els paràmetres de comunicació en sèrie són 9600bps, 8 bits de dades, 1 bit d'aturada. Entre les seves aplicacions s’inclouen l’autenticació, el preu de l’autopista electrònica, la venda de bitllets electrònics per al transport públic, els sistemes d’assistència, etc. Consulteu aquí tots els projectes RFID.
La sortida proporcionada pel lector RFID EM-18 té un format ASCII de 12 dígits. Dels 12 dígits, els primers 10 dígits són el número de la targeta i els dos darrers dígits són el resultat XOR del número de la targeta. Els dos darrers dígits s’utilitzen per comprovar els errors.


Per exemple, el número de targeta és 0200107D0D62 llegit del lector, el número de la targeta serà el següent.
02 - preàmbul
00107D0D = 1080589 en decimal.
62 és el valor XOR de (02 XOR 00 XOR 10 XOR 7D XOR 0D).
Per tant, el número de la targeta és 0001080589.
Funcionament i explicació del codi:

El programa C complet i el vídeo de demostració d’aquest projecte es donen al final d’aquest projecte. El codi es divideix en petits trossos significatius i s’explica a continuació.
Per a la interfície LCD de 16 * 2 amb el microcontrolador 8051, hem de definir pins on es connecti 16 * 2 lcd al microcontrolador 8051. El pin RS de 16 * 2 lcd està connectat a P3.7, el pin RW de 16 * 2 lcd està connectat a P3.6 i el pin E de 16 * 2 lcd està connectat a P3.5. Els pins de dades estan connectats al port 1 del microcontrolador 8051.
sbit rs = P3 ^ 7; sbit rw = P3 ^ 6; sbit en = P3 ^ 5;
A continuació, hem de definir algunes funcions que s'utilitzen al programa. La funció de retard s'utilitza per crear un retard de temps especificat. La funció Cmdwrt s’utilitza per enviar ordres a una pantalla lcd de 16 * 2. La funció datawrt s’utilitza per enviar dades a una pantalla lcd de 16 * 2. La funció Rxdata s’utilitza per rebre dades des del port sèrie.
retard nul (int sense signar); void cmdwrt (caràcter sense signar); void datawrt (caràcter sense signar); char rxdata (void);
En aquesta part del codi configurarem el microcontrolador 8051 per a la comunicació en sèrie.
El registre TMOD es carrega amb 0x20 per al temporitzador 1, mode 2 (recàrrega automàtica). El registre SCON es carrega amb 0x50 per a 8 bits de dades, 1 bit d'aturada i la recepció està activada. El registre TH1 es carrega amb 0xfd per a una velocitat en bauds de 9600 bits per segon. TR1 = 1 s’utilitza per engegar el temporitzador.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1;
En aquesta part del codi, estem enviant comandes a 16 * 2 lcd. Ordres com la visualització neta, el cursor d'increment, la força del cursor a l'inici de la primera línia s'envien a la pantalla LCD de 16 * 2 una per una després d'algun temps de retard especificat.
per a (i = 0; i <5; i ++) {cmdwrt (cmd); retard (1); }
En aquesta part del codi estem rebent la sortida del lector RFID EM-18 a través de la interfície sèrie del microcontrolador 8051 i emmagatzemada en una variable. El recompte s’utilitza per fer un seguiment del nombre de bytes rebuts. Un cop rebuts tots els 12 bytes de dades, a continuació haurem de mostrar-los en pantalla lcd de 16 * 2. Aquest procés es repeteix per sempre per llegir diferents cartes.
while (1) {count = 0; cmdwrt (0xC2); while (compte <12) {input = rxdata (); comptar ++; } per a (i = 0; i <12; i ++) {datawrt (entrada); retard (1); } retard (100); }
En aquesta part del codi, estem enviant ordres a una pantalla LCD de 16 * 2. L'ordre es copia al port 1 del microcontrolador 8051. RS es redueix per escriure ordres. RW es redueix per a l'operació d'escriptura. S’aplica un pols d’alt a baix al pin habilitar (E) per iniciar l’operació d’escriptura d’ordres.
void cmdwrt (caràcter sense signe x) {P1 = x; rs = 0; rw = 0; ca = 1; retard (1); ca = 0; }
En aquesta part del codi, estem enviant dades a una pantalla lcd de 16 * 2. Les dades es copien al port 1 del microcontrolador 8051. RS es fa elevat per escriure ordres. RW es redueix per a l'operació d'escriptura. El pols d’alt a baix s’aplica al pin habilitar (E) per iniciar l’operació d’escriptura de dades.
void datawrt (caràcter sense signar y) {P1 = y; rs = 1; rw = 0; ca = 1; retard (1); ca = 0; } A més, consulteu tots els nostres projectes RFID amb altres microcontroladors.
