Дисплеї - це найважливіші пристрої виводу у вбудованих проектах та електроніці. РК-дисплей 16x2 є одним із найбільш часто використовуваних дисплеїв. РК-дисплей 16x2 означає, що є два рядки, в яких на рядок може відображатися 16 символів, і кожен символ займає 5x7 матричного місця на РК-екрані. У цьому підручнику ми збираємось підключити РК-модуль 16X2 до мікроконтролера 8051 (AT89S52). Зв'язок РК з мікроконтролером 8051 може виглядати для новачків досить складно, але після розуміння концепції це буде виглядати дуже просто і легко. Хоча це може зайняти час, тому що вам потрібно зрозуміти і підключити 16 мікросхем РК-дисплея до мікроконтролера. Отже, давайте спочатку розберемося з 16 контактами РК-модуля.
Ми можемо розділити його на п’ять категорій, штифти живлення, контрастний штифт, керуючі штифти, шпильки даних та шпильки підсвічування.
Категорія |
Штифт НІ. |
Ім'я PIN-коду |
Функція |
Виводи живлення |
1 |
VSS |
Штифт заземлення, підключений до заземлення |
2 |
VDD або Vcc |
Контакт напруги + 5В |
|
Контрастний штифт |
3 |
V0 або VEE |
Налаштування контрасту, підключений до Vcc через змінний резистор. |
Контрольні шпильки |
4 |
RS |
Реєстрація Виберіть Pin, RS = 0 Командний режим, RS = 1 Режим даних |
5 |
RW |
Штифт для читання / запису, RW = 0 Режим запису, RW = 1 Режим читання |
|
6 |
Е |
Увімкнути, імпульсний сигнал із високим до низьким значенням повинен увімкнути РК-дисплей |
|
Шпильки даних |
7-14 |
D0-D7 |
Шпильки даних, зберігає дані для відображення на РК-дисплеї або командних інструкціях |
Шпильки підсвічування |
15 |
Світлодіод + або A |
Для живлення підсвічування + 5В |
16 |
LED- або K |
Підсвічування землі |
Всі висновки зрозумілі за їх назвою та функціями, за винятком висновків управління, тому вони пояснюються нижче:
RS: RS - це шпилька вибору реєстру. Нам потрібно встановити значення 1, якщо ми надсилаємо деякі дані для відображення на РК-дисплеї. І ми встановимо його на 0, якщо ми надсилаємо якусь командну інструкцію, наприклад очищення екрана (шістнадцятковий код 01).
RW: Це штифт для читання / запису, ми встановимо його на 0, якщо ми збираємося писати деякі дані на РК-дисплеї. І встановіть його на 1, якщо ми читаємо з РК-модуля. Зазвичай для цього значення встановлено значення 0, оскільки нам не потрібно читати дані з РК-дисплея. Потрібно прочитати кілька разів лише одну інструкцію “Отримати статус РК”.
E: Цей штифт використовується для включення модуля, коли на нього подається імпульс від високого до низького. Слід подавати імпульс 450 нс. Цей перехід від ВИСОКОГО до НИЗЬКОГО робить модуль УВІМКНЕНИМ.
У РК-дисплеї є кілька попередньо встановлених командних інструкцій, ми використали їх у нашій програмі нижче для підготовки РК-дисплея (у функції lcd_init ()). Нижче наведено кілька важливих командних інструкцій:
Шістнадцятковий код |
Команда до реєстру інструкцій LCD |
0F |
РК-дисплей увімкнено, курсор увімкнено |
01 |
Чіткий екран дисплея |
02 |
Повернутися додому |
04 |
Курсор зменшення (зміщення курсору вліво) |
06 |
Збільшення курсору (зміщення курсору вправо) |
05 |
Зміщення дисплея вправо |
07 |
Дисплей зсуву вліво |
0E |
Дисплей увімкнено, курсор блимає |
80 |
Примусувати курсор до початку першого рядка |
C0 |
Примусувати курсор до початку другого рядка |
38 |
2 рядки та матриця 5 × 7 |
83 |
Курсор, рядок 1, позиція 3 |
3С |
Активуйте другий рядок |
08 |
Дисплей ВИМК., Курсор ВИМК |
C1 |
Перехід до другого рядка, позиція 1 |
OC |
Дисплей увімкнено, курсор вимкнено |
C1 |
Перехід до другого рядка, позиція 1 |
С2 |
Перехід до другого рядка, позиція 2 |
Принципова схема та пояснення
Принципова схема для РК-інтерфейсу з мікроконтролером 8051 показана на малюнку вище. Якщо ви добре знаєте 8051, тоді ви повинні знати про EA (PIN 31), XTAL1 & XTAL2, штифт RST (PIN 9), Vcc та штифт заземлення мікроконтролера 8051. Я використав ці шпильки у вищезазначеній схемі. Якщо у вас немає жодного уявлення про це, то я рекомендую вам прочитати цю статтю Світлодіодні інтерфейси з мікроконтролером 8051, перш ніж проходити інтерфейс ЖК.
Окрім цих вищевказаних виводів, ми підключили виводи даних (D0-D7) РК-дисплея до мікроконтролера порту 2 (P2_0 - P2_7). І керуючі виводи RS, RW та E до виводу 12,13,14 (висновок 2,3,4 порту 3) мікроконтролера відповідно.
PIN 2 (VDD) і PIN 15 (підсвічування) РК-дисплея підключені до напруги (5v), а PIN 1 (VSS) і PIN 16 (підсвічування землі) підключені до землі.
Контакт 3 (V0) підключений до напруги (Vcc) через змінний резистор 10k для регулювання контрастності РК-дисплея. Середня ніжка змінного резистора підключена до PIN 3, а інші дві ніжки - до напруги та заземлення.
Пояснення коду
Я намагався пояснити код за допомогою коментарів (у самому коді).
Як я вже пояснював раніше про командний режим та режим даних, ви можете бачити, що під час надсилання команди (функція lcd_cmd) ми встановили RS = 0, RW = 0, а імпульс HIGH to LOW дається E, роблячи його 1, потім 0 Також при передачі даних (функція lcd_data) на РК-дисплей ми встановили RS = 1, RW = 0, а імпульс HIGH to LOW надається E, роблячи його від 1 до 0. Функція msdelay () створена для створення затримки в мілісекундах і часто викликається в програмі, він викликається так, що РК-модуль може мати достатньо часу для виконання внутрішньої операції та команд.
Для друку рядка було створено цикл while, який кожного разу викликає функцію lcd_data для друку символу до останнього символу (нульовий термінатор- '\ 0').
Ми використовували функцію lcd_init (), щоб підготувати РК-дисплей за допомогою попередньо встановлених командних інструкцій (пояснених вище).