Wh1602d tml ct распиновка

Подключение и использование дисплея на базе HD44780.

Компания STMicroelectronics прекратила поддержку библиотеки SPL, которая использовалась в этом курсе. Поэтому я создал новую рубрику, посвященную работе уже с новыми инструментами, так что буду рад видеть вас там — STM32CubeMx. Также вот глобальная рубрика по STM32 — ссылка.

Что является неотъемлемой частью большого количества электронных девайсов? Конечно, средства индикации и графического вывода данных. Пользователю всегда удобнее и приятнее когда результат работы можно увидеть визуально. Поэтому сегодня мы подключим к STM32 дисплей для вывода текста и цифр. Героем наших экспериментов станет довольно-таки популярный дисплей WH1602 от Winstar’а. Вот кстати в комментариях появилось важное уточнение, что методика в принципе одинакова для всех дисплеев на базе HD44780. Спасибо JekaKey за важное дополнение!

Для начала дисплей надо собственно подключить к контроллеру. Скачиваем даташит и ищем распиновку. Вот смотрите:

Как вы уже поняли, WH1602 имеет 16 выводов. Рассмотрим каждый в отдельности…

  • Пины Vss, Vdd и K нужно подключать к земле и к питанию, то есть прямо так, как указано в таблице, тут без сюрпризов и даже нечего обсуждать.
  • Вывод под номером 3 служит для регулировки контрастности – если подадим туда +5В, то не увидим абсолютно ничего, а если закоротим вывод на землю, то будем любоваться двумя рядами черных квадратов. Естественно, это нас не устраивает, поэтому туда надо повесить потенциометр (резистор с переменным сопротивлением) для регулировки контрастности. Самая лучшая видимость символов обеспечивается напряжением 0.5-0.7 В на этом выводе дисплея.
  • Пин RS – это уже вывод, которым мы сами будем управлять при помощи микроконтроллера. Низкий уровень напряжения (0) на этом выводе означает, что сейчас последует команда, высокий уровень (1) – значит сейчас будут данные для записи в память дисплея.
  • Пин R/W – тут понятно, либо мы читаем данные (флаг занятости дисплея, например), в этом случае на этом выводе 1, либо записываем команду/данные в дисплей, тогда тут у нас 0.
  • DB7 – DB0 – шина данных, и этим все сказано )
  • Пин E – так называемый Enable signal. Нужен он вот для чего. Чтобы работать с дисплеем — записывать данные или подавать команду – нам надо выдать на этот вывод положительный импульс. То есть, процедура будет выглядеть следующим образом:
    • На пины RS, R/W, DB7 – DB0 – нужные сигналы, соответствующие нашей команде.
    • Подаем высокий уровень на вывод E.
    • Ждем (по даташиту – не менее 150 нс).
    • Подаем на вывод E низкий уровень.
  • На ножку A/Vee надо подать 4.2 В для питания подсветки дисплея.

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

Тут описаны все команды и сигналы, которые должны быть на соответствующих выводах WH1602 для каждой конкретной команды. Вот хотим мы, например, очистить дисплей, смотрим в таблицу, и вот она нужная команда — Clear Display.

Подаем на выводы RS, R/W, DB7, DB6, DB5, DB4, DB3, DB2, DB1 нули, а на ножку DB0 — единицу. Готово, что дальше? Верно, единицу на пин E, затем ожидаем некоторое время и снова опускаем E в ноль. Все, дисплей очищен. Только перед выполнением следующей команды необходимо выдержать паузу, указанную в даташите для каждой команды. Более эффективным будет опрос флага занятости, как только он сбросился в 0 – можно работать дальше. Для чтения этого флага тоже есть специальная команда, так что и с этим все понятно. Идем дальше…

А, собственно, с теорией все, можно уже что-нибудь попробовать написать. Я для облегчения работы сделал небольшую библиотеку для дисплея WH1602 (она подходит и для других дисплеев на базе HD44780), сейчас посмотрим, как ее можно использовать. Для начала скачиваем:

Получаем в свое распоряжение 2 файла, MT_WH1602.c и MT_WH1602.h. Отрываем второй, тут нам надо произвести выбор выводов и используемого контроллера.

Дисплей у меня, кстати, подключен так:

  • RS – PC2
  • R/W – PB10
  • E – PB14
  • DB7 – PD2
  • DB6 – PC12
  • DB5 – PA8
  • DB4 – PA10
  • DB3 – PA15
  • DB2 – PD11
  • DB1 – PA3
  • DB0 – PA5

