- Необхідні компоненти:
- Кругова діаграма:
- 8051 Мікроконтролер:
- РК-дисплей 16x2:
- Зчитувач RF-EM-18:
- Пояснення до роботи та коду:
Радіочастотна ідентифікація (RFID) використовує радіочастоту для зчитування інформації, що зберігається на картці або мітці RFID. У цьому проекті ми перейдемо до інтерфейсу зчитувача RF-EM-18 з мікроконтролером 8051 та відобразимо номер картки RFID на РК-дисплеї 16 * 2. Ця бездротова ідентифікація радіочастот використовується у багатьох системах, таких як система відвідуваності на основі RFID, системах безпеки, апаратах для голосування тощо. Цей проект також буде слугувати належним з'єднанням 16 * 2 РК-дисплея з мікроконтролером 8051.
Необхідні компоненти:
- 8051 мікроконтролер
- Зчитувач RF-EM-18
- 16 * 2 РК-дисплей
- Картки / мітки RFID
- Потенціометр
- Провід перемички
Кругова діаграма:
8051 Мікроконтролер:
Мікроконтролер 8051 - це 8-бітний мікроконтролер, який має 128 байт мікросхеми оперативної пам'яті, 4K байт мікросхеми мікросхеми, два таймери, один послідовний порт і чотири 8-бітних порти. Мікроконтролер 8052 - це розширення мікроконтролера. У таблиці нижче показано порівняння 8051 членів сім'ї.
Особливість |
8051 |
8052 |
ПЗУ (у байтах) |
4K |
8 тис |
Оперативна пам'ять (байти) |
128 |
256 |
Таймери |
2 |
3 |
Штифти вводу / виводу |
32 |
32 |
Послідовний порт |
1 |
1 |
Джерела переривання |
6 |
8 |
РК-дисплей 16x2:
16 * 2 РК - широко використовуваний дисплей для вбудованих програм. Ось коротке пояснення щодо контактів та роботи РК-дисплея 16 * 2. Усередині РК є два дуже важливі регістри. Це регістр даних та регістр команд. Реєстр команд використовується для надсилання таких команд, як чітке відображення, курсор вдома тощо, регістр даних використовується для надсилання даних, які мають відображатися на РК-дисплеї 16 * 2. Нижче в таблиці наведено опис контактів 16 * 2 рідкокристалічних дисплеїв.
PIN-код |
Символ |
I / O |
Опис |
1 |
Vss |
- |
Земля |
2 |
Vdd |
- |
+ 5В живлення |
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 |
- |
+ 5 В для підсвічування |
16 |
К |
- |
Земля |
У таблиці нижче наведені часто використовувані коди РК-команд.
Код (шістнадцятковий) |
Опис |
01 |
Чіткий екран дисплея |
06 |
Курсор збільшення (зсув вправо) |
0А |
Дисплей вимкнено, курсор увімкнено |
0С |
Дисплей увімкнено, курсор вимкнено |
0F |
Дисплей увімкнено, курсор блимає |
80 |
Перемістіть курсор на початок 1- го рядка |
C0 |
Перемістіть курсор на початок 2- го рядка |
38 |
2 рядки та матриця 5 * 7 |
Зчитувач RF-EM-18:
Зчитувач RF-EM-18 працює на частоті 125 кГц, поставляється з вбудованою антеною і може живитися від джерела живлення 5 В. Він забезпечує послідовний вихід разом із виведенням weigand. Діапазон становить близько 8-12 см. параметри послідовного зв'язку складають 9600 біт / с, 8 біт даних, 1 стоп-біт. Його додатки включають автентифікацію, встановлення цін на електронну плату за дороги, електронне замовлення квитків на громадський транспорт, системи відвідування тощо. Перевірте всі проекти RFID тут.
Вихідні дані, що надаються зчитувачем RF-EM-18, мають 12-значний формат ASCII. З 12 цифр перші 10 цифр - це номер картки, а останні дві цифри - результат XOR номера картки. Останні дві цифри використовуються для перевірки помилок.
Наприклад, номер картки - 0200107D0D62, прочитаний із пристрою зчитування, тоді номер картки на картці буде таким, як показано нижче.
02 - преамбула
00107D0D = 1080589 в десяткових числах.
62 - значення XOR для (02 XOR 00 XOR 10 XOR 7D XOR 0D).
Отже, номер на картці 0001080589.
Пояснення до роботи та коду:
Повна програма C і демонстрація відео для цього проекту дається в кінці цього проекту. Код розділений на невеликі значущі фрагменти і пояснено нижче.
Для 16 * 2 РК-взаємодії з мікроконтролером 8051 ми повинні визначити штифти, на яких 16 * 2 рідкокристалічний дисплей підключений до мікроконтролера 8051. RS-контакт 16 * 2 рідкокристалічного підключений до P3.7, RW-контакт 16 * 2 рідкокристалічний - до P3.6, а E-контактний 16 * 2 рідкокристалічний - до P3.5. Виводи даних підключені до порту 1 мікроконтролера 8051.
sbit rs = P3 ^ 7; sbit rw = P3 ^ 6; sbit en = P3 ^ 5;
Далі ми повинні визначити деякі функції, які використовуються в програмі. Функція затримки використовується для створення заданої затримки часу. Функція Cmdwrt використовується для надсилання команд на рідкокристалічний дисплей 16 * 2. Функція datawrt використовується для передачі даних на рідкокристалічний дисплей 16 * 2. Функція Rxdata використовується для отримання даних із послідовного порту.
затримка порожнечі (без підпису int); void cmdwrt (беззнаковий символ); void datawrt (беззнаковий символ); char rxdata (порожнеча);
У цій частині коду ми збираємося налаштувати мікроконтролер 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 рідкокристалічний дисплей по черзі через деяку певну затримку часу.
для (i = 0; i <5; i ++) {cmdwrt (cmd); затримка (1); }
У цій частині коду ми отримуємо вихідні дані зчитувача RF-EM-18 через послідовний інтерфейс мікроконтролера 8051 і зберігаємо у змінній. Count використовується для відстеження кількості отриманих байтів. Як тільки отримано всі 12 байт даних, далі ми повинні відобразити їх на 16 * 2 рідкокристалічному дисплеї. Цей процес повторюється назавжди, щоб читати різні картки.
while (1) {count = 0; cmdwrt (0xC2); while (count <12) {input = rxdata (); рахувати ++; } for (i = 0; i <12; i ++) {datawrt (input); затримка (1); } затримка (100); }
У цій частині коду ми надсилаємо команди на рідкокристалічний дисплей 16 * 2. Команда копіюється в порт 1 мікроконтролера 8051. RS робиться низьким для запису команд. RW є низьким для операції запису. Імпульс від високого до низького значення застосовується на штифті Enable (E) для запуску операції запису команди.
void cmdwrt (знак без знака x) {P1 = x; rs = 0; rw = 0; en = 1; затримка (1); en = 0; }
У цій частині коду ми надсилаємо дані на рідкокристалічний дисплей 16 * 2. Дані копіюються в порт 1 мікроконтролера 8051. RS призначений високим для запису команд. RW зменшено для операції запису. Імпульс від високого до низького значення застосовується на штифті Enable (E) для запуску операції запису даних.
void datawrt (непідписаний символ y) {P1 = y; rs = 1; rw = 0; en = 1; затримка (1); en = 0; } Також перевірте всі наші проекти RFID з іншими мікроконтролерами.