ЖК-дисплеи Winstar сохраняют параллельный интерфейс и поддерживают последовательный
15 марта 2023
Александр Калачев (г. Барнаул)
Компания Winstar предлагает широкий ассортимент текстовых ЖК-дисплеев серий WH0802, WH1202, WH1601, WH1602, WH1604, WH2002, WH2004, WH2402 и WH4002, которые поддерживают интерфейсы 6800, I2C и SPI.
В ряде проектов разработчик может задействовать для управления дисплеем меньшее количество выводов, распределяя их для других задач или просто применяя микроконтроллер в более компактном корпусе. Обычно для таких решений используется специализированный модуль преобразователя параллельного интерфейса в I2C (рисунок 1).
Однако такой подход может принести ряд таких проблем, как возможное увеличение толщины финального изделия, увеличение трудоемкости монтажа, возможны сложности, связанные с качеством дополнительных контактов и соединений.
Winstar предлагает модели ЖК-дисплеев со встроенной поддержкой последовательных интерфейсов при сохранении совместимости с привычным параллельным интерфейсом (рисунок 2):
Дисплеи данных серий управляются встроенным контроллером RW1063, который поддерживает как параллельный интерфейс 6800, так и последовательные I2C и SPI (таблица 1).
Таблица 1. Распиновка выводов дисплеев с контроллером RW1063
№ вывода. | Обозначение | Описание |
---|---|---|
1 | Vss | Общий провод |
2 | Vdd | Напряжение питания |
3 | V0 | Настройка контраста |
4 | RS | Селектор «команда/данные» |
5 | RW | Чтение/запись (для интерфейса 6800 8/4 бит) |
6 | E | Сигнал разрешения (для интерфейса 6800 8/4 бит) |
7 | DB0/SA0 | Бит 0 для интерфейса 6800/линия адреса SA0 для I2C |
8 | DB1/SA1 | Бит 1 для интерфейса 6800/линия адреса SA1 для I2C |
9 | DB2 | Бит 2 для интерфейса 6800 |
10 | DB3 | Бит 3 для интерфейса 6800 |
11 | DB4 | Бит 4 для интерфейса 6800 |
12 | DB5/CSB/CSB | Бит 5 для интерфейса 6800/линия CSB для интерфейсов I2C/SPI |
13 | DB6/SDA/SCLK | Бит 6 для интерфейса 6800/линия SDA для интерфейса I2C, SCLK для SPI |
14 | DB7/SCL/SID | Бит 7 для интерфейса 6800/линия SCL для интерфейса I2C, SID для SPI |
15 | A+ | Анод подсветки «+» |
16 | K- | Катод подсветки «-» |
Для регулировки контраста на вывод V0 подается сигнал от среднего вывода переменного резистора с номиналом в пределах 10…20 кОм, подключенного между питающим напряжением и общим проводом (рисунок 3).
Способы подключения ЖК-дисплеев с RW1063 к Arduino Uno
Варианты подключения ЖК-дисплеев Winstar к Arduino (на примере Arduino Uno) представлены на рисунке 4. На нем можно видеть, что варианты с SPI/I2C требуют меньше линий. Поскольку на платах Arduino Uno на выводах I2C уже установлены подтягивающие резисторы, на соответствующей схеме подключения они не показаны.
Выигрыш в количестве свободных выводов несколько сглаживается рядом ограничений, которые, однако, проявляются далеко не в каждом случае – не все коммуникационные интерфейсы поддерживают полный набор команд ЖК-модулей. Так, в интерфейсе SPI отсутствует линия управления RW и контакты MISO, поэтому нет команды чтения. Линия управления RS применяется для обозначения команд или данных, посылаемых модулю.
Ситуация и с интерфейсом I2C аналогична. Перед записью команд управления необходимо отправить код управления командой, а для указания модулю, что далее будут следовать данные, посылается код управления данными.
На рисунках 5 и 6 представлены временные диаграммы передачи команд и данных ЖК-модуля при помощи SPI-интерфейса. Он немного отличается от классического варианта SPI-интерфейса тем, что задействуется дополнительная линия RS для идентификации типа передаваемых данных.
На рисунках 7 и 8 представлены временные диаграммы сигналов при работе с ЖК-дисплеем по шине I2C. Управление модулем по интерфейсу I2C заключается в отправке трехбайтной посылки. Нулевой бит второго байта, отмеченного на рисунках как «А0», указывает тип третьего байта – команду модулю или данные для отображения.
На рисунке 9 приведены возможные примеры изображения на дисплеях при различном контрасте. Следует отметить, что его настройка индивидуальна для каждого дисплея и выбор подходящего уровня контраста производится с помощью потенциометра.
Настройки дисплея могут быть заданы программно:
- Шаг 1: задаем количество символов в одной строке дисплея:
#define LCM_MAX_COLS (16u) – устанавливаем 16 символов в одной строке;
- Шаг 2: устанавливаем количество строк дисплея:
#define LCM_MAX_ROWS (2u) – устанавливаем максимум в 2 строки;
- Шаг 3: настраиваем тип интерфейса дисплея:
#define LCM_INTERFACE_TYPE LCM_INTERFACE_I2C – задаем интерфейс I2C;
- Шаг 4: компилируем программу и загружаем ее на плату.
Полный код примера работы с дисплеями можно запросить на сайте Winstar.
Наши информационные каналы