Что является неотъемлемой частью большого количества электронных девайсов? Конечно, средства индикации и графического вывода данных. Пользователю всегда удобнее и приятнее когда результат работы можно увидеть визуально. Поэтому сегодня мы подключим к STM32 дисплей для вывода текста и цифр. Героем наших экспериментов станет довольно-таки популярный дисплей WH1602 от Winstar’а. Вот кстати в комментариях появилось важное уточнение, что методика в принципе одинакова для всех дисплеев на базе HD44780. Спасибо JekaKey за важное дополнение!
Для начала дисплей надо собственно подключить к контроллеру. Скачиваем даташит и ищем распиновку. Вот смотрите:
Как вы уже поняли, 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 для каждой конкретной команды. Вот хотим мы, например, очистить дисплей, смотрим в таблицу, и вот она нужная команда - Clear Display.
Подаем на выводы RS, R/W, DB7, DB6, DB5, DB4, DB3, DB2, DB1 нули, а на ножку DB0 - единицу. Готово, что дальше? Верно, единицу на пин E, затем ожидаем некоторое время и снова опускаем E в ноль. Все, дисплей очищен. Только перед выполнением следующей команды необходимо выдержать паузу, указанную в даташите для каждой команды. Более эффективным будет опрос флага занятости, как только он сбросился в 0 – можно работать дальше. Для чтения этого флага тоже есть специальная команда, так что и с этим все понятно. Идем дальше…
А, собственно, с теорией все, можно уже что-нибудь попробовать написать. Я для облегчения работы сделал небольшую библиотеку для дисплея WH1602 (

