Рассмотрим подключение и работу с дисплеем 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









Рады, что смогли помочь!