- Необходимые материалы
- Принципиальная схема и подключение
- Программирование STM32 для ЖК-дисплея с использованием Arduino
- Загрузка программы в STM32F103C8T6
Для любого проекта микроконтроллера взаимодействие с ним устройства отображения сделало бы проект намного проще и привлекательным для взаимодействия пользователя. Наиболее часто используемый дисплей для микроконтроллеров - это буквенно-цифровые дисплеи 16 × 2. Эти типы дисплеев не только полезны для отображения важной информации для пользователя, но также могут выступать в качестве инструмента отладки на начальном этапе разработки проекта. Итак, в этом руководстве мы узнаем, как мы можем связать ЖК-дисплей 16 × 2 с платой разработки STM32F103C8T6 STM32 и запрограммировать его с помощью Arduino IDE. Для людей, знакомых с Arduino, это руководство будет просто прогулкой по торту, поскольку они оба очень похожи. Также, чтобы узнать больше о STM32 Blue Pill Board, следуйте нашему руководству по началу работы.
Необходимые материалы
- Совет по развитию STM32 Blue Pill
- ЖК-дисплей 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 контактов должны использоваться в обязательном порядке для правильной работы ЖК-дисплея, если вы хотите узнать больше об этих ЖК-дисплеях, перейдите к этой статье с ЖК-дисплеем 16x2.
Принципиальная схема и подключение
Принципиальная схема интерфейса 16 * 2 матричного ЖК-дисплея с платой STM32F103C8T6 STM32 Blue Pill показана ниже. Это сделано с использованием программного обеспечения Fritzing Software.
Как видите, все подключение осуществляется через макетную плату. Для программирования микроконтроллера STM32 нам понадобится плата FTDI. Так же, как и в нашем предыдущем руководстве, мы подключили плату FTDI к STM32, вывод Vcc и заземление программатора FDTI подключены к выводу 5V и выводу заземления STM32 соответственно. Он используется для питания платы STM32 и ЖК-дисплея, поскольку оба могут принимать + 5В. Выводы Rx и Tx платы FTDI подключены к выводам A9 и A10 на STM32, так что мы можем программировать плату напрямую без загрузчика.
Затем ЖК-дисплей должен быть подключен к плате STM32. Мы собираемся использовать ЖК-дисплей в 4-битном режиме, поэтому нам нужно подключить 4 контакта с битом данных (DB4 к DB7) и два контакта управления (RS и EN) к плате STM32, как показано в схеме сопряжения с ЖК-дисплеем STM32F103C8T6. диаграмма выше. Следующая таблица поможет вам установить соединение.
ЖК-контакт No. |
Имя вывода ЖК-дисплея |
Имя контакта 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) |
PC13 |
14 |
Бит данных 7 (DB7) |
PC14 |
15 |
Светодиод Положительный |
5В |
16 |
Светодиод отрицательный |
Земля (G) |
После того, как соединения будут выполнены, мы можем открыть IDE Arduino и начать ее программирование.
Программирование STM32 для ЖК-дисплея с использованием Arduino
Как сказано в этом руководстве, мы будем использовать Arduino IDE для программирования нашего микроконтроллера STM32. Но в Arduino IDE по умолчанию не будет установлена плата STM32, поэтому мы должны загрузить пакет и подготовить Arduino IDE для него. Это именно то, что мы сделали в нашем предыдущем руководстве, приступив к работе с STM32F103C8T6 с использованием Arduino IDE. Поэтому, если вы не установили необходимые пакеты, вернитесь к этому руководству и следуйте ему, прежде чем продолжить здесь.
Как только плата STM32 будет установлена в IDE Arduino, мы можем начать программирование. Программа очень похожа на таковую для платы Arduino, единственное, что изменится, - это имена контактов, поскольку обозначения для STM32 и Arduino разные. Полная программа приведена в конце этой страницы, но для объяснения программы я разбил ее на небольшие значимые фрагменты, как показано ниже.
Одним из заметных преимуществ использования Arduino для программирования наших микроконтроллеров является то, что Arduino имеет готовые библиотеки почти для всех известных датчиков и исполнительных механизмов. Итак, здесь мы начинаем нашу программу с включения библиотеки LCD, которая значительно упрощает программирование.
#включают
В следующей строке мы должны указать, к каким выводам GPIO STM32 мы подключили линии управления ЖК- дисплеем и линии данных. Для этого мы должны проверить наше оборудование, для простоты вы также можете обратиться к таблице, приведенной вверху, в которой перечислены имена контактов ЖК-дисплея по сравнению с контактом GPIO STM32. После упоминания контактов мы можем инициализировать ЖК-дисплей с помощью функции LiquidCrystal . Мы также называем наш ЖК-дисплей « lcd », как показано ниже.
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) установит курсор в первой строке и первом столбце, где мы печатаем « Интерфейсный ЖК-дисплей » и функцию 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 перед отображением на ЖК-дисплее.
недействительный цикл () { lcd.setCursor (0, 0); // В первой строке первого столбца lcd.print ("STM32 -Blue Pill"); // Распечатать это lcd.setCursor (0, 1); // Во второй строке первый столбец lcd.print (millis () / 1000); // Выводим значение секунд }
Загрузка программы в STM32F103C8T6
Как обсуждалось в предыдущем абзаце, вы сможете заметить результат, как только код будет загружен. Но эта программа не будет работать в следующий раз, когда вы включите плату, так как плата все еще находится в режиме программирования. Таким образом, после загрузки программы перемычку при загрузке 0 следует вернуть в положение 0, как показано ниже. Кроме того, теперь, поскольку программа уже загружена на плату STM32, плата FTDI нам не нужна, и вся установка может питаться от порта micro-USB на плате STM32, как показано ниже.
Это простой проект интерфейса, который поможет использовать ЖК-дисплей с платой STM32, но в дальнейшем вы можете использовать его для создания интересных проектов. Надеюсь, вы поняли руководство и узнали из него что-то полезное. Если вы столкнулись с какой-либо проблемой в его работе, пожалуйста, используйте раздел комментариев, чтобы сообщить о проблеме, или используйте форумы для других технических вопросов. Полный рабочий ЖК - дисплей с STM32 также можно найти как видео, приведенных ниже.