- 16x2 матричний РК-контролер IC HD44780:
- Відображення власного символу на РК-дисплеї 16x2:
- Програмування та робоче пояснення:
- Схеми підключення та тестування:
У нашому попередньому підручнику ми дізналися, як взаємодіяти РК-дисплей 16 * 2 з мікроконтролером PIC. Якщо ви новачок у мікроконтролері PIC, радимо пройти його перед тим, як іти далі. Раніше ми також вивчали основи PIC, використовуючи програму та таймери, що блимають, у мікроконтролері PIC. Ви можете переглянути тут усі підручники з вивчення мікроконтролерів PIC за допомогою компілятора MPLABX та XC8.
У цьому навчальному посібнику давайте зробимо це цікавішим, створивши власні персоналізовані символи та відображаючи їх на РК-екрані за допомогою мікроконтролера PIC16F877A PIC. Також є деякі заздалегідь визначені в основному користувацькі символи, надані самою ІС HD44780A, ми також побачимо, як ми можемо їх використовувати. Як пояснювалось у нашому попередньому підручнику, на РК-дисплеї вбудований контролер Hitachi HD44780, який допомагає нам відображати символи. Кожен символ, який ми відображаємо, вже заздалегідь визначений у ПЗУ мікросхеми HD44780. Перш ніж відображати символ на РК-дисплеї, ми дізнаємося про контролер РК-дисплея IC HD44780.
16x2 матричний РК-контролер IC HD44780:
Для того, щоб відобразити власний символ, ми повинні якось сказати мікросхемі, як виглядатиме власний символ. Для цього ми повинні знати про три типи спогадів, що знаходяться всередині мікросхеми РК-контролера HD44780:
ПЗУ генератора символів (CGROM): Це пам'ять лише для читання, яка, як уже було сказано раніше, містить усі шаблони символів, попередньо визначені всередині неї. Цей ПЗУ буде відрізнятися від кожного типу інтерфейсної мікросхеми, а деякі можуть мати заздалегідь визначений спеціальний символ.
Оперативна пам’ять відображення даних (DDRAM): це пам’ять довільного доступу. Кожного разу, коли ми відображаємо символ, його шаблон буде отриманий з CGROM і переданий в DDRAM, а потім буде розміщений на екрані. Якщо сказати простіше, DDRAM буде мати шаблони всіх символів, які зараз відображаються на РК-екрані. Таким чином, для кожного циклу ІС не потрібно отримувати дані з CGROM, і допомагає отримувати коротку частоту оновлення
Оперативна пам’ять генератора символів (CGRAM): Це також пам’ять з довільним доступом, тому ми можемо писати та читати з неї дані. Як випливає з назви, ця пам'ять буде використовуватися для створення власного символу. Ми повинні сформувати шаблон для персонажа і записати його в CGRAM, цей шаблон можна прочитати і відобразити на екрані, коли це потрібно.
Тепер, оскільки ми отримали базове розуміння типів пам’яті, наявних в інтерфейсі IC HD44780. Давайте заглянемо в його таблицю, щоб трохи більше зрозуміти.
Як випливає з таблиці даних, HD44780 IC надав як 8 місць для зберігання власних шаблонів у CGRAM, також праворуч ми бачимо, що є деякі заздалегідь визначені символи, які також можуть відображатися на нашому РК-екрані. Давайте подивимося, як ми можемо це зробити.
Відображення власного символу на РК-дисплеї 16x2:
Щоб відобразити власний символ, спочатку потрібно створити для нього шаблон, а потім зберегти його в CGRAM. Оскільки у нас вже є функції бібліотеки, це може бути легко зробити за допомогою простих команд. Ось Бібліотека для функцій РК-дисплея, але тут ми скопіювали всі функції Бібліотеки в саму програму, тому немає необхідності включати цей файл заголовка в нашу програму. Також ознайомтесь із цією статтею щодо базового режиму роботи РК-дисплея та його розсилок.
Першим кроком є створення шаблону або спеціального символу. Як ми знаємо, кожен символ - це поєднання 5 * 8 крапок. Ми повинні вибрати, яка точка (піксель) повинна переходити високо, а яка повинна залишатися низькою. Просто намалюйте вікно, як показано нижче, і затініть регіони відповідно до вашого характеру. Мій персонаж тут палиця (сподіваюся, це схоже). Після затінення просто напишіть еквівалентне двійкове значення кожного байта, як показано нижче.
Просто поставте «1» на затіненій області та «0» на незатіненій області для кожного байта, і це наш власний шаблон готовий. Подібним чином я зробив 8 користувацьких кодів шаблонів для наших 8 просторів пам'яті, представляючи це CGROM. Вони вказані в таблиці нижче.
С.НІ: |
Спеціальний персонаж |
Код візерунка |
1 |
0b01110, 0b01110, 0b00100, 0b01110, 0b10101, 0b00100, 0b01010, 0b01010 |
|
2 |
0b00000, 0b00000, 0b01010, 0b00100, 0b00100, 0b10001, 0b01110, 0b00000 |
|
3 |
0b00100, 0b01110, 0b11111, 0b11111, 0b01110, 0b01110, 0b01010, 0b01010 |
|
4 |
0b01110, 0b10001, 0b10001, 0b11111, 0b11011, 0b11011, 0b11111, 0b00000 |
|
5 |
0b01110, 0b10000, 0b10000, 0b11111, 0b11011, 0b11011, 0b11111, 0b00000 |
|
6 |
0b00000, 0b10001, 0b01010, 0b10001, 0b00100, 0b01110, 0b10001, 0b00000 |
|
7 |
0b00000, 0b00000, 0b01010, 0b10101, 0b10001, 0b01110, 0b00100, 0b00000 |
|
8 |
0b11111, 0b11111, 0b10101, 0b11011, 0b11011, 0b11111, 0b10001, 0b11111 |
Примітка: Не обов'язково завантажувати всі 8 пробілів, передбачених у CGRAM.
Програмування та робоче пояснення:
Тепер наші шаблони кодів готові, нам залишається завантажити їх у CGRAM РК-дисплея та відобразити за допомогою мікроконтролера PIC. Щоб завантажити їх у CGRAM, ми можемо сформувати масив елементів 5 * 8 і завантажити кожен байт, використовуючи цикл « for ». Масив коду шаблону показаний нижче:
const unsigned short Custom_Char5x8 = {0b01110,0b01110,0b00100,0b01110,0b10101,0b00100,0b01010,0b01010, // Код для простору пам'яті CGRAM 1 0b00000,0b00000,0b01010,0b00100,0b00100,0b10001,0b01110,0b00 Простір пам'яті CGRAM 2 0b00100,0b01110,0b11111,0b11111,0b01110,0b01110,0b01010,0b01010, // Код для простору пам'яті CGRAM 3 0b01110,0b10001,0b10001,0b11111,0b11011,0b11011,0b11111,0b00000AM, код для CGRAM пробіл 4 0b01110,0b10000,0b10000,0b11111,0b11011,0b11011,0b11111,0b00000, // Код для простору пам'яті CGRAM 5 0b00000,0b10001,0b01010,0b10001,0b00100,0b01110,0b10001,0b00000, // Код для простору пам'яті CGRAM 6 0b00000,0b00000,0b01010,0b10101,0b10001,0b01110,0b00100,0b00000, // Код для простору пам'яті CGRAM 7 0b11111,0b11111,0b10101,0b11011,0b11011,0b11111,0b10001,0b11111 // Код для простору пам'яті CGRAM 8};
Кожен простір пам’яті завантажений своїм шанованим шаблоном символів. Щоб завантажити цей шаблон у ІС HD44780, потрібно вказати специфікацію HD44780, але для встановлення адреси CGRAM можна використовувати лише рядки команд
// *** Завантажити спеціальний символ у CGROM *** ////// Lcd_Cmd (0x04); // Встановити адресу CGRAM Lcd_Cmd (0x00); //.. встановити адресу CGRAM для (i = 0; i <= 63; i ++) Lcd_Print_Char (Custom_Char5x8); Lcd_Cmd (0); // Повернення на головну Lcd_Cmd (2); //.. повернутися на головну // *** Завантаження спеціального символу завершено *** //////
Тут всередині циклу ' for' кожне двійкове значення завантажується в CGROM. Після завантаження шаблону користувацькі символи можна показати, просто викликавши місце розташування шаблону за допомогою функції voc Lcd_Print_Char (дані даних), як показано нижче.
Lcd_Print_Char (0); // Відображення власного символу 0 Lcd_Print_Char (1); // Відображення користувацького символу 1 Lcd_Print_Char (2); // Відображення нестандартного символу 2 Lcd_Print_Char (3); // Відображення користувацького символу 3 Lcd_Print_Char (4); // Відображення користувацького символу 4 Lcd_Print_Char (5); // Відображення власного символу 5 Lcd_Print_Char (6); // Відображення нестандартного символу 6 Lcd_Print_Char (7); // Відображення власного символу 7
Друк попередньо визначеного спеціального символу:
ІС HD44780 має деякі заздалегідь визначені спеціальні символи, що зберігаються в DDROM. Ці символи можна безпосередньо надрукувати на екрані, посилаючись на їх двійкове значення в таблиці.
Наприклад: двійкове значення символу "ALPHA" дорівнює 0b11100000. Як отримати це можна зрозуміти з малюнка нижче, так само ви можете отримати значення для будь-якого спеціального символу, який попередньо визначено в IC.
Як тільки двійкове значення стане відомим, відповідний символ можна надрукувати на екрані, просто використовуючи функцію void Lcd_Print_Char (дані даних), як показано нижче, Lcd_Print_Char (0b11100000); // двійкове значення альфа з опису
Повний код цього проекту наведено нижче в розділі Кодексу, а також перевірити деталі відео пояснення в кінці цього уроку.
Схеми підключення та тестування:
Цей проект не вимагає жодних додаткових вимог до обладнання, ми просто використовували ті самі підключення з попереднього підручника з взаємодії з РК-дисплеями та використовували ту саму плату, яку ми створили у підручнику, що блимає світлодіодами. Як завжди, давайте змоделюємо програму за допомогою Proteus для перевірки нашого результату.
Після того, як ми запустимо симуляцію, як очікувалося, давайте безпосередньо запишемо код у нашу апаратну установку. Результат роботи програми повинен бути приблизно таким:
Отже, таким чином ви можете відображати будь-який власний символ на РК-дисплеї 16x2 за допомогою мікроконтролера PIC з компілятором MPLABX та XC8. Тут також перегляньте нашу повну навчальну серію мікроконтролерів PIC.