- Vaaditut komponentit:
- Piirikaavio:
- 8051-mikrokontrolleri:
- 16x2 LCD:
- EM-18 RFID-lukija:
- Työskentely ja koodin selitys:
Radiotaajuustunnistus (RFID) käyttää radiotaajuutta lukemaan RFID-korttiin tai -tunnisteeseen tallennettuja tietoja. Tässä projektissa aiomme käyttää Interface EM-18 RFID-lukijaa 8051-mikrokontrollerilla ja näyttää RFID-kortin numeron 16 * 2 LCD-näytöllä. Tätä langatonta RF-tunnistusta käytetään monissa järjestelmissä, kuten RFID-pohjainen osallistumisjärjestelmä, turvajärjestelmät, äänestyskoneet jne. Tämä projekti toimii myös asianmukaisena 16 * 2 LCD-näytön ja 8051-mikrokontrollerin liitäntänä.
Vaaditut komponentit:
- 8051-mikrokontrolleri
- EM-18 RFID-lukija
- 16 * 2 LCD-näyttö
- RFID-kortit / tunnisteet
- Potentiometri
- Hyppääjän johdot
Piirikaavio:
8051-mikrokontrolleri:
8051-mikrokontrolleri on 8-bittinen mikrokontrolleri, jolla on 128 tavua sirumuistia, 4K tavua siru-ROM-levyllä, kaksi ajastinta, yksi sarjaportti ja neljä 8-bittistä porttia. 8052-mikrokontrolleri on mikrokontrollerin jatke. Alla olevassa taulukossa esitetään 8051 perheenjäsenen vertailu.
Ominaisuus |
8051 |
8052 |
ROM (tavuina) |
4K |
8K |
RAM (tavua) |
128 |
256 |
Ajastimet |
2 |
3 |
I / O-nastat |
32 |
32 |
Sarjaportti |
1 |
1 |
Keskeytä lähteet |
6 |
8 |
16x2 LCD:
16 * 2 LCD on laajasti käytetty näyttö sulautettuihin sovelluksiin. Tässä on lyhyt selitys nastoista ja 16 * 2 LCD-näytön toiminnasta. Nestekidenäytössä on kaksi erittäin tärkeää rekisteriä. Ne ovat tietorekisteri ja komentorekisteri. Komentorekisteriä käytetään komentojen, kuten tyhjennä näyttö, kohdistin kotona jne., Lähettämiseen, rekisteriä käytetään tietojen lähettämiseen, jotka on tarkoitus näyttää 16 * 2 LCD-näytöllä. Alla olevassa taulukossa on 16 * 2 lcd: n tapin kuvaus.
Tappi |
Symboli |
I / O |
Kuvaus |
1 |
Vss |
- |
Maa |
2 |
Vdd |
- |
+ 5 V virtalähde |
3 |
Vee |
- |
Virtalähde kontrastin hallitsemiseksi |
4 |
RS |
Minä |
RS = 0 komentorekisterille, RS = 1 tietorekisterille |
5 |
RW |
Minä |
R / W = 0 kirjoitettaessa, R / W = 1 luettuna |
6 |
E |
I / O |
ota käyttöön |
7 |
D0 |
I / O |
8-bittinen tietoväylä (LSB) |
8 |
D1 |
I / O |
8-bittinen tietoväylä |
9 |
D2 |
I / O |
8-bittinen tietoväylä |
10 |
D3 |
I / O |
8-bittinen tietoväylä |
11 |
D4 |
I / O |
8-bittinen tietoväylä |
12 |
D5 |
I / O |
8-bittinen tietoväylä |
13 |
D6 |
I / O |
8-bittinen tietoväylä |
14 |
D7 |
I / O |
8-bittinen tietoväylä (MSB) |
15 |
A |
- |
+ 5 V taustavalolle |
16 |
K |
- |
Maa |
Alla olevassa taulukossa näkyvät usein käytetyt LCD-komentokoodit.
Koodi (hex) |
Kuvaus |
01 |
Tyhjennä näyttö |
06 |
Lisäkohdistin (oikea siirtymä) |
0A |
Näyttö pois päältä, kohdistin päällä |
0C |
Näyttö päällä, kohdistin pois päältä |
0F |
Näyttö päällä, kohdistin vilkkuu |
80 |
Pakottaa kohdistimen alussa 1 st rivin |
C0 |
Pakottaa kohdistimen beginningof 2 toinen linja |
38 |
2 riviä ja 5 * 7 matriisi |
EM-18 RFID-lukija:
EM-18 RFID-lukija toimii 125 KHz taajuudella, siinä on siruinen antenni ja se voidaan käyttää 5 V: n virtalähteellä. Se tarjoaa sarjatuotannon yhdessä weigand-lähdön kanssa. Leveys on noin 8-12 cm. sarjaliikenneparametrit ovat 9600 bps, 8 databittiä, 1 pysäytysbitti. Sen sovelluksia ovat todennus, tietullien hinnoittelu, julkisen liikenteen verkkoliput, läsnäolojärjestelmät jne. Tarkista kaikki RFID-projektit täältä.
EM-18 RFID-lukijan antama lähtö on 12-numeroinen ASCII-muoto. 12 numerosta ensimmäiset 10 numeroa ovat kortin numero ja kaksi viimeistä numeroa ovat kortin numeron XOR-tulos. Kaksi viimeistä numeroa käytetään virhetarkistukseen.
Esimerkiksi kortin numero on 0200107D0D62 luettuna lukijalta, kortin kortin numero on seuraava.
02 - johdanto
00107D0D = 1080589 desimaalilla.
62 on XOR-arvo parametrille (02 XOR 00 XOR 10 XOR 7D XOR 0D).
Siksi kortin numero on 0001080589.
Työskentely ja koodin selitys:
Täydellinen C-ohjelma ja esittelyvideo tämän projektin annetaan lopussa tämän projektin. Koodi on jaettu pieniksi merkityksellisiksi paloiksi ja selitetty alla.
16 * 2 LCD-liitännälle 8051-mikrokontrollerin kanssa on määriteltävä nastat, joihin 16 * 2 lcd on kytketty 8051-mikrokontrolleriin. RS-nasta 16 * 2 lcd on kytketty P3.7, RW nasta 16 * 2 lcd on kytketty P3.6 ja E nasta 16 * 2 lcd on kytketty P3.5. Datanastat on kytketty 8051-mikrokontrollerin porttiin 1.
sbit rs = P3 ^ 7; sbit rw = P3 ^ 6; sbit en = P3 ^ 5;
Seuraavaksi meidän on määriteltävä joitakin toimintoja, joita ohjelmassa käytetään. Viive-toimintoa käytetään määritetyn aikaviiveen luomiseen. Cmdwrt- toimintoa käytetään komentojen lähettämiseen 16 * 2 lcd-näyttöön. datawrt- toimintoa käytetään tietojen lähettämiseen 16 * 2 lcd-näyttöön. Rxdata- toimintoa käytetään tietojen vastaanottamiseen sarjaportista.
void delay (allekirjoittamaton int); void cmdwrt (allekirjoittamaton merkki); void datawrt (allekirjoittamaton merkki); char rxdata (mitätön);
Tässä koodin osassa aiomme määrittää 8051-mikrokontrollerin sarjaliikennettä varten.
TMOD-rekisteriin ladataan 0x20 ajastimelle 1, tila 2 (automaattinen lataus). SCON-rekisteriin ladataan 0x50 8 databittiä, 1 pysäytysbitti ja vastaanotto käytössä. TH1-rekisteriin ladataan 0xfd 9600 bittiä sekunnissa. TR1 = 1 käytetään ajastimen käynnistämiseen.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1;
Tässä koodin osassa lähetämme komentoja 16 * 2 lcd: lle. Komentoja kuten selkeä näyttö, lisäys kohdistin, pakottaa kohdistimen alussa 1 s rivi lähetetään 16 * 2 LCD-näyttöön yksitellen jonkin tietyistä viivettä.
(i = 0; i <5; i ++) {cmdwrt (cmd); viive (1); }
Tässä koodin osassa vastaanotamme EM-18 RFID- lukijan lähdön 8051-mikrokontrollerin sarjaliitännän kautta ja tallennetaan muuttujaan. Laskentaa käytetään seuraamaan vastaanotettujen tavujen määrää. Kun kaikki 12 tavua dataa on vastaanotettu, meidän on seuraavaksi näytettävä se 16 * 2 lcd-näytöllä. Tämä prosessi toistetaan ikuisesti erilaisten korttien lukemiseksi.
kun (1) {määrä = 0; cmdwrt (0xC2); while (määrä <12) {input = rxdata (); laskea ++; } for (i = 0; i <12; i ++) {datawrt (syöttö); viive (1); } viive (100); }
Tässä koodin osassa lähetämme komentoja 16 * 2 lcd-näyttöön. Komento kopioidaan 8051-mikrokontrollerin porttiin 1. RS on alhainen komentojen kirjoittamista varten. RW on alhainen kirjoitusoperaatiota varten. Korkeasta matalaan pulssia käytetään aktivointitapissa komentojen kirjoitusoperaation aloittamiseksi.
void cmdwrt (allekirjoittamaton merkki x) {P1 = x; rs = 0; rw = 0; en = 1; viive (1); en = 0; }
Tässä koodin osassa lähetämme tietoja 16 * 2 lcd-näyttöön. Tiedot kopioidaan 8051-mikrokontrollerin porttiin 1. RS on asetettu korkealle komentojen kirjoittamista varten. RW on alhainen kirjoitusoperaatiota varten. Korkeasta matalaan pulssia käytetään aktivointitapissa tietojen kirjoittamisen aloittamiseksi.
void datawrt (allekirjoittamaton merkki y) {P1 = y; rs = 1; rw = 0; en = 1; viive (1); en = 0; } Tarkista myös kaikki RFID-projektit muilla mikro-ohjaimilla.