Рубрики
Проекты на STM32

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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