Как подключить LCD через I2C

Опубликовано: 23.05.2015 Автор: Александр

В этой статье я расскажу как подключить знако-символьный ЖКИ к STM32F4 через интерфейс I2C и расширитель цифровых портов PCF8574.

LCD PCF8574 STM32F4 STM32

Ранее я уже писал как подключить ЖКИ на HD44780 к микроконтроллеру. В этой статье будем подключать индикатор через расширитель портов PCF8574. Это специализированная микросхема, которая позволяет через I2C передавать и устанавливать состояния на своих портах ввода-вывода (8 портов). Она является двунаправленной и очень широко используется сейчас в модулях индикации, клавиатурах. Есть возможность задавать адрес в шине I2C, таким образом можно подключить до 8ми устройств.

Работать с PCF8574 достаточно просто. Через I2C передаем байт, где каждому биту соответствует вывод микросхемы. После получения байта, расширитель устанавливает выходы.

Более подробную информацию по расширителю смотри в документации (как всегда, скачать ДШ можно в конце статьи).

В Китае можно купить индикаторы уже с запаянными расширителями – спецплатка, с регулятором контрастности, ключом для управления подсветкой. Разведены все необходимые линии от стандартной платы ЖКИ: D4-D7 (используется ширина шины 4 линии), En, RS, R/W. Таким образом, можно не только писать в ЖКИ, но и, может кому нужно, считывать с него.

PCF8574

Вот так эта платка выглядит у меня. На ней имеется:

1) разъем для подключения к МК (я подписал куда следует подключить I2C в моем примере);

2) светодиод – индикация подачи питания;

3) потенциометр – регулировка контраста

4) джампер – подача питания на подсветку.

5) А0…А2 – установка адреса индикатора в шине I2C. Выводы в моем случае подтянуты к плюсу, и поэтому адрес 0×7. Если запаять перемычки, то соответствующие биты станут нулями.

Сама микросхема расширителя портов может работать и от 3.3В, однако, у меня ЖКИ ничего не хотел показывать при таком питании. При 5В все норм. Стоит учесть этот момент.

Для удобства работы, я написал небольшую библиотеку для работы с LCD через I2C. Написана для STM32F4, однако, можно с легкостью портировать на другой МК, переписав пару функций. В примере и библиотеке используется I2C1, у которого задействованы PORTD 6 и 7 ножки. Поэтому включаем тактирование порту D и конфигурируем ножки:

Далее, необходимо настроить I2C на STM32F4:

В коде обязательно нужно описать функцию задержки и прописать ее в файле i2c_lcd.h, указав значение задержки около 20 мкс

Все, на этом настройка проекта завершена. Теперь можно использовать библиотеку.  По аналогии можно расширить функционал. На данный момент есть такие функции:

Пример использования:

В заключении привожу список ссылок на архив с проектом (он в CooCox), ДШ на PCF8574. Буду рад, если кому-то пригодится мой паручасовой труд.

 

 

 

В рубриках: Электроника
Метки: , ,
Поделиться записью: