- Необхідні матеріали
- Схема та підключення
- Програмування STM32 для РК-екрану за допомогою Arduino
- Завантаження програми на STM32F103C8T6
Для будь-якого проекту мікроконтролера взаємодія з ним блоку відображення значно полегшить проект і привабливе для користувача взаємодія. Найбільш часто використовуваним блоком відображення для мікроконтролерів є цифрові дисплеї 16 × 2 Alpha. Ці типи дисплеїв не тільки корисні для відображення життєво важливої інформації для користувача, але також можуть виступати інструментом налагодження на початковому етапі розробки проекту. Отже, у цьому підручнику ми дізнаємося, як ми можемо зв’язати РК-дисплей 16 × 2 з платою розробки STM32F103C8T6 STM32 та запрограмувати його за допомогою IDE Arduino. Для тих, хто знайомий з Arduino, цей підручник буде просто прогулянкою, оскільки вони обидва дуже схожі. Також, щоб дізнатись більше про STM32 Blue Pill Board, дотримуйтесь нашого посібника з початку роботи.
Необхідні матеріали
- STM32 Блакитна таблетка для розробки
- РК-дисплей 16 × 2
- Програміст FTDI
- Підключення проводів
- РК-дисплей
Короткий вступ до матричного РК-дисплея розміром 16 × 2 точки
Як вже говорилося раніше, Energia IDE пропонує чудову бібліотеку, яка робить взаємодію шматочком пирога, і тому не обов’язково знати щось про модуль дисплея. Але, хіба не було б цікаво показати, чим ми користуємось !!
Назва 16 × 2 означає, що дисплей має 16 стовпців і 2 рядки, що разом (16 * 2) утворює 32 ящики. Одна окрема коробка виглядатиме приблизно так на малюнку нижче
Одне вікно має 40 пікселів (крапок) із порядком матриці 5 рядків і 8 стовпців, ці 40 пікселів разом утворюють один символ. Подібним чином, 32 символи можуть відображатися за допомогою всіх полів. Тепер давайте поглянемо на розпіранти.
РК-екран має в цілому 16 штифтів, як показано вище, їх можна розділити на чотири групи, як показано нижче
Висновки джерела (1, 2 та 3): ці висновки забезпечують живлення та рівень контрастності дисплея
Керуючі штифти (4, 5 та 6): Ці штифти встановлюють / керують регістрами в інтегральній мікросхемі РК-дисплея (докладніше це можна знайти за посиланням нижче)
Виводи даних / команд (7-14): Ці висновки надають дані про те, яка інформація повинна відображатися на РК-дисплеї.
Світлодіодні штифти (15 і 16): ці штирі використовуються для підсвічування підсвічування РК-дисплея, якщо це необхідно (необов’язково).
З усіх цих 16 штифтів лише 10 штифтів повинні бути використані як обов'язкові для належної роботи РК-дисплея, якщо ви хочете дізнатись більше про ці РК-дисплеї, перейдіть до цієї статті РК-екрану 16х2.
Схема та підключення
Принципова схема для інтерфейсу 16 * 2-точкового матричного РК-дисплея з платою STM32F103C8T6 STM32 Blue Pill показана нижче. Це зроблено за допомогою програмного забезпечення Fritzing.
Як бачите, повне з'єднання здійснюється через макет. Нам потрібна плата FTDI для програмування мікроконтролера STM32. Так само, як і в попередньому навчальному посібнику, ми підключили плату FTDI до STM32, штифт Vcc і заземлення програміста FDTI підключений до 5-контактного і заземлюючого контактів STM32 відповідно. Це використовується для живлення плати STM32 та РК-дисплея, оскільки обидва вони можуть приймати + 5 В. Штифт Rx і Tx плати FTDI підключений до штифтів A9 і A10 STM32, щоб ми могли програмувати плату безпосередньо без завантажувача.
Далі РК-дисплей слід підключити до плати STM32. Ми збираємось використовувати РК-дисплей у 4-розрядному режимі, тому нам доведеться підключити 4 розрядні виводи даних (DB4 до DB7) та два керуючі штифти (RS та EN) до плати STM32, як показано на схемі взаємодії РК-дисплея STM32F103C8T6 діаграма вище. Далі таблиця нижче допоможе вам у встановленні з'єднання.
ЖК-номер |
Назва PIN-коду РК-дисплея |
Ім'я контакту STM32 |
1 |
Земля (Gnd) |
Земля (G) |
2 |
VCC |
5 В |
3 |
VEE |
Земля (G) |
4 |
Вибір реєстру (RS) |
PB11 |
5 |
Читання / запис (RW) |
Земля (G) |
6 |
Увімкнути (EN) |
PB10 |
7 |
Біт даних 0 (DB0) |
Відсутнє підключення (NC) |
8 |
Біт даних 1 (DB1) |
Відсутнє підключення (NC) |
9 |
Біт даних 2 (DB2) |
Відсутнє підключення (NC) |
10 |
Біт даних 3 (DB3) |
Відсутнє підключення (NC) |
11 |
Біт даних 4 (DB4) |
PB0 |
12 |
Біт даних 5 (DB5) |
PB1 |
13 |
Біт даних 6 (DB6) |
ПК13 |
14 |
Біт даних 7 (DB7) |
ПК14 |
15 |
Позитивний світлодіод |
5 В |
16 |
Світлодіод негативний |
Земля (G) |
Після підключення ми можемо відкрити IDE Arduino та розпочати його програмування.
Програмування STM32 для РК-екрану за допомогою Arduino
Як сказано в цьому посібнику, ми будемо використовувати IDE Arduino для програмування нашого мікроконтролера STM32. Але в IDE Arduino за замовчуванням не буде встановлена плата STM32, отже, ми повинні завантажити пакет і підготувати Arduino IDE до того ж. Це саме те, що ми зробили в нашому попередньому підручнику, починаючи роботу зі STM32F103C8T6 з використанням Arduino IDE. Отже, якщо ви не встановили необхідні пакети, поверніться до цього підручника та дотримуйтесь його, перш ніж продовжувати тут.
Як тільки плата STM32 буде встановлена в IDE Arduino, ми можемо починати програмування. Програма дуже схожа на програму Arduino, єдине, що зміниться - це імена контактів, оскільки позначення у STM32 та Arduino різні. Повна програма подана в кінці цієї сторінки, але для пояснення програми я розділив її на невеликі змістовні фрагменти, як показано нижче.
Однією помітною перевагою використання Arduino для програмування наших мікроконтролерів є те, що Arduino має готові бібліотеки майже для всіх відомих датчиків і виконавчих механізмів. Отже, ми починаємо нашу програму, включаючи РК-бібліотеку, що значно полегшує програмування.
#включати
У наступному рядку ми повинні вказати, до яких контактів GPIO STM32 ми підключили лінії управління РК- дисплеєм та дані. Для цього ми повинні перевірити наше обладнання, для зручності ви також можете звернутися до таблиці у верхній частині, де перелічені назви контактів РК проти контакту GPIO STM32. Після згаданих контактів ми можемо ініціалізувати РК-екран за допомогою функції LiquidCrystal . Ми також називаємо наш РК-дисплей як " рідкокристалічний ", як показано нижче.
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; // згадати імена контактів, щоб з ЖК підключений до LiquidCrystal LCD (RS, EN, d4, d5, d6, d7); // Ініціалізація РК-дисплея
Далі ми заходимо до функції налаштування . Тут спочатку ми згадали, який тип РК ми використовуємо. Оскільки це РК-дисплей 16 * 2, ми використовуємо рядок lcd.begin (16,2). Код усередині функції налаштування void виконується лише один раз. Тому ми використовуємо його для відображення вступного тексту, який з’являється на екрані протягом 2 секунд, а потім очищається. Щоб згадати позицію, де повинен з'являтися текст, ми використовуємо функцію lcd.setcursor, а для друку тексту - функцію lcd.print . Наприклад, lcd.setCursor (0,0) встановить курсор на перший рядок і перший стовпець, де ми надрукуємо “ Interfacing LCD ” та функцію lcd.setCursor (0,1) переміщує курсор до другого рядка першого стовпця, де ми друкуємо рядок “ CircuitDigest ”.
void setup () {lcd.begin (16, 2); // Ми використовуємо РК-дисплей 16 * 2 lcd.setCursor (0, 0); // У першому рядку перший стовпець lcd.print ("Інтерфейс РК"); // Роздрукувати цей lcd.setCursor (0, 1); // У першому стовпці в другому рядку lcd.print ("- CircuitDigest"); // Роздрукувати цю затримку (2000); // чекаємо двох секунд lcd.clear (); // Очистити екран}
Після відображення вступного тексту ми утримуємо програму протягом 2 секунд, створюючи затримку, щоб користувач міг прочитати вступне повідомлення. Ця затримка створюється лінійною затримкою (2000), де 2000 - значення затримки в мільйонних секундах. Після затримки ми очищаємо РК-екран за допомогою функції lcd.clear (), яка очищає РК-дисплей, видаляючи весь текст на РК-екрані.
Нарешті, у циклі void ми відображаємо на першому рядку “STM32 - Blue Pill” та значення секунди на другому рядку. Значення секунди можна отримати за допомогою функції millis () . У Мілліс () являє собою таймер, який отримує збільшується право з моменту MCU харчується. Значення має форму у мілі секунд, тому ми ділимо його на 1000, перш ніж відображати на РК-дисплеї.
цикл void () { lcd.setCursor (0, 0); // У першому рядку перший стовпець lcd.print ("STM32 -Blue Pill"); // Роздрукувати цей lcd.setCursor (0, 1); // У першому стовпці першого стовпця в рядку з друком (lcd.print) // Вивести значення secounds }
Завантаження програми на STM32F103C8T6
Як обговорювалось у наведеному вище параграфі, ви зможете помітити результат, як тільки код буде завантажений. Але ця програма не буде працювати наступного разу, коли ви ввімкнете плату, оскільки плата все ще перебуває в режимі програмування. Отже, після завантаження програми перемичку при завантаженні 0 слід змінити на 0 позицій, як показано нижче. Також тепер, оскільки програма завантажена на плату STM32, нам уже не потрібна плата FTDI, і вся настройка може живитися від порту micro-USB плати STM32, як показано нижче.
Це лише простий проект взаємодії, який допоможе використовувати РК-дисплей із платою STM32, але надалі ви можете використовувати його для створення цікавих проектів. Сподіваюся, ви зрозуміли підручник і навчились з нього щось корисне. Якщо ви зіткнулися з будь-якою проблемою з приводу її роботи, будь ласка, використовуйте розділ коментарів, щоб опублікувати проблему, або використовуйте форуми для інших технічних питань. Повний робочий ЖК - дисплей з STM32 також можна знайти як відео, наведених нижче.