- Працює РК-дисплей 16x2
- Принципова схема інтерфейсного РК-дисплея з мікроконтролером STM8
- РК-бібліотека STM8 - файл заголовка для STM8S103F3P6
- РК-програма для мікроконтролера STM8S
- STM8 з РК-дисплеєм - працює
Буквено-цифровий РК-дисплей 16x2 - це найбільш часто використовуваний дисплей серед любителів та любителів. Дисплей дуже корисний, коли ви хочете показати основну інформацію користувачеві, а також може допомогти у тестуванні або налагодженні нашого коду. Цей конкретний РК-модуль 16x2 легко доступний і популярний протягом тривалого часу. Детальніше про основи РК-модуля 16x2 ви можете дізнатись у статті, на яку посилається.
Щоб продовжити нашу серію навчальних посібників з мікроконтролера STM8, у цьому посібнику ми дізнаємося, як взаємодіяти РК-дисплей із мікроконтролером STM8. Раніше ми також поєднували РК-дисплей 16x2 з багатьма іншими мікроконтролерами, підручники наведені нижче, і ви можете перевірити їх, якщо зацікавлені.
Якщо ви новачок у STM8, ознайомтеся з початком роботи зі статтею мікроконтролера STM8, щоб зрозуміти основи плати контролера та середовища програмування. Ми не будемо висвітлювати основи цього підручника.
Працює РК-дисплей 16x2
Як випливає з назви, РК-дисплей 16x2 матиме 16 стовпців і 2 рядки. Отже, загалом ми зможемо відобразити на цьому дисплеї 32 символи, і ці символи можуть бути алфавітами, цифрами чи навіть символами. Простий РК-дисплей розміром 16x2, який ми використовуємо в цьому посібнику, показаний нижче -
Як бачите, дисплей має 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 | Підсвічування землі |
На задній панелі РК-дисплея, як показано на малюнку нижче, ви знайдете дві чорні точки, всередині яких ми маємо мікросхему драйвера РК-дисплея HD44780 (оточена червоним). Наш мікроконтролер повинен взаємодіяти з цим ІС, який, у свою чергу, буде контролювати те, що відображається на РК-дисплеї. Якщо вам цікаво дізнатись, як саме все це працює, вам слід перевірити роботу РК-дисплея розміром 16x2, де ми вже детально обговорили, як працює РК-дисплей.
У цьому посібнику ми обговоримо принципову схему та код для відображення алфавітних символів (алфавітів та цифр) на РК-дисплеї розміром 16x2 за допомогою простих команд LCD_print _char та LCD_print_string . Ці команди можна використовувати безпосередньо в програмі після включення нашого заголовного файлу. Файл заголовка стосується більшості матеріалів для вас, тому не обов’язково знати, як працює дисплей або мікросхема драйвера HD44780.
Принципова схема інтерфейсного РК-дисплея з мікроконтролером STM8
Повну схему ЖК-дисплея STM8 можна знайти на зображенні нижче. Як бачите, підключення контролера STM8S103F3P6 з РК-дисплеєм дуже просте, ми маємо РК-дисплей, безпосередньо підключений до нашої плати, а ST-link також підключений для програмування плати.
Виводи живлення Vss і Vcc підключені до 5-контактного виводу на платі STM8S, зауважте, що робоча напруга РК становить 5 В і підключений для роботи на 3,3 В. Отже, навіть незважаючи на те, що мікроконтролер STM8S103F3P6 працює на 3,3 В, обов’язковим є наявність 5-вольтового джерела живлення для РК-дисплея, ви можете уникнути цього, використовуючи мікросхему контролера заряду, але ми не будемо обговорювати це в цьому посібнику.
Далі у нас є контрастний штифт, який використовується для встановлення контрастності РК-дисплея, ми підключили його до потенціометра, щоб ми могли контролювати контрастність. Ми використовували 10k бачок, але ви також можете використовувати інші сусідні значення, горщик діє як потенційний дільник, щоб забезпечити 0-5 В на контрастному штифті, як правило, ви також можете використовувати резистор безпосередньо, щоб забезпечити близько 2.2V для розумного контрасту значення. Тоді ми маємо штифти скидання (RS), читання / запис (RW) та Enable (E). Штифт для читання-запису заземлений, оскільки ми не будемо нічого читати з РК-дисплея, ми будемо виконувати лише операції запису. Інші два керуючі штирі Rs та E підключені до штифтів PA1 та PA2 відповідно.
Тоді ми маємо шпильки даних DB0 до DB7. РК-дисплей 16x2 може працювати в двох режимах, один - це 8-бітний режим роботи, де нам потрібно використовувати всі 8 контактів даних (DB0-DB7) на РК-дисплеї, а інший - це 4-бітний режим роботи, де нам потрібно лише 4 шпильки даних (DB4-DB7). Зазвичай використовується 4-розрядний режим, оскільки для цього потрібно менше контактів GPIO від контролера, тому ми також використовували 4-розрядний режим у цьому посібнику і підключили лише висновки DB4, DB5, DB6 та DB7 до висновків PD1, PD2, PD3, та PD4 відповідно.
Останні два висновки BLA та BLK використовуються для живлення світлодіода внутрішнього підсвічування, ми використовували резистор 560 Ом як резистор, що обмежує струм. Програміст ST-Link підключений, як завжди, як і в нашому попередньому уроці. Я встановив повне з'єднання на макетній панелі, і моя настройка виглядає так, як показано на малюнку нижче.
РК-бібліотека STM8 - файл заголовка для STM8S103F3P6
Перш ніж переходити до принципової схеми, давайте отримаємо файл заголовка РК-дисплея STM8 від GitHub, використовуючи таке посилання -
STM8S 16x2 РК-файл заголовка
Ви можете або завантажити повне репо та отримати файл stm8s103_LCD_16x2.h, або простий код із наведеного вище посилання. Під час налаштування проекту обов’язково включіть усі необхідні файли заголовків до каталогу inc разом із цим файлом заголовка.
Якщо ви не впевнені, як додати заголовки та скомпілювати програму, дотримуйтесь відео внизу цієї сторінки. І якщо вам цікаво, як працює код всередині файлу заголовка, ви можете перевірити PIC за допомогою підручника з РК-дисплея. Заголовочний файл, використаний у цьому проекті, дуже схожий на той, що там пояснено, тому ми не будемо вдаватися до деталей цього.
РК-програма для мікроконтролера STM8S
Для демонстрації ми запрограмуємо наш контролер STM8S для відображення простого рядка, такого як “Circuit Digest”, а потім збільшимо значення “Test” на кожну секунду у другому рядку. Повну програму можна знайти внизу цієї сторінки. Пояснення полягає в наступному.
Ми починаємо нашу програму, визначаючи шпильки та додаючи необхідні файли заголовків, як завжди. У нашій вищеописаній електричній схемі ми підключили LCD_RS до PA1, тому ми визначили її як LCD_RS GPIOA, GPIO_PIN_1. Так само ми зробили те саме для інших шпильок. Якщо вони слідують за іншою схемою, переконайтеся, що ви відповідно змінили ці значення.
#define LCD_RS GPIOA, GPIO_PIN_1 #define LCD_EN GPIOA, GPIO_PIN_2 #define LCD_DB4 GPIOD, GPIO_PIN_1 #define LCD_DB5 GPIOD, GPIO_PIN_2 #define LCD_DB6 GPIOD, GPIO_PIN_3Dde8PIN_CDMDinDCD_deinPCD_DM_deinPCD_DIN_CD8CDMDinDCD_CD8CDMDinDCD_deinPCD_DMINDIN_CD8CDMDinDCD_CD8CDMDinDCD_DIN_CD8CDMDinDC_DIN_CD8CDMDINDCIN_DIN_CD8CDMDINDCD_CD7CDMDINDCIN
Далі всередині нашої основної програми ми оголосили змінні, необхідні для цього зразкового коду. У нас є тестова змінна під назвою test_var, яка ініціалізується до нуля, ми збільшимо змінну та відобразимо її на РК-дисплеї. Символи від d1 до d4 представляють 4 цифри тестової змінної, оскільки наш РК-дисплей не може відображати значення int безпосередньо, ми повинні перетворити їх у символи.
// Оголошення змінних int test_var = 0; символи d4, d3, d2, d1;
Функція LCD_Begin () використовується для ініціалізації РК-дисплея. Ця функція ініціалізує всі необхідні шпильки GPIO, а також встановить РК-дисплей у режим РК-дисплея 16x2. Тоді ми маємо функцію LCD_Clear (), яка використовується для очищення всіх значень на РК-дисплеї, це видалить все на РК-дисплеї, щоб було чисто писати нові значення. Тоді ми маємо функцію LCD_Set_Cursor (x, y), де x і y - позиції, в яких нам потрібно написати наш новий символ. Наприклад, (1,1) означає перший рядок і перший стовпець, аналогічно (2,12) означає другий рядок 12 стовпця, так само. Зверніть увагу, що ми маємо тут 2 рядки та 16 стовпців, як ми вже обговорювали раніше.
Lcd_Begin (); Lcd_Clear (); Lcd_Set_Cursor (1,1);
Тепер РК-дисплей встановлений, очищений, і курсор знаходиться на місці. Наступне - надрукувати щось на екрані. Ми можемо використовувати LCD_Print_String (“Зразок рядка”) для друку рядка на РК-дисплеї та LCD_Print_Char (a) для друку значення символу на РК-дисплеї. У нашій програмі тут ми надрукували “STM8S103F3P3 LCD” і створили затримку 5 секунд, використовуючи код нижче.
Lcd_Print_String ("STM8S103F3P3 LCD"); delay_ms (5000);
Після 5-секундної затримки ми знову очищаємо РК-дисплей і відображаємо “Circuit Digest” у першому рядку та “Test:” I у другому рядку.
Lcd_Clear (); Lcd_Set_Cursor (1,1); Lcd_Print_String ("Дайджест схеми"); Lcd_Set_Cursor (2,1); Lcd_Print_String ("Тест:");
Усередині в той час циклу, ми розділимо значення на ціле число змінної test_var на окремі символи, так що він може відображатися на РК - дисплеї з допомогою простого ділення і модуля пружності операторів. Ми також додали "0" для перетворення значення ASCII в символ.
d4 = тест_вар% 10 + '0'; d3 = (test_var / 10)% 10 + '0'; d2 = (test_var / 100)% 10 + '0'; d1 = (test_var / 1000) + '0';
Потім ми встановили курсор на (2,6), оскільки ми вже написали “Тест:” у другому рядку, який складається з 6 символів. Якщо ми перезапишемо, існуючий символ буде замінено новим символом на РК-дисплеї. Ми також додали затримку на 1 секунду і збільшимо змінну.
Lcd_Set_Cursor (2,6); Lcd_Print_Char (d1); Lcd_Print_Char (d2); Lcd_Print_Char (d3); Lcd_Print_Char (d4); delay_ms (1000); test_var ++;
STM8 з РК-дисплеєм - працює
Щоб протестувати нашу програму, просто завантажте код на наш контролер і увімкніть його за допомогою порту micro-USB. Зверніть увагу, що для роботи РК-дисплею потрібно 5 В, тому живлення плати від порту USB є обов’язковим. Раніше ми живили його безпосередньо від ST-link, оскільки нам не потрібно було джерело живлення 5 В.
Як ви бачите, РК-дисплей працює належним чином, значення тестової змінної збільшується приблизно кожної секунди. Крім того, зауважте, що ми не використовували таймери, а для створення цієї затримки використовували лише функцію затримки, тому не очікуйте, що тривалість затримки буде точною, для цього ми використаємо таймери пізніше в іншому підручнику.
Повну роботу проекту можна знайти у відео, наведеному нижче. Сподіваюся, вам сподобався підручник і ви дізналися щось корисне. Якщо у вас виникли запитання, залиште їх у розділі коментарів або скористайтеся нашими форумами для інших технічних запитань.