Перейти к содержанию

ЖК-дисплеи и дисплейные модули

Какие дисплеи подключают к микроконтроллерам: символьные ЖК-модули 1602 и 2004, графические 128 × 64, цветные TFT и OLED — чем они отличаются, по каким интерфейсам работают и какой выбрать для своей задачи.

ЖК-модуль — жидкокристаллическая панель вместе с контроллером, а обычно и с подсветкой, на одной плате. В англоязычной документации его называют LCM, liquid crystal module. Контроллер хранит изображение в своей памяти и сам формирует напряжения для панели, поэтому микроконтроллеру остаётся передавать команды и данные по одному из стандартных интерфейсов. В этом разделе — модули, которые подключают к микроконтроллерам: символьные, графические, цветные TFT и близкие к ним по применению OLED.

Какие бывают дисплейные модули

ТипКонтроллерИзображениеИнтерфейсПитаниеДля чего
Символьный ЖКHD44780 и совместимые: KS0066U, ST7066U, SPLC780Dот 8 × 1 до 40 × 2 и 20 × 4 знакомест, символы 5 × 8 точекпараллельная шина 8 или 4 бита, через переходник на PCF8574 — I²C5 В, есть исполнения на 3 Втекст, меню, показания приборов
Графический ЖКKS0108B с драйвером строк KS0107B128 × 64 точки: два KS0108B по 64 столбцапараллельная 8 бит, половину экрана выбирают сигналами CS5 В ± 10 %, панели — 8–17 В между VDD и VEEграфики, крупные цифры, пиктограммы
Графический ЖК со шрифтомST7920до 256 × 32 точек вместе с драйвером ST7921, модули 128 × 64параллельная 8 или 4 бита или последовательная по трём линиям, без чтения2,7–5,5 Втекст вместе с графикой
Цветной TFTILI9341240 × 320 точек, 262 144 цветаSPI по 3 или 4 линиям, параллельная 8, 9, 16 или 18 бит, RGBлогика 1,65–3,3 Вцветной интерфейс, графики, картинки
Цветной TFTST7735132 × 162 или 128 × 160 точек, 262 144 цветаSPI по 3 или 4 линиям, параллельная 8, 9, 16 или 18 бит2,6–3,3 Внебольшие цветные экраны
OLEDSSD1306128 × 64 точки, монохромныйI²C (адрес 0x3C или 0x3D), SPI по 3 или 4 линиям, параллельная 8 битлогика 1,65–3,3 В, панель 7–15 В, есть встроенный умножительяркие маленькие экраны без подсветки

Цифры в таблице — по даташитам контроллеров. Готовый модуль может отличаться: на плату ставят стабилизатор, преобразователь уровней или переходник, поэтому напряжение питания и уровни сигналов проверяйте по описанию конкретного модуля.

Символьные модули — самые простые: контроллер HD44780 и его аналоги хранят текст и шрифт, программа передаёт только коды символов. Восемь своих символов можно нарисовать в памяти CGRAM, а модули со знакогенератором с кириллицей выводят русский текст без ухищрений. Всё о распиновке, командах, инициализации и подключении по I²C — в статье «Символьные ЖК-модули на HD44780».

Графические монохромные показывают любую картинку из точек. KS0108B — драйвер на 64 столбца с ОЗУ на 512 байт, поэтому в модуле 128 × 64 их два, и программа сама выбирает, в какую половину экрана пишет. ST7920 сложнее: кроме графической памяти у него есть шрифты — 8192 иероглифа 16 × 16 и 126 буквенно-цифровых знаков 16 × 8 — и последовательная шина, которой хватает трёх проводов.

Цветные TFT на ILI9341 и ST7735 хранят кадр в своей памяти и принимают его по SPI или параллельной шине. Память у них большая — у ILI9341 172 800 байт, — а у микроконтроллера обычно нет места на копию кадра, поэтому графические библиотеки рисуют прямо в память дисплея: прямоугольник, текст, линию.

