Подключение ЖК дисплея 16x2 к STM32 Blue Pill (STM32F103C8T6)


Жидкокристаллический (ЖК) дисплей формат 16x2 является самым распространенным дисплеем, применяемым в электронных устройствах для отображения алфавитно-цифровой информации. Кроме целей непосредственного отображения информации ЖК дисплеи могут использоваться в качестве устройств для отладки работы проектов. В данной статье мы рассмотрим подключение ЖК дисплея 16x2 к плате разработки STM32F103C8T6, известной также под названием STM32 Blue Pill ("синяя таблетка").

Внешний вид проекта подключения ЖК дисплея 16x2 к плате STM32 Blue Pill

Ранее на нашем сайте мы уже рассматривали подключение ЖК дисплея 16x2 к следующим микроконтроллерам (платам):

Также на нашем сайте вы можете посмотреть статью про начало работы с платой STM32F103C8T6.

Необходимые компоненты

  1. Плата разработки STM32F103C8T6 (STM32 Blue Pill) (купить на AliExpress).
  2. FTDI программатор (плата) (купить на AliExpress).
  3. ЖК дисплей 16x2 (купить на AliExpress).
  4. Макетная плата.
  5. Соединительные провода.

Основные принципы работы ЖК дисплея 16x2

ЖК дисплей 16x2 содержит 16 столбцов и 2 строки, вместе получается 32 блока пикселов. Внешний вид одного такого блока показан на следующем рисунке.

Внешний вид одного блока пикселов ЖК дисплея 16х2

Данный блок содержит 40 пикселов (точек), упорядоченных в форме 5 строк и 8 столбцов, эти 40 пикселов вместе формируют один символ. Назначение контактов (распиновка) ЖК дисплея 16x2 приведена на следующем рисунке.

Назначение контактов (распиновка) ЖК дисплея 16x2

Всего ЖК дисплей 16x2 содержит 16 контактов, которые можно условно разделить на следующие 4 группы.

Source Pins (1, 2 и 3): используются для подачи питания на дисплей и регулировки уровня его контрастности.

Control Pins (4, 5 и 6): контакты управления. Используются для установки различных режимов работы дисплея.

Data/Command Pins (7-14): контакты для передачи данных/команд.

LED pins (15 и 16): контакты для включения/выключения фоновой подсветки дисплея (если она нужна).

Для корректной работы дисплея обязательно использование только 10 контактов из 16 перечисленных.

Схема проекта

Схема подключения ЖК дисплея 16x2 к плате STM32 Blue Pill представлена на следующем рисунке.

Схема подключения ЖК дисплея 16x2 к плате STM32 Blue PillДля программирования платы STM32 Blue Pill мы используем плату FTDI, ее контакты Vcc и ground подключены к контактам 5V и ground платы STM32. С помощью этого подключения запитываются плата STM32 и ЖК дисплей поскольку они оба могут запитываться от +5V. Контакты Rx и Tx платы FTDI подключены к контактам A9 и A10 платы STM32 для ее непосредственного программирования.

ЖК дисплей 16x2 подключен к плате STM32 в 4-битном режиме – к плате STM32F103C8T6 подключены его 4 контакта данных и два управляющих контакта (RS и EN). Полная схема соединений между платой STM32 и ЖК дисплеем 16x2 приведена в следующей таблице.

№ контакта ЖК дисплея Обозначение контакта ЖК дисплея Контакт платы STM32
1 Ground (Gnd) Ground (G)
2 VCC 5V
3 VEE Ground (G)
4 Register Select (RS) PB11
5 Read/Write (RW) Ground (G)
6 Enable (EN) PB10
7 Data Bit 0 (DB0) No Connection (NC)
8 Data Bit 1 (DB1) No Connection (NC)
9 Data Bit 2 (DB2) No Connection (NC)
10 Data Bit 3 (DB3) No Connection (NC)
11 Data Bit 4 (DB4) PB0
12 Data Bit 5 (DB5) PB1
13 Data Bit 6 (DB6) PC13
14 Data Bit 7 (DB7) PC14
15 LED Positive 5V
16 LED Negative Ground (G)

Далее рассмотрим программу проекта.

Объяснение программы для платы STM32

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Для программирования платы STM32 мы будем использовать Arduino IDE, которую необходимо предварительно подготовить, установив в нее необходимые пакеты для работы с платой STM32. Подробно эти процессы описаны в следующей статье.

Наша программа по взаимодействию с ЖК дисплеем очень похожа на аналогичную программу для платы Arduino, необходимо будет всего лишь изменить номера контактов – они у плат STM32 и Arduino отличаются.

Одним из весомых преимуществ платформы Arduino является то, что в ней уже присутствуют необходимые библиотеки для работы со всеми возможными датчиками, исполнительными механизмами и дисплеями. Поэтому первым делом в программе подключим библиотеку для работы с ЖК дисплеем.

Далее мы укажем к каким контактам платы STM32 подключен ЖК дисплея и с помощью функции LiquidCrystal создадим объект для работы с дисплеем под названием “lcd”.

Затем в функции void setup() мы укажем тип дисплея (16х2). Далее мы покажем приветственное сообщение на экране ЖК дисплея и через 2 секунды очистим его экран.

После этого внутри функции void loop мы отобразим строку “STM32 –Blue Pill” на первой строке дисплея и значение секунд на второй строке дисплея. Значение в секундах мы будем получать с помощью функции millis(). Фактически, функция millis() представляет собой таймер, который отсчитывает, прошедшее с момента подачи питания на плату. Значение, получаемое от функции millis(), мы будем делить на 1000, перед тем как выводить его на экран дисплея.

Загрузка программы в плату STM32F103C8T6

Соберите схему, показанную выше в нашей статье. Убедитесь что в настройках Arduino IDE выбран правильный тип платы. Перед началом загрузки программы в плату проверьте что джампер boot 0 установлен в положение 1 как показано на рисунке ниже и нажмите кнопку сброса (reset button). Затем, после нажатия кнопки upload в Arduino IDE код программы должен начать загружаться в плату. После его загрузки на экране ЖК дисплея должно отобразиться сообщение как показано на следующем рисунке.

Окончание процесса загрузки программы в плату STM32F103C8T6

Тестирование работы проекта

После загрузки программы в плату STM32F103C8T6 на экране ЖК дисплея вы должны увидеть выводимое сообщение. Но в следующий раз, когда вы снова подадите питание на плату, программа не будет работать поскольку она все еще находится в режиме программирования. Чтобы она работала при каждой подаче питания на плату ее (плату) необходимо перевести в рабочий режим (Operating Mode), доля этого после загрузки программы в плату измените положение джампера boot 0 в положение 0. После этого нам уже будет не нужна плата FTDI и мы можем отключить ее от схемы и наша программа теперь будет работать при каждой подаче питания на плату STM32.

Тестирование работы проекта

Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Исходный код программы (скетча)

Видео, демонстрирующее работу проекта

Источник статьи

(Проголосуй первым!)
Загрузка...
4 347 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *