- Componentes requeridos:
- Diagrama de circuito:
- Microcontrolador 8051:
- LCD 16x2:
- Lector RFID EM-18:
- Explicación de trabajo y código:
La identificación por radiofrecuencia (RFID) utiliza radiofrecuencia para leer información almacenada en una tarjeta o etiqueta RFID. En este proyecto vamos a conectar el lector RFID EM-18 con el microcontrolador 8051 y mostrar el número de tarjeta RFID en una pantalla LCD de 16 * 2. Esta identificación de RF inalámbrica se utiliza en muchos sistemas como el sistema de asistencia basado en RFID, sistemas de seguridad, máquinas de votación, etc. Este proyecto también servirá como una interfaz adecuada de 16 * 2 LCD con microcontrolador 8051.
Componentes requeridos:
- Microcontrolador 8051
- Lector RFID EM-18
- Pantalla LCD 16 * 2
- Tarjetas / etiquetas RFID
- Potenciómetro
- Cables de puente
Diagrama de circuito:
Microcontrolador 8051:
El microcontrolador 8051 es un microcontrolador de 8 bits que tiene 128 bytes de RAM en el chip, 4K bytes de ROM en el chip, dos temporizadores, un puerto serie y cuatro puertos de 8 bits. El microcontrolador 8052 es una extensión del microcontrolador. La siguiente tabla muestra la comparación de 8051 miembros de la familia.
Característica |
8051 |
8052 |
ROM (en bytes) |
4K |
8K |
RAM (bytes) |
128 |
256 |
Temporizadores |
2 |
3 |
Pines de E / S |
32 |
32 |
Puerto serial |
1 |
1 |
Fuentes de interrupción |
6 |
8 |
LCD 16x2:
16 * 2 LCD es una pantalla ampliamente utilizada para aplicaciones integradas. Aquí está la breve explicación sobre los pines y el funcionamiento de la pantalla LCD de 16 * 2. Hay dos registros muy importantes dentro de la pantalla LCD. Son registro de datos y registro de comando. El registro de comando se usa para enviar comandos como pantalla clara, cursor en casa, etc., el registro de datos se usa para enviar datos que se mostrarán en la pantalla LCD de 16 * 2. La siguiente tabla muestra la descripción de los pines de la pantalla LCD de 16 * 2.
Alfiler |
Símbolo |
E / S |
Descripción |
1 |
Vss |
- |
Suelo |
2 |
Vdd |
- |
Fuente de alimentación de + 5V |
3 |
Vee |
- |
Fuente de alimentación para controlar el contraste |
4 |
RS |
yo |
RS = 0 para registro de comando, RS = 1 para registro de datos |
5 |
RW |
yo |
R / W = 0 para escritura, R / W = 1 para lectura |
6 |
mi |
E / S |
Habilitar |
7 |
D0 |
E / S |
Bus de datos de 8 bits (LSB) |
8 |
D1 |
E / S |
Bus de datos de 8 bits |
9 |
D2 |
E / S |
Bus de datos de 8 bits |
10 |
D3 |
E / S |
Bus de datos de 8 bits |
11 |
D4 |
E / S |
Bus de datos de 8 bits |
12 |
D5 |
E / S |
Bus de datos de 8 bits |
13 |
D6 |
E / S |
Bus de datos de 8 bits |
14 |
D7 |
E / S |
Bus de datos de 8 bits (MSB) |
15 |
UN |
- |
+ 5V para retroiluminación |
dieciséis |
K |
- |
Suelo |
La siguiente tabla muestra los códigos de comando de la pantalla LCD de uso frecuente.
Código (hexadecimal) |
Descripción |
01 |
Pantalla de visualización clara |
06 |
Cursor de incremento (desplazamiento a la derecha) |
0A |
Pantalla apagada, cursor encendido |
0C |
Pantalla encendida, cursor apagado |
0F |
Pantalla encendida, cursor parpadeando |
80 |
Forzar el cursor al comienzo de la 1ª línea |
C0 |
Forzar el cursor al comienzo de la 2ª línea |
38 |
2 líneas y matriz 5 * 7 |
Lector RFID EM-18:
El lector RFID EM-18 funciona a 125 KHz y viene con una antena en chip y puede alimentarse con una fuente de alimentación de 5V. Proporciona salida en serie junto con salida weigand. El rango es de alrededor de 8-12 cm. Los parámetros de comunicación en serie son 9600bps, 8 bits de datos, 1 bit de parada. Sus aplicaciones incluyen autenticación, tarificación de autopistas de peaje electrónico, emisión de billetes electrónicos para transporte público, sistemas de asistencia, etc. Consulte todos los proyectos RFID aquí.
La salida proporcionada por el lector RFID EM-18 está en formato ASCII de 12 dígitos. De los 12 dígitos, los primeros 10 dígitos son el número de la tarjeta y los dos últimos dígitos son el resultado XOR del número de la tarjeta. Los dos últimos dígitos se utilizan para verificar errores.
Por ejemplo, el número de tarjeta es 0200107D0D62 leído desde el lector, luego el número de tarjeta en la tarjeta será el siguiente.
02 - preámbulo
00107D0D = 1080589 en decimal.
62 es el valor XOR para (02 XOR 00 XOR 10 XOR 7D XOR 0D).
Por lo tanto, el número de la tarjeta es 0001080589.
Explicación de trabajo y código:
El programa C completo y el video de demostración para este proyecto se encuentran al final de este proyecto. El código se divide en pequeños fragmentos significativos y se explica a continuación.
Para la interfaz de 16 * 2 LCD con el microcontrolador 8051, tenemos que definir los pines en los que 16 * 2 lcd se conecta al microcontrolador 8051. El pin RS de 16 * 2 lcd está conectado a P3.7, el pin RW de 16 * 2 lcd está conectado a P3.6 y el pin E de 16 * 2 lcd está conectado a P3.5. Los pines de datos están conectados al puerto 1 del microcontrolador 8051.
sbit rs = P3 ^ 7; sbit rw = P3 ^ 6; sbit en = P3 ^ 5;
A continuación, tenemos que definir algunas funciones que se utilizan en el programa. La función de retardo se utiliza para crear un retardo de tiempo especificado. La función Cmdwrt se utiliza para enviar comandos a una pantalla lcd de 16 * 2. La función datawrt se utiliza para enviar datos a una pantalla lcd de 16 * 2. La función Rxdata se utiliza para recibir datos del puerto serie.
demora nula (unsigned int); void cmdwrt (carácter sin firmar); void datawrt (carácter sin firmar); char rxdata (vacío);
En esta parte del código vamos a configurar el microcontrolador 8051 para comunicación serial.
El registro TMOD se carga con 0x20 para el temporizador 1, modo 2 (recarga automática). El registro SCON se carga con 0x50 para 8 bits de datos, 1 bit de parada y recepción habilitada. El registro TH1 se carga con 0xfd para una tasa de baudios de 9600 bits por segundo. TR1 = 1 se utiliza para iniciar el temporizador.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1;
En esta parte del código, estamos enviando comandos a 16 * 2 lcd. Los comandos como borrar pantalla, incrementar el cursor, forzar el cursor al comienzo de la 1ª línea se envían a la pantalla LCD 16 * 2 uno por uno después de un tiempo de retraso especificado.
para (i = 0; i <5; i ++) {cmdwrt (cmd); retraso (1); }
En esta parte del código estamos recibiendo la salida del lector RFID EM-18 a través de la interfaz serial del microcontrolador 8051 y almacenada en una variable. El recuento se utiliza para realizar un seguimiento del número de bytes recibidos. Una vez que se reciben todos los 12bytes de datos, a continuación tenemos que mostrarlos en una pantalla lcd de 16 * 2. Este proceso se repite para siempre para poder leer diferentes tarjetas.
while (1) {cuenta = 0; cmdwrt (0xC2); while (cuenta <12) {entrada = rxdata (); contar ++; } para (i = 0; i <12; i ++) {datawrt (entrada); retraso (1); } retraso (100); }
En esta parte del código, enviamos comandos a una pantalla lcd de 16 * 2. El comando se copia al puerto 1 del microcontrolador 8051. RS se hace bajo para la escritura de comandos. RW se hace bajo para la operación de escritura. El pulso de alto a bajo se aplica en el pin de habilitación (E) para iniciar la operación de escritura del comando.
cmdwrt vacío (carácter sin signo x) {P1 = x; rs = 0; rw = 0; en = 1; retraso (1); en = 0; }
En esta parte del código, enviamos datos a una pantalla lcd de 16 * 2. Los datos se copian en el puerto 1 del microcontrolador 8051. RS se hace alto para la escritura de comandos. RW se hace bajo para la operación de escritura. El pulso de alto a bajo se aplica en el pin de habilitación (E) para iniciar la operación de escritura de datos.
void datawrt (carácter y sin signo) {P1 = y; rs = 1; rw = 0; en = 1; retraso (1); en = 0; } Además, consulte todos nuestros proyectos RFID con otros microcontroladores.