Алфавитно-цифровые дисплеи на основе контроллера HD44780 нашли широкое применение в различных профессиональных и радиолюбительских электронных устройствах. Они очень удобны, когда необходимо представить для визуального контроля небольшие объемы информации. Существуют различные модификации таких дисплеев – на 1, 2, 4 строки по 8, 16, 20 символов.
Дисплей на HD44780 можно подключить к управляющему микроконтроллеру как по 8-ми битной шине, так и по 4-х битной. В первом случае придется задействовать минимум 10 портов микроконтроллера, во втором – минимум 6. Этот фактор сдерживает применение дисплеев с 8-ми выводными микроконтроллерами, такими как, например, 12F629, 12F675 и т.д.
Однако выход из данной ситуации существует. В последнее время на рынке активно предлагаются дисплеи с интегрированной платой расширения портов, управляемые по шине I2C. Преимущество схемы управления по шине I2C заключается в том, что достаточно использовать всего лишь два порта микроконтроллера.
Обычно в таких дисплеях схема расширения портов выполняется на микросхеме PCF8574 или PCF8574T (рис.1)
Рис.1
Микросхема PCF8574 имеет три порта установки адреса А0-А2, два порта SDA и SCL шины I2C и восемь выходных портов Р0-Р7.
Адресные порты А0-А2 служат для корректировки базового адреса PCF8574. Обычно они подключаются или к общему проводу или к плюсу питания 5В.
Схема подключения расширителя портов PCF8574 к дисплею на контроллере HD44780 показана на рис.2
Рис.2
Такую схему можно собрать самостоятельно и подключить её к «стандартному» дисплею или сразу заказать дисплей с уже установленной платой расширения портов (рис.3)
Рис.3
Теперь попробуем собрать на основе дисплея с платой расширения портов и 8-ми выводном микроконтроллере 12F675 какое-нибудь полезное устройство. Например, 3-х канальный измеритель температуры и влажности.
Это устройство предназначено для измерения одной точки температуры / влажности снаружи помещения и двух точек внутри помещения. Измерения снаружи помещения выполняются с помощью датчика DHT22, внутри помещения – DHT11. Разница этих датчиков в том, что DHT22 может работать в диапазоне как положительных, так и отрицательных температур, а DHT11 только в диапазоне положительных температур.
Принципиальная схема 3-х канального измерителя температуры и влажности приведена на рис.4
Рис. 4
Устройство позволяет измерять температуру / влажность воздуха снаружи помещений в диапазоне -40…+125 градусов / 0…100% и внутри помещений в диапазоне 0…+50 градусов / 20…90%. Эти диапазоны определяются типом используемых датчиков (DHT11 или DHT22). Применен дисплей на 4 строки по 20 символов с установленной платой расширения портов на микросхеме PCF8574. Адрес микросхемы PCF8574 на шине I2C равен значению 4Eh (выводы А0-А2 подключены на плюс питания). Микроконтроллер 12F675 можно заменить на 12F629. Корректировка прошивки при этом не требуется.
Первые 10 знакомест каждой строки дисплея отведены под названия точек контроля. Названия могут быть записаны как латиницей, так и кириллицей. Однако для записи кириллицей необходимо, что бы знакогенератор дисплея поддерживал русские символы. Знакогенератор дисплея, который использовался непосредственно в этом устройстве, русские символы не поддерживает, поэтому названия точек контроля отображаются на английском языке (рис.5).
Рис.5
Названия точек контроля заносятся в память EEPROM при программировании микроконтроллера. Текст первой строки записывается в ячейки с 00 по 09, второй – с 10 по 19, третьей – с 20 по 29 (рис.6).
Рис.6
Значение каждого записываемого в память символа можно взять с таблицы знакогенератора (рис.7). Еще раз напоминаю, что русские символы можно записывать только в случае их поддержки знакогенератором дисплея. В противном случае на дисплее будут отображаться «кракозяблы».
Рис.7
Наверное, у многих возникает вполне логичный вопрос – а почему бы не задействовать оставшийся порт GP3 микроконтроллера для подключения ещё одного датчика DHT11, тем более что остается свободной четвертая строка на дисплее? К сожалению, не получится. Архитектура портов ввода/вывода 12F675 такова, что GP3 может работать только в режиме цифрового входа. Следовательно, подключить к нему датчик или одну из линий шины I2C, которые имеют двунаправленный режим работы, невозможно.