- Nødvendige komponenter:
- Kredsløbsdiagram:
- 8051 Mikrocontroller:
- 16x2 LCD:
- EM-18 RFID-læser:
- Arbejds- og kodeforklaring:
Radio Frequency Identification (RFID) bruger radiofrekvens til at læse information gemt på et RFID-kort eller tag. I dette projekt skal vi interface EM-18 RFID-læser med 8051 mikrokontroller og vise RFID-kortnummer på 16 * 2 LCD-skærm. Denne trådløse RF-identifikation bruges i mange systemer som RFID-baseret tilstedeværelsessystem, sikkerhedssystemer, stemmemaskiner osv. Dette projekt fungerer også som en korrekt grænseflade mellem 16 * 2 LCD og 8051 mikrokontroller.
Nødvendige komponenter:
- 8051 mikrokontroller
- EM-18 RFID-læser
- 16 * 2 LCD-skærm
- RFID-kort / tags
- Potentiometer
- Jumper ledninger
Kredsløbsdiagram:
8051 Mikrocontroller:
8051 microcontroller er en 8 bit microcontroller, der har 128 byte på RAM-chip, 4K byte på chip ROM, to timere, en seriel port og fire 8-bit-porte. 8052 microcontroller er en udvidelse af microcontroller. Tabellen nedenfor viser sammenligningen af 8051 familiemedlemmer.
Funktion |
8051 |
8052 |
ROM (i byte) |
4K |
8 TUSINDE |
RAM (byte) |
128 |
256 |
Timere |
2 |
3 |
I / O-ben |
32 |
32 |
Serie Port |
1 |
1 |
Afbryd kilder |
6 |
8 |
16x2 LCD:
16 * 2 LCD er et meget brugt display til indlejrede applikationer. Her er den korte forklaring om stifter og brug af 16 * 2 LCD-display. Der er to meget vigtige registre inde i LCD'et. De er dataregister og kommandoregister. Kommandoregister bruges til at sende kommandoer såsom klar visning, markør derhjemme osv., Dataregister bruges til at sende data, der skal vises på 16 * 2 LCD. Nedenstående tabel viser pinbeskrivelsen på 16 * 2 lcd.
Pin |
Symbol |
I / O |
Beskrivelse |
1 |
Vss |
- |
Jord |
2 |
Vdd |
- |
+ 5V strømforsyning |
3 |
Vee |
- |
Strømforsyning til kontrol af kontrast |
4 |
RS |
jeg |
RS = 0 for kommandoregister, RS = 1 for dataregister |
5 |
RW |
jeg |
R / W = 0 for skrivning, R / W = 1 for læsning |
6 |
E |
I / O |
Aktiver |
7 |
D0 |
I / O |
8-bit databus (LSB) |
8 |
D1 |
I / O |
8-bit databus |
9 |
D2 |
I / O |
8-bit databus |
10 |
D3 |
I / O |
8-bit databus |
11 |
D4 |
I / O |
8-bit databus |
12 |
D5 |
I / O |
8-bit databus |
13 |
D6 |
I / O |
8-bit databus |
14 |
D7 |
I / O |
8-bit databus (MSB) |
15 |
EN |
- |
+ 5V til baggrundsbelysning |
16 |
K |
- |
Jord |
Nedenstående tabel viser hyppigt anvendte LCD-kommandokoder.
Kode (hex) |
Beskrivelse |
01 |
Ryd skærmbilledet |
06 |
Forøgelsesmarkør (højre skift) |
0A |
Display slukket, markør til |
0C |
Skærm til, markør slukket |
0F |
Displayet vises, markøren blinker |
80 |
Tving markøren til begyndelsen af en st linje |
C0 |
Tving markøren til begyndelsen af 2. linje |
38 |
2 linjer og 5 * 7 matrix |
EM-18 RFID-læser:
EM-18 RFID-læser fungerer ved 125 KHz, og den leveres med en on-chip antenne, og den kan få strøm med 5V strømforsyning. Det giver seriel output sammen med weigand-output. Rækken er omkring 8-12 cm. serielle kommunikationsparametre er 9600bps, 8 databits, 1 stopbit. Dens applikationer inkluderer godkendelse, e-toll vejprissætning, e-billet til offentlig transport, fremmøde systemer osv. Tjek alle RFID-projekterne her.
Outputtet fra EM-18 RFID-læser er i 12-cifret ASCII-format. Ud af 12 cifre er de første 10 cifre kortnummer, og de sidste to cifre er XOR-resultatet af kortnummeret. De sidste to cifre bruges til fejlkontrol.
For eksempel er kortnummer 0200107D0D62 læst fra læseren, så kortnummeret på kortet vil være som nedenfor.
02 - indledning
00107D0D = 1080589 i decimal.
62 er XOR-værdi for (02 XOR 00 XOR 10 XOR 7D XOR 0D).
Derfor er nummeret på kortet 0001080589.
Arbejds- og kodeforklaring:
Det komplette C-program og demonstrationsvideo til dette projekt er givet i slutningen af dette projekt. Koden er opdelt i små meningsfulde bidder og forklaret nedenfor.
Til 16 * 2 LCD-grænseflader med 8051 mikrokontroller skal vi definere ben, hvorpå 16 * 2 LCD er forbundet til 8051 mikrokontroller. RS-stift på 16 * 2 lcd er forbundet til P3.7, RW-stift på 16 * 2 lcd er forbundet til P3.6 og E-stift på 16 * 2 lcd er forbundet til P3.5. Datapinde er forbundet til port 1 på 8051 mikrokontroller.
sbit rs = P3 ^ 7; sbit rw = P3 ^ 6; sbit en = P3 ^ 5;
Dernæst skal vi definere nogle funktioner, der bruges i programmet. Delay-funktion bruges til at oprette specificeret tidsforsinkelse. Cmdwrt- funktionen bruges til at sende kommandoer til 16 * 2 LCD-skærm. datawrt- funktion bruges til at sende data til 16 * 2 LCD-skærm. Rxdata- funktionen bruges til at modtage data fra seriel port.
ugyldig forsinkelse (usigneret int); ugyldigt cmdwrt (usigneret char); ugyldige datawrt (usigneret char); char rxdata (ugyldig);
I denne del af koden skal vi konfigurere 8051 mikrocontroller til seriel kommunikation.
TMOD-registeret er fyldt med 0x20 til timer 1, tilstand 2 (automatisk genindlæsning). SCON-registeret er indlæst med 0x50 til 8 databits, 1 stopbit og modtagelse aktiveret. TH1-registeret er indlæst med 0xfd for en baudhastighed på 9600 bits pr. Sekund. TR1 = 1 bruges til at starte timeren.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1;
I denne del af koden sender vi kommandoer til 16 * 2 lcd. Kommandoer såsom tydeligt display, tilvækst markør, tvinge markøren til begyndelsen af en st linje sendes til 16 * 2 lcd skærmen én efter én efter nogle nogle specificerede tidsforsinkelse.
for (i = 0; i <5; i ++) {cmdwrt (cmd); forsinkelse (1); }
I denne del af koden modtager vi output fra EM-18 RFID- læser gennem serielt interface på 8051 mikrokontroller og lagret i en variabel. Count bruges til at holde styr på antallet af modtagne byte. Når alle 12 bytes data er modtaget, skal vi derefter vise dem på 16 * 2 LCD-skærm. Denne proces gentages for evigt for at læse forskellige kort.
mens (1) {count = 0; cmdwrt (0xC2); mens (count <12) {input = rxdata (); tælle ++; } for (i = 0; i <12; i ++) {datawrt (input); forsinkelse (1); } forsinkelse (100); }
I denne del af koden sender vi kommandoer til 16 * 2 LCD-skærm. Kommandoen kopieres til port 1 på 8051 mikrocontroller. RS laves lavt til kommandoskrivning. RW er lavt til skrivedrift. Høj til lav puls anvendes på aktiveringstasten (E) for at starte kommandoskrivning.
ugyldigt cmdwrt (usigneret tegn x) {P1 = x; rs = 0; rw = 0; en = 1; forsinkelse (1); en = 0; }
I denne del af koden sender vi data til 16 * 2 LCD-skærm. Dataene kopieres til port 1 på 8051 mikrokontroller. RS gøres højt til kommandoskrivning. RW er lavt til skrivedrift. Høj til lav puls anvendes på aktiveringstasten (E) for at starte dataskrivning.
ugyldige datawrt (usigneret char y) {P1 = y; rs = 1; rw = 0; en = 1; forsinkelse (1); en = 0; } Tjek også vores alle RFID-projekter med andre mikrocontrollere.