Открываем файл MT_WH1602.h:

Тут нам надо выбрать STM32F4xx или STM32F10x мы будем использовать. То есть либо пишем:

Далее выбираем выводы микроконтроллера, к которым у нас подключен дисплей. Только сначала зададим, какие порты у нас задействованы. Вот при моем подключении используются GPIOA, GPIOB, GPIOC и GPIOD, пишем:

Осталось выбрать ножки. Например, RS у меня на выводе PC2, значит:

Аналогично для других ножек микроконтроллера.

С настройкой покончили, продолжаем! Для вызова команд, приведенных в начале статьи в файле MT_WH1602.c содержатся следующие функции (их имена соответствуют названиям команд):

Для некоторых команд нам нужно передать в функцию параметры, вот, например:

Смотрим в таблицу команд:

Видим, что командой Display ON/OFF не только включать/выключать дисплей, но также активировать/деактивировать курсор и мигание курсора. В даташите эти биты команды обозначены как D,C и B, их то мы и передаем в качестве параметров в функцию. Если нам нужно включить дисплей и курсор, но отключить мигание курсора, вызываем команду следующим образом:

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

Как видите, все работает правильно!

Кстати я как то упустил из виду вопрос о том, что же писать в дисплей, чтобы вывести тот или иной символ. Вот табличка из даташита:

Так вот, чтобы определить какое значение записать в память дисплея, нужно для конкретного символа взять числа, написанные сверху и слева в этой таблице. Например, символ «А». Смотрим — этому символу соответствует колонка 0100 (0х4) и строка 0001 (0х1). Получается, что для вывода символа «А» нужно записать в дисплей значение 0х41.

Вот теперь вроде все. Мы успешно осуществили подключение дисплея на базе HD44780, так что до скорых встреч в новых статьях )

P. S. Я при работе с библиотекой не тестировал функцию чтения флага занятости, так что, если вдруг что-то будет работать не так, как надо, пишите, будем разбираться.

Источник

Wh1602d tml ct распиновка

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

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

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

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

Категория: Documents
Дата: 22.03.2015

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

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

Система обозначений индикаторов 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 синий, негатив
  • F — 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.
  • E — TF, 12:00, N.T.
  • H — TF, 6:00, W.T.
  • K — TF, 12:00, W.T.
  • C — TM, 6:00, N.T.
  • F — TM, 12:00, N.T.
  • I — TM, 6:00, W.T.
  • L — TM, 12:00, W.T.
  • RF (Reflective LCD) — ЖК индикатор, работающий исключительно на отражении света. Изображение видно только при достаточном внешнем освещении.
  • TF — (Transflective LCD) -жидкокристаллический дисплей, который как отражает свет, так и испускает его (светится самостоятельно).
  • TM (TransmissiveLCD) — свет поступает сквозь 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 — иврит
  • T — температурная компенсация
  • E или EZ — edge BL (светодиоды подсветки расположены по периметру). Также символ может отсутствовать.
  • K или LB — eco BL (светодиоды расположены сзади экрана равномерно)
  • V — встроенный источник отрицательного напряжения
  • N — без встроенного источника отрицательного напряжения

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

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

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

  • xSSamsung
  • xPSunplus
  • xTSitronix
  • xEEpson
  • xUUMC

Пользуясь этой системой обозначений я выяснил, что у меня в руках оказался знакосинтезирующий индикатор 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 — символы национальных алфавитов и иные, с пропуском символов совпадающих по начертанию с английскими.

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

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

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

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

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

D7 D6 D5 D4 D3 D2 D1 D0 Назначение
0 0 0 0 0 0 0 1 Очистка экрана, AC=0, адресация AC на DDRAM
0 0 0 0 0 0 1 AC=0, адресация на DDRAM, сброшены сдвиги, начало строки адресуется в начале DDRAM
0 0 0 0 0 1 I/D S Выбирается направление сдвига курсора или экрана
0 0 0 0 1 D C B Выбирается режим отображения
0 0 0 1 S/C R/L Команда сдвига курсора/экрана
0 0 1 DL N F Определение параметров развертки и ширины шины данных
0 1 AC5 AC4 AC3 AC2 AC1 AC0 Присвоение счетчику AC адреса в области CGRAM
1 AC6 AC5 AC4 AC3 AC2 AC1 AC0 Присвоение счетчику 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 — включен

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

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

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

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

Источник

Adblock
detector