무선 주파수 식별 (RFID) 은 무선 주파수를 사용하여 RFID 카드 또는 태그에 저장된 정보를 읽습니다. 이 프로젝트에서 우리는 8051 마이크로 컨트롤러 와 함께 EM-18 RFID 리더 를 인터페이스 하고 16 * 2 LCD 디스플레이에 RFID 카드 번호를 표시 할 것입니다. 이 무선 RF 식별은 RFID 기반 출석 시스템, 보안 시스템, 투표 기계 등과 같은 많은 시스템에서 사용됩니다.이 프로젝트는 또한 8051 마이크로 컨트롤러와 16 * 2 LCD의 적절한 인터페이스 역할을 할 것입니다.
필요한 구성 요소:
- 8051 마이크로 컨트롤러
- EM-18 RFID 리더
- 16 * 2 LCD 디스플레이
- RFID 카드 / 태그
- 전위차계
- 점퍼 와이어
회로도:
8051 마이크로 컨트롤러:
8051 마이크로 컨트롤러는 128 바이트 온칩 RAM, 4K 바이트 온칩 ROM, 2 개의 타이머, 1 개의 직렬 포트 및 4 개의 8 비트 포트가있는 8 비트 마이크로 컨트롤러입니다. 8052 마이크로 컨트롤러는 마이크로 컨트롤러의 확장입니다. 아래 표는 8051 가족 구성원의 비교를 보여줍니다.
특색 |
8051 |
8052 |
ROM (바이트) |
4K |
8K |
RAM (바이트) |
128 |
256 |
타이머 |
2 |
삼 |
I / O 핀 |
32 |
32 |
직렬 포트 |
1 |
1 |
인터럽트 소스 |
6 |
8 |
16x2 LCD:
16 * 2 LCD는 임베디드 애플리케이션에 널리 사용되는 디스플레이입니다. 다음은 16 * 2 LCD 디스플레이의 핀 및 작동에 대한 간략한 설명입니다. LCD 내부에는 두 개의 매우 중요한 레지스터가 있습니다. 데이터 레지스터와 명령 레지스터입니다. 명령 레지스터는 클리어 디스플레이, 집의 커서 등과 같은 명령을 보내는 데 사용되며 데이터 레지스터는 16 * 2 LCD에 표시 될 데이터를 보내는 데 사용됩니다. 아래 표는 16 * 2 LCD의 핀 설명입니다.
핀 |
상징 |
I / O |
기술 |
1 |
대 |
- |
바닥 |
2 |
Vdd |
- |
+ 5V 전원 공급 장치 |
삼 |
Vee |
- |
대비를 제어하는 전원 공급 장치 |
4 |
RS |
나는 |
명령 레지스터의 경우 RS = 0, 데이터 레지스터 용 RS = 1 |
5 |
RW |
나는 |
쓰기의 경우 R / W = 0, 읽기의 경우 R / W = 1 |
6 |
이자형 |
I / O |
활성화 |
7 |
D0 |
I / O |
8 비트 데이터 버스 (LSB) |
8 |
D1 |
I / O |
8 비트 데이터 버스 |
9 |
D2 |
I / O |
8 비트 데이터 버스 |
10 |
D3 |
I / O |
8 비트 데이터 버스 |
11 |
D4 |
I / O |
8 비트 데이터 버스 |
12 |
D5 |
I / O |
8 비트 데이터 버스 |
13 |
D6 |
I / O |
8 비트 데이터 버스 |
14 |
D7 |
I / O |
8 비트 데이터 버스 (MSB) |
15 |
ㅏ |
- |
백라이트 용 + 5V |
16 |
케이 |
- |
바닥 |
아래 표는 자주 사용되는 LCD 명령 코드를 보여줍니다.
코드 (16 진수) |
기술 |
01 |
명확한 디스플레이 화면 |
06 |
커서 증가 (오른쪽 이동) |
0A |
디스플레이 꺼짐, 커서 켜짐 |
0C |
표시 켜기, 커서 끄기 |
0F |
에 표시, 커서 깜박임 |
80 |
커서를 첫 번째 줄의 시작 부분으로 이동 |
C0 |
커서를 두 번째 줄의 시작으로 강제 이동 |
38 |
2 줄 및 5 * 7 매트릭스 |
EM-18 RFID 리더:
EM-18 RFID 리더기는 125KHz에서 작동하며 온칩 안테나와 함께 제공되며 5V 전원 공급 장치로 전원을 공급할 수 있습니다. weigand 출력과 함께 직렬 출력을 제공합니다. 범위는 약 8-12cm입니다. 직렬 통신 매개 변수는 9600bps, 8 데이터 비트, 1 정지 비트입니다. 그 응용 프로그램에는 인증, 전자 유료 도로 가격, 대중 교통 전자 발권, 출석 시스템 등이 포함됩니다. 여기에서 모든 RFID 프로젝트를 확인하십시오.
EM-18 RFID 리더에서 제공하는 출력은 12 자리 ASCII 형식입니다. 12 자리 중 처음 10 자리는 카드 번호이고 마지막 두 자리는 카드 번호의 XOR 결과입니다. 마지막 두 자리는 오류 검사에 사용됩니다.
예를 들어 리더에서 읽은 카드 번호는 0200107D0D62이고 카드의 카드 번호는 다음과 같습니다.
02 – 서문
00107D0D = 1080589 (10 진수).
62는 (02 XOR 00 XOR 10 XOR 7D XOR 0D)에 대한 XOR 값입니다.
따라서 카드의 번호는 0001080589입니다.
작업 및 코드 설명:
이 프로젝트 의 전체 C 프로그램 및 데모 비디오 는이 프로젝트의 끝에 제공됩니다. 코드는 의미있는 작은 청크로 분할되어 아래에 설명되어 있습니다.
8051 마이크로 컨트롤러와 인터페이스하는 16 * 2 LCD의 경우 16 * 2 LCD가 8051 마이크로 컨트롤러에 연결되는 핀을 정의해야합니다. 16 * 2 lcd의 RS 핀은 P3.7에 연결되고 16 * 2 lcd의 RW 핀은 P3.6에 연결되고 16 * 2 lcd의 E 핀은 P3.5에 연결됩니다. 데이터 핀은 8051 마이크로 컨트롤러의 포트 1에 연결됩니다.
sbit rs = P3 ^ 7; sbit rw = P3 ^ 6; sbit en = P3 ^ 5;
다음으로 프로그램에서 사용되는 몇 가지 기능 을 정의 해야합니다. 지연 기능은 지정된 시간 지연을 생성하는 데 사용됩니다. Cmdwrt 기능은 16 * 2 LCD 디스플레이에 명령을 보내는 데 사용됩니다. datawrt 기능은 16 * 2 LCD 디스플레이로 데이터를 보내는 데 사용됩니다. Rxdata 기능은 직렬 포트에서 데이터를 수신하는 데 사용됩니다.
무효 지연 (unsigned int); void cmdwrt (부호없는 문자); void datawrt (unsigned char); char rxdata (void);
코드의이 부분에서는 직렬 통신을 위해 8051 마이크로 컨트롤러 를 구성 할 것 입니다.
TMOD 레지스터는 타이머 1, 모드 2 (자동 다시로드)에 대해 0x20으로로드됩니다. SCON 레지스터는 8 데이터 비트, 1 정지 비트 및 수신 활성화에 대해 0x50으로로드됩니다. TH1 레지스터는 초당 9600 비트의 전송 속도에 대해 0xfd로로드됩니다. TR1 = 1은 타이머를 시작하는 데 사용됩니다.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1;
코드의이 부분에서는 16 * 2 LCD에 명령을 보냅니다. clear display, increment cursor, force the cursor to start of first line 과 같은 명령 은 지정된 시간 지연 후 하나씩 16 * 2 LCD 디스플레이로 전송됩니다.
for (i = 0; i <5; i ++) {cmdwrt (cmd); 지연 (1); }
코드의이 부분에서는 8051 마이크로 컨트롤러의 직렬 인터페이스를 통해 EM-18 RFID 리더 의 출력을 수신하고 변수에 저장합니다. Count 는 수신 된 바이트 수를 추적하는 데 사용됩니다. 12 바이트의 데이터가 모두 수신되면 다음으로 16 * 2 LCD 디스플레이에 표시해야합니다. 이 과정은 다른 카드를 읽기 위해 영원히 반복됩니다.
while (1) {count = 0; cmdwrt (0xC2); while (count <12) {input = rxdata (); count ++; } for (i = 0; i <12; i ++) {datawrt (input); 지연 (1); } 지연 (100); }
코드의이 부분에서는 16 * 2 LCD 디스플레이에 명령을 보냅니다. 이 명령은 8051 마이크로 컨트롤러의 포트 1에 복사됩니다. RS는 명령 쓰기를 위해 낮게 설정됩니다. 쓰기 작업을 위해 RW가 낮게 설정됩니다. 명령 쓰기 작업을 시작하기 위해 활성화 (E) 핀에 하이에서 로우 펄스가 적용됩니다.
void cmdwrt (unsigned char x) {P1 = x; rs = 0; rw = 0; en = 1; 지연 (1); en = 0; }
코드의이 부분에서는 16 * 2 LCD 디스플레이로 데이터를 전송합니다. 데이터는 8051 마이크로 컨트롤러의 포트 1에 복사됩니다. RS는 명령 쓰기를 위해 높게 설정됩니다. 쓰기 작업을 위해 RW가 낮게 설정됩니다. Enable (E) 핀에 High에서 Low 펄스가 적용되어 데이터 쓰기 작업을 시작합니다.
void datawrt (unsigned char y) {P1 = y; rs = 1; rw = 0; en = 1; 지연 (1); en = 0; } 또한 다른 마이크로 컨트롤러로 모든 RFID 프로젝트를 확인하십시오.