- Необходими компоненти:
 - Електрическа схема:
 - 8051 микроконтролер:
 - 16x2 LCD:
 - EM-18 RFID четец:
 - Обяснение на работата и кода:
 
Радиочестотната идентификация (RFID) използва радиочестота за четене на информация, съхранявана в RFID карта или етикет. В този проект ще преминем към интерфейс EM-18 RFID четец с микроконтролер 8051 и ще покажем номера на RFID картата на 16 * 2 LCD дисплей. Тази безжична RF идентификация се използва в много системи като RFID базирана система за присъствие, системи за сигурност, машини за гласуване и т.н. Този проект също ще служи като правилно свързване на 16 * 2 LCD с 8051 микроконтролер.
Необходими компоненти:
- 8051 микроконтролер
 - EM-18 RFID четец
 - 16 * 2 LCD дисплей
 - RFID карти / етикети
 - Потенциометър
 - Джъмперни проводници
 
Електрическа схема:

8051 микроконтролер:
Микроконтролерът 8051 е 8-битов микроконтролер, който има 128 байта чип RAM, 4K байта чип ROM, два таймера, един сериен порт и четири 8 битови порта. Микроконтролерът 8052 е продължение на микроконтролера. Таблицата по-долу показва сравнението на 8051 членове на семейството.
| 
 Особеност  | 
 8051  | 
 8052  | 
| 
 ROM (в байтове)  | 
 4K  | 
 8K  | 
| 
 RAM (байтове)  | 
 128  | 
 256  | 
| 
 Таймери  | 
 2  | 
 3  | 
| 
 I / O щифтове  | 
 32  | 
 32  | 
| 
 Сериен порт  | 
 1  | 
 1  | 
| 
 Прекъсване на източници  | 
 6  | 
 8  | 
16x2 LCD:
16 * 2 LCD е широко използван дисплей за вградени приложения. Ето краткото обяснение за щифтовете и работата на 16 * 2 LCD дисплей. Вътре в LCD има два много важни регистъра. Те са регистър на данни и регистър на командите. Командният регистър се използва за изпращане на команди като ясен дисплей, курсор у дома и т.н., регистърът на данни се използва за изпращане на данни, които трябва да бъдат показани на 16 * 2 LCD. По-долу таблицата показва пиновото описание на 16 * 2 lcd.
| 
 ПИН  | 
 Символ  | 
 I / O  | 
 Описание  | 
| 
 1  | 
 Vss  | 
 -  | 
 Земя  | 
| 
 2  | 
 Vdd  | 
 -  | 
 + 5V захранване  | 
| 
 3  | 
 Вее  | 
 -  | 
 Захранване за контрол на контраста  | 
| 
 4  | 
 RS  | 
 Аз  | 
 RS = 0 за команден регистър, RS = 1 за регистър на данните  | 
| 
 5  | 
 RW  | 
 Аз  | 
 R / W = 0 за запис, R / W = 1 за четене  | 
| 
 6  | 
 Е.  | 
 I / O  | 
 Активиране  | 
| 
 7  | 
 D0  | 
 I / O  | 
 8-битова шина за данни (LSB)  | 
| 
 8  | 
 D1  | 
 I / O  | 
 8-битова шина за данни  | 
| 
 9  | 
 D2  | 
 I / O  | 
 8-битова шина за данни  | 
| 
 10  | 
 D3  | 
 I / O  | 
 8-битова шина за данни  | 
| 
 11.  | 
 D4  | 
 I / O  | 
 8-битова шина за данни  | 
| 
 12  | 
 D5  | 
 I / O  | 
 8-битова шина за данни  | 
| 
 13  | 
 D6  | 
 I / O  | 
 8-битова шина за данни  | 
| 
 14.  | 
 D7  | 
 I / O  | 
 8-битова шина за данни (MSB)  | 
| 
 15  | 
 A  | 
 -  | 
 + 5V за подсветка  | 
| 
 16.  | 
 К  | 
 -  | 
 Земя  | 
Таблицата по-долу показва често използвани LCD кодове за команди.
| 
 Код (шестнадесетичен)  | 
 Описание  | 
| 
 01  | 
 Ясен дисплей  | 
| 
 06  | 
 Курс за увеличаване (смяна вдясно)  | 
| 
 0А  | 
 Дисплеят е изключен, курсорът е включен  | 
| 
 0С  | 
 Дисплеят включен, курсорът изключен  | 
| 
 0F  | 
 Дисплеят е включен, курсорът мига  | 
| 
 80  | 
 Принудете курсора до началото на 1- ви ред  | 
| 
 С0  | 
 Принудете курсора до началото на 2- ри ред  | 
| 
 38  | 
 2 реда и матрица 5 * 7  | 
