- Componentes necessários:
- Diagrama de circuito:
- Microcontrolador 8051:
- LCD 16x2:
- Leitor RFID EM-18:
- Explicação de funcionamento e código:
Identificação por radiofrequência (RFID) usa radiofrequência para ler informações armazenadas em um cartão ou etiqueta RFID. Neste projeto vamos fazer a interface do leitor RFID EM-18 com o microcontrolador 8051 e exibir o número do cartão RFID em um display LCD 16 * 2. Esta identificação de RF sem fio é usada em muitos sistemas como RFID Based Attendance System, sistemas de segurança, máquinas de votação, etc. Este projeto também servirá como uma interface adequada de 16 * 2 LCD com 8051 microcontrolador.
Componentes necessários:
- Microcontrolador 8051
- Leitor RFID EM-18
- Visor LCD 16 * 2
- Cartões / etiquetas RFID
- Potenciômetro
- Fios de ligação
Diagrama de circuito:
Microcontrolador 8051:
O microcontrolador 8051 é um microcontrolador de 8 bits que possui 128 bytes de RAM no chip, 4K bytes de ROM no chip, dois temporizadores, uma porta serial e quatro portas de 8 bits. O microcontrolador 8052 é uma extensão do microcontrolador. A tabela abaixo mostra a comparação de 8051 membros da família.
Característica |
8051 |
8052 |
ROM (em bytes) |
4K |
8K |
RAM (bytes) |
128 |
256 |
Cronômetros |
2 |
3 |
Pinos de I / O |
32 |
32 |
Porta serial |
1 |
1 |
Fontes de interrupção |
6 |
8 |
LCD 16x2:
16 * 2 LCD é um display amplamente utilizado para aplicações embarcadas. Aqui está uma breve explicação sobre os pinos e o funcionamento do display LCD 16 * 2. Existem dois registros muito importantes dentro do LCD. Eles são registro de dados e registro de comando. O registro de comando é usado para enviar comandos como exibição clara, cursor em casa, etc., o registro de dados é usado para enviar dados que devem ser exibidos no LCD 16 * 2. A tabela abaixo mostra a descrição do pino de 16 * 2 lcd.
PIN |
Símbolo |
I / O |
Descrição |
1 |
Vss |
- |
Terra |
2 |
Vdd |
- |
Fonte de alimentação + 5V |
3 |
Vee |
- |
Fonte de alimentação para controlar o contraste |
4 |
RS |
Eu |
RS = 0 para registro de comando, RS = 1 para registro de dados |
5 |
RW |
Eu |
R / W = 0 para gravação, R / W = 1 para leitura |
6 |
E |
I / O |
Habilitar |
7 |
D0 |
I / O |
Barramento de dados de 8 bits (LSB) |
8 |
D1 |
I / O |
Barramento de dados de 8 bits |
9 |
D2 |
I / O |
Barramento de dados de 8 bits |
10 |
D3 |
I / O |
Barramento de dados de 8 bits |
11 |
D4 |
I / O |
Barramento de dados de 8 bits |
12 |
D5 |
I / O |
Barramento de dados de 8 bits |
13 |
D6 |
I / O |
Barramento de dados de 8 bits |
14 |
D7 |
I / O |
Barramento de dados de 8 bits (MSB) |
15 |
UMA |
- |
+ 5V para luz de fundo |
16 |
K |
- |
Terra |
A tabela abaixo mostra os códigos de comando LCD usados com freqüência.
Código (hex) |
Descrição |
01 |
Limpar tela de exibição |
06 |
Incrementar o cursor (deslocamento para a direita) |
0A |
Display desligado, cursor ligado |
0C |
Display ligado, cursor desligado |
0F |
Display ligado, cursor piscando |
80 |
Forçar o cursor para o início da 1 st linha |
C0 |
Força o cursor para o início da 2ª linha |
38 |
2 linhas e matriz 5 * 7 |
Leitor RFID EM-18:
O leitor RFID EM-18 opera a 125 KHz e vem com uma antena no chip e pode ser alimentado com fonte de alimentação de 5V. Ele fornece saída serial junto com saída de peso. O alcance é de cerca de 8-12 cm. os parâmetros de comunicação serial são 9600bps, 8 bits de dados, 1 bit de parada. Suas aplicações incluem Autenticação, tarifação de pedágio eletrônico, bilhetagem eletrônica para transporte público, sistemas de atendimento etc. Verifique todos os Projetos RFID aqui.
A saída fornecida pelo leitor RFID EM-18 está no formato ASCII de 12 dígitos. Dos 12 dígitos, os primeiros 10 dígitos são o número do cartão e os dois últimos dígitos são o resultado XOR do número do cartão. Os dois últimos dígitos são usados para verificação de erros.
Por exemplo, o número do cartão é 0200107D0D62 lido do leitor, então o número do cartão no cartão será como abaixo.
02 - preâmbulo
00107D0D = 1080589 em decimal.
62 é o valor XOR para (02 XOR 00 XOR 10 XOR 7D XOR 0D).
Portanto, o número no cartão é 0001080589.
Explicação de funcionamento e código:
O programa C completo e o vídeo de demonstração para este projeto são fornecidos no final deste projeto. O código é dividido em pequenos pedaços significativos e explicado a seguir.
Para interface de LCD 16 * 2 com microcontrolador 8051, temos que definir os pinos nos quais o LCD 16 * 2 está conectado ao microcontrolador 8051. O pino RS de 16 * 2 lcd está conectado a P3.7, o pino RW de 16 * 2 lcd está conectado a P3.6 e o pino E de 16 * 2 lcd está conectado a P3.5. Os pinos de dados são conectados à porta 1 do microcontrolador 8051.
sbit rs = P3 ^ 7; sbit rw = P3 ^ 6; sbit en = P3 ^ 5;
Em seguida, temos que definir algumas funções que são usadas no programa. A função de atraso é usada para criar um atraso de tempo especificado. A função Cmdwrt é usada para enviar comandos ao display LCD 16 * 2. A função datawrt é usada para enviar dados para o display LCD 16 * 2. A função Rxdata é usada para receber dados da porta serial.
void delay (unsigned int); void cmdwrt (unsigned char); void datawrt (unsigned char); char rxdata (vazio);
Nesta parte do código vamos configurar o microcontrolador 8051 para comunicação serial.
O registro TMOD é carregado com 0x20 para o temporizador 1, modo 2 (recarregamento automático). O registro SCON é carregado com 0x50 para 8 bits de dados, 1 bit de parada e recepção habilitada. O registro TH1 é carregado com 0xfd para uma taxa de transmissão de 9600 bits por segundo. TR1 = 1 é usado para iniciar o cronômetro.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1;
Nesta parte do código, estamos enviando comandos para 16 * 2 lcd. Comandos, tais como exposição do espaço livre, o cursor incremento, forçar o cursor para o início de uma r linha são enviados para um visor LCD 16 * 2 por um após alguns algum atraso de tempo especificado.
para (i = 0; i <5; i ++) {cmdwrt (cmd); atraso (1); }
Nesta parte do código estamos recebendo a saída do leitor RFID EM-18 através da interface serial do microcontrolador 8051 e armazenada em uma variável. A contagem é usada para controlar o número de bytes recebidos. Uma vez que todos os 12 bytes de dados são recebidos, a seguir temos que exibi-los no display LCD 16 * 2. Este processo se repete indefinidamente para a leitura de diferentes cartas.
enquanto (1) {contagem = 0; cmdwrt (0xC2); while (contagem <12) {input = rxdata (); contagem ++; } para (i = 0; i <12; i ++) {datawrt (entrada); atraso (1); } atraso (100); }
Nesta parte do código, estamos enviando comandos para um display LCD 16 * 2. O comando é copiado para a porta 1 do microcontrolador 8051. RS é reduzido para gravação de comando. RW é reduzido para operação de gravação. O pulso de alto para baixo é aplicado no pino de habilitação (E) para iniciar a operação de gravação de comando.
void cmdwrt (unsigned char x) {P1 = x; rs = 0; rw = 0; en = 1; atraso (1); en = 0; }
Nesta parte do código, estamos enviando dados para um display LCD 16 * 2. Os dados são copiados para a porta 1 do microcontrolador 8051. RS é elevado para gravação de comando. RW é reduzido para operação de gravação. O pulso alto para baixo é aplicado no pino de habilitação (E) para iniciar a operação de gravação de dados.
void datawrt (unsigned char y) {P1 = y; rs = 1; rw = 0; en = 1; atraso (1); en = 0; } Além disso, verifique todos os nossos projetos RFID com outros microcontroladores.