- Komponenter som krävs:
- Kretsschema:
- 8051 Microcontroller:
- 16x2 LCD:
- EM-18 RFID-läsare:
- Arbets- och kodförklaring:
Radio Frequency Identification (RFID) använder radiofrekvens för att läsa information som är lagrad på ett RFID-kort eller tagg. I detta projekt ska vi gränssnitt EM-18 RFID-läsare med 8051 mikrokontroller och visa RFID-kortnummer på 16 * 2 LCD-skärm. Denna trådlösa RF-identifiering används i många system som RFID-baserat närvarosystem, säkerhetssystem, röstmaskiner etc. Detta projekt kommer också att fungera som en korrekt gränssnitt mellan 16 * 2 LCD och 8051 mikrokontroller.
Komponenter som krävs:
- 8051 mikrokontroller
- EM-18 RFID-läsare
- 16 * 2 LCD-skärm
- RFID-kort / taggar
- Potentiometer
- Bygeltrådar
Kretsschema:
8051 Microcontroller:
8051 mikrokontroller är en 8-bitars mikrokontroller som har 128 byte på chip-RAM, 4K byte på chip-ROM, två timers, en seriell port och fyra 8bit-portar. 8052 mikrokontroller är en förlängning av mikrokontroller. Tabellen nedan visar jämförelsen mellan 8051 familjemedlemmar.
Funktion |
8051 |
8052 |
ROM (i byte) |
4K |
8 K |
RAM (byte) |
128 |
256 |
Timers |
2 |
3 |
I / O-stift |
32 |
32 |
Serieport |
1 |
1 |
Avbryt källor |
6 |
8 |
16x2 LCD:
16 * 2 LCD är en mycket använd skärm för inbäddade applikationer. Här är den korta förklaringen om stift och bearbetning av 16 * 2 LCD-display. Det finns två mycket viktiga register inuti LCD-skärmen. De är dataregister och kommandoregister. Kommandoregister används för att skicka kommandon som tydlig visning, markör hemma etc., dataregister används för att skicka data som ska visas på 16 * 2 LCD. Nedanstående tabell visar stiftbeskrivningen på 16 * 2 lcd.
Stift |
Symbol |
I / O |
Beskrivning |
1 |
Vss |
- |
Jord |
2 |
Vdd |
- |
+ 5V strömförsörjning |
3 |
Vee |
- |
Strömförsörjning för att kontrollera kontrasten |
4 |
RS |
Jag |
RS = 0 för kommandoregister, RS = 1 för dataregister |
5 |
RW |
Jag |
R / W = 0 för skriv, R / W = 1 för läsning |
6 |
E |
I / O |
Gör det möjligt |
7 |
D0 |
I / O |
8-bitars databuss (LSB) |
8 |
D1 |
I / O |
8-bitars databuss |
9 |
D2 |
I / O |
8-bitars databuss |
10 |
D3 |
I / O |
8-bitars databuss |
11 |
D4 |
I / O |
8-bitars databuss |
12 |
D5 |
I / O |
8-bitars databuss |
13 |
D6 |
I / O |
8-bitars databuss |
14 |
D7 |
I / O |
8-bitars databuss (MSB) |
15 |
A |
- |
+ 5V för bakgrundsbelysning |
16 |
K |
- |
Jord |
Tabellen nedan visar ofta använda LCD-kommandokoder.
Kod (hex) |
Beskrivning |
01 |
Rensa skärmen |
06 |
Stegmarkör (höger skift) |
0A |
Display av, markör på |
0C |
Display på, markör av |
0F |
Display på, markören blinkar |
80 |
Tvinga markören till början av en st line |
C0 |
Tvinga markören till början av andra raden |
38 |
2 rader och 5 * 7 matris |
EM-18 RFID-läsare:
EM-18 RFID-läsare arbetar vid 125 KHz och den levereras med en chipantenn och den kan drivas med 5V strömförsörjning. Det ger seriell utgång tillsammans med weigand-utdata. Räckvidden är cirka 8-12 cm. parametrar för seriell kommunikation är 9600 bps, 8 databitar, 1 stoppbit. Dess applikationer inkluderar autentisering, prissättning av e-vägtullar, e-biljett för kollektivtrafik, närvarosystem etc. Kontrollera alla RFID-projekt här.
Utgången från EM-18 RFID-läsaren är i 12-siffrigt ASCII-format. Av 12 siffror är de första 10 siffrorna kortnummer och de två sista siffrorna är XOR-resultatet av kortnumret. De två sista siffrorna används för felkontroll.
Till exempel är kortnummer 0200107D0D62 läst från läsaren, då kommer kortnumret på kortet att vara som nedan.
02 - ingress
00107D0D = 1080589 i decimal.
62 är XOR-värde för (02 XOR 00 XOR 10 XOR 7D XOR 0D).
Därför är numret på kortet 0001080589.
Arbets- och kodförklaring:
Det fullständiga C-programmet och demonstrationsvideon för detta projekt ges i slutet av detta projekt. Koden är uppdelad i små meningsfulla bitar och förklaras nedan.
För 16 * 2 LCD-gränssnitt med 8051 mikrokontroller måste vi definiera stift på vilka 16 * 2 LCD är ansluten till 8051 mikrokontroller. RS-stift på 16 * 2 lcd är ansluten till P3.7, RW-stift på 16 * 2 lcd är ansluten till P3.6 och E-stift på 16 * 2 lcd är ansluten till P3.5. Datapinnar är anslutna till port 1 på 8051 mikrokontroller.
sbit rs = P3 ^ 7; sbit rw = P3 ^ 6; sbit en = P3 ^ 5;
Därefter måste vi definiera några funktioner som används i programmet. Fördröjningsfunktionen används för att skapa specificerad tidsfördröjning. Cmdwrt- funktionen används för att skicka kommandon till 16 * 2 LCD-skärm. datawrt- funktionen används för att skicka data till 16 * 2 LCD-skärm. Rxdata- funktionen används för att ta emot data från seriell port.
ogiltig fördröjning (osignerad int); ogiltig cmdwrt (osignerad röd); ogiltig datawrt (osignerad char); char rxdata (ogiltigt);
I den här delen av koden ska vi konfigurera 8051 mikrokontroller för seriell kommunikation.
TMOD-registret laddas med 0x20 för timer 1, läge 2 (automatisk laddning). SCON-registret laddas med 0x50 för 8 databitar, 1 stoppbit och mottagning aktiverad. TH1-registret laddas med 0xfd för överföringshastighet på 9600 bitar per sekund. TR1 = 1 används för att starta timern.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1;
I den här delen av koden skickar vi kommandon till 16 * 2 lcd. Kommandon såsom tydlig display, inkrement markören, tvinga markören till början av en st linje sänds till 16 * 2 LCD display en efter en efter en viss specificerad tidsfördröjning.
för (i = 0; i <5; i ++) {cmdwrt (cmd); fördröjning (1); }
I den här delen av koden tar vi emot utgången från EM-18 RFID- läsaren via det seriella gränssnittet på 8051 mikrokontroller och lagras i en variabel. Antal används för att hålla reda på antalet mottagna byte. När alla 12bytes data har tagits emot måste vi sedan visa den på 16 * 2 LCD-skärm. Denna process upprepas för alltid för att läsa olika kort.
medan (1) {count = 0; cmdwrt (0xC2); medan (räkna <12) {input = rxdata (); räkna ++; } för (i = 0; i <12; i ++) {datawrt (input); fördröjning (1); } fördröjning (100); }
I denna del av koden skickar vi kommandon till 16 * 2 LCD-skärm. Kommandot kopieras till port 1 på 8051 mikrokontroller. RS är låg för kommandoskrivning. RW görs lågt för skrivoperation. Hög till låg puls appliceras på aktiveringsstift (E) för att starta kommandoskrivning.
ogiltig cmdwrt (osignerad char x) {P1 = x; rs = 0; rw = 0; en = 1; fördröjning (1); en = 0; }
I den här delen av koden skickar vi data till 16 * 2 LCD-skärm. Uppgifterna kopieras till port 1 på 8051 mikrokontroller. RS görs högt för kommandoskrivning. RW görs lågt för skrivoperation. Hög till låg puls appliceras på aktiveringsstift (E) för att starta dataskrivning.
ogiltig datawrt (osignerad char y) {P1 = y; rs = 1; rw = 0; en = 1; fördröjning (1); en = 0; } Kontrollera också alla våra RFID-projekt med andra mikrokontroller.