- Библиотеки
- Операторы
- Sketch
- Управляющие операторы
- Синтаксис
- Арифметические операторы
- Операторы сравнения
- Логические операторы
- Указатели доступа
- Битовые операторы
- Составные операторы
- Данные
- Типы данных
- Преобразование типов данных
- Область видимости переменных и квалификаторы
- Утилиты
- Цифровой ввод/вывод
- Аналоговый вход/выход
- Расширенный ввод/вывод
- Время
- Математические функции
- Тригонометрические функции
- Символы
- Случайные числа
- Биты и байты
- Внешние Прерывания
- Прерывания
- Функции передачи данных
- Функции
- Устройства
- Датчики
- LCD 1602
- Модули
LCD 1602
Дисплей 1602 – это жидкокристаллический (LCD) символьный дисплей, который может отображать до 32 символов одновременно (16 символов в 2 строках).
Он используется для вывода текстовой информации в проектах на базе микроконтроллеров, таких как Arduino. Дисплей оснащен подсветкой, имеет контроллер HD44780 и может подключаться по параллельному интерфейсу HD44780 или через дополнительный I2C-модуль для упрощения подключения.
Основные характеристики:
- Разрешение: 16 символов в 2 строках (16x2).
- Контроллер: Основан на контроллере Hitachi HD44780.
- Подсветка: Имеет встроенную светодиодную подсветку, цвет которой может быть синим, зеленым или желтым, в зависимости от модели.
- Тип: Жидкокристаллический (LCD).
- Интерфейсы: Может подключаться как по параллельному интерфейсу (с 8 или 4 линиями данных), так и через I2C-интерфейс с помощью I2C-адаптера (модуля расширения портов).
Применение:
Используется для отображения текста в различных проектах, например, в системах автоматизации, робототехнике и образовательных проектах с Arduino.
Позволяет отображать латинские символы и цифры, а также может быть использован для отображения кириллицы, при необходимости загружая соответствующие символы в память контроллера.
Подключение:
С I2C-модулем: Подключение становится значительно проще, требуя всего два вывода данных (SDA и SCL) для связи с микроконтроллером.
Без I2C-модуля: Подключение осуществляется по параллельному интерфейсу, что требует большего количества выводов контроллера, но дает большую скорость.
LCD 1602 | Arduino | LCD 1602 | Arduino |
---|---|---|---|
VDD | 5V | D2 | Не используется |
VSS | GND | D3 | Не используется |
V0 | Потенциометр | D4 | D5 |
RS | D11 | D5 | D4 |
RW | GND | D6 | D3 |
E | D10 | D7 | D2 |
D0 | Не используется | A | 5V через резистор |
D1 | Не используется | K | GND |
Настройка:
Для настройки контрастности дисплея на некоторых моделях предусмотрен встроенный подстроечный резистор (потенциометр)
Подключение библиотеки и инициализация
Первым шагом необходимо включить библиотеку и создать объект, указав к каким пинам Arduino подключены выводы дисплея.
Самый распространенный вариант (по 4-битной шине данных):
#include <LiquidCrystal.h>
// Инициализация объекта (RS, E, D4, D5, D6, D7)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
Если используется 8-битный режим (встречается реже):
// Инициализация (RS, E, D0, D1, D2, D3, D4, D5, D6, D7)
LiquidCrystal lcd(12, 11, 10, 9, 8, 7, 6, 5, 4, 3);
Основные команды в функции setup()
Эти команды обычно выполняются один раз при старте программы.
void setup() {
// Для обычного подключения:
lcd.begin(16, 2); // Инициализировать дисплей (16 столбцов, 2 строки)
// Для I2C подключения:
lcd.init(); // Инициализировать дисплей
lcd.backlight(); // Включить подсветку
// Очистка дисплея от любых случайных символов
lcd.clear();
// Включение отображения курсора (мигающего символа подчеркивания)
lcd.cursor();
// Включение мигающего курсора (блока)
lcd.blink();
// Выключение курсора
lcd.noCursor();
// Выключение мигания
lcd.noBlink();
}
Основные команды для вывода информации
Эти команды используются в loop() или других функциях для управления текстом.
void loop() {
// Установка курсора в начало (столбец 0, строка 0)
lcd.setCursor(0, 0);
// Печать текста на дисплее
lcd.print("Hello, World!");
// Печать числа
int sensorValue = 42;
lcd.print(sensorValue);
// Печать числа с форматированием (2 знака после запятой)
float temperature = 23.456;
lcd.print(temperature, 2); // Выведет "23.45"
// Установка курсора на вторую строку (столбец 0, строка 1)
lcd.setCursor(0, 1);
lcd.print("Line 2");
// Прокрутка всего содержимого дисплея влево на одну позицию
lcd.scrollDisplayLeft();
// Прокрутка вправо на одну позицию
lcd.scrollDisplayRight();
// Создание собственного символа (например, сердечка)
byte heart[8] = {
B00000,
B01010,
B11111,
B11111,
B01110,
B00100,
B00000,
B00000
};
lcd.createChar(0, heart); // Загрузить символ в память CGRAM под номером 0
// Вывод созданного символа
lcd.write(byte(0)); // Выведет сердечко
// Очистка дисплея (удобно использовать перед выводом нового "кадра")
lcd.clear();
// Включение/выключение подсветки (для I2C)
lcd.backlight();
lcd.noBacklight();
}
Полезные приемы
Бегущая строка:
void scrollText(String message, int line, int delayTime) {
lcd.setCursor(0, line);
lcd.print(" "); // Очистка строки пробелами
lcd.setCursor(0, line);
lcd.print(message);
delay(500); // Пауза перед началом прокрутки
// Прокрутка текста
for (int i = 0; i < message.length(); i++) {
lcd.scrollDisplayLeft();
delay(delayTime);
}
}
Краткая шпаргалка:
Команда | Описание |
lcd.begin(cols, rows) | Инициализация дисплея |
lcd.clear() | Очистка экрана |
lcd.home() | Курсор в позицию (0,0) |
lcd.setCursor(col, row) | Установка курсора |
lcd.print("Text") | Печать текста или числа |
lcd.cursor() / noCursor() | Показать/спрятать курсор |
lcd.blink() / noBlink() | Включить/выключить мигание |
lcd.scrollDisplayLeft() | Прокрутить влево |
lcd.createChar(num, data) | Создать свой символ |
lcd.write(byte(num)) | Напечатать свой символ |
Начните с базового примера: инициализация, lcd.print() и lcd.setCursor() — этого уже достаточно для большинства проектов.