Оглавление:

3-проводный ЖК-дисплей HD44780 менее чем за 1 доллар: 5 шагов
3-проводный ЖК-дисплей HD44780 менее чем за 1 доллар: 5 шагов

Видео: 3-проводный ЖК-дисплей HD44780 менее чем за 1 доллар: 5 шагов

Видео: 3-проводный ЖК-дисплей HD44780 менее чем за 1 доллар: 5 шагов
Видео: Дисплей на контроллере HD44780 2024, Ноябрь
Anonim
3-проводной ЖК-дисплей HD44780 менее чем за 1 доллар
3-проводной ЖК-дисплей HD44780 менее чем за 1 доллар

В этом руководстве мы узнаем, как подключить ЖК-дисплей на базе набора микросхем HD44780 к шине SPI и управлять им с помощью всего 3-х проводов менее чем за 1 доллар. Хотя в этом руководстве я сосредоточусь на буквенно-цифровом дисплее HD44780, тот же принцип будет работать практически так же для любого другого ЖК-дисплея, который использует 8-битную параллельную шину данных, и его можно очень легко адаптировать для дисплеев с 16-битными шинами данных.. Алфавитно-цифровые дисплеи на основе HD44780 (и совместимые) обычно доступны в конфигурациях 16x2 (2 строки, состоящие из 16 символов) и 20x4, но их можно найти во многих других формах. Самым «сложным» дисплеем будет дисплей 40x4, этот тип дисплея особенный, поскольку он имеет 2 контроллера HD44780, один для двух верхних рядов и один для двух нижних рядов. Некоторые графические ЖК-дисплеи также имеют два контроллера. ЖК-дисплеи HD44780 великолепны, они очень дешевы, удобочитаемы и с ними довольно легко работать. Но у них также есть некоторые недостатки, эти дисплеи занимают много контактов ввода / вывода при подключении к Arduino. В простых проектах это не проблема, но когда проекты становятся большими, с большим количеством операций ввода-вывода или когда определенные контакты необходимы для таких вещей, как аналоговое считывание или ШИМ, тот факт, что для этих ЖК-дисплеев требуется минимум 6 контактов, может стать проблемой. проблема. Но мы можем решить эту проблему дешево и интересно.

Шаг 1: получение компонентов

Я использовал TaydaElectronics для большинства компонентов, которые использовал в этом проекте. Вы также можете приобрести эти детали на ebay, но для простоты использования я свяжу вас с Tayda. Shopping List2 - пакет 74HC595 DIP161 - Стандартный штекерный разъем - 2 контакта. Этого не требуется, я использовал это как способ постоянного отключения подсветки.3 - Керамический конденсатор - емкость 0,1 мкФ; напряжение 50В1 - электролитический конденсатор - емкость 10мкФ; напряжение 35В1 - Керамический конденсатор - емкость 220пФ; напряжение 50 В1 - Транзистор NPN - деталь № PN2222A * 1 - Резистор 1 кОм1 - Потенциометр подстроечного резистора - максимальное сопротивление 5 кОм1 - Резистор 470 Ом * С транзистором NPN подсветка остается выключенной, пока она не будет включена программно. Если вы хотите, чтобы подсветка была включена по умолчанию, используйте транзистор типа PNP. Однако необходимо будет внести изменения в код предоставленной библиотеки. Промежуточная сумма для этого списка составляет 0,744 доллара США. Заголовок булавки также не требуется, поэтому вы можете сэкономить 15 центов прямо здесь, и промежуточный итог составит 0,6 доллара.

Шаг 2. Знайте свое оборудование №1

Знайте свое оборудование # 1
Знайте свое оборудование # 1

