Введение
При разработке микропроцессорных устройств довольно часто возникает необходимость в организации человеко-машинного интерфейса. К решению данного вопроса следует относиться тщательно, поскольку от этого зависит удобство эксплуатации устройства, его внешний вид, информативность и в целом эргономика.
К человеко-машинному интерфейсу предъявляется два основных требования: отображение информации и обеспечение возможности управлять устройством. В настоящее время существует множество вариантов решения этой задачи. В качестве элементов управления могут выступать кнопки, манипуляторы, сенсорные панели и т.п. Приборами для отображения информации могут выступать точечные и семисегментные индикаторы, монохромные и цветные графические дисплеи, мониторы и т.д.
Наиболее популярными приборами для отображения информации являются символьные монохромные LCD-дисплеи на базе контроллера HD44780. Для проведения эксперимента воспользуемся одним из таких приборов – дисплеем WH1602 (две строки по 16 символов) от компании Winstar. Он получил широкое распространение благодаря: низкой цене, унификации и простоте интерфейса, возможности отображения нескольких строк, содержащих десятки символов, хорошей яркости и читаемости информации. Следует отметить, что существует много аналогов данного дисплея, совместимых по интерфейсу и системе команд.
Подключение дисплея
Рассмотрим пример подключения дисплея WH1602 к микроконтроллеру серии STM32 [1]. Приведём программу для его использования.
Дисплей можно подключить к микроконтроллеру по четырёх- или восьмибитной шине данных. С целью сокращения количества связей остановимся на первом варианте подключения. Схема подключения дисплея к микроконтроллеру показана на рисунке.
При подключении дисплея необходимо обратить внимание на распиновку выводов дисплея, которые имеют следующее назначение:
1 – Vss – общий вывод;
2 – Vdd – вывод напряжения питания;
3 – Vo – вывод управления контрастностью дисплея;
4 – RS – сигнал назначения данных в качестве информации для отображения или команды, например, для задания позиции отображения символов;
5 – R/W – сигнал управления чтением и записью данных дисплея;
6 – E – сигнал стробирования данных;
7…14 – DB0...DB7 – шина данных для обмена информацией;
15 – A – анод светодиодной подсветки;
16 – K – катод светодиодной подсветки.
Пример программы
В качестве примера представляем программу, отображающую на дисплее две строки текста. В листинге приведён код такой программы с пояснительными комментариями.
Рассмотрим назначение применённых в программе функций.
Функция инициализации дисплея InitializeLCD() должна выполняться при старте программы.
С помощью функции ClearLCDScreen() производится очистка памяти дисплея от предыдущих записей.
Функция Cursor(y,x) служит для установки позиции курсора. Отсчёт начинается с нулевой строки и нулевого столбца.
Функция вывода байта в дисплей SendByte(byte, mode) позволяет либо отобразить символ на дисплее с параметром режима mode=1, либо управлять дисплеем в режиме настройки при mode=0. Эта функция применяется для очистки дисплея, установки курсора, выбора типа курсора и т.п. Например, команда SendByte(0x0C, 0) отключит курсор.
Дисплей позволяет отображать курсор в одном из трёх режимов: мигающий курсор, курсор в виде нижнего подчёркивания и скрытый курсор. Сделать курсор мигающим можно с помощью команды SendByte(0x0F, 0). Курсор в виде нижнего подчёркивания активируется командой SendByte(0x0E, 0).
Получить более подробную информацию о дисплее WH1602 и познакомиться с другими моделями дисплеев можно на сайте производителя [2].
Литература
Если вам понравился материал, кликните значок - вы поможете нам узнать, каким статьям и новостям следует отдавать предпочтение. Если вы хотите обсудить материал - не стесняйтесь оставлять свои комментарии : возможно, они будут полезны другим нашим читателям!