- Potrebne komponente:
- Shema vezja:
- 8051 Mikrokrmilnik:
- LCD 16x2:
- Bralnik RF-EM-18:
- Razlaga dela in kode:
Identifikacija radijskih frekvenc (RFID) uporablja radijsko frekvenco za branje informacij, shranjenih na kartici ali oznaki RFID. V tem projektu bomo prešli na vmesnik EM-18 RFID čitalnik z mikrokrmilnikom 8051 in prikazali številko kartice RFID na 16 * 2 LCD zaslonu. Ta brezžična RF identifikacija se uporablja v številnih sistemih, kot je RFID Attendance System, varnostni sistemi, glasovalni stroji itd. Ta projekt bo služil tudi kot pravilno povezovanje 16 * 2 LCD z mikrokrmilnikom 8051.
Potrebne komponente:
- 8051 mikrokrmilnik
- Čitalnik RF-EM-18
- 16 * 2 LCD zaslon
- Kartice / oznake RFID
- Potenciometer
- Jumper žice
Shema vezja:
8051 Mikrokrmilnik:
8051 mikrokrmilnik je 8-bitni mikrokrmilnik, ki ima 128 bajtov čipov RAM-a, 4K bajtov čipa ROM, dva časovnika, eno serijsko vrata in štiri 8-bitna vrata. 8052 mikrokrmilnik je podaljšek mikrokrmilnika. Spodnja tabela prikazuje primerjavo 8051 družinskih članov.
Značilnost |
8051 |
8052 |
ROM (v bajtih) |
4K |
8K |
RAM (bajti) |
128 |
256 |
Časovniki |
2. |
3. |
I / O zatiči |
32 |
32 |
Zaporedna vrata |
1. |
1. |
Prekinite vire |
6. |
8. |
LCD 16x2:
16 * 2 LCD je široko uporabljen zaslon za vdelane aplikacije. Tu je kratka razlaga o zatičih in delovanju 16 * 2 LCD zaslona. Znotraj LCD-ja sta dva zelo pomembna registra. So register podatkov in register ukazov. Ukazni register se uporablja za pošiljanje ukazov, kot so jasen prikaz, kurzor doma itd., Podatkovni register pa za pošiljanje podatkov, ki bodo prikazani na 16 * 2 LCD. Spodnja tabela prikazuje pin opis 16 * 2 lcd.
Pin |
Simbol |
V / I |
Opis |
1. |
Vss |
- |
Tla |
2. |
Vdd |
- |
+ 5V napajalnik |
3. |
Vee |
- |
Napajanje za nadzor kontrasta |
4. |
RS |
jaz |
RS = 0 za ukazni register, RS = 1 za podatkovni register |
5. |
RW |
jaz |
R / W = 0 za pisanje, R / W = 1 za branje |
6. |
E |
V / I |
Omogoči |
7. |
D0 |
V / I |
8-bitno podatkovno vodilo (LSB) |
8. |
D1 |
V / I |
8-bitno podatkovno vodilo |
9. |
D2 |
V / I |
8-bitno podatkovno vodilo |
10. |
D3 |
V / I |
8-bitno podatkovno vodilo |
11. |
D4 |
V / I |
8-bitno podatkovno vodilo |
12. |
D5 |
V / I |
8-bitno podatkovno vodilo |
13. |
D6 |
V / I |
8-bitno podatkovno vodilo |
14. |
D7 |
V / I |
8-bitno podatkovno vodilo (MSB) |
15. |
A |
- |
+ 5V za osvetlitev ozadja |
16. |
K |
- |
Tla |
Spodnja tabela prikazuje pogosto uporabljene ukazne kode LCD.
Koda (šestnajstiška) |
Opis |
01 |
Čist zaslon |
06 |
Povečaj kurzor (desni premik) |
0A |
Zaslon izklopljen, kurzor vklopljen |
0C |
Zaslon vklopljen, kurzor izklopljen |
0F |
Zaslon vklopljen, kurzor utripa |
80 |
Premaknite kazalko na začetek prve vrstice |
C0 |
Premaknite kazalko na začetek 2. vrstice |
38 |
2 vrstici in matrica 5 * 7 |
Bralnik RF-EM-18:
Čitalnik RF-EM-18 deluje pri 125 KHz, ima vgrajeno anteno in ga lahko napajate s 5V napajalnikom. Zagotavlja serijski izhod skupaj z izhodom weigand. Razpon je približno 8-12 cm. parametri serijske komunikacije so 9600 bps, 8 podatkovnih bitov, 1 stop bit. Njene aplikacije vključujejo preverjanje pristnosti, določanje cen cestnin po e-plačilu, e-vozovnice za javni prevoz, sisteme za spremljanje itd. Vse projekte RFID preverite tukaj.
Izhod, ki ga zagotavlja bralnik RF-EM-18, je v 12-mestni obliki ASCII. Od 12 števk je prvih 10 številk številka kartice, zadnji dve števki pa sta XOR rezultat številke kartice. Zadnji dve števki se uporabljata za preverjanje napak.
Številka kartice je na primer 0200107D0D62, ki jo prebere čitalnik, potem bo številka kartice na kartici, kot je prikazano spodaj.
02 - preambula
00107D0D = 1080589 v decimalkah.
62 je vrednost XOR za (02 XOR 00 XOR 10 XOR 7D XOR 0D).
Številka na kartici je torej 0001080589.
Razlaga dela in kode:
Celoten program C in predstavitev video za ta projekt je navedena na koncu tega projekta. Koda je razdeljena na majhne pomembne koščke in je razložena spodaj.
Za povezavo LCD 16 * 2 z mikrokrmilnikom 8051 moramo določiti nožice, na katere je 16 * 2 lcd priključen na mikrokrmilnik 8051. RS pin 16 * 2 lcd je povezan s P3.7, RW pin 16 * 2 lcd je povezan s P3.6 in E pin 16 * 2 lcd je povezan s P3.5. Podatkovni zatiči so priključeni na vrata 1 mikrokrmilnika 8051.
sbit rs = P3 ^ 7; sbit rw = P3 ^ 6; sbit en = P3 ^ 5;
Nato moramo definirati nekatere funkcije, ki se uporabljajo v programu. Funkcija zakasnitve se uporablja za ustvarjanje določene časovne zakasnitve. Funkcija Cmdwrt se uporablja za pošiljanje ukazov na 16 * 2 lcd zaslon. funkcija datawrt se uporablja za pošiljanje podatkov na 16 * 2 lcd zaslon. Funkcija Rxdata se uporablja za sprejemanje podatkov iz serijskih vrat.
zamuda pred praznino (nepodpisan int); void cmdwrt (nepodpisani znak); void datawrt (nepodpisani znak); char rxdata (praznina);
V tem delu kode bomo konfigurirali mikrokrmilnik 8051 za serijsko komunikacijo.
Register TMOD je naložen z 0x20 za časovnik 1, način 2 (samodejno ponovno nalaganje). Register SCON je naložen z 0x50 za 8 podatkovnih bitov, 1 stop-bit in sprejem je omogočen. Register TH1 je naložen z 0xfd za hitrost prenosa 9600 bitov na sekundo. TR1 = 1 se uporablja za zagon časovnika.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1;
V tem delu kode pošiljamo ukaze na 16 * 2 lcd. Ukazi, kot so jasen prikaz, prirastek kurzorja, prisili kazalko na začetek prve vrstice, se po določeni časovni zakasnitvi pošljejo na zaslon 16 * 2 lcd enega za drugim.
za (i = 0; i <5; i ++) {cmdwrt (cmd); zamuda (1); }
V tem delu kode prejmemo izhod bralnika EM-18 RFID prek serijskega vmesnika mikrokrmilnika 8051 in ga shranimo v spremenljivko. Števec se uporablja za sledenje števila prejetih bajtov. Ko prejmete vseh 12 bajtov podatkov, jih moramo nato prikazati na 16 * 2 lcd zaslonu. Ta postopek se za vedno bere z različnih kart.
medtem ko (1) {štetje = 0; cmdwrt (0xC2); while (count <12) {input = rxdata (); štetje ++; } for (i = 0; i <12; i ++) {datawrt (input); zamuda (1); } zamuda (100); }
V tem delu kode pošiljamo ukaze na 16 * 2 lcd zaslon. Ukaz se kopira v vrata 1 mikrokrmilnika 8051. RS je za pisanje ukazov nizka. RW je nizka za pisanje. Visoki do nizki impulz se uporabi na zatiču (E) za zagon operacije pisanja ukaza.
void cmdwrt (nepodpisani char x) {P1 = x; rs = 0; rw = 0; en = 1; zamuda (1); en = 0; }
V tem delu kode podatke pošiljamo na 16 * 2 lcd zaslon. Podatki se kopirajo v vrata 1 mikrokrmilnika 8051. RS je visok za pisanje ukazov. RW je nizka za pisanje. Visoki do nizki impulz se uporabi na zatiču (E) za zagon operacije zapisovanja podatkov.
void datawrt (nepodpisani znak y) {P1 = y; rs = 1; rw = 0; en = 1; zamuda (1); en = 0; } Preverite tudi vse naše projekte RFID pri drugih mikrokrmilnikih.