Рассмотрим подключение и работу с дисплеем Nokia 5110 на STM32. В качестве контроллера STM32 возьмем отладочную плату STM32F407VET6. В программе на экран будем выводить картинку с логотипом, а также отобразим 5 счетчиков.
Описание LCD Nokia 5110
Характеристики дисплея LCD Nokia 5110 представлены в таблице ниже:
Характеристика | Значение |
Напряжение | 3.3 В |
Размер видимой области | 84х48 pixel |
Тип | TFT |
Цвет | монохромный |
Интерфейс обмена | SPI |
Потребление | без подсветки 5 мА с подсветкой 20 мА |
Температура работы | 0..+50 |
Частота тактировния | до 4Мгц |
Время сброса | 100 нс |
Микросхема | PCD8544 |
Подключение подсветки | Синий: к VCC. Красный: к GND |
Схема подключения дисплея
Описание контактов дисплея NOKIA 5110
VCC | Питание 3,3 В |
GND | Общий провод |
CE | Включение, активный низкий уровень |
DC | Данные/команда: 0 – данные, 1 – команда |
DIN | Вход интерфейса SPI |
CLK | Тактовый сигнал |
Reset | Сброс, активный низкий уровень |
LED | Подсветка. Для модулей на красной плате соединить с общим, для синих модулей соединить с питанием. Применять в цепи подсветки резистор 330 Ом. В некоторых модификациях уже установлен резистор в некоторых нет. Для определения наличия резистора и выбора оптимального режима подсветки следует контролировать ток модуля и ток подсветки. Он не должен превышать 20 мА. |
Подключение дисплея Nokia 5110
Обратите внимание, в модулях синего цвета подсветка подключается к питанию, в красных модулях к GND.
Дисплей Nokia 5110 | Плата Arduino |
---|---|
Контакт 1 RST | PB11 |
Контакт 2 CE | PB12 |
Контакт 3 DC | PB14 |
Контакт 4 DIN | PB15 |
Контакт 5 CLK | PB13 |
Контакт 6 VCC | +3.3V |
Контакт 7 LIGHT | GND |
Контакт 8 GND | GND |
Настройка портов производилась в CubeMX, а затем код был сгенерирован для CubeIDE. На рисунке ниже пример из проекта по настройке портов для подключения дисплея.
Настройка SPI в CubeMX выглядит следующим образом:
Обратите внимание на Baud Rate. Это скорость передачи. Она должна быть ниже 4Мгц. Уменьшение скорости можно сделать повышая предделитель Prescaler.
Подготовка графики для дисплея
И так, мы подключили наш дисплей к STM32, но нам необходимо подготовить графику для LCD. Так как дисплей монохромный то у нас в наличии только 2 цвета: черный и белый. Так же необходимо помнить о размере дисплея: 84×48.
Для удобной работы с графикой, используйте программу Image Generator. Сделаем в ней логотип нашего сайта.
Нажимаем Картинка, открываем нужный файл и нажимаем преобразовать.
Далее в вкладке Массив, мы имеем наш массив байт. Его мы копируем и вставляем в нашу программу.
Пример использования LCD на STM32
#include "main.h" #include "nokia5110.h" #include "FONT_IMAGE.h" #include <stdio.h> #define DELAY 2000 N5110_Init(); N5110_SetContrast(60); HAL_TIM_Base_Start_IT(&htim6); N5110_DrawBitmap(0, 0, (uint8_t *)Logo, N5110_MAX_WIDTH, N5110_MAX_HEIGHT); //N5110_Update(); HAL_Delay(3000); int counter = 0; char numb[6]; while (1) { N5110_Clear(); N5110_SetFont(SmallFont); sprintf(numb,"%d",(uint16_t)counter); N5110_PrintStr(0, 0, numb, true); sprintf(numb,"%d",(uint16_t)counter*2); N5110_PrintStr(0, 10, numb, true); sprintf(numb,"%d",(uint16_t)counter*3); N5110_PrintStr(0, 20, numb, true); sprintf(numb,"%d",(uint16_t)counter*4); N5110_PrintStr(0, 30, numb, true); sprintf(numb,"%d",(uint16_t)counter*5); N5110_PrintStr(0, 40, numb, true); HAL_Delay(550); counter++; } } void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim == &htim6) { N5110_Update(); } }
В примере мы настроили прерывание от таймера 6 на срабатывание через каждые 10мс, и в функции Callback вызываем обновление экрана. Полный проект для CubeMX и CubeIDE вы сможете скачать ниже по ссылкам.
Если вы не знакомы как настраивать прерывания в CubeMX, прочтите текст ниже:
Первым делом нам необходимо настроить время срабатывания таймера. Для этого в меню справа в разделе Timers выбираем нужный нам таймер и настраиваем его согласно картинке ниже:
Далее в вкладке NVIC Settings необходимо установить галку, тем самым мы разрешаем прерывание от этого таймера:
И последней настройкой будет включение функции Callback от таймера. Для этого переходим в Project Manager – > Advenced Settings и справа в поле Register CallBack установите TIM-> Enable. Все теперь можно использовать функцию CallBack с прерыванием от таймера.
Видео с демонстрацией работы библиотеки представлено ниже:
Загрузки
Где купить
- Плата STM32F407VET6
- Дисплей Nokia 5110