Полное руководство по подключению и программированию LCD 16×2 для Arduino
Что такое символьный LCD-дисплей?
Символьный LCD-дисплей — это тип дисплея, который может выводить только отдельные ASCII-символы фиксированного размера. С помощью этих символов можно формировать текст.
При ближайшем рассмотрении видно, что дисплей состоит из маленьких прямоугольных областей, каждая из которых представляет собой сетку 5×8 пикселей. Каждый пиксель может загораться индивидуально, что позволяет генерировать символы внутри каждой ячейки.

Количество таких прямоугольных областей определяет размер дисплея. Самый популярный — LCD 16×2, имеющий две строки по 16 символов. Существуют и другие размеры: 16×1, 16×4, 20×4 и др., но принцип работы у всех одинаков. Также дисплеи могут отличаться цветом фона и текста.
Распиновка LCD 16×2
Дисплей имеет 16 выводов (слева направо):
- GND (1) — земля;
- VCC (2) — питание +5 В (подключается к 5V Arduino);
- Vo (3) — вход управления контрастом (подключается к среднему выводу потенциометра);
- RS (4) — выбор регистра: LOW — команды (очистка, установка курсора), HIGH — данные (символы);
- R/W (5) — чтение/запись (обычно заземляется, так как чтение не требуется);
- E (6) —.enable (строб) для записи в регистры;
- D0–D7 (7–14) — шина данных (в 4-битном режиме используются только D4–D7);
- A (15) и K (16) — анод и катод подсветки.

Библиотека LiquidCrystal берёт на себя всю низкоуровневую работу. Мы будем использовать 4-битный режим (4 линии данных).
Схема подключения к Arduino
Используем 6 цифровых выводов Arduino:
- LCD D4–D7 → Arduino D4–D7;
- LCD Enable → Arduino D2;
- LCD RS → Arduino D1;
- LCD R/W → GND;
- LCD Vo → средний вывод потенциометра (крайние — к +5V и GND).

Необходимые компоненты
- Символьный LCD 16×2;
- Потенциометр 10 кОм;
- Плата Arduino (Uno, Nano и т.д.);
- Макетная плата и перемычки.
Регулировка контраста
Напряжение на выводе Vo (0–5 В) задаёт контраст. Потенциометр позволяет точно настроить его. Без потенциометра можно использовать делитель напряжения (например, 1 кОм и 220 Ом дают ~1 В) или ШИМ-сигнал с Arduino:
analogWrite(11, 100); // ШИМ на D11, значение 100 из 255 (~2 В на Vo)
Базовый код для работы с LCD
#include <LiquidCrystal.h>
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // (RS, E, D4, D5, D6, D7)
void setup() {
lcd.begin(16, 2); // Инициализация: 16 столбцов, 2 строки
}
void loop() {
lcd.print("Arduino");
delay(3000);
lcd.setCursor(2, 1); // Столбец 2, строка 1 (нумерация с 0)
lcd.print("LCD Tutorial");
delay(3000);
lcd.clear();
lcd.blink(); // Мигающий курсор
delay(4000);
lcd.noBlink();
lcd.cursor(); // Подчёркивание курсора
delay(4000);
lcd.noCursor();
lcd.clear();
}
Разбор основных функций
lcd.begin(cols, rows)— инициализация размеров;lcd.print()— вывод текста;lcd.setCursor(col, row)— установка позиции курсора;lcd.clear()— очистка экрана;lcd.blink() / noBlink()— включение/выключение мигающего блока-курсора;lcd.cursor() / noCursor()— включение/выключение подчёркивания.
Прокрутка длинного текста
Если текст шире 16 символов, используйте scrollDisplayLeft() или scrollDisplayRight():
#include <LiquidCrystal.h>
LiquidCrystal lcd(1, 2, 4, 5, 6, 7);
void setup() {
lcd.begin(16, 2);
lcd.print("Scrolling Text Example");
}
void loop() {
lcd.scrollDisplayLeft();
delay(500); // Скорость прокрутки
}
Для большего контроля можно реализовать прокрутку вручную через цикл for и setCursor().
Создание пользовательских символов
Библиотека позволяет определить до 8 своих символов (5×8 пикселей). Каждый символ задаётся массивом из 8 байт:
#include <LiquidCrystal.h>
byte heart[8] = {
B00000, B01010, B11111, B11111,
B01110, B00100, B00000, B00000
};
byte smile[8] = {
B00000, B00000, B01010, B00000,
B10001, B01110, B00000, B00000
};
// ... остальные символы
LiquidCrystal lcd(1, 2, 4, 5, 6, 7);
void setup() {
lcd.begin(16, 2);
lcd.createChar(0, heart); // Слот 0
lcd.createChar(1, smile); // Слот 1
// ...
lcd.clear();
lcd.print("Custom Character");
}
void loop() {
lcd.setCursor(1, 1); lcd.write(byte(0)); // Сердце
lcd.setCursor(5, 1); lcd.write(byte(1)); // Улыбка
// ...
}

createChar(slot, array) загружает символ в один из 8 слотов (0–7). Вывод — через write(byte(slot)).
Заключение
Мы рассмотрели всё необходимое для работы с LCD 16×2 на Arduino: подключение, контраст, основные функции, прокрутку и пользовательские символы. Принцип работы одинаков для любых размеров символьных дисплеев (16×4, 20×4 и др.).
Эти дисплеи идеально подходят для вывода данных датчиков, статусов и меню в автономных проектах. Попробуйте добавить LCD в свой следующий проект!
Производственный процесс
- Освоение проникающего ЭРС: полное руководство по точной электроэрозионной обработке
- Чугун 101: состав, применение, плюсы и минусы
- Полное руководство по доменным печам: определение, компоненты и обслуживание
- Полное руководство по фрезерным станкам: функции, операции, применение
- Полное руководство по строгальным станкам: функции, применение, преимущества
- Полное руководство по строгальным станкам: особенности, применение, преимущества
- Металлообработка: от науки к мастерству
- Подробное руководство по станкам с ЧПУ: особенности, преимущества и применение
- Прессовые станки: типы, функции и управление
- Гидравлический пресс: принцип работы, виды и преимущества