OLED на SSD1306 устроен иначе: каждая точка светится сама, подсветка не нужна. Контроллер принимает данные по I²C или SPI и хранит кадр 128 × 64 бит в своей памяти, а напряжение для панели, 7–15 В, даёт встроенный умножитель или внешний источник.

Как выбрать дисплей

  • Только текст. Символьный модуль 1602 или 2004: он дешёвый, понятный и почти не требует памяти микроконтроллера — текст хранит сам контроллер. Для русского текста ищите модуль со знакогенератором с кириллицей.
  • Мало свободных выводов. I²C: символьный модуль с переходником на PCF8574 или OLED на SSD1306 — по два сигнальных провода. Адрес у обоих задают перемычки или вывод на плате, и их легко поставить на одну шину с датчиками.
  • Графики, шкалы, крупные цифры. Монохромный 128 × 64: OLED на SSD1306 подключается по I²C и не требует подсветки, ЖК на KS0108 работает по 8-битной параллельной шине, ST7920 — по трём проводам последовательной.
  • Цветной интерфейс или картинки. TFT по SPI. Полный кадр 240 × 320 при 16 битах на точку — 1,23 Мбит: по SPI на 8 МГц, предельной частоте для Arduino Uno, он передаётся около 0,15 с, то есть не чаще 6 раз в секунду. Для анимации нужен микроконтроллер с SPI на десятки мегагерц, а 8-битному AVR больше подходят статичные экраны.
  • Питание 3,3 В. Контроллеры TFT и OLED рассчитаны на 3,3 В, а символьный модуль на 5 В от 3,3 В покажет бледное изображение или ничего: панели не хватит напряжения. Берите исполнение на 3 В.

Подключение модулей по I²C — в статье о шине I²C, другие шины — в разделе «Интерфейсы».

Готовятся к публикации

Графические модули 128 × 64 на KS0108 · ST7920 и модули 12864 · T6963C · SED1335 (RA8835) · SED1520 · OLED на SSD1306 · TFT на ILI9341 · TFT на ST7735 и ST7789 · Технологии ЖК: TN, STN, FSTN, TFT · Подсветка ЖК-модулей

Частые вопросы

Чем ЖК-дисплей отличается от OLED?

Жидкокристаллическая панель сама не светится: она управляет светом подсветки или внешним светом, поэтому у ЖК-модуля есть подсветка, а модули с отражающим поляризатором читаются и без неё. В OLED светится каждая точка, подсветка не нужна. Зато панели OLED нужно высокое напряжение: контроллеру SSD1306 — 7–15 В, их делает встроенный умножитель напряжения или внешний источник.

Что означают цифры 1602, 2004 и 12864?

У символьных модулей — число знакомест в строке и число строк: 1602 — 16 символов в 2 строки, 2004 — 20 символов в 4 строки. У графических — разрешение в точках: 12864 — 128 точек по горизонтали и 64 по вертикали. Цветные TFT обычно называют по диагонали в дюймах и разрешению.

Какой дисплей выбрать для Arduino Uno?

Для текста — символьный модуль 1602 или 2004: он прост в подключении и почти не расходует память. Для графиков и крупных цифр — монохромный 128 × 64, по двум проводам I²C удобен OLED на SSD1306. Цветной TFT 240 × 320 тоже работает, но кадр при 16 битах на точку занимает 153 600 байт — больше, чем вся память ATmega328P, поэтому рисуют сразу в память дисплея, а полная перерисовка по SPI на 8 МГц длится около 0,15 с.

Можно ли подключить дисплей по двум проводам?

Да, по I²C. Символьный модуль подключают через переходник на PCF8574 (адреса 0x20–0x27) или PCF8574A (0x38–0x3F), OLED на SSD1306 поддерживает I²C сам — по адресу 0x3C или 0x3D. Расплата за простоту — скорость: шина работает на 100–400 кГц, и большим цветным экранам её не хватает, их подключают по SPI или параллельной шине.