Подключение дисплея LCD1602 через интерфейс I²C к STM32 в CubeIDE

В данной статье подробно опишу процедуру подключения LCD-дисплея формата 1602 с интерфейсом I2C к плате STM32 Blue Pill, а также приведу пример написания программного кода в среде разработки STM32CubeIDE.

1. Описание дисплея LCD1602


LCD1602 дисплей позволяет выводить текстовую информацию двумя строками по 16 символов каждая. Может выводить стандартные цифровые и алфавитные знаки (кроме кириллицы, но сейчас уже есть дисплеи которые поддерживают), а также можно самостоятельно создавать символы для отображения примитивной графики, таких как шкалы или иконки. Устройство оборудовано популярным контроллером HD44780 и дополнительным модулем I2C, обеспечивающим удобное соединение с платой STM.

При прямом подключении стандартного LCD дисплея к STM32 потребуется задействовать минимум восемь цифровых вводов-выводов, что неоправданно расточительно расходует ограниченное количество свободных портов микроконтроллера. Именно поэтому предпочтительнее выбрать версию LCD-дисплея с поддержкой интерфейса I2C. В рамках данного руководства мы будем использовать именно I2C версию дисплея 16×2. Основное преимущество её применения состоит в том, что такое решение требует лишь двух выводов микроконтроллера STM32 для полноценного взаимодействия с экраном.

Распиновка модуля:
GND – минус от источника;
► VCC  – питание модуля 3.3В;
► SDA –  шины данных I2C (SPI);
► SCL –  шины данных I2C (SPI).

С обратной стороны дисплея расположен переменные резистор (синий квадрат). Предназначен для изменение уровня контрастности отображаемых символов на экране, благодаря этому потенциометру можно регулировать контрастность в различной степени освещения.

2. Подключение дисплея LCD1602 к STM32


В примере ниже покажу схему подключения дисплея LCD1602 к микроконтроллеру STM32, а также вывод небольшого фрагмента текста на экран.

Необходимые компоненты.
► Arduino UNO R3 x 1 шт.
► Датчик качества воздуха, температуры и влажности ENS160 + AHT21 x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
► Кабель USB 2.0 A-B x 1 шт

Подключение:
Соберите схему, которая представлена ниже, питание дисплея LCD осуществляется от контакта 3.3В и GND платы STM32. Выводы SCL и SDA соединяем с соответствующими выводами PB7 и PB6 на плате STM32.

Если у вас обычный дисплей LCD1602 на 5В, необходимо поправить схему и подключить вывод VCC к 5В и после прошивки, подключить плату через USB разъем, в противном случаи текст будет почти не виден.

3. Настройка STM32CubeIDE


Программирование платы STM32 будет осуществляться посредством среды STM32CubeIDE. Запустив среду, создайте новый проект, в предыдущей статье рассказывал об этом. На этапе выбора платы укажите «STM32F103C8T6» или укажите свою платы разработки. Далее выберите любой доступный пункт в открывшемся списке, аналогично изображению ниже, и подтвердите выбор нажатием кнопки «Next».

Задайте название вашего проекта и завершите этап начальной настройки, нажав кнопку «Finish»

Далее перейдите в раздел «Connectivity -> I2C1». Здесь установите режим работы I2C на значение ‘I2C‘.

Теперь нужно включить внешний резонатор, для этого перейдите в раздел «System Core > RCC», затем в параметрах высокочастотных часов выберите вариант «Crystal / Ceramic Resonator».

Далее необходимо настроить часов, для этого перейдите в раздел «Clock Configuration», расположенный вверху. Здесь мы выберем частоту тактового сигнала, как показано ниже.

Теперь сохраните ваш проект, воспользовавшись комбинацией клавиш «Ctrl + S». После сохранения появится окно подтверждения, в котором нужно нажать кнопку «Yes». Это действие инициирует автоматическую генерацию базового шаблона кода.

Далее откроется дополнительное окно с предложением перейти к перспективе. Подтвердите действие, выбрав вариант «Yes».

4. Установка библиотеки для работы с дисплеем LCD1602 по интерфейсу I2C


Для работы с дисплеем необходимо специальная библиотека «liquidcrystal_i2c», для этого в программе «STM32CubeIDE» откройте папку «Core», перейдите в подпапку «Inc» и скопируйте файл под названием «liquidcrystal_i2c.h». Далее, аналогично, перейдите в «Core > Src» и скопируйте файл «liquidcrystal_i2c.c»

Перед сохранением файла вам потребуется внести следующие изменения:

  • Измените строку 4 на #include “stm32f1xx_hal.h”
  • Измените строку 58 на #define DEVICE_ADDR (0x27 << 1)

5. Программа


Скопируйте приведенный ниже программу в файл «main.c» в указанные строки.

Описание программы:

Первым делом мы включаем библиотеку liquidcrystal_i2c.h, что даст нам возможность пользоваться функциями управления LCD дисплеем.

Первым шагом является инициализация дисплея. Функция принимает только один параметр, количество строк. Поскольку мы используем дисплей 16×2, мы указали в качестве параметра значение «2».

Далее выполняем очистку экрана путем вызова функции

До вывода текста задаём позицию курсора посредством функции HD44780_SetCursor(). Данная функция требует двух аргументов: первый — номер столбца, второй — номер строки. Мы задали значения «0» и «0», соответственно, курсор окажется в самом левом верхнем углу дисплея. Следующим шагом отображается текстовая строка «HELLO» путём вызова функции HD44780_PrintStr().

После внесения правок сохраняем файл main.c и можем приступать к компиляции проекта.

Создаем проект нажатием комбинации клавиш Ctrl + B либо выбрав пункт меню Project → Build All. После запуска сборки через несколько секунд проект будет готов, если отсутствуют ошибки.

6. Загрузка прошивки с помощью программатора ST-Link в STM32


Итак, проект успешно собран, теперь приступим к следующему шагу — прошивке платы STM32. Подключим нашу плату Blue Pill к программатору ST-Link, используя версию ST-Link V2.

Для подключения программатора ST-Link с STM32 задействуются выводы: SWDIO, SWCLK, GND и 3,3 В. Контакт SWDIO служит для передачи данных, а SWCLK обеспечивает синхронизацию сигналов. Назначение каждого вывода определяется согласно спецификации ST-LINK V2.

Также переключите джампер BOOT в правую позицию, чтобы перевести микроконтроллер в состояние готовности к программированию.

Подключите ST-LINK V2 к вашему компьютеру через USB-кабель. Нажмите кнопку «RUN» в среде разработке IDE (зеленая стрелка вправо), далее появится диалоговое окно «Изменение конфигурации», подтвердите выбор кнопкой «OK». Спустя несколько секунд прошивка успешно загрузится на плату STM32. Останется вернуть перемычку в обратное положение и на дисплее появится текст.

Файлы для загрузки
Купить отладочную плату STM32F103C8T6
Купить программатор ST-Link V2 - STM8, STM32
Купить интерфейсный модуль IIC, I2C, TWI для LCD

Вам может также понравиться...

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

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