Управлять интерфейсом – это просто
Winstar предлагает пользователям широкую продуктовую линейку стандартных символьных ЖК-модулей идеально подходящих для применения в различных проектах. Доступные серии символьных дисплев: WH0802, WH1202, WH1601, WH1602, WH1604, WH2002, WH2004, WH2402 и WH4002. Отличительной чертой индикаторов даннного типа является небольшое количество пинов, что значительно упрощает выбор микроконтроллера для управления дисплеем.
Стандартным интерфейсом символьных ЖК-модулей является 6800 параллельный интерфейс, и для работы через другие интерфейсы пользователям зачастую приходится использовать переходную плату, что приводит к увеличению толщины дисплея (см. рис. 1), дополнительным процессам на этапе сборки и увеличению себестоимости конечного продукта.
Рис. 1: Дисплей + переходная плата для передачи данных через I2C интерфейс. | Рис. 2: Символьный дисплей Winstar серии WH1602. Возможность передачи данных через заранее выбранный интерфейс (I2C, SPI) не используя переходную плату |
Без использования переходной платы пользователю нужно только подключить отладочную плату Arduino Uno, что позволит задать другой интерфейс для управления символьными ЖК-модулями Winstar.
- Winstar WH1602 LCM: 16 символов х 2 строки
- Winstar WH2002 LCM: 20 символов х 2 строки
- Winstar WH2004 LCM: 20 символов х 4 строки
Данные серии дисплеев работают на базе IC RW1063 с поддержкой I2C, SPI и 6800 параллельного интерфейса.
Обозначение пин выводов STN LCD дисплея
Таблица обозначения выводов№ пина | Обозначение | Описание |
---|---|---|
No.1 | Vss | Заземление |
No.2 | Vdd | Питание логики |
No.3 | V0 | Настройка контраста |
No.4 | RS | Выбор Command/data |
No.5 | RW | Выбор Read/Write сигнала для интерфейса (только 6800 8/4 Бит) |
No.6 | E | Enable сигнал для интерфейса (только 6800 8/4 Бит) |
No.7 | DB0/SA0 | Шина данных 0 (6800 8/4 Бит) Настройка адреса (I2C интерфейс) |
No.8 | DB1/SA1 | Шина данных 1 (6800 8/4 Бит) Настройка адреса (I2C интерфейс) |
No.9 | DB2 | Шина данных 2 (6800 8/4 Бит) |
No.10 | DB3 | Шина данных 3 (6800 8/4 Бит) |
No.11 | DB4 | Шина данных 4 (6800 8/4 Бит) |
No.12 | DB5/CSB/CSB | Шина данных 5 (6800 8/4 Бит) CSB enable выбор (I2C и SPI интерфейс) |
No.13 | DB6/SDA/SCLK | Шина данных 6 (6800 8/4 Бит) SDA данные (I2C интерфейс) SCLK timing синхронизация (SPI интерфейс) |
No.14 | DB7/SCL/SID | Шина данных 7 (6800 8/4 Бит) SCL timing синхронизация (I2C интерфейс) SID данные (SPI интерфейс) |
No.15 | A+ | Питание подсветки + |
No.16 | K- | Питание подсветки - |
Для регулировки контрастности символов V0 (настройка контраста) из приведенной выше таблицы, используется переменный резистор 20к Ом. Если отображаемая информация на дисплее все еще остается невидимой или недостаточна читаема, требуется совершить настройку путем поворота потенциометра.
Рис. 3 V0 соединение потенциометра |
Как подключить дисплей к плате Arduino Uno?
На рис. 4 показаны способы подключения четырех разных интерфейсов (I2C, SPI, 6800 8 бит/4 бит) к Arduino Uno. Из рис. ниже, можно заметить, что интерфейсам I2C и SPI для подключения требуется лишь небольшое количество GPIO контактов для управления символьным ЖК-дисплеем.
Для подключения I2C интерфейса Arduino Uno предоставляет подтягивающие резисторы внутри I2C выводов, и нет дополнительных подтягивающих резисторов подключенных к контактам SDA и SCL. Если внутренний подтягивающий резистор отключен в программе, необходимо подключить внешний.
(a)Подключение интерфейса I2C |
(b) Подключение интерфейса |
|
|
(c)Подключение интерфейса 6800-4 Бит |
(d)Подключение интерфейса 6800-8 Бит |
|
|
Рис. 4 способы подключения различных интерфейсов к Arduino Uno |
Команды ЖК-дисплея
Не каждый интерфейс может использовать полный набор команд ЖК-дисплея; у интерфейса SPI нет линии управления RW и контактов MISO, поэтому нет поддержки команды чтения. Для записи через линию управления RS, нужно определить требуется ли записывать или отображать данные команды.
В интерфейсе I2C также нет линии управления RW, поэтому нет и поддержки команды чтения. Перед записью данных команды или данных дисплея необходимо отправить код управления командой (A0=0) или код управления данными (A0=1), чтобы определить является ли следующий отправляемый байт данными команды или дисплея.
Тайминг SPI и I2C интерфейса
На рис. 5, 6 показаны timing диаграммы управления дисплеем через интерфейс SPI. Можно заметить, что дисплей использует SPI, который не является типичным SPI интерфейсом, предоставляемым типичным MCU, и ему требуется дополнительная сигнальная линия RS, чтобы определить, является ли текущий отправляемый байт командой или данными. Битовые данные (BIT7~BIT0) линии данных (SID) изменяются, когда линия синхронизации (SCLK) находится на низком уровне. Битовые данные (BIT7~BIT0) захватываются, когда линия синхронизации (SCLK) имеет высокий уровень (BIT7~BIT0).
Рис. 5 Тайминг SPI write command |
Рис. 6 Тайминг SPI write data |
На рис. 7 и 8 показаны timing диаграммы управления дисплея через I2C интерфейс. За исключением chip select bar (CSB), можно обнаружить, что управление I2C интерфейсом заключается в отправке трех байтов каждый раз для записи данных команды или данных отображения. Среди них бит A0 второго байта будет определять, является ли третий байт данными команды или дисплея.
Рис. 7 Timing для написания команд I2C интерфейса |
Рис. 8 Timing для написания данных I2C интерфейса |
Код
Дисплей можно скомпилировать и использовать напрямую, изменив настройки программы.
Шаг 1: установить максимальное количество символов в одной строке дисплея.
Пример ниже показывает установленный максимум в 16 символов.
Шаг 2: установить максимальное количество строк в дисплее
Пример ниже показывает установленный максимум в 2 строки.
Шаг 3: интерфейс дисплея
Пример ниже показывает, что задан интерфейс I2C.
Шаг 4: компиляция и загрузка программы в плату Arduino Uno.
Рис 9. показывает примеры отображения информация при разном уровне контраста
Для того, чтобы изменить уровень контраста и выбрать наиболее подходящий, нужно изменить положение потенциометра.
(a) Низкий контраст. Отображаемые символы еле заметны | (b) Правильный контраст | (c) Темный контраст. Тень символов при отображении |
---|---|---|
Рис. 9Уровни контраста |
Рис. 10 Потенциометр