- Komponen yang Diperlukan:
- Rajah Litar:
- 8051 Pengawal Mikro:
- LCD 16x2:
- Pembaca RFID EM-18:
- Kerja dan penjelasan Kod:
Radio Frequency Identification (RFID) menggunakan frekuensi radio untuk membaca maklumat yang tersimpan dalam kad atau tag RFID. Dalam projek ini kita akan pergi ke Interface EM-18 RFID reader dengan 8051 mikrokontroler dan memaparkan nombor kad RFID pada paparan LCD 16 * 2. Pengenalan RF tanpa wayar ini digunakan dalam banyak sistem seperti Sistem Kehadiran Berasaskan RFID, sistem keselamatan, mesin mengundi dan lain-lain. Projek ini juga akan berfungsi sebagai penghubung LCD 16 * 2 yang betul dengan mikrokontroler 8051.
Komponen yang Diperlukan:
- 8051 mikrokontroler
- Pembaca RFID EM-18
- Paparan LCD 16 * 2
- Kad / tag RFID
- Potensiometer
- Wayar pelompat
Rajah Litar:
8051 Pengawal Mikro:
8051 mikrokontroler adalah mikrokontroler 8 bit yang mempunyai 128 bait pada cip RAM, bait 4K pada cip ROM, dua pemasa, satu port bersiri dan empat port 8bit. 8052 mikrokontroler adalah lanjutan dari mikrokontroler. Jadual di bawah menunjukkan perbandingan 8051 ahli keluarga.
Ciri |
8051 |
8052 |
ROM (dalam bait) |
4K |
8 RIBU |
RAM (bait) |
128 |
256 |
Pemasa |
2 |
3 |
Pin I / O |
32 |
32 |
Pelabuhan bersiri |
1 |
1 |
Mengganggu sumber |
6 |
8 |
LCD 16x2:
LCD 16 * 2 adalah paparan yang banyak digunakan untuk aplikasi terbenam. Berikut adalah penjelasan ringkas mengenai pin dan cara kerja paparan LCD 16 * 2. Terdapat dua daftar yang sangat penting di dalam LCD. Mereka adalah daftar data dan daftar perintah. Daftar perintah digunakan untuk mengirim perintah seperti tampilan yang jelas, kursor di rumah dll., Daftar data digunakan untuk mengirim data yang akan ditampilkan pada LCD 16 * 2. Jadual di bawah menunjukkan penerangan pin 16 * 2 lcd.
Sematkan |
Simbol |
Saya / O |
Penerangan |
1 |
Vss |
- |
Tanah |
2 |
Vdd |
- |
+ 5V bekalan kuasa |
3 |
Vee |
- |
Bekalan kuasa untuk mengawal kontras |
4 |
RS |
Saya |
RS = 0 untuk daftar arahan, RS = 1 untuk daftar data |
5 |
RW |
Saya |
R / W = 0 untuk menulis, R / W = 1 untuk membaca |
6 |
E |
Saya / O |
Aktifkan |
7 |
D0 |
Saya / O |
Bas data 8-bit (LSB) |
8 |
D1 |
Saya / O |
Bas data 8-bit |
9 |
D2 |
Saya / O |
Bas data 8-bit |
10 |
D3 |
Saya / O |
Bas data 8-bit |
11 |
D4 |
Saya / O |
Bas data 8-bit |
12 |
D5 |
Saya / O |
Bas data 8-bit |
13 |
D6 |
Saya / O |
Bas data 8-bit |
14 |
D7 |
Saya / O |
Bas data 8-bit (MSB) |
15 |
A |
- |
+ 5V untuk lampu latar |
16 |
K |
- |
Tanah |
Jadual di bawah menunjukkan kod arahan LCD yang sering digunakan.
Kod (hex) |
Penerangan |
01 |
Skrin paparan yang jelas |
06 |
Kursor kenaikan (pergeseran kanan) |
0A |
Paparkan, kursor dihidupkan |
0C |
Paparan hidup, kursor mati |
0F |
Paparan dihidupkan, kursor berkelip |
80 |
Memaksa kursor ke permulaan 1 st talian |
C0 |
Memaksa kursor ke beginningof 2 nd talian |
38 |
2 baris dan matriks 5 * 7 |
Pembaca RFID EM-18:
Pembaca RFID EM-18 beroperasi pada 125 KHz dan dilengkapi dengan antena cip dan ia boleh dikuasakan dengan bekalan kuasa 5V. Ia memberikan output bersiri dan output weigand. Julatnya sekitar 8-12cm. parameter komunikasi bersiri adalah 9600bps, 8 bit data, 1 bit berhenti. Aplikasinya merangkumi Pengesahan, harga jalan tol, e-tiket untuk pengangkutan awam, sistem kehadiran dll. Periksa semua Projek RFID di sini.
Output yang diberikan oleh pembaca RFID EM-18 adalah dalam format 12 digit ASCII. Dari 12 digit 10 digit pertama adalah nombor kad dan dua digit terakhir adalah hasil XOR dari nombor kad. Dua digit terakhir digunakan untuk pemeriksaan ralat.
Contohnya, nombor kad adalah 0200107D0D62 dibaca dari pembaca maka nombor kad pada kad akan seperti di bawah.
02 - mukadimah
00107D0D = 1080589 dalam perpuluhan.
62 adalah nilai XOR untuk (02 XOR 00 XOR 10 XOR 7D XOR 0D).
Oleh itu nombor pada kad adalah 0001080589.
Kerja dan penjelasan Kod:
Yang lengkap program C dan demonstrasi Video untuk projek ini diberikan pada akhir projek ini. Kod ini dibahagikan kepada potongan kecil yang bermakna dan dijelaskan di bawah.
Untuk 16 * 2 LCD yang berinteraksi dengan 8051 mikrokontroler, kita harus menentukan pin yang mana 16 * 2 lcd disambungkan ke 8051 mikrokontroler. Pin RS 16 * 2 lcd disambungkan ke P3.7, pin RW 16 * 2 lcd disambungkan ke P3.6 dan pin E 16 * 2 lcd disambungkan ke P3.5. Pin data disambungkan ke port 1 dari 8051 mikrokontroler.
sbit rs = P3 ^ 7; sbit rw = P3 ^ 6; sbit en = P3 ^ 5;
Seterusnya kita harus menentukan beberapa fungsi yang digunakan dalam program ini. Fungsi kelewatan digunakan untuk membuat kelewatan masa yang ditentukan. Fungsi Cmdwrt digunakan untuk mengirim perintah ke paparan 16 * 2 lcd. fungsi datawrt digunakan untuk mengirim data ke paparan 16 * 2 lcd. Fungsi Rxdata digunakan untuk menerima data dari port bersiri.
kelewatan tidak sah (int tidak ditandatangani); tidak sah cmdwrt (char yang tidak ditandatangani); batal datawrt (char yang tidak ditandatangani); char rxdata (tidak sah);
Di bahagian kod ini, kita akan mengkonfigurasi mikrokontroler 8051 untuk komunikasi bersiri.
Daftar TMOD dimuat dengan 0x20 untuk pemasa 1, mod 2 (tambah nilai automatik). Daftar SCON dimuat dengan 0x50 untuk 8 bit data, 1 bit berhenti dan terima diaktifkan. Daftar TH1 dimuat dengan 0xfd untuk kadar baud 9600 bit sesaat. TR1 = 1 digunakan untuk memulakan pemasa.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1;
Di bahagian kod ini, kami mengirimkan perintah ke 16 * 2 lcd. Arahan seperti paparan yang jelas, kursor kenaikan, memaksa kursor ke permulaan 1 st garis dihantar ke 16 * 2 lcd paparan satu demi satu selepas beberapa beberapa kelewatan masa yang ditetapkan.
untuk (i = 0; i <5; i ++) {cmdwrt (cmd); kelewatan (1); }
Di bahagian kod ini, kami menerima output dari pembaca RFID EM-18 melalui antara muka bersiri 8051 mikrokontroler dan disimpan dalam pemboleh ubah. Kiraan digunakan untuk mengesan bilangan bait yang diterima. Setelah semua 12bytes data diterima, seterusnya kita harus memaparkannya pada paparan 16 * 2 lcd. Proses ini diulang selama-lamanya untuk membaca kad yang berbeza.
sementara (1) {kiraan = 0; cmdwrt (0xC2); sementara (kiraan <12) {input = rxdata (); kira ++; } untuk (i = 0; i <12; i ++) {datawrt (input); kelewatan (1); } kelewatan (100); }
Di bahagian kod ini, kami mengirimkan perintah ke paparan 16 * 2 lcd. Perintah disalin ke port 1 dari 8051 mikrokontroler. RS dibuat rendah untuk menulis perintah. RW dibuat rendah untuk operasi tulis. Denyut tinggi hingga rendah digunakan pada pin membolehkan (E) untuk memulakan operasi menulis perintah.
batal cmdwrt (tanda tidak ditandatangani x) {P1 = x; rs = 0; rw = 0; en = 1; kelewatan (1); en = 0; }
Di bahagian kod ini, kami mengirimkan data ke paparan 16 * 2 lcd. Data disalin ke port 1 dari 8051 mikrokontroler. RS dibuat tinggi untuk menulis perintah. RW dibuat rendah untuk operasi tulis. Denyut tinggi hingga rendah digunakan pada pin membolehkan (E) untuk memulakan operasi menulis data.
batal datawrt (char tidak bertanda tangan) {P1 = y; rs = 1; rw = 0; en = 1; kelewatan (1); en = 0; } Juga, periksa semua projek RFID kami dengan pengawal mikro lain.