Обзор интерфейсного модуля IIC, I2C, TWI для LCD

В этой статье расскажу, как использовать интерфейсный модуль I2C для управления LCD дисплеем (2×16 / 20х4) с помощью Arduino. Данный модуль позволяет уменьшить количество используемых выводов контроллера, вместо 8 или 4-битного соединения, требуется только 2 вывода (SDA и SCL).

Обзор интерфейсного модуля IIC, I2C, TWI для LCD

Технические параметры 

► Поддержка дисплеев: LCD 16×02 / 20×04
► Дополнительно: регулировка контрастности
► Напряжение питания. 5В
► Интерфейс: I2C
► Габариты: 54мм x 19мм x 15мм

Общие сведения интерфейсного модуля I2C

Поскольку количество контактов на контроллерах Arduino ограничено и часто при использовании различных датчиков и модулей они заканчиваются, появляется необходимость в их экономии, для этих случай разработан этот модуль, с его помощью можно реализовать передачу по двум контактам (SDA и SCL).

Обзор интерфейсного модуля IIC, I2C, TWI для LCD

Теперь немного о самом модуле, построен он на микросхеме PCF8574T. Резисторы R8 (4.7кОм) и R9 (4.7кОм) необходимы для подтяжки линий SDA и SCL, в идеале при подключении двух и более устройств по шине I2C необходимо использовать подтяжку только на одном устройств, позже напишу почему. На плате предусмотрены три перемычки (по схеме видно что линии A0, A1, A2 подтянуты к питанию через резисторы R4, R5, R6), необходимы они для смены адресации устройства, всего их 8 вариантов. Изменение адресации дает нам возможность подключения до восьми устройств по шине IC2 c микросхемой PCF8574T, варианты адресов показаны на рисунке (по умолчанию адрес устройства 0x27). Так же модуль оснащен потенциометром R11 с его помощью можно изменить контрастность LCD дисплея.

Обзор интерфейсного модуля IIC, I2C, TWI для LCD

Для соединения на модуле расположено три группы контактов:

Первая группа:
SCL:    линия тактирования (Serial CLock)
► SDA:   линия данных (Serial Dфta)
► VCC:   «+» питание
► GND:  «-» питание

Вторая группа:
► VSS:   «-» питание
► VDD:  «+» питание
► VO:    Вывод управления контрастом
► RS:     Выбор регистра
► RW:   Чтение/запись ( режим записи при соединении с землей)
► E:       Еnable (строб по спаду)
► DB0-DB3: Младшие биты интерфейса
► DB4-DB7: Старшие биты интерфейса
► A:      «+» питания подсветки
► K:      «-»  питания подсветки

Третья группа: (по умолчанию установлена перемычка)
► VCC:
► A от LCD:

Обзор интерфейсного модуля IIC, I2C, TWI для LCD

Подключение к Arduino

Необходимые детали:
► Arduino UNO R3 x 1 шт.
► LCD-дисплей 1602A (2×16, 5V, Синий) x 1 шт.
► Интерфейсный модуль I2C, IIC, TWI для LCD x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.

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

Обзор интерфейсного модуля IIC, I2C, TWI для LCD

Для наглядности, приведу еще одну схему.

Обзор интерфейсного модуля IIC, I2C, TWI для LCD

Для этого эксперимента необходимо скачать и установить библиотеку «LiquidCrystal_I2C». Затем скопируйте и вставьте этот пример кода в окно программы IDE Arduino и загрузите в контроллер.

/* 
Тестировалось на Arduino IDE 1.6.11
Дата тестирования 15.09.2016г.
*/ 

#include <Wire.h>
#include <LiquidCrystal_I2C.h> 
 
LiquidCrystal_I2C lcd(0x27,16,2);  // Задаем адрес и размер дисплея
 
void setup()
{
  lcd.init();                      // Инициализация lcd    
  lcd.backlight();                 // Включаем подсветку
  lcd.setCursor(0,0);              // Устанавливаем курсор в начало 1 строки
  lcd.print("Hello, world");       // Выводим текст
  lcd.setCursor(0,1);              // Устанавливаем курсор в начало 2 строки
  lcd.print("www.robotchip.ru");   // Выводим текст
}
void loop()
{
}

  Скачать программу

Если Вы правильно все сделали, но никаких символов на дисплее нет, попробуйте увеличить контрастность потенциометром.

Обзор интерфейсного модуля IIC, I2C, TWI для LCD

Обзор интерфейсного модуля IIC, I2C, TWI для LCD

Ссылки
  Скачать библиотеку LiquidCrystal_I2C
  Документация на микросхему PCF8574T
  Документация к LCD1602A

Купить на Aliexpress
  Контроллер Arduino UNO R3
  Провода DuPont, 2,54 мм, 20 см
  LCD-дисплей 1602A

Купить в Самаре и области
  Купить контроллер Arduino UNO R3
  Купить провода DuPont, 2,54 мм, 20 см
  Купить LCD-дисплей 1602A

Читайте также:

комментариев 10

  1. алекс:

    А как переназначить пины А4.А5 на А0.А1

    • Сергей Мирошниченко:

      Добрый день, не как, только выводы А4 и А5 работают по I2C

      • geniotim:

        Сергей Мирошниченко, Вы не правы.
        С уществует програмная IIC библиотека для Ардуино,
        где можно назначить любые пины, а не только А4.А5 .

  2. Дима1919919191:

    Здравствуйте, а у вас нету скетча для Ардуино 1.8.5?

    • Сергей Мир:

      Добрый день, данный скетч работает с версий IDE 1.8.5 возможно у вас другой адрес устройства.
      В моей практике встречались с адресами 0x27 и 0x3F.
      Можете просканировать шину I2C и точно узнать какой адрес модуля, статья: http://robotchip.ru/i2c-skaner-na-arduino/

  3. Владимир В:

    Прошу помощи. подключился , скачал библиотеки а ничего не работает только подсветка а текста в окне нет. В чем вероятные причины?

    • Сергей Мир:

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

      • Владимир В:

        вечер добрый. проблема была в неверном определении адреса. прописал lcd(0x3F,16,2) выводит только буквы H и Y из прописаных lcd.setCursor(0,0);
        lcd.print(«Hello, world!»);
        lcd.setCursor(0,1);
        lcd.print(«Ywrobot Arduino!»);
        появилась мысль может пропаяно плохо?

  4. Владимир В:

    разобрался) запрятал было для чистоты эксперимента стандартную библиотеку ликвидКристал а она я так понимаю помогает ликвидКристал _АЙ2С разбиратся индикацией на ЛСД. те вторая просто аддон типа.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *