Библиотека LiquidCrystal для работы с символьным LCD на Arduino

Добавлено 10 января 2017 в 03:12

Данная библиотека позволяет платам Arduino управлять жидкокристаллическими дисплеями (LCD) на основе контроллера HD44780 (или аналогах), который используется в большинстве символьных LCD дисплеев. Библиотека работает либо в четырех, либо в восьми битном режиме (то есть используется 4 или 8 линий данных в дополнение к линиям управления RS, EN и, при необходимости, RW).

Подключение LCD дисплея на HD44780 к Arduino

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

Необходимые комплектующие

Схема

В приведенных ниже примерах используется плата Arduino Uno. Для подключения LCD дисплея к своей плате соедините следующие выводы:

  • вывод RS LCD дисплея к цифровому выводу 12;
  • вывод EN LCD дисплея к цифровому выводу 11;
  • вывод D4 LCD дисплея к цифровому выводу 5;
  • вывод D5 LCD дисплея к цифровому выводу 4;
  • вывод D6 LCD дисплея к цифровому выводу 3;
  • вывод D7 LCD дисплея к цифровому выводу 2;

Кроме того, соедините вывод RW LCD дисплея с землей. Крайние выводы потенциометра 10 кОм необходимо подключить к шинам +5V и GND, а средний вывод потенциометра соединить с выводом VO (вывод 3) LCD дисплея. Резистор 220 Ом используется для питания подсветки дисплея (обычно это выводы 15 и 16 LCD дисплея).

Подключение LCD дисплея к Arduino. Схема соединений
Подключение LCD дисплея к Arduino. Схема соединений
Подключение LCD дисплея к Arduino. Схема электрическая принципиальная
Подключение LCD дисплея к Arduino. Схема электрическая принципиальная

Функции

LiquidCrystal()
Создает переменную типа LiquidCrystal. Дисплей может управляться с помощью 4 или 8 линий данных. В первом случае номера выводов с D0 по D3 пропускаются, а эти выводы остаются неподключенными. Вывод RW, вместо подключения к Arduino, может быть соединен с землей; если это так, то в параметрах функции он пропускается.

Синтаксис

LiquidCrystal(rs, enable, d4, d5, d6, d7)
LiquidCrystal(rs, rw, enable, d4, d5, d6, d7)
LiquidCrystal(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7)
LiquidCrystal(rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7)

Параметры

  • rs: номер вывода платы Arduino, который подключен к выводу RS LCD дисплея;
  • rw: номер вывода платы Arduino, который подключен к выводу RW LCD дисплея (необязательно);
  • en: номер вывода платы Arduino, который подключен к выводу включения EN LCD дисплея;
  • d0, d1, d2, d3, d4, d5, d6, d7: номера выводов платы Arduino, которые подключены к соответствующим выводам LCD дисплея. d0, d1, d2 и d3 необязательны; если они пропущены, LCD будет управляться с помощью только четырех линий данных (d4, d5, d6, d7).

Пример

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

void setup()
{
  lcd.begin(16,1);
  lcd.print("hello, world!");
}

void loop() {}
begin()
Инициализирует интерфейс связи с LCD дисплеем, и указывает размеры (ширину и высоту) дисплея. Функция begin() должна быть вызвана до любых других функций из библиотеки LCD.

Синтаксис

lcd.begin(cols, rows)

Параметры

  • lcd: переменная типа LiquidCrystal;
  • cols: количество столбцов (символов в строке) у дисплея;
  • rows: количество строк у дисплея.
clear()
Очищает LCD дисплей и помещает курсор в верхний левый угол.

Синтаксис

lcd.clear()

Параметры

  • lcd: переменная типа LiquidCrystal.
home()
Помещает курсор в верхний левый угол LCD дисплея. Используется для помещения курсора в место, куда будет выводиться последующий текст. Чтобы еще и очистить дисплей, используйте clear().

Синтаксис

lcd.home()

Параметры

  • lcd: переменная типа LiquidCrystal.