EM-18 RFID четец:
EM-18 RFID четец работи на 125 KHz и се предлага с вградена антена и може да се захранва с 5V захранване. Той осигурява сериен изход заедно с изхода на weigand. Обхватът е около 8-12 см. параметрите на серийната комуникация са 9600bps, 8 бита за данни, 1 стоп бит. Приложенията му включват удостоверяване, ценообразуване на пътни такси по електронен път, електронни билети за обществен транспорт, обслужващи системи и т.н.
Изходът, предоставен от EM-18 RFID четец, е в 12-цифрен ASCII формат. От 12 цифри първите 10 цифри са номер на картата, а последните две цифри са XOR резултатът от номера на картата. Последните две цифри се използват за проверка на грешки.


Например номерът на картата е 0200107D0D62, прочетен от четеца, след което номерът на картата на картата ще бъде както по-долу.
02 - преамбюл
00107D0D = 1080589 в десетична запетая.
62 е XOR стойност за (02 XOR 00 XOR 10 XOR 7D XOR 0D).
Следователно номерът на картата е 0001080589.
Обяснение на работата и кода:

В пълна програма C и видео демонстрация за този проект се дава в края на този проект. Кодът е разделен на малки смислени парчета и е обяснен по-долу.
За 16 * 2 LCD взаимодействие с 8051 микроконтролер, ние трябва да дефинираме щифтове, на които 16 * 2 lcd е свързан към 8051 микроконтролер. RS щифт от 16 * 2 lcd е свързан към P3.7, RW щифт от 16 * 2 lcd е свързан към P3.6 и E щифт от 16 * 2 lcd е свързан към P3.5. Пиновете за данни са свързани към порт 1 на микроконтролера 8051.
sbit rs = P3 ^ 7; sbit rw = P3 ^ 6; sbit en = P3 ^ 5;
След това трябва да дефинираме някои функции, които се използват в програмата. Функцията за забавяне се използва за създаване на определено времезакъснение. Функцията Cmdwrt се използва за изпращане на команди до 16 * 2 lcd дисплей. datawrt функцията се използва за изпращане на данни на 16 * 2 lcd дисплей. Функцията Rxdata се използва за получаване на данни от сериен порт.
забавяне на празнотата (неподписан int); void cmdwrt (неподписан знак); void datawrt (неподписан знак); char rxdata (void);
В тази част на кода ще конфигурираме 8051 микроконтролер за серийна комуникация.
Регистърът TMOD се зарежда с 0x20 за таймер 1, режим 2 (автоматично презареждане). Регистърът SCON се зарежда с 0x50 за 8 бита данни, 1 стоп бит и получаването е активирано. Регистърът TH1 се зарежда с 0xfd за скорост на предаване от 9600 бита в секунда. TR1 = 1 се използва за стартиране на таймера.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1;
В тази част на кода изпращаме команди на 16 * 2 lcd. Команди като изчистване на дисплея, увеличаване на курсора, принуждаване на курсора до началото на 1- ви ред се изпращат на дисплей 16 * 2 lcd един по един след известно известно забавяне.
за (i = 0; i <5; i ++) {cmdwrt (cmd); забавяне (1); }
В тази част от кода получаваме изхода на четеца EM-18 RFID чрез сериен интерфейс на микроконтролер 8051 и се съхранява в променлива. Count се използва за проследяване на броя на получените байтове. След като бъдат получени всички 12 байта данни, следва да ги покажем на 16 * 2 lcd дисплей. Този процес се повтаря завинаги, за да се четат различни карти.
докато (1) {брой = 0; cmdwrt (0xC2); докато (брой <12) {input = rxdata (); преброяване ++; } за (i = 0; i <12; i ++) {datawrt (вход); забавяне (1); } забавяне (100); }
В тази част на кода ние изпращаме команди до 16 * 2 lcd дисплей. Командата се копира в порт 1 на микроконтролера 8051. RS е намален за запис на команди. RW е намален за операция на запис. Силен до нисък импулс се прилага на щифта за активиране (E), за да стартира операцията за запис на команда.
void cmdwrt (неподписан знак x) {P1 = x; rs = 0; rw = 0; en = 1; забавяне (1); en = 0; }
В тази част от кода ние изпращаме данни на 16 * 2 lcd дисплей. Данните се копират в порт 1 на микроконтролера 8051. RS е направен високо за писане на команди. RW е намален за операция на запис. Силен до нисък импулс се прилага на щифта за активиране (E), за да стартира операцията по запис на данни.
void datawrt (неподписан знак y) {P1 = y; rs = 1; rw = 0; en = 1; забавяне (1); en = 0; } Също така проверете всички наши RFID проекти с други микроконтролери.
