- Szükséges alkatrészek:
- Kördiagramm:
- 8051 mikrokontroller:
- 16x2 LCD:
- EM-18 RFID olvasó:
- Munka és kód magyarázat:
A rádiófrekvenciás azonosítás (RFID) rádiófrekvenciát használ az RFID-kártyán vagy címkében tárolt információk olvasására. Ebben a projektben az Interface EM-18 RFID olvasót fogjuk 8051 mikrovezérlõvel ellátni, és az RFID kártya számát 16 * 2 LCD kijelzõn jelenítjük meg. Ezt a vezeték nélküli rádiófrekvenciás azonosítót számos rendszerben használják, például RFID alapú részvételi rendszerben, biztonsági rendszerekben, szavazógépekben stb. Ez a projekt a 16 * 2 LCD és a 8051 mikrovezérlő megfelelő interfészeként is szolgál.
Szükséges alkatrészek:
- 8051 mikrovezérlő
- EM-18 RFID olvasó
- 16 * 2 LCD kijelző
- RFID kártyák / címkék
- Potenciométer
- Jumper huzalok
Kördiagramm:
8051 mikrokontroller:
A 8051 mikrokontroller egy 8 bites mikrovezérlő, amely 128 bájt chip RAM-mal, 4K bájt chip ROM-on, két időzítővel, egy soros és négy 8 bites porttal rendelkezik. A 8052 mikrovezérlő a mikrovezérlő kiterjesztése. Az alábbi táblázat 8051 családtag összehasonlítását mutatja.
Funkció |
8051 |
8052 |
ROM (bájtban) |
4K |
8K |
RAM (bájt) |
128 |
256 |
Időzítők |
2 |
3 |
I / O csapok |
32 |
32 |
Soros port |
1 |
1 |
Megszakító források |
6. |
8. |
16x2 LCD:
A 16 * 2 LCD széles körben használt kijelző beágyazott alkalmazásokhoz. Ez a rövid magyarázat a csapokról és a 16 * 2 LCD kijelző működéséről. Az LCD-n belül két nagyon fontos regiszter található. Ezek adatregiszter és parancsregiszter. A parancsregiszter olyan parancsok küldésére szolgál, mint például a tiszta kijelzés, a kurzor otthon stb., Az adatregiszter segítségével adatokat küldhetünk, amelyeket a 16 * 2 LCD-n kell megjeleníteni. Az alábbi táblázat a 16 * 2 lbd tű leírását mutatja.
Pin |
Szimbólum |
I / O |
Leírás |
1 |
Vss |
- |
Talaj |
2 |
Vdd |
- |
+ 5V tápegység |
3 |
Vee |
- |
Tápegység a kontraszt szabályozásához |
4 |
RS |
én |
RS = 0 a parancsregiszterhez, RS = 1 az adatregiszterhez |
5. |
RW |
én |
R / W = 0 írás, R / W = 1 olvasás esetén |
6. |
E |
I / O |
Engedélyezze |
7 |
D0 |
I / O |
8 bites adat busz (LSB) |
8. |
D1 |
I / O |
8 bites adat busz |
9. |
D2 |
I / O |
8 bites adat busz |
10. |
D3 |
I / O |
8 bites adat busz |
11. |
D4 |
I / O |
8 bites adat busz |
12. |
D5 |
I / O |
8 bites adat busz |
13. |
D6 |
I / O |
8 bites adat busz |
14 |
D7 |
I / O |
8 bites adat busz (MSB) |
15 |
A |
- |
+ 5V a háttérvilágításhoz |
16. |
K |
- |
Talaj |
Az alábbi táblázat a gyakran használt LCD parancskódokat mutatja.
Kód (hatszög) |
Leírás |
01 |
Tiszta kijelző |
06 |
Növekedési kurzor (jobb eltolás) |
0A |
Kijelző ki, kurzor be van kapcsolva |
0C |
Kijelző be, kurzor ki |
0F |
Kijelző be van kapcsolva, a kurzor villog |
80 |
Kényszeríteni a kurzort kezdődő 1 -jén sor |
C0 |
Kényszeríteni a kurzort beginningof 2 nd vonal |
38 |
2 sor és 5 * 7 mátrix |
EM-18 RFID olvasó:
Az EM-18 RFID-olvasó 125 KHz-en működik, chipen lévő antennával van ellátva, és 5 V-os tápfeszültséggel is táplálható. Soros kimenetet biztosít a weigand kimenettel együtt. A hatótávolság 8-12 cm körül van. a soros kommunikációs paraméterek 9600 bps, 8 adatbit, 1 stopbit. Alkalmazásai közé tartozik a hitelesítés, az úthasználati díjak, a tömegközlekedés e-jegykiadása, a jelenléti rendszerek stb.
Az EM-18 RFID olvasó kimenete 12 jegyű ASCII formátumú. A 12 számjegyből az első 10 számjegy a kártya száma, az utolsó két számjegy pedig a kártya számának XOR eredménye. Az utolsó két számjegyet használjuk a hibák ellenőrzésére.
Például a kártya száma 0200107D0D62 olvasható le az olvasóról, akkor a kártyán lévő kártya száma az alábbiak szerint lesz.
02 - preambulum
00107D0D = 1080589 tizedesjegyben.
62 a XOR értéke (02 XOR 00 XOR 10 XOR 7D XOR 0D).
Ezért a kártya száma 0001080589.
Munka és kód magyarázat:
A projekt teljes C programja és bemutatóvideója a projekt végén található. A kódot apró, értelmes darabokra osztják, és az alábbiakban elmagyarázzák.
A 16 * 2 LCD interfészhez a 8051 mikrovezérlővel meg kell határoznunk azokat a csapokat, amelyeken 16 * 2 lcd van csatlakoztatva a 8051 mikrovezérlőhöz. 16 * 2 lcd-s RS tű csatlakozik a P3.7-hez, RW 16 * 2 lcd-s csatlakozó van csatlakoztatva a P3.6-hoz, és az E-tű 16 * 2 lcd-t a P3.5-hez. Az adatcsapok a 8051 mikrokontroller 1. portjához vannak csatlakoztatva.
sbit rs = P3 ^ 7; sbit rw = P3 ^ 6; sbit en = P3 ^ 5;
Ezután meg kell határoznunk néhány programban használt funkciót. A késleltetés funkció a megadott késleltetés létrehozására szolgál. A Cmdwrt funkció segítségével parancsokat küldhetünk 16 * 2 lcd kijelzőre. A datawrt funkció az adatok 16 * 2 lcd kijelzőre történő elküldésére szolgál. Az Rxdata függvény az adatok fogadására szolgál a soros portról.
void delay (aláíratlan int); void cmdwrt (aláíratlan karakter); void datawrt (aláíratlan karakter); char rxdata (érvénytelen);
A kód ezen részében konfigurálni fogjuk a 8051 mikrovezérlőt a soros kommunikációhoz.
A TMOD regiszter 0x20-mal van töltve az 1. időzítőhöz, 2. módhoz (automatikus újratöltés). A SCON regiszter 0x50-tel van betöltve 8 adatbitre, 1 stopbitre és a vétel engedélyezve. A TH1 regiszter 0xfd-vel van töltve, 9600 bit / másodperc sebességgel. TR1 = 1 az időzítő elindításához.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1;
A kód ezen részében 16 * 2 lcd-re küldünk parancsokat. Az olyan parancsok, mint a tiszta kijelzés, a növekményes kurzor, a kurzor kényszerítése az 1. sor elejére, bizonyos meghatározott késleltetés után egyesével 16 * 2 lcd kijelzőre kerülnek.
for (i = 0; i <5; i ++) {cmdwrt (cmd); késés (1); }
A kód ezen részében az EM-18 RFID olvasó kimenetét kapjuk a 8051 mikrovezérlő soros interfészén keresztül, és egy változóban tároljuk. A Count a követett bájtok számának nyomon követésére szolgál. Miután megkapta az összes 12 bájt adatot, a következőt 16 * 2 lcd kijelzőn kell megjelenítenünk. Ezt a folyamatot örökké megismétlik a különböző kártyák elolvasása érdekében.
míg (1) {számít = 0; cmdwrt (0xC2); while (számolás <12) {input = rxdata (); szám ++; } for (i = 0; i <12; i ++) {datawrt (bemenet); késés (1); } késleltetés (100); }
A kód ezen részében parancsokat küldünk 16 * 2 lcd kijelzőre. A parancs átmásolódik a 8051 mikrokontroller 1. portjába. Az RS alacsony a parancsíráshoz. Az RW alacsony az írási műveletekhez. Magas vagy alacsony impulzus van érvényben az engedélyező (E) csapon a parancsírási művelet megkezdéséhez.
void cmdwrt (előjel nélküli karakter x) {P1 = x; rs = 0; rw = 0; en = 1; késés (1); en = 0; }
A kód ezen részében 16 * 2 lcd kijelzőre küldünk adatokat. Az adatokat átmásoljuk a 8051 mikrokontroller 1. portjába. Az RS magas szintű a parancsíráshoz. Az RW alacsony az írási műveletekhez. Az engedélyezési (E) csapon az alacsony vagy magas impulzus van érvényben az adatírás megkezdéséhez.
void datawrt (aláíratlan karakter y) {P1 = y; rs = 1; rw = 0; en = 1; késés (1); en = 0; } Ezenkívül ellenőrizze az összes RFID-projektünket más mikrovezérlőkkel.