ЖК-дисплеи и дисплейные модули
Какие дисплеи подключают к микроконтроллерам: символьные ЖК-модули 1602 и 2004, графические 128 × 64, цветные TFT и OLED — чем они отличаются, по каким интерфейсам работают и какой выбрать для своей задачи.
- HD44780 и LCD 1602Распиновка 1602, команды, инициализация, I²C, кириллица, CGRAM
- OLED на SSD1306Питание, I²C и SPI, адрес, память по страницам, команды, инициализация
- Nokia 5110 на PCD8544Питание 3,3 В, шина до 4 МГц, память 504 байта, команды, VOP и смещение
- TFT на ILI9341Питание, SPI с D/CX, RGB565 и RGB666, окно записи, поворот, инициализация
- TFT на ST7735 и ST7789Память и разрешения, SPI, цвет, поворот, смещение окна, инициализация
- ST7920 и модули 12864Питание, параллельный и последовательный интерфейс, команды, текст и графика
- Графические модули на KS0108Две половины экрана, страницы памяти, команды, флаг занятости, тайминги
- E-paper на SSD1680Бистабильность, SPI, BUSY, память, порядок обновления, глубокий сон
- Семисегментные индикаторыОбщий анод и катод, коды 0–F, резисторы, мультиплексирование разрядов
- Технологии ЖК: TN, STN, FSTN, TFTTN, STN, FSTN и TFT, позитив и негатив, поляризаторы, угол обзора
- Подсветка ЖК-модулейТок подсветки, резистор от 5 и 3,3 В, цепочки LED, ШИМ, ресурс
ЖК-модуль — жидкокристаллическая панель вместе с контроллером, а обычно и с подсветкой, на одной плате. В англоязычной документации его называют 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 — и последовательная шина, которой хватает трёх проводов. Подключение модулей 12864 по трём проводам, команды, текст и графика ST7920 — в статье «ST7920 и модули 12864». Как устроены память по страницам и выбор половин экрана у KS0108 — в статье «Графические модули на KS0108».
Цветные TFT на ILI9341 и ST7735 хранят кадр в своей памяти и принимают его по SPI или параллельной шине. Память у них большая — у ILI9341 172 800 байт, — а у микроконтроллера обычно нет места на копию кадра, поэтому графические библиотеки рисуют прямо в память дисплея: прямоугольник, текст, линию. Подключение по SPI, форматы цвета, окно записи и инициализация ILI9341 — в статье «TFT на ILI9341». Маленькие дисплеи на ST7735 и ST7789 и смещение окна у них — в статье «TFT на ST7735 и ST7789».
OLED на SSD1306 устроен иначе: каждая точка светится сама, подсветка не нужна. Контроллер принимает данные по I²C или SPI и хранит кадр 128 × 64 бит в своей памяти, а напряжение для панели, 7–15 В, даёт встроенный умножитель или внешний источник. Адрес и управляющий байт I²C, память по страницам, команды и инициализация — в статье «OLED на SSD1306».
Дисплей Nokia 5110 — монохромный ЖК 84 × 48 на контроллере PCD8544: питание 3,3 В, последовательная шина до 4 МГц, ток около 0,3 мА. Команды, контраст и инициализация — в статье «Nokia 5110 на PCD8544».
Электронная бумага хранит изображение без питания и читается на солнце, но обновляется медленно и требует напряжений до 20 В, которые контроллер вырабатывает сам. Интерфейс, сигнал BUSY, память и порядок обновления на примере SSD1680 — в статье «E-paper на SSD1680».
Семисегментные светодиодные индикаторы — самые простые устройства отображения: семь сегментов-светодиодов и точка с общим анодом или катодом. Несколько разрядов включают по очереди — динамической индикацией, а общий вывод разряда коммутируют транзистором. Коды цифр, расчёт резисторов и токи портов — в статье «Семисегментные индикаторы».
Чем отличаются панели TN, STN, FSTN и TFT, позитивные и негативные, отражающие и просветные и как прочитать код модуля Winstar — в статье «Технологии ЖК». Как задать ток подсветки, рассчитать резистор от 5 и 3,3 В и продлить ресурс светодиодов — в статье «Подсветка ЖК-модулей».
Как выбрать дисплей
- Только текст. Символьный модуль 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, другие шины — в разделе «Интерфейсы».
Готовятся к публикации
T6963C · SED1335 (RA8835) · SED1520
Частые вопросы
Чем ЖК-дисплей отличается от 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 или параллельной шине.