Символьные ЖК-дисплеи LCD 1602 и LCD 2004 достаточно часто используются в Arduino проектах, благодаря большому размеру и относительно небольшой стоимости. Кроме этого с данными дисплеями достаточно просто работать. Сегодня в Arduino уроке рассмотрим основы работы с ЖК-дисплеями LCD 1602 и LCD 2004. Подключим lcd 1602 к Ардуино. И рассмотрим пару примеров скетчей, которые позволят вывести текстовую информацию на LCD 1602 и 2004.
Описание и классификация LCD 1602 и LCD 2004.
LCD 1602 дисплей еще называют символьным. Это связано с тем, что ЖК-дисплей разбит на области точек. На каждую такую область можно вывести 1 символ. В связи с чем дисплей данного типа подразделяется по количеству строчек и символов в строке. Например, 2 строки и 16 символов в каждой строке, данное значение указывается в названии дисплея 1602. По аналогии 20 символов и 4 строки это LCD 2004. Также есть и другое разрешение дисплея 0802, но у меня, к сожалению, нет таких маленьких дисплеев и продемонстрировать их я вам не смогу. Но работа с ними ничем не отличается от старших братьев.
Также можно выделить разный тип подсветки. Существуют дисплеи: синий фон белые буквы, зелёный фон чёрные буквы, чёрный фон белые буквы и проч. Я буду использовать, с синим фоном и белыми буквами.
Для урока понадобится:
LCD 1602 и LCD 2004 подключение к Ардуино.
Существует несколько вариантов подключения LCD 1602 или LCD 2004 к Ардуино по 4-бит или 8-бит параллельному интерфейсу. При таком подключении у нас будет задействовано 6 или 10 контактов Arduino, что неприемлемо при использовании Arduino UNO, Arduino NANO и подобных отладочных плат, в которых не так и много пинов, которые можно использовать.
Схема подключения LCD 1602 к Arduino UNO.
Чтобы уменьшить количество проводов для подключения LCD 1602, используется плата PCF8574, которая позволяет подключить дисплей по I2C. Что уменьшает количество проводов до 2. Сегодня в уроке будем использовать подключение LCD 1602 и LCD 2004 к Arduino по I2C.
Схема подключения LCD 1602 к Arduino UNO по I2C с использованием PCF8574.
LCD 2004, LCD 1602 библиотека.
Для работы с дисплеем используется библиотека LiquidCrystal. Но в связи с тем, что мы будем использовать подключение LCD 1602 и LCD 2004 к Arduino по I2C. Библиотеку использовать будем другую LiquidCrystal_I2C. Которую можно скачать с GitHub. Или внизу статьи, в разделе «Файлы для скачивания».
После того как вы скачали архив с библиотекой. Заходим в Arduino IDE, открываем вкладку «Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку…»
В открывшемся окне выбираем скаченный архив. После чего вы увидите, что библиотека успешно установлена.
Сейчас можно посмотреть примеры, которые установились с библиотекой LiquidCrystal_I2C. Я же данные примеры немного изменю и подпишу, что означает каждая строка кода.
Описание библиотеки LiquidCrystal_I2C.
Перед тем как начать работать с дисплеем LCD 2004, LCD 1602 давайте рассмотрим библиотеку LiquidCrystal_I2C. Ниже приведены основные функции, которые необходимы для работы с дисплеем.
print(data); // вывести (любой тип данных)
setCursor(x, y); // курсор на (столбец, строка)
clear(); // очистить дисплей
home(); // аналогично setCursor(0, 0)
noDisplay(); // отключить отображение
display(); // включить отображение
blink(); // мигать курсором на его текущей позиции
noBlink(); // не мигать
cursor(); // отобразить курсор
noCursor(); // скрыть курсор
scrollDisplayLeft(); // подвинуть экран влево на 1 столбец
scrollDisplayRight(); // подвинуть экран вправо на 1 столбец
backlight(); // включить подсветку
noBacklight(); // выключить подсветку
createChar(uint8_t, uint8_t[]); // создать символ
createChar(uint8_t location, const char *charmap); // создать символ
Пример кода вывода текста на LCD 1602 с использованием библиотеки LiquidCrystal.
Не смотря на то, что урок ориентирован на использование подключения дисплея по I2C. Рассмотрим пример подключения дисплея LCD 1602 подключённого по 4-битной параллельной шине. Для работы с дисплеем LCD2004 нужно изменить пятую строчку кода на lcd.begin(20, 4);
#include <LiquidCrystal.h> // Подключаем библиотеку LiquidCrystal для работы с LCD дисплеем
LiquidCrystal lcd(2,3,4,5,6,7); // Объявляем объект библиотеки, указывая выводы дисплея (RS,E,D4,D5,D6,D7)
// Если используется 8 проводов шины данных, то указываем (RS,E,D0,D1,D2,D3,D4,D5,D6,D7)
void setup(){ //
lcd.begin(16, 2); // Инициируем работу с LCD дисплеем, указывая количество (столбцов, строк)
lcd.setCursor(0, 0); // Устанавливаем курсор в позицию (0 столбец, 0 строка)
lcd.print("LCD2004"); // Выводим текст "LDC1602", начиная с установленной позиции курсора
lcd.setCursor(0, 1); // Устанавливаем курсор в позицию (0 столбец, 1 строка)
lcd.print("arduino-tex.ru"); // Выводим текст arduino-tex.ru, начиная с установленной позиции курсора
} //
//
void loop(){} // Код внутри функции loop выполняется постоянно. Но так как мы выводим статичный текст, нам достаточно его вывести 1 раз при старте, без использования кода loop
Пример вывода текста на LCD 2004, LCD 1602 с использованием библиотеки LiquidCrystal_I2C.
#include <LiquidCrystal_I2C.h> // Подключаем библиотеку для работы с LCD дисплеем по шине I2C
LiquidCrystal_I2C lcd(0x27,16,2); // Объявляем объект библиотеки, указывая параметры дисплея (адрес I2C = 0x27, количество столбцов = 16, количество строк = 2)
// Если надпись не появилась, замените адрес 0x27 на 0x3F
void setup(){ //
lcd.init(); // Инициируем работу с LCD дисплеем
lcd.backlight(); // Включаем подсветку LCD дисплея
lcd.setCursor(0, 0); // Устанавливаем курсор в позицию (0 столбец, 0 строка)
lcd.print("LCD"); // Выводим текст "LCD", начиная с установленной позиции курсора
lcd.setCursor(0, 1); // Устанавливаем курсор в позицию (0 столбец, 1 строка)
lcd.print("arduino-tex.ru"); // Выводим текст arduino-tex.ru, начиная с установленной позиции курсора
} //
//
void loop(){} // Код внутри функции loop выполняется постоянно. Но так как мы выводим статичный текст, нам достаточно его вывести 1 раз при старте, без использования кода loop
Не смотря на то, что в примере будем использовать подключение LCD 1602 по I2C и библиотеку LiquidCrystal_I2C. Код не сильно изменится. Для работы с дисплеем LCD2004 нужно изменить 3 строку на LiquidCrystal_I2C LCD (0x27,20,4);
Выводим время прошедшее после старта на дисплей LCD1602 подключённый по шине I2C.
#include <LiquidCrystal_I2C.h> // Подключаем библиотеку для работы с LCD дисплеем по шине I2C
LiquidCrystal_I2C lcd(0x27,20,4); // Объявляем объект библиотеки, указывая параметры дисплея (адрес I2C = 0x27, количество столбцов = 20, количество строк = 4)
//
uint8_t tim_D, tim_H, tim_M, tim_S; // Объявляем переменные для хранения дней, часов, минут и секунд.
uint32_t tim; // Объявляем переменную для хранения общего количества времени прошедшего после старта.
// Если надпись не появилась, замените адрес 0x27 на 0x3F
void setup(){ //
lcd.init(); // Инициируем работу с LCD дисплеем
lcd.backlight(); // Включаем подсветку LCD дисплея
lcd.setCursor(0, 0); // Устанавливаем курсор в позицию (0 столбец, 0 строка)
lcd.print("LCD"); // Выводим текст "LCD", начиная с установленной позиции курсора
lcd.setCursor(0, 1); // Устанавливаем курсор в позицию (0 столбец, 1 строка)
lcd.print("arduino-tex.ru"); // Выводим текст arduino-tex.ru, начиная с установленной позиции курсора
} //
//
void loop(){ //
// Получаем время прошедшее после старта:
tim = millis() / 1000; // Получаем общее количество секунд (максимум 4'294'967 сек ≈ 49,7 дней).
tim_S = tim % 60; // Получаем секунды: остаток от деления всех секунд на минуту (60 сек).
tim = (tim-tim_S) / 60; // Получаем общее количество минут.
tim_M = tim % 60; // Получаем минуты: остаток от деления всех минут на час (60 мин).
tim = (tim-tim_M) / 60; // Получаем общее количество часов.
tim_H = tim % 24; // Получаем часы: остаток от деления всех часов на день (24 час).
tim_D = (tim-tim_H) / 24; // Получаем общее количество дней.
// Выводим время прошедшее после старта:
if (millis()%1000<100){ // Условие выполняется в течении 100 первых миллисекунд каждой новой секунды.
delay(100); lcd.setCursor(2, 2); // Устанавливаем курсор в позицию (0 столбец, 0 строка).
lcd.print("Days: "); // Выводим текст.
if(tim_D<10){lcd.print( 0 );} // Выводим 0 перед количеством дней.
lcd.print(tim_D ); // Выводим количество дней.
lcd.setCursor(0, 3); // Устанавливаем курсор в позицию (0 столбец, 1 строка)
lcd.print("Time: "); // Выводим текст.
if(tim_H<10){lcd.print( 0 );} // Выводим 0 перед количеством часов.
lcd.print(tim_H ); // Выводим количество часов.
lcd.print(':' ); // Выводим символ.
if(tim_M<10){lcd.print( 0 );} // Выводим 0 перед количеством минут.
lcd.print(tim_M ); // Выводим количество минут.
lcd.print(':' ); // Выводим символ.
if(tim_S<10){lcd.print( 0 );} // Выводим 0 перед количеством секунд.
lcd.print(tim_S ); // Выводим количество секунд.
} //
} //
Если дисплей LCD 2004, LCD 1602 не отображает текст.
После того как вы всё сделали, подключили дисплей. Загрузили код. На дисплее могут не отображаться символы. Что может быть не так:
- Если дисплей показывает чёрные прямоугольники или пустой экран – нужно отрегулировать яркость дисплея, это синий квадратный регулятор на задней стороне платы.
- Если кроме чёрных прямоугольников и пустого экрана ничего не видно – меняем адрес в программе. Их всего два: 0x27 и 0x3F.
- Если все равно не работает – проверяем подключение и повторяем сначала.
На этом урок про дисплеи LCD 2004, LCD 1602 заканчивается. В следующем уроке рассмотрим, какие символы есть в прошивке дисплея и как их вывести, а также создадим свои символы.
Появились вопросы или предложения, не стесняйся, пиши в комментарии!
Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.
Всем Пока-Пока.
И до встречи в следующем уроке.
Понравилась статья? Поделитесь ею с друзьями:
Файлы для скачивания
|
Пример кода вывода текста на LCD 1602 с использованием библиотеки LiquidCrystal..ino | 2 Kb | 1210 |
Скачать
Вы можете скачать файл.
|
|
Выводим время прошедшее после старта на дисплей LCD1602 подключённый по шине I2C..ino | 5 Kb | 1213 |
Скачать
Вы можете скачать файл.
|
Комментарии
Войдите или Зарегистрируйтесь И Вы сможете общаться на форуме и оставлять комментарии без капчи.