ЖК-дисплеи и дисплейные модули
Какие дисплеи подключают к микроконтроллерам: символьные ЖК-модули 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²C | 5 В, есть исполнения на 3 В | текст, меню, показания приборов |
| Графический ЖК | KS0108B с драйвером строк KS0107B | 128 × 64 точки: два KS0108B по 64 столбца | параллельная 8 бит, половину экрана выбирают сигналами CS | 5 В ± 10 %, панели — 8–17 В между VDD и VEE | графики, крупные цифры, пиктограммы |
| Графический ЖК со шрифтом | ST7920 | до 256 × 32 точек вместе с драйвером ST7921, модули 128 × 64 | параллельная 8 или 4 бита или последовательная по трём линиям, без чтения | 2,7–5,5 В | текст вместе с графикой |
| Цветной TFT | ILI9341 | 240 × 320 точек, 262 144 цвета | SPI по 3 или 4 линиям, параллельная 8, 9, 16 или 18 бит, RGB | логика 1,65–3,3 В | цветной интерфейс, графики, картинки |
| Цветной TFT | ST7735 | 132 × 162 или 128 × 160 точек, 262 144 цвета | SPI по 3 или 4 линиям, параллельная 8, 9, 16 или 18 бит | 2,6–3,3 В | небольшие цветные экраны |
| OLED | SSD1306 | 128 × 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 или параллельной шине.