- Необходими компоненти:
- Електрическа схема:
- 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 проекти с други микроконтролери.