setCursor()
Помещает курсор в заданное положение LCD дисплея. Используется для помещения курсора в место, куда будет выводиться последующий текст.

Синтаксис

lcd.setCursor(col, row)

Параметры

  • lcd: переменная типа LiquidCrystal;
  • col: столбец, в который необходимо поместить курсор (первому столбцу соответствует 0);
  • row: строка, в которую необходимо поместить курсор (первой строке соответствует 0).
write()
Записывает символ на LCD дисплей.

Синтаксис

lcd.write(data)

Параметры

  • lcd: переменная типа LiquidCrystal;
  • data: символ для записи на LCD.

Возвращаемое значение

byte
write() возвращает количество записанных байтов, хотя чтение этого количества необязательно.

Пример

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  if (Serial.available()) {
    lcd.write(Serial.read());
  }
}
print()
Печатает текст на LCD дисплее.

Синтаксис

lcd.print(data) 
lcd.print(data, BASE)

Параметры

  • lcd: переменная типа LiquidCrystal;
  • data: данные для печати (char, byte, int, long или string);
  • BASE (необязательно): основание для печати чисел: BIN для двоичной формы (основание 2), DEC для десятичной формы (основание 10), OCT для восьмеричной формы (основание 8), HEX для шестнадцатеричной формы (основание 16).

Возвращаемое значение

byte
print() возвращает количество записанных байтов, хотя чтение этого количества необязательно.

Пример

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

void setup()
{
  lcd.print("hello, world!");
}

void loop() {}
cursor()
Показывает курсор на LCD дисплее: подчеркивание (линия) в месте, куда будет записан следующий символ.

Синтаксис

lcd.cursor()

Параметры

  • lcd: переменная типа LiquidCrystal.

Пример

Смотрите пример для функции noCursor().

noCursor()
Скрывает курсор на LCD дисплее.

Синтаксис

lcd.noCursor()

Параметры

  • lcd: переменная типа LiquidCrystal.

Пример

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  lcd.begin(16, 2);
  lcd.print("hello, world!");
}

void loop() {
  // Выключить курсор:
  lcd.noCursor();
  delay(500);
  // Включить курсор:
  lcd.cursor();
  delay(500);
}
blink()
Показывает на LCD дисплее мигающий курсор. Если используется в комбинации с cursor(), то результат будет зависеть от конкретного дисплея.

Синтаксис

lcd.blink()

Параметры

  • lcd: переменная типа LiquidCrystal.

Пример

Смотрите пример для функции noBlink().

noBlink()
Выключает мигающий курсор на LCD дисплее.

Синтаксис

lcd.noBlink()

Параметры

  • lcd: переменная типа LiquidCrystal.

Пример

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  lcd.begin(16, 2);
  lcd.print("hello, world!");
}

void loop() {
  // Выключить мигающий курсор:
  lcd.noBlink();
  delay(3000);
  // Включить мигающий курсор:
  lcd.blink();
  delay(3000);
}
display()
Включает LCD дисплей после того, как он был выключен функцией noDisplay(). Она восстанавливает текст (и курсор), который был на дисплее.

Синтаксис

lcd.display()

Параметры

  • lcd: переменная типа LiquidCrystal.

Пример

Смотрите пример для функции noDisplay().

noDisplay()
Выключает LCD дисплей без потери текста, который отображается на нем в текущий момент.

Синтаксис

lcd.noDisplay()

Параметры

  • lcd: переменная типа LiquidCrystal.

Пример

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  lcd.begin(16, 2);
  lcd.print("hello, world!");
}

void loop() {
  // Выключить дисплей:
  lcd.noDisplay();
  delay(500);
  // Включить дисплей:
  lcd.display();
  delay(500);
}
scrollDisplayLeft()
Прокручивает содержимое дисплея (текст и курсор) на одну позицию влево.

Синтаксис

lcd.scrollDisplayLeft()

Параметры

  • lcd: переменная типа LiquidCrystal.

Пример

Смотрите пример для функции scrollDisplayRight().

scrollDisplayRight()
Прокручивает содержимое дисплея (текст и курсор) на одну позицию вправо.

Синтаксис

lcd.scrollDisplayRight()

Параметры

  • lcd: переменная типа LiquidCrystal.

Пример

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  lcd.begin(16, 2);
  lcd.print("hello, world!");
  delay(1000);
}

void loop() {
  // прокрутить на 13 позиций (длина строки) влево,
  // чтобы переместить контент за пределы дисплея влево:
  for (int positionCounter = 0; positionCounter < 13; positionCounter++) {
    // прокрутить на одну позицию влево:
    lcd.scrollDisplayLeft();
    // немного подождать:
    delay(150);
  }

  // прокрутить на 29 позиций (длина строки + длина дисплея) вправо,
  // чтобы переместить контент за пределы дисплея вправо:
  for (int positionCounter = 0; positionCounter < 29; positionCounter++) {
    // прокрутить на одну позицию вправо:
    lcd.scrollDisplayRight();
    // немного подождать:
    delay(150);
  }

  // прокрутить на 16 позиций (длина дисплея + длина строки) влево,
  // чтобы переместить контент снова в центр:
  for (int positionCounter = 0; positionCounter < 16; positionCounter++) {
    // прокрутить на одну позицию влево:
    lcd.scrollDisplayLeft();
    // немного подождать:
    delay(150);
  }

  // задержка в конце полного цикла:
  delay(1000);

}
autoscroll()
Включает автоматическую прокрутку на LCD дисплее. Это приводит к тому, что каждый символ, выводимый на дисплей, передвигает предыдущие символы на одну позицию. Если направление текста задано слева-направо (по умолчанию), дисплей прокручивает влево; если направление текста задано справа-налево, дисплей прокручивает вправо. Это дает в результате вывод каждого нового символа на одном и том же месте LCD дисплея.

Синтаксис

lcd.autoscroll()

Параметры

  • lcd: переменная типа LiquidCrystal.

Пример

Смотрите пример для функции noAutoscroll().

noAutoscroll()
Выключает автоматическую прокрутку на LCD дисплее.

Синтаксис

lcd.noAutoscroll()

Параметры

  • lcd: переменная типа LiquidCrystal.

Пример

Скетч печатает символы от 0 до 9 с выключенной автоматической прокруткой, затем перемещает курсор вниз и вправо, включает автоматическую прокрутку и печатает эти символы снова.

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  lcd.begin(16, 2);
}

void loop() {
  // поместить курсор в точку (0,0):
  lcd.setCursor(0, 0);
  // напечатать символы от 0 до 9:
  for (int thisChar = 0; thisChar < 10; thisChar++) {
    lcd.print(thisChar);
    delay(500);
  }

  // поместить курсор в точку (16,1):
  lcd.setCursor(16, 1);
  // включить автоматическую прокрутку на дисплее:
  lcd.autoscroll();
  // напечатать символы от 0 до 9:
  for (int thisChar = 0; thisChar < 10; thisChar++) {
    lcd.print(thisChar);
    delay(500);
  }
  // выключить автоматическую прокрутку
  lcd.noAutoscroll();

  // очистить экран для следующего цикла:
  lcd.clear();
}
leftToRight()
Устанавливает направление текста, записанного на LCD, в значение «слева направо», которое является значением по умолчанию. Это означает, что последующие символы, записанные на дисплей, идут слева направо, но это никак не влияет на ранее записанный текст.

Синтаксис

lcd.leftToRight()

Параметры

  • lcd: переменная типа LiquidCrystal.
rightToLeft()
Устанавливает направление текста, записанного на LCD, в значение «справа налево» (значение по умолчанию – «слева направо»). Это означает, что последующие символы, записанные на дисплей, идут справа налево, но это никак не влияет на ранее записанный текст.

Синтаксис

lcd.rightToLeft()

Параметры

  • lcd: переменная типа LiquidCrystal.

Заключение

Примеры использования библиотеки LiquidCrystal смотрите в статье Взаимодействие Arduino с символьным LCD дисплеем.

Теги

ArduinoHD44780LCD дисплейПрограммирование

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.