Вы здесь

Подключение lcd 1602 к Ардуино

Подключение lcd 1602 к Ардуино

Иногда мы сталкиваемся с проблемой вывода различной информации из Arduino в окружающий мир. Зачастую, использование последовательного порта невозможно, неудобно и невыгодно.

Символьный дисплей является одним из самых простых и дешевых средств для вывода информации, потому что он имеет собственный микроконтроллер, в памяти которого хранятся закодированные символы. Такая система упрощает использование этих дисплеев, но в тоже время ограничивает их использование выводом только текстовой информации, в отличие от графических дисплеях.

В примере мы рассмотрим дисплей Winstar wh1602l1 – один из самых распространенных дисплеев на контроллере hd44780. Кроме того Вы можете подключать LCD 2004 и другие аналогичные.
Первые две цифры обозначают количество символов в строке, а вторые количество строк, таким образом, выбранный дисплей имеет 2 строки по 16 символов.
Данный способ подключения подразумевает занятие минимум 6 портов микроконтроллера Ардуино. В случае необходимости Вы можете подключить текстовый дисплей 1602 через I2C интерфейс (2 порта).

Из дополнительных элементов нам понадобиться переменный резистор, для управления контрастностью. В остальном все подключается по схеме, согласно даташиту и выбранных выходов Arduino в программе.

Выводы 15 и 16 на дисплее отвечают за подсветку, ее можно выключить или сделать автоматическую регулировку яркости при подключения фоторезистора к Arduino, как датчика яркости.

Подключение lcd 1602 к Ардуино

В нашем примере будем считывать данные из последовательного порта и выводить их на дисплей:

#include <liquidcrystal.h> // Подключаем библиотеку работы с символьными дисплеями
LiquidCrystal lcd(13, 11, 5, 4, 3, 2); // (RS, E, D4, D5, D6, D7) подключаем выходы дисплея согласно последовательности, R/W – GND, так как мы будем записывать данные в дисплей, а не считывать
void setup()
{
  lcd.begin(16, 2); // Инициализируем LCD 1602
  // lcd.begin(20, 4); // Инициализируем LCD 2004
  Serial.begin(9600); // Запускаем последовательный порт
}
void loop()
{
  if (Serial.available()) // Если из порта поступаю данные, то...
  {
    delay(100);
    lcd.clear(); // Полностью очищаем экран
    while (Serial.available() > 0) // Если из порта поступаю данные больше 0, то...
    {
      lcd.write(Serial.read()); // Считываем значения из serial порта и выводим их на дисплей
    }
  }
}

Вы можете усложнить код и вывести часы реального времени DS1307 на Arduino на Ваш LCD1602.

Теперь по подробнее рассмотрим все функции в библиотеке LiquidCrystal:

Первое и самое главное, что с помощью этой библиотеки нельзя выводить русские буквы, даже если дисплей имеет в памяти эти символы. Эта проблема решается или другими библиотеками, или записью значений при помощи 16-ричного кода.

lcd.print(); - самая простая и часто используемая, используется для вывода информации.

lcd.clear(); - используется для очистки дисплея.

lcd.setCursor(x,y); - ставит курсор на определенное место.

Х – изменение позиции в строке

Y – изменение строки

Например, lcd.setCursor(0, 0); это верхняя левая ячейка.

lcd.home(); - ставит курсор в позицию 0, 0

lcd.home(); = lcd.setCursor(0, 0);

lcd.scrollDisplayLeft(); - сдвиг влево

lcd.scrollDisplayRight(); - сдвиг вправо

Lcd.createChar(имя, массив); - создание собственного знака.

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

Celc[8] = {B00111,
           B00101,
           B00111,
           B00000,
           B00000,
           B00000,
           B00000,
           B00000
          };