Вы ожидаете, что это неправильно.
Прежде всего - модуль I2C, который припаян на задней панели, это просто простой последовательный преобразователь в параллельный.Когда вы записываете данные на шину I2C, он устанавливает свои 8 выходов в соответствии с 8 полученными битами в байтах данных.Когда вы читаете байты данных, он переключается в режим ввода и читает логические уровни на 8 выводах и передает их по последовательному проводу.Более подробное описание вы можете прочитать в предоставленной вами спецификации на PCF8574 .
Т.е. эта часть не выполняет никакой "магии", которая будет принимать символы на входе и выводить их на дисплей.Это означает, что вывод случайных данных бесполезен.
Вам нужно знать еще две вещи:
- как этот модуль подключен к драйверу дисплея
- какого родадрайвера дисплея и как его использовать.
Ответ на первый вопрос можно найти в Интернете: (взято из здесь )
Вы видите, что дисплей подключен в 4-битном режиме, выходы P4-P7 (то есть то, что вы передаете в четырех старших битах байтов данных) подключены к линиям данныхдисплея, в то время как выходы P0-P2 подключены к линиям управления RS , R / W , EH и P3 используется для управления подсветкой.
Зная это, мы подошли ко второму вопросу.Я могу только предложить, но, скорее всего, на вашем дисплейном модуле установлена микросхема Hitachi HD44780.В таблице вы можете найти информацию о том, какие данные должны выводиться на линии управления.
Описание контактов можно найти на странице 8:
- бит RS выбирает любую команду (0) или данные (1)
- бит R / W выбирает операцию записи (0) или чтение (1)
- и бит E на самом деле являются стробоскопом.На заднем фронте, т. Е. Когда он изменяется от 1 до 0, драйвер дисплея считывает данные из строк данных.Это означает, что для передачи 4 бит данных необходимо выполнить 2 операции записи: первая с битом 2 установлена на высоком уровне, вторая со всеми остальными битами одинаковыми, но бит 2 равен нулю.
ТеперьВы можете прочитать список инструкций на странице 25 таблицы.И последовательность инициализации для 4-битного режима на стр. 46 (рисунок 24).Обратите внимание, что для каждой строки битов вы фактически отправляете 2 байта данных: с высоким битом 2 и затем с низким битом 2.
Обратите внимание, что в 4-битном режиме все команды и данные состоят из двух фаз записи: первая -верхняя половина, затем нижняя половина байта.Каждая фаза - это 2 записи данных в модуль I2C, с битом E старшего и младшего, т.е. вам нужно отправить 4 байта для вывода 1 байта данных.