Вот стандартный вывод ЖК-дисплея HD44780, он также очень похож на некоторые графические ЖК-дисплеи. HD44780 может работать в двух режимах: 1. 4-битном режиме, в котором каждый байт, отправляемый на ЖК-дисплей, состоит из 2 4-битных частей. 2. 8-битный режим, на котором мы остановимся. ЖК-дисплей имеет всего 16 контактов, 3 контакта управления и 8 контактов данных: RS - определяет, хотим ли мы отправить команду или данные на ЖК-дисплей. Где «высокий» означает данные (символ), а «низкий» означает командный байт. R / W - Контроллер HD44780 позволяет выполнять чтение из своей оперативной памяти. Когда этот вывод находится в «высоком» состоянии, мы можем считывать данные с его выводов данных. Когда он «низкий», мы можем записывать данные на ЖК-дисплей. Хотя опция чтения с ЖК-дисплея может быть полезна в некоторых случаях, мы не будем рассматривать ее в этом руководстве, а просто заземлим этот вывод, чтобы он всегда находился в режиме записи. E - E - вывод включения, этот вывод переключается на «высокий», затем «низкий», чтобы записать данные в его ОЗУ и, в конечном итоге, отобразить их на экране. DB0-7 - это контакты данных. В 4-битном режиме мы используем только 4 старших бита DB4-DB7, а в 8-битном режиме используются все они. VSS - это вывод заземления. VCC - это вывод питания, ЖК-дисплей работает от источника питания 5 В., мы можем легко подать на него питание от вывода Arduino + 5 В. Vo - это вывод, который позволяет вам устанавливать уровень контрастности для дисплея, для этого требуется потенциометр, обычно используется потенциометр на 5 кОм. источник питания для подсветки. Некоторые ЖК-дисплеи не имеют подсветки и имеют только 14 контактов. В большинстве случаев этот вывод также требует подключения +5 В. Светодиод- - это заземление для подсветки. ** Важно проверить техническое описание дисплеев или проверить его печатную плату, чтобы проверить наличие резистора подсветки, большинство ЖК-дисплеев имеют их встроенные -в этом случае все, что вам нужно сделать, это подать питание на светодиод + и заземлить на светодиод-. Но в случае, если ваш ЖК-дисплей не имеет встроенного резистора для подсветки, важно добавить его, иначе подсветка будет потреблять много энергии и в конечном итоге перегорит. В большинстве случаев способ подключения этого ЖК-дисплея к Arduino заключается в использовании его в 4-битном режиме и заземлении вывода R / W. Таким образом мы используем контакты RS, E и DB4-DB7. Работа в 4-битном режиме имеет еще один небольшой недостаток: запись данных на экран занимает в два раза больше времени, чем в 8-битной конфигурации. ЖК-дисплей имеет время «установления» 37 микросекунд, это означает, что вам нужно подождать 37 микросекунд перед отправкой следующей команды или байта данных на ЖК-дисплей. Поскольку в 4-битном режиме мы должны отправлять данные дважды для каждого байта, общее время, необходимое для записи одного байта, достигает 74 микросекунд. Это все еще достаточно быстро, но я хотел, чтобы мой дизайн давал наилучшие возможные результаты. Решение нашей проблемы с количеством используемых контактов заключается в преобразователе из последовательного в параллельный …

Шаг 3. Знайте свое оборудование # 2

Знайте свое оборудование # 2
Знайте свое оборудование # 2

Что мы сделаем, так это построим адаптер, который принимает последовательный тип связи, исходящий от Arduino, и преобразует данные в параллельный вывод, который можно подавать на наш ЖК-дисплей. В комплекте идет микросхема 74HC595. Это очень дешевый и простой в использовании сдвиговый регистр. По сути, он принимает тактовые сигналы и сигналы данных, которые он использует для заполнения внутреннего 8-битного буфера 8 последними битами, которые были «синхронизированы». Как только на выводе «Latch» (ST_CP) установлен высокий уровень, он перемещает эти биты на свои 8 выходов. У 595 есть очень приятная особенность, он имеет вывод для вывода последовательных данных (Q7 '), этот вывод можно использовать для последовательного соединения 2 или более 595 вместе, чтобы сформировать адаптеры Serial to Parallel, которые имеют ширину 16 или более бит. Для этого проекта нам понадобится 2 таких чипа. Схема также может быть изменена для работы с одним 595 в 4-битном режиме, но в этом руководстве это не рассматривается.

Шаг 4: Подключите все

Подключение всего этого
Подключение всего этого

Теперь, когда мы знаем, как работает наше оборудование, мы можем все это подключить. На схеме мы видим 2 595 микросхем, соединенных гирляндой вместе, чтобы сформировать 16-битный параллельный выход. Нижняя микросхема на самом деле является основной, а верхняя подключается к ней шлейфом. Здесь мы видим, что нижний 595 управляет выводами данных ЖК-дисплея в 8-битной конфигурации, верхний чип управляет сигналом RS и подсветкой путем включения или выключения транзистора. Помните * примечание о подсветке ЖК-дисплея на странице «Знайте свое оборудование № 1». В случае, если на ЖК-дисплее нет резистора подсветки, не забудьте добавить его в свою схему. В моем случае ЖК-дисплеи у меня уже есть со встроенным резистором, поэтому я пропустил этот шаг. Контраст применяется через потенциометр 5 кОм, один вывод идет на GND, второй идет на VCC, а стеклоочиститель - на вывод Vo на ЖК-дисплее. Конденсаторы, используемые на линиях VCC ЖК-дисплея и 595, являются развязывающими конденсаторами, они нужны для того, чтобы избавиться от помех. Они не являются обязательными, если вы работаете на макетной плате, но должны использоваться, если вы создаете свою собственную версию этой схемы для использования вне «лабораторных условий». R5 и C9 в этом очень специфическом порядке создают задержку RC, которая гарантирует, что данные на выходах 595 успеют стабилизироваться до того, как вывод Enable на ЖК-дисплее установится на высокий уровень и будет считывать данные. Q7 'нижнего 595 переходит в последовательный ввод данных 595 наверху, это создает гирляндную цепочку из 595 и, следовательно, 16-битный интерфейс. Подключиться к Arduino очень просто. Мы используем 3-проводную конфигурацию с использованием контактов SPI Arduino. Это обеспечивает очень быструю передачу данных, отправка 2 байтов на ЖК-дисплей обычно занимает около 8 микросекунд. Это очень быстро и на самом деле намного быстрее, чем время, необходимое ЖК-дисплею для обработки данных, поэтому между каждой записью требуется задержка в 30 микросекунд. Одним из очень больших преимуществ использования SPI является то, что выводы D11 и D13 используются совместно с другими устройствами SPI. Это означает, что если у вас уже есть другой компонент, который использует SPI, например акселерометр, это решение будет использовать только один дополнительный вывод для сигнала включения. На следующей странице мы увидим результат. Я построил рюкзак на перфорированной доске, и до сих пор он мне очень хорошо работает.

Шаг 5: результат + библиотека

Результат + библиотека
Результат + библиотека
Результат + библиотека
Результат + библиотека
Результат + библиотека
Результат + библиотека
Результат + библиотека
Результат + библиотека

«Картинка стоит тысячи слов», я согласен с этим утверждением, поэтому вот несколько изображений конечного результата этого проекта. Это изображения готового продукта, вид Fritzing PCB - это макет перфокарта, который я использовал для сборки своего рюкзака. Вы можете найти его полезным, если хотите создать свой собственный. Мне он настолько понравился, что я спроектировал печатную плату с помощью DipTrace и заказал партию из 10 печатных плат. Мне понадобятся 2 или 3 единицы для себя, но оставшиеся я сделаю доступными по символической цене, когда я их получу. Так что, если кому-то интересно, дайте мне знать. * Изменить: печатные платы здесь, и они работают. Вот полная галерея изображений для этого проекта, включая фактические печатные платы. https://imgur.com/a/mUkpw#0 Конечно, я не забыл самого главного - библиотеки, с которой можно использовать эту схему. Он совместим с библиотекой LiquidCrystal, входящей в состав IDE Arduino, поэтому вы можете легко заменить объявления в верхней части скетча и не менять что-либо еще в скетче. Также есть пример скетча, который демонстрирует, как работает каждая функция в библиотеке, так что проверьте его.

Рекомендуемые: