Top.Mail.Ru

Подключение и использование дисплея на базе HD44780.

Что является неотъемлемой частью большого количества электронных девайсов? Конечно, средства индикации и графического вывода данных. Пользователю всегда удобнее и приятнее когда результат работы можно увидеть визуально. Поэтому сегодня мы подключим к STM32 дисплей для вывода текста и цифр. Героем наших экспериментов станет довольно-таки популярный дисплей WH1602 от Winstar’а. Вот кстати в комментариях появилось важное уточнение, что методика в принципе одинакова для всех дисплеев на базе HD44780. Спасибо JekaKey за важное дополнение!

Для начала дисплей надо собственно подключить к контроллеру. Скачиваем даташит и ищем распиновку. Вот смотрите:

Подключение дисплея на базе HD44780

Как вы уже поняли, WH1602 имеет 16 выводов. Рассмотрим каждый в отдельности…

  • Пины Vss, Vdd и K нужно подключать к земле и к питанию, то есть прямо так, как указано в таблице, тут без сюрпризов и даже нечего обсуждать.
  • Вывод под номером 3 служит для регулировки контрастности – если подадим туда +5В, то не увидим абсолютно ничего, а если закоротим вывод на землю, то будем любоваться двумя рядами черных квадратов... Естественно, это нас не устраивает, поэтому туда надо повесить потенциометр (резистор с переменным сопротивлением)  для регулировки контрастности. Самая лучшая видимость символов обеспечивается напряжением 0.5-0.7 В на этом выводе дисплея.
  • Пин RS – это уже вывод, которым мы сами будем управлять при помощи микроконтроллера. Низкий уровень напряжения (0) на этом выводе означает, что сейчас последует команда, высокий уровень (1) – значит сейчас будут данные для записи в память дисплея.
  • Пин R/W – тут понятно, либо мы читаем данные (флаг занятости дисплея, например), в этом случае на этом выводе 1, либо записываем команду/данные в дисплей, тогда тут у нас 0.
  • DB7 – DB0 – шина данных, и этим все сказано )
  • Пин E – так называемый Enable signal. Нужен он вот для чего. Чтобы работать с дисплеем - записывать данные или подавать команду – нам надо выдать на этот вывод положительный импульс. То есть, процедура будет выглядеть следующим образом:
    • На пины RS, R/W, DB7 – DB0 – нужные сигналы, соответствующие нашей команде.
    • Подаем высокий уровень на вывод E.
    • Ждем (по даташиту – не менее 150 нс).
    • Подаем на вывод E низкий уровень.
  • На ножку A/Vee надо подать 4.2 В для питания подсветки дисплея.

С подключением разобрались, но прежде, чем переходить к примеру, рассмотрим, какие вообще команды понимает наш дисплей. Для этого лезем в даташит и находим интересную таблицу:

Команды дисплея WH1602

Тут описаны все команды и сигналы, которые должны быть на соответствующих выводах WH1602 для каждой конкретной команды. Вот хотим мы, например, очистить дисплей, смотрим в таблицу, и вот она нужная команда - Clear Display.

Подаем на выводы RS, R/W, DB7, DB6, DB5, DB4, DB3, DB2, DB1 нули, а на ножку DB0 -  единицу. Готово, что дальше? Верно, единицу на пин E, затем ожидаем некоторое время и снова опускаем E в ноль. Все,  дисплей очищен. Только перед выполнением следующей команды необходимо выдержать паузу, указанную в даташите для каждой команды. Более эффективным будет опрос флага занятости, как только он сбросился в 0 – можно работать дальше. Для чтения этого флага тоже есть специальная команда, так что и с этим все понятно. Идем дальше…

А, собственно, с теорией все, можно уже что-нибудь попробовать написать. Я для облегчения работы сделал небольшую библиотеку для дисплея WH1602 (