Какой смысл D0-D3 на ЖК-дисплее?
В библиотеке Arduino LiquidCrystal есть 4 конструктора с разными аргументами:
LiquidCrystal(rs, enable, d4, d5, d6, d7)
LiquidCrystal(rs, rw, enable, d4, d5, d6, d7)
LiquidCrystal(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7)
LiquidCrystal(rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7)
К аргументам конструктора приводятся следующие комментарии:
[...] d0, d1, d2 и d3 не являются обязательными; если этот параметр опущен, управление ЖК-дисплеем будет осуществляться с использованием только четырех строк данных (d4, d5, d6, d7).
Какой смысл в d0-d3
, если они не нужны? Уменьшат ли они время ответа?
@Friend of Kim, 👍13
3 ответа
Лучший ответ:
Этот тип ЖК-дисплеев имеет два основных режима работы: 4-битный режим, который использует 4 контакта данных (d4-d7), и 8-битный режим, который использует все 8 контактов данных (d0-d7).
4-битный режим имеет преимущество в том, что требует меньше выходных контактов на вашем Arduino. Однако это означает, что ваш скетч должен отправлять каждую команду/символ как две отдельные партии по 4 бита (одну за другой). Это обрабатывается автоматически библиотекой LiquidCrystal, поэтому вам не понадобится дополнительная сложность в вашем коде. Однако это означает, что ваш скетч требует примерно вдвое больше циклов процессора для отправки чего-либо на ЖК-дисплей.
Напротив, 8-битный режим отправляет каждую команду/символ как один пакет из 8 бит. Это просто означает, что технически он работает немного быстрее.
С учетом сказанного, человек, смотрящий на дисплей, вероятно, не увидит значительной разницы в скорости большую часть времени, поскольку она все равно идет очень быстро. Основное влияние будет оказано на микроконтроллер (в данном случае Arduino). Если он может использовать более быстрый 8-битный режим, то он может посвятить немного больше времени обработки другим вещам. Это может быть особенно полезно для приложений, критичных к времени.
Ответ находится на той же странице, что и упомянутая вами цитата (я выделил важное утверждение):
Создает переменную типа LiquidCrystal. Дисплей может управляться с помощью 4 или 8 линий данных. В первом случае опустите номера выводов для d0–d3 и оставьте эти линии неподключенными. Вывод RW можно привязать к земле вместо подключения к выводу на Arduino; в таком случае исключите его из параметров этой функции.
Оказывается, ЖК-дисплей Hitachi HD44780 может работать в 4-битном или 8-битном режимах.
Да, там говорится, что им можно управлять с помощью как 4, так и 8 линий данных. Но какой смысл использовать 8, если вам нужно только 4? Я имею в виду, разве нет никаких преимуществ использования 8 перед 4? Зачем тратить 4 линии данных, если они бесполезны?, @Friend of Kim
Использование 8-битного режима немного быстрее на стороне Arduino и проще (меньше кода). Но в целом, это того не стоит, по сравнению с экономией 4 выходных пинов., @jfpoilpret
@jfpoilpret Оно того стоит, если у вас *есть* четыре дополнительных выходных контакта..., @Anonymous Penguin
@annon, можешь ли ты сказать более конкретно, КАК стоит использовать режим 8 контактов? Конкретные экспериментальные значения?, @jfpoilpret
@jfpoilpret Как указано в ответе Питера, это дает немного больше времени обработки чипу. Если у вас есть четыре дополнительных контакта, продолжайте и добавляйте их. Если это потребует от него большего размера/более высокой стоимости, то это того не стоит., @Anonymous Penguin
Наличие этих контактов является требованием технологии, которую приходилось использовать для сопряжения ЖК-дисплея с микропроцессорами, которые были доступны во времена разработки микросхемы контроллера HD44780U.
Однокристальные микроконтроллеры, какими мы их знаем, все еще были в будущем, и ЖК-дисплей должен был быть сопряжен с 8-битными микропроцессорными чипами того времени, используя те же методы, что и любое другое 8-битное устройство ввода-вывода или памяти, которое представляло собой 8-битную шину.
- Печать string and integer LCD
- Как отобразить символ º на ЖК-дисплее?
- Отправка значения с одного Arduino на другой
- Черные квадраты дисплея Arduino 16x2
- NodeMCU с RFID RC522 и LCD-модулем интерфейса I2C вместе
- ЖК-дисплей I2C отображает странные символы
- Экран LCD 16*02 I2C показывает только первый напечатанный символ
- Потенциометр 10 кОм против резистора 10 кОм на ЖК-дисплее
С учетом сказанного, человек, глядя на дисплей, скорее всего, не увидит значительной разницы в скорости большую часть времени, поскольку скорость все равно очень высокая.
Что обычно не является проблемой, поскольку многие модули (особенно дешевые китайские, вроде тех, что продаются на eBay), как правило, имеют низкую частоту обновления, поэтому вы в любом случае не сможете обновить их слишком быстро, не превратив изображение в размытое и нечитаемое., @Synetech