- Nødvendige komponenter:
- Kretsdiagram:
- 8051 mikrokontroller:
- 16x2 LCD:
- EM-18 RFID-leser:
- Arbeids- og kodeforklaring:
Radio Frequency Identification (RFID) bruker radiofrekvens til å lese informasjon som er lagret på et RFID-kort eller en RFID-kode. I dette prosjektet skal vi grensesnitt EM-18 RFID-leser med 8051 mikrokontroller og vise RFID-kortnummer på 16 * 2 LCD-skjerm. Denne trådløse RF-identifikasjonen brukes i mange systemer som RFID-basert fremmøtesystem, sikkerhetssystemer, stemmemaskiner etc. Dette prosjektet vil også fungere som en riktig grensesnittflate mellom 16 * 2 LCD og 8051 mikrokontroller.
Nødvendige komponenter:
- 8051 mikrokontroller
- EM-18 RFID-leser
- 16 * 2 LCD-skjerm
- RFID-kort / tagger
- Potensiometer
- Jumper ledninger
Kretsdiagram:
8051 mikrokontroller:
8051 mikrokontroller er en 8-biters mikrokontroller som har 128 byte på RAM-brikke, 4K byte på ROM-brikke, to tidtakere, en seriell port og fire 8-biters porter. 8052 mikrokontroller er en utvidelse av mikrokontroller. Tabellen nedenfor viser sammenligningen av 8051 familiemedlemmer.
Trekk |
8051 |
8052 |
ROM (i byte) |
4K |
8K |
RAM (byte) |
128 |
256 |
Tidtakere |
2 |
3 |
I / O-pinner |
32 |
32 |
Seriell port |
1 |
1 |
Avbryt kilder |
6 |
8 |
16x2 LCD:
16 * 2 LCD er en mye brukt skjerm for innebygde applikasjoner. Her er den korte forklaringen om pinner og bruk av 16 * 2 LCD-skjerm. Det er to veldig viktige registre inne i LCD-skjermen. De er dataregister og kommandoregister. Kommandoregister brukes til å sende kommandoer som klar visning, markør hjemme etc., dataregister brukes til å sende data som skal vises på 16 * 2 LCD. Tabellen nedenfor viser pinbeskrivelsen på 16 * 2 lcd.
Pin |
Symbol |
I / O |
Beskrivelse |
1 |
Vss |
- |
Bakke |
2 |
Vdd |
- |
+ 5V strømforsyning |
3 |
Vee |
- |
Strømforsyning for å kontrollere kontrasten |
4 |
RS |
Jeg |
RS = 0 for kommandoregister, RS = 1 for dataregister |
5 |
RW |
Jeg |
R / W = 0 for skriving, R / W = 1 for lese |
6 |
E |
I / O |
Muliggjøre |
7 |
D0 |
I / O |
8-bits databuss (LSB) |
8 |
D1 |
I / O |
8-bits databuss |
9 |
D2 |
I / O |
8-bits databuss |
10 |
D3 |
I / O |
8-bits databuss |
11 |
D4 |
I / O |
8-bits databuss |
12 |
D5 |
I / O |
8-bits databuss |
1. 3 |
D6 |
I / O |
8-bits databuss |
14 |
D7 |
I / O |
8-bit databuss (MSB) |
15 |
EN |
- |
+ 5V for bakgrunnsbelysning |
16 |
K |
- |
Bakke |
Tabellen nedenfor viser LCD-kommandokoder som ofte brukes.
Kode (sekskant) |
Beskrivelse |
01 |
Tøm skjermbildet |
06 |
Inkrement markør (høyre skift) |
0A |
Display av, markør på |
0C |
Skjerm på, markør av |
0F |
Displayet er på, markøren blinker |
80 |
Tving markøren til begynnelsen av en st linjen |
C0 |
Tving markøren til beginningof 2 nd linjen |
38 |
2 linjer og 5 * 7 matrise |
EM-18 RFID-leser:
EM-18 RFID-leser fungerer på 125 KHz, og den leveres med en on-chip antenne, og den kan drives med 5V strømforsyning. Det gir seriell utgang sammen med weigand-utgang. Rekkevidden er rundt 8-12 cm. parametere for seriell kommunikasjon er 9600 bps, 8 databiter, 1 stoppbit. Applikasjonene inkluderer autentisering, e-tollveipriser, e-billettering for offentlig transport, oppmøtningssystemer osv. Sjekk alle RFID-prosjektene her.
Utgangen fra EM-18 RFID-leseren er i 12-sifret ASCII-format. Av de 12 sifrene er de første 10 sifrene kortnummer og de to siste sifrene er XOR-resultatet av kortnummeret. De to siste sifrene brukes til feilkontroll.
For eksempel er kortnummer 0200107D0D62 lest fra leseren, så vil kortnummeret på kortet være som nedenfor.
02 - innledning
00107D0D = 1080589 i desimal.
62 er XOR-verdi for (02 XOR 00 XOR 10 XOR 7D XOR 0D).
Derfor er nummeret på kortet 0001080589.
Arbeids- og kodeforklaring:
Hele C-programmet og demonstrasjonsvideoen for dette prosjektet er gitt på slutten av dette prosjektet. Koden er delt inn i små meningsfulle biter og forklart nedenfor.
For 16 * 2 LCD-grensesnitt med 8051 mikrokontroller, må vi definere pinner som 16 * 2 LCD er koblet til 8051 mikrokontroller. RS-pinne på 16 * 2 lcd er koblet til P3.7, RW-pinne på 16 * 2 lcd er koblet til P3.6 og E-pinne på 16 * 2 lcd er koblet til P3.5. Datapinner er koblet til port 1 på 8051 mikrokontroller.
sbit rs = P3 ^ 7; sbit rw = P3 ^ 6; sbit en = P3 ^ 5;
Deretter må vi definere noen funksjoner som brukes i programmet. Forsinkelsesfunksjon brukes til å lage spesifisert tidsforsinkelse. Cmdwrt- funksjonen brukes til å sende kommandoer til 16 * 2 LCD-skjerm. datawrt- funksjonen brukes til å sende data til 16 * 2 LCD-skjerm. Rxdata- funksjonen brukes til å motta data fra seriell port.
ugyldig forsinkelse (usignert int); ugyldig cmdwrt (usignert røye); ugyldig datawrt (usignert røye); char rxdata (ugyldig);
I denne delen av koden skal vi konfigurere 8051 mikrokontroller for seriell kommunikasjon.
TMOD-registeret er lastet med 0x20 for tidtaker 1, modus 2 (automatisk omlasting). SCON-registeret er lastet med 0x50 for 8 databiter, 1 stoppbit og mottak aktivert. TH1-registeret er lastet med 0xfd for overføringshastighet på 9600 bits per sekund. TR1 = 1 brukes til å starte timeren.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1;
I denne delen av koden sender vi kommandoer til 16 * 2 lcd. Kommandoer slik som klart display, inkrement markør, få markøren til begynnelsen av en st linje blir sendt til 16 * 2 LCD-display ett for ett etter en viss spesifisert tidsforsinkelse.
for (i = 0; i <5; i ++) {cmdwrt (cmd); forsinkelse (1); }
I denne delen av koden mottar vi utgangen fra EM-18 RFID- leseren gjennom det serielle grensesnittet til 8051 mikrokontroller og lagret i en variabel. Count brukes til å holde rede på antall mottatte byte. Når alle 12 byte data er mottatt, må vi vise den på 16 * 2 LCD-skjerm. Denne prosessen gjentas for alltid for å lese forskjellige kort.
mens (1) {count = 0; cmdwrt (0xC2); mens (count <12) {input = rxdata (); telle ++; } for (i = 0; i <12; i ++) {datawrt (input); forsinkelse (1); } forsinkelse (100); }
I denne delen av koden sender vi kommandoer til 16 * 2 LCD-skjerm. Kommandoen kopieres til port 1 på 8051 mikrokontroller. RS er lavt for kommandoskriving. RW er lavt for skrivedrift. Høy til lav puls brukes på aktiveringstasten (E) for å starte kommandoskrivoperasjonen.
ugyldig cmdwrt (usignert tegn x) {P1 = x; rs = 0; rw = 0; en = 1; forsinkelse (1); en = 0; }
I denne delen av koden sender vi data til 16 * 2 LCD-skjerm. Dataene kopieres til port 1 på 8051 mikrokontroller. RS er gjort høyt for kommandoskriving. RW er lavt for skrivedrift. Høy til lav puls påføres på aktiveringsstift (E) for å starte dataskriving.
ugyldig datawrt (usignert char y) {P1 = y; rs = 1; rw = 0; en = 1; forsinkelse (1); en = 0; } Sjekk også alle våre RFID-prosjekter med andre mikrokontrollere.