» » Стенд для изучения HD44780 на низком уровне

Стенд для изучения HD44780 на низком уровне



Вы написали в программе для Arduino что-нибудь вроде:

lcd.print("Hello, World!")


Плата послушно исполнила команду, и на дисплее появился текст. Но каким образом одно устройство что-то «сказало», а второе - «услышало» и «поняло»? Это всё равно что попросить художника сделать ваш портрет, но не увидеть, как он над ним работает. Автор Instructsbles под ником indoorgeek придумал стенд, который поможет вам почувствовать себя в шкуре «живого Arduino» и порулить HD44780 на низком уровне. В одном из конкурсов эта самоделка завоевала первый приз.

Деталей для неё нужно немнмого: любой модуль (ЖК, ВЛИ или PMOLED) на контроллере HD44780 или совместимом, восемь переключающих тумблеров, кнопка без фиксации, движковый переключатель, переменный резистор на 1 кОм, плата с гнездом Micro USB и корпус.








Из того, что не показано на фото, нужны: резистор на 10 кОм и конденсатор на 100 мкФ и не менее 6,3 В.

Сам indoorgeek взял модуль самого распространённого типа: ЖК, 16 символов в строке, две строки. Но и у остальных модулей принцип управления такой же, только может незначительно отличаться цоколёвка, так что не поленитесь заглянуть в даташит.

Во всех случаях логическому нулю соответствует соединение с общим проводом, а единице - соединение с шиной питания +5 вольт.

Выводы 1 и 2 предназначены для питания модуля. Первый из них всегда соединён с общим проводом, а второй - всегда с шиной питания.

Вывод 3 предназначен для регулировки контраста. При подаче на него напряжения от 0 до 5 вольт относительно общего провода контраст меняется от нуля до максимума.

Вывод 4 позволяет выбирать между регистром данных и регистром инструкций. Подаём логический ноль - выбран регистр инструкций (иными словами, команд), единицу - регистр данных.

Инструкции могут быть, например, такими: инициализировать контроллер, очистить экран, и т.п., а к данным относятся знаки, которые вы будете выводить на индикатор.

Можно, наоборот, прочитать данные из какого-нибудь регистра. Чтобы это сделать, надо подать высокий уровень на вывод 5, и дисплей перейдёт в режим вывода информации обратно в ваш микроконтроллер. Чтобы снова начать записывать данные из вашего микроконтроллера в контроллер дисплея, надо подать на вывод 5 низкий уровень. Довольно часто режим чтения не используют вообще, как, например, в этой самоделке.

По выводам с 7 по 14 с дисплеем можно обмениваться командами и данными в 8-битной кодировке. Младшему разряду соответствует вывод 7, старшему - 14.

Вывод 6 нужен для стробирования. Вы неспешно выставляете данные на выводах с 7 по 14, но пока на выводе 6 - логический нуль, модуль на это никак не реагирует. Затем, не меняя состояние выводов с 7 по 14, вы подаёте на вывод 7 кратковременный импульс высокого уровня - и данные переданы.

Выводы 15 и 16 - питание подстветки, если она есть. 15 - плюс, 16 - минус.

Имеющийся в распоряжении indorgeek'а корпус оказался размерами в 200x150x40 миллиметров. Этот корпус взят от другой, разобранной самоделки, и в нём уже были отверстия. Мастер использовал их в новой конструкции по максимуму, чтобы делать как можно меньше дополнительных.



Восемь тумблеров он установил для изменения состояния линий шины данных/команд, выключатель - для выбора между регистрами (см. выше), кнопку - для стробирования, переменный резистор - для плавной регулировки контраста.

Переходная плата с гнездо Micro USB имеет удобные контакты, к которым легко подключать подвода. Здесь нужны всего два из них: +5 В и общий провод. Если у вас нет такой платы, а выпаянное откуда-нибудь гнездо Micro USB кажется вам неудобным для пайки, можно взять просто шнур с USB-разъёмом. В любом случае, давайте повторять за мастером и паять такую схему:



Контакты тумблеров, соответствующие верхнему положению, indorgeek соединил вместе и подал на них плюс. То же самое он проделал с контактами тумблеров, соответствующими нижнему положению, только подал на них минус. Подвижные контакты тумблеров он соединил уже не между собой, а с выводами шины данных/команд модуля в соответствии с «весом» и тех и других (D0 - вывод 7 - младший разряд, D7 - вывод 14 - старший). Если бы мастера не покусали в детстве разъярённые подтягивающие резисторы, он смог бы применить более простые тумблеры - не переключающие, а нормально разомкнутые.

Зато такие же резисторы, но в цепях подавления дребезга контактов, его никогда не обижали. Здесь эта цепь нужна для того, чтобы контроллер дисплея не принял одно нажатие кнопки стробирования за несколько. Другим органам управления подавление дребезга не требуется, поскольку пока импульсы стробирования не поступают, данные на остальных линиях могут многократно меняться как угодно. Главное не трогать тумблеры и выключатель при нажатой кнопке. Итак, резистором на 10 кОм мастер подтянул вывод 6 к общему проводу, а кнопкой - к плюсовой шине. Поскольку сопротивление кнопки значительно ниже, при нажатии она «перетягивает». При отпускании же её сопротивление становится близким к бесконечности, и «перетягивает» уже резистор. А конденсатор на 100 мкФ (на схеме не показан), подключённый плюсом к плюсовой шине, а минусом - к резистору и шестому выводу дисплея, подавляет дребезг. Лучше, конечно, подавлять дребезг переключающей кнопкой и RS-триггером.

У движкового переключателя выводы неподвижных контактов подключены так же, как у тумблеров, а подвижного - к выводу 6 модуля. Здесь у разработчика снова проявилась боязнь подтягивающих резисторов. Этот переключатель нужен для выбора между режимами передачи команд (нуль) и данных (единица).

Вывод переменного резистора, соответствующий минимальному контрасту, indoorgeek подключил к общему проводу, противоположный - к плюсовой шине, а средний (движок) - к третьему выводу модуля.

Выводы 1, 5 и 16 (соответственно, минус питания, запись/чтение и минус подсветки) мастер соединил с общим проводом, таким образом, режим записи выбран постоянно. Выводы 2 и 15 (соответственно, плюс питания и плюс подсветки) же он подключил к пятивольтовой шине. Резистор, ограничивающий ток через светодиоды подсветки, встроен в дисплейный модуль.

Если вы тоже всё это собрали, перед вами сейчас - что-то вроде такого:



Переднюю панель indoorgeek оформил так, вы можете сделать аналогично:



Изучить команды контроллера HD44780 и приёмы управления им можно по даташиту. Ещё можно посмотреть готовые скрипты-примеры к симулятору. А мы с вами для начала повторим за indoorgeek'ом действия, позволяющие вывести на экран надпись HELLO!

Включим прибор. Засветится подсветка. Движковый переключатель переведём в положение, соответствующее логическому нулю, чтобы индикатор переключился в режим приёма команд. Выставим на шине команд/данных тумблерами двоичное число 00001111 и кратковременно нажмём на кнопку стробирования. Эта команда означает: включить дисплей, сделать курсор видимым и мигающим, что и произойдёт. Точно так же подадим команду 00110000, что означает: принимать данные в 8-битном формате, выбрать первую строку и шрифт 5 на 8 пикселей. Визуально ничего не произойдёт, но где-то там внутри контроллера дисплея произведутся необходимые переключения. Можно передавать данные. Переведём движковый переключатель в положение, соответствующее логической единице, теперь индикаторный модуль готов принимать именно их. Выставим тумблерами на шине ASCII-код буквы H, т.е., 01001000, и нажмём на кнопку стробирования. Соответствующая буква появится на экране, а курсор передвинется на одну позицию вправо. Точно так же передадим буквы E, L, L, O и восклицательный знак: 01000101, 01001100, 01001100, 01001111, 00100001. Если вы проделали всё то же самое, неважно,на собранном вами только что стенде или в симуляторе, вы увидите надпись HELLO! Наподобие такой:



Вот так вы поняли, сколько всего проделывает Arduino, чтобы вывести на дисплей всего несколько знаков. А есть команды для выполнения более сложных действий, освоив которые, можно получать интересные эффекты, определять нестандартные символы...

Ваша экскурсия на «кухню» ардуиновской библиотеки LiquidCrystal только начинается, и пусть она будет увлекательной!
Источник
Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

Самодельный FM трансмиттер для беспроводной передачи звука

Стенд для изучения сдвиговых регистров на низком уровне

7.5
Идея
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
7.5
Описание
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
7.5
Исполнение
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
Итоговая оценка: 7.5 из 10 (голосов: 2 / История оценок)
Чтобы написать комментарий необходимо войти на сайт через соц. сети (или зарегистрироваться):
Обычная регистрация
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Добрый день, Гость!


Зарегистрируйтесь

Или войдите на сайт, если уже зарегистрированы...

Войти

А затем...

Добавьте самоделку

Или...

Добавьте тему

Онлайн чат

Опрос
Сколько по времени, чаще всего, Вы делаете самоделку?

Последние комментарии

В обычном реечном домкрате положение фиксируется за счет "пальца", входящего в отверстие рейки. В приведённом выше изделии только за счет переклинивания деталей и силы трения. Поднимать...
Интересная штука, попробую собрать....
Я правильно понял? Для АНО-21 любого диаметра нужен ток 100 А? )))) А вообще, на вопрос из названия я, например, ответ так и не получил... Тут объяснили, не "как", а "Что для этого...
Писал "несварщик"...)))) Даже, я бы сказал, "ниразунесварщик" ))))...
Во первых не надо меня больше обзывать, в миру я Сергей, технарь и геймер, фамилия изменена. Во вторых при наличии средств (денежных знаков), с удовольствием построил бы настоящую летающую...
Все комментарии