Закрыть
Работа с символьными ЖКИ на базе HD44780

Работа с символьными ЖКИ на базе HD44780

Часто пользователю требуется получать некоторую визуальную информацию с электронного устройства. Если информация может быть представлена в символьном виде, то одним из вариантов ее отображения является использование символьных жидко-кристаллических индикаторов (ЖКИ, или LCD в иностранном обозначении). Сегодня речь пойдет о символьных индикаторах, реализованных на базе контроллеров Hitachi HD44780, Samsung KS 0066 и аналогичных. 

В качестве примера я буду рассматривать ЖКИ Winstar Wh1602D-TMI-CT#, имеющийся у меня для проведения экспериментов. Я уже упоминал этот ЖКИ в статье Создаем свой компонент Fritzing, графическими наработками которой я сегодня и воспользуюсь.

Подробный datasheet к LCD WINSTAR WH1602D-TMI-CT:

WH1602D-TMI-CT
WH1602D-TMI-CT
wh1602d-tmi-ct.pdf
352.7 KiB
2689 Downloads
Детали

Упрощенно схему ЖКИ можно представить следующим образом:

Устройство ЖКИ

Основой индикатора является жидко-кристаллическая матрица, подавая напряжение на элемент которой, мы можем наблюдать точку на экране. В символьных ЖКИ эта матрица состоит из определенного количества знакомест, которые группируются по строкам и столбцам. Размер знакоместа в пикселях часто составляет 5×8 точек. Маркировка моего индикатора содержит цифры 1602 и это означает, что мой индикатор может отображать 2 строки по 16 символов в каждой. Также кодировка включает: код производителя и тип индикатора, наличие подсветки, цвет, кодовую таблицу и так далее.

 

Система обозначений индикаторов WINSTAR

Кодирование модели ЖК Winstar

Показать/скрыть расшифровку обозначений

1. Код производителя: WINSTAR DISPLAY CO, LTD

2. Тип индикатора:

  • H — символьный (знакосинтезирующий)
  • C - графический цветной с пассивной матрицей CSTN (ColorSTN)
  • X — графический с матрицей TAB (Tape Automatic Bonding– кристалл монтируется на трёхслойной полиамидной подложке-ленте)
  • O - графический c матрицей COG (Chip On Glass — кристалл на стекле)

3. Горизонтальное разрешение:

  • число символов в строке для индикаторов символьного типа
  • число точек по горизонтали для индикаторов графического типа

4. Вертикальное разрешение:

  • число строк для индикаторов символьного типа
  • число точек по вертикали для индикаторов графического типа

5. Код модели

  • Кодирует геометрические размеры, используемый контроллер

6. Тип подсветки:

  • N — без подсветки
  • B - электролюминисцентная, цвет свечения — синий
  • D - электролюминисцентная, цвет свечения — зеленый
  • W - электролюминисцентная, цвет свечения - белый
  • Y — светодиодная, цвет свечения — желто-зеленый
  • A — светодиодная, цвет свечения — янтарный
  • R — светодиодная, цвет свечения — красный
  • G — светодиодная, цвет свечения — зеленый
  • T — светодиодная, цвет свечения — белый
  • P — светодиодная, цвет свечения - синий
  • F — лампа с холодным катодом (CCFL), цвет свечения — белый

7. Технология изготовления ЖК

  • B - TN серый, позитив
  • N — TN, негатив
  • G - STN серый, позитив
  • Y — STN желто-зеленый, позитив
  • M — STN синий, негатив
  • — FSTN позитив
  • T - FSTN негатив
  • H - HTN серый, позитив
  • I — HTN черный, негатив
  • TN(Twisted Nematic) — структура кристаллов имеет спиралевидный тип
  • STN (Super Twisted Nematic)матрица, состоящая из ЖК-элементов с изменяемой прозрачностью
  • FSTN (Film Compensated STN) — STN-матрица c пленочной компенсацией. Технология позволяет получить увеличенный угол обзора
  • HTN (Homeotropic Twisted Nematic) - дисплеи основаны на более сильном молекулярном закручивании (обычно 110°) по сравнению с обычными скрученными нематиками TN (90°). Дают широкий угол обзора и улучшенную контрастность. По характеристикам превосходят STN –технологию. Низкое рабочее напряжение (2.5В и самая низкая стоимость среди нематиков делают их использование выгодным в переносных автономных устройствах).

8. Поляризатор, угол обзора, рабочий температурный диапазон

  • A — RF, 6:00, N.T.
  • D - RF, 12:00, N.T.
  • G - RF, 6:00, W.T.
  • J — RF, 12:00, W.T.
  • B — TF, 6:00, N.T.
  • — TF, 12:00, N.T.
  • H — TF, 6:00, W.T.
  • K — TF, 12:00, W.T.
  • C — TM, 6:00, N.T.
  • — TM, 12:00, N.T.
  • I — TM, 6:00, W.T.
  • L - TM, 12:00, W.T.
  • RF (Reflective LCD) — ЖК индикатор, работающий исключительно на отражении света. Изображение видно только при достаточном внешнем освещении.
  • TF - (Transflective LCD) -жидкокристаллический дисплей, который как отражает свет, так и испускает его (светится самостоятельно).
  • TM (Transmissive LCD) - свет поступает сквозь LCD со стороны задней подсветки. Имеет высокое качество изображения в помещении и обычно очень низкое (черный экран) при солнечном свете.
  • N.T. — нормальный температурный диапазон 0...+50ºC W.T. — расширенный температурный диапазон -20...+70ºC

9. Дополнительные опции

Первые два символа — знакогенератор:

  • CT/CP — латиница/кириллица
  • EP/ET/EE/EN/EC/ES — латиница/европейский
  • JP/JT/JS/JN — латиница/японский
  • HP/HS — иврит

3-4 символы:

  • T - температурная компенсация
  • E или EZ — edge BL (светодиоды подсветки расположены по периметру). Также символ может отсутствовать.
  • K или LB — eco BL (светодиоды расположены сзади экрана равномерно)
  • V — встроенный источник отрицательного напряжения
  • N — без встроенного источника отрицательного напряжения

10. Дополнительная информация:

# — совместимость со стандартом RoHS

Примечание (производитель микросхемы контроллера):

  • xSSamsung
  • xP - Sunplus
  • xT - Sitronix
  • xE - Epson
  • xU - UMC

Пользуясь этой системой обозначений я выяснил, что у меня в руках оказался знакосинтезирующий индикатор Winstar, отображающий символы в 16 столбцов и 2 строки, использующий контроллер KS 0066 или его аналог, со светодиодной подсветкой белого цвета по периметру, с синей негативной transmissive-матрицей, углом обзора «на 6 часов», рабочим диапазоном температур -20...+70ºC со знакогенератором, включающим кириллицу и совместимый со стандартом RoHS (не содержит вредных для здоровья компонентов, по всей видимости это означает, что при сборке использовался бессвинцовый припой).

 

Индикаторы на базе контроллеров HD44780, KS066U

Управляет работой индикатора встроенный контроллер. В качестве контроллера обычно выступает Hitachi HD44780, Samsung KS0066U или же их многочисленные аналоги и клоны. В индикаторах, производимых российской компанией МЭЛТ используется контроллер PCF8576.

У контроллера есть однобайтные ячейки памяти (DDRAM), содержимое которых собственно отображается на экране согласно таблице записанной в CGRAM. Ячеек памяти обычно больше чем знакомест в ЖКИ, поэтому адресацию знакомест нужно смотреть в datasheet. Нам необходимо в нужную позицию записать код требуемого символа, а все остальное контроллер сделает сам.

Для выбора позиции существует виртуальный, управляемый посредством команд курсор (номер текущей ячейки памяти, АС). Его можно сделать видимым. По умолчанию, при записи символа в ячейку, курсор сдвигаеться вперед на одну позицию.

Кодовая таблица индикатора, как правило состоит из трёх частей:

  • 0×00-0×07 — загружаемый знакогенератор, символы созданные вами
  • 0×20-0xFF — ASCII коды стандартный набор символов и английский алфавит
  • 0xA0-0xFF — символы национальных алфавитов и иные, с пропуском символов совпадающих по начертанию с английскими.
Показать/скрыть кодовую таблицу, с кириллицей

Таблица кодов HD44780

 

Пример: шестнадцатеричный код 0x4A соответствует букве J, код 0xB6 — букве ж.

Старшие четыре бита определяют столбец выбранного символа в таблице, младшие – строку. Можно создать свою собственную таблицу символов, записав ее в CGRAM. На каждый символ требуется 5 байт (на столбец по байту). Единицы в каждом байте определяют значимые пиксели. Например, для кодирования попиксельно цифры 8 потребуется такая последовательность: 0x6c,0×92,0×92,0×92,0x6c.

 

Конвертер кириллицы

Для преобразования текста, содержащего символы кириллицы в коды, соответствующие приведенной выше таблице, введите требуемый текст в текстовое поле. Полученный ниже результат можно скопировать и использовать в своих программах для вывода этого текста на ЖКИ.

 

Таблица кодов команд:

D7D6D5D4D3D2D1D0Назначение
00000001Очистка экрана, AC=0, адресация AC на DDRAM
0000001AC=0, адресация на DDRAM, сброшены сдвиги, начало строки адресуется в начале DDRAM
000001I/DSВыбирается направление сдвига курсора или экрана
00001DCBВыбирается режим отображения
0001S/CR/LКоманда сдвига курсора/экрана
001DLNFОпределение параметров развертки и ширины шины данных
01AC5AC4AC3AC2AC1AC0Присвоение счетчику AC адреса в области CGRAM
1AC6AC5AC4AC3AC2AC1AC0Присвоение счетчику AC адреса в области DDRAM

Таблица значений флагов:

ФлагЗначение
I/DРежим смещения счетчика адреса AC, 0 — уменьшение, 1 — увеличение
SФлаг режима сдвига содержимого экрана. 0 — сдвиг экрана не производится, 1 — после записи в DDRAM очередного кода экран сдвигается в направлении, определяемом флагом I/D: 0 — вправо, 1 — влево. При сдвиге не производится изменение содержимого DDRAM. Изменяются только внутренние указатели расположения видимого начала строки в DDRAM
S/CФлаг-команда, производящая вместе с флагом R/L операцию сдвига содержимого экрана (так же, как и в предыдущем случае, без изменений в DDRAM) или курсора. Определяет объект смещения: 0 — сдвигается курсор, 1 — сдвигается экран
R/LФлаг-команда, производящая вместе с флагом S/C операцию сдвига экрана или курсора. Уточняет направление сдвига: 0 — влево, 1 — вправо
D/LФлаг, определяющий ширину шины данных: 0 — 4 разряда, 1 — 8 разрядов
NРежим развертки изображения на ЖКИ: 0 — одна строка,1 — две строки
FРазмер матрицы символов: 0 — 5×8 точек, 1 — 5×10 точек
DНаличие изображения: 0 — выключено, 1 — включено
CКурсор в виде символа подчеркивания: 0 — выключен, 1 — включен 
BКурсор в виде мерцающего знакоместа: 0 — выключен, 1 — включен

Назначение выводов контроллера:

  • DB0-DB7 — отвечают за входящие/исходящие данные
  • RS — высокий уровень означает, что сигнал на выходах DB0-DB7 является данными, низкий — командой
  • W/R — определяет направление данных (чтение/запись). Так как операция чтения данных из индикатора обычно бывает невостребованной, то можно установить постоянно на этом входе низкий уровень
  • E — импульс длительностью не менее 500 мс на этом выводе определяет сигнал для чтения/записи данных с выводов DB0-DB7, RS и W/R
  • V0 — используется для задания контраста изображения
  • A, K — питание подсветки (анод и катод), если она имеется
  • VCC и GND — питание ЖК-индикатора

Для управления ЖК-индикатором необходимо 6 или 10 выводов микроконтроллера, в зависимости от того, выбран 4 или 8 битный режим обмена данными. Для сокращения требуемого числа выводов микроконтроллера можно работать в 4-битном режиме. В этом случае, на выводах DB4-DB7 индикатора сначала будет передаваться старшие четыре бита данных/команды, затем — младшие четыре бита. Выводы DB0-DB3 останутся незадействованными.

Один контроллер управляет ограниченным числом символов. На плате индикатора может быть 1, 2, 4, 8 контроллеров, а возможно — и больше.

Документация на контроллеры:

Контроллер Samsung KS0066U

Datasheet KS0066U
Datasheet KS0066U
ks0066u.pdf
541.0 KiB
1641 Downloads
Детали

Контроллер Hitachi HD44780

Datasheet HD44780
Datasheet HD44780
HD44780.pdf
322.1 KiB
2454 Downloads
Детали

переведенный на русский язык вариант:

Datasheet HD44780 Rus
Datasheet HD44780 Rus
HD44780_rus.pdf
385.2 KiB
7162 Downloads
Детали

Индикаторы различных производителей часто совместимы и взаимозаменяемы, но могут отличаться габаритами, креплением, контактами и прочим. Поэтому при выборе для новой разработки и поиске замены обращайтесь к каталогам производителей:

Таблица совместимости символьных ЖК-индикаторов разных производителей:

Показать/скрыть таблицу
ТипWinstarМЭЛТData VisionBolyminSunlikeMicrotipsWintekAmpire
8×2WH0802AMT-8S2ADV-0802BC0802ASC0802A MTC-0802XWM-C0802MAC082A
10×1MT-10S1
12×2WH1202ABC1202A 
16×1WH1601ADV-16100BC1601A1SC1601AMTC-16100XWM-C1601MAC161A
WH1601BBC1601BSC1601B
WH1601LMT-16S1ADV-16100BC1601D1SC1601DMTC-16101XWM-C1601QAC161B
DV-16120 AC161J 
16×2WH1602LMT-16S2RDV-16210BC1602ESC1602EMTC-16201XWM-C1602QAC162E
SC1602N
WH1602DMT-16S2JDV-16230BC1602B1SC1602BMTC-16202XWM-C1602NAC162A
DV-16235MTC-16203X
WH1602CMT-16S2DDV-16236BC1602DSC1602D
WH1602AMT-16S2HDV-16244BC1602HSC1602CMTC-16204XWM-C1602K
WH1602BDV-16252BC1602ASC1602AMTC-16205BWM-C1602M
WH1602MDV-16257BC1602FSC81602F
DV-16275
DV-16276
16×4WH1604AMT-16S4ADV-16400BC1604A1SC1604AMTC-16400XWM-C1604MAC164A
WH1604B
20×1DV-20100
MT-20S1L
20×2WH2002AMT-20S2ADV-20200BC2002ASC2002AMTC-20200XWM-C2002MAC202A
WH2002M
WH2002LMT-20S2MDV-20210BC2002BSC2002CMTC-20201XWM-C2002PAC202B
DV-20211AC202D
DV-20220
DV-20206-1
20×4WH2004AMT-20S4ADV-20400BC2004ASC2004AMTC-20400XWM-C2004PAC204A
SC2004G
SC2004C 
WH2004LDV-20410BC2004BMTC-20401XWM-C2004RAC204B
24×1MT-24S1L
24×2WH2402AMT-24S2ADV-24200BC2402ASC2402AMTC-24200XWM-C2402PAC242A
MT-24S2L
40×2WH4002ADV-40200BC4002ASC4002AMTC-40200XWM-C4002PAC402A
40×4WH4004ADV40400BC4004ASC4004AMTC-40400XWM-C4004MAC404A
SC4004C

 

Питание, регулировка контрастности и подсветка

Внимательно нужно относится к полярности подключения питания к ЖК-индикатору, а также следить, чтобы напряжение питания лежало в диапазоне +4.5...5.5 В. Невнимательное отношение к этим моментам может привести к выходу индикатора из строя!

Регулировка контрастности
Регулировка контрастности

ЖК-индикаторы позволяют производить регулировку контрастности, используя делитель напряжения. Перед выводом данных на индикатор необходимо убедиться, что управляющее контрастностью напряжение находится в рабочем диапазоне. Номиналы резисторов отличаются у различных производителе ЖК-индикаторов. У некоторых моделей индикаторов на плате предусмотрены места для установки такого делителя и достаточно впаять туда нужные номиналы резисторов. Контрастность индикатора зависит от угла обзора. Если индикатор «на двенадцать часов», то смотреть на такой индикатор нужно таким образом, чтобы он находился ниже уровня глаз, если «ноль часов», то он предназначен для наблюдения на уровне глаз (перпендикулярно плоскости экрана). Если же индикатор  «на шесть часов» то он должен использоваться при наблюдении выше уровня глаз. Этот момент обязательно нужно учесть при покупке.

Питание подсветки WH1602D
Питание подсветки

Если в индикаторе имеется подсветка, то выводы для неё обычно располагаются отдельно. Необходимо подключить её к питанию, задав номинальный ток с помощью внешнего резистора R (см. datasheet). Для моего индикатора номинальное напряжение на аноде должно составлять 3.5 В и ток 40 мА. Исходя из этого, номинал токоограничивающего резистора:

    \[R=\frac{5B-3.5B}{0.04A}=37.5\Omega\]

У некоторых производителей на плате индикатора предусмотрено место для установки такого резистора, нужно впаять соответствующий номинал, замкнуть перемычку и подсветка будет получать питание с той же линии, что и индикатор.

[add_ratings]

9 thoughts on “Работа с символьными ЖКИ на базе HD44780

  1. Спасибо за обзор...Отдельная благодарность за даташит на русском языке...Его я в обязательном порядке отдельно прочитаю,не каждый день видишь даташиты на великом могучем))))

    Правда как по мне такие экраны слишком много контактов забирают а я очень жадный,по этому такой себе приобрел- ru.aliexpress.com/item/Fr...commendVersion=1 = )

    И по поводу стандарта ROSH... Ненавижу его...Столько он крови пьет у всех радиолюбителей, ремонтников и прочих приближенных...Гореть в аду тем кто его придумал))))

    1. Если контакты в дефиците — использование устройств с поддержкой шины I2C правильное решение.

      Интересный OLED экранчик. Спасибо за ссылку.

  2. В таблице команд, у команды «Выбирается режим отображения», тоже ошибка.

    3 бит (D3) должен быть = 1.

  3. Спасибо. У меня китайский шилд с дисплеем заявленный как с установленной кириллицей. Но вытащить ее никак не удавалось. Ваша публикация помогла 100%. Еще раз спасибо.

  4. Здравствуйте. Можете помочь идентифицировать такой дисплей LCM16-1/EPP5?

Оставить ответ

Ваш email не будет опубликован.Обязательны поля помечены *