#35. Выводим символы на дисплей LCD 1602 и LCD 2004.

.#35. Выводим символы на дисплей LCD 1602 и LCD 2004.

Для создания проектов на Arduino достаточно часто применяют дисплей LCD 1602 и LCD 2004. Как подключить LCD 1602 к Arduino рассмотрели в предыдущем уроке. Кроме текста очень часто нужно вывести специальные символы. Например, обозначение температуры - градус цельсия или процент влажности, а также направление продвижения или вращения. Как же вывести спец символы на дисплей LCD 1602 и LCD 2004? В данном уроке рассмотрим вывод из набора предустановленных символов и создадим свои символы, которые также выведем на LCD 1602 и LCD 2004.

 Как же вывести спец символы на дисплей LCD 1602 и LCD 2004?

Для урока понадодиться:

  • ARDUINO NANO. Купить можно на AliExpress или в России.
  • ЖК-дисплей 1602 16x2 с I2C модулем. Купить можно на AliExpress.
  • Провод DuPont. Купить можно на AliExpress или в России.
  • Плата макетная беспаечная 55х82х8.5 мм. Купить можно на AliExpress или в России.

Схема подключения LCD 1602 к Arduino UNO по I2C.

Схема подключения LCD 1602 к Arduino UNO по I2C.

Не смотря на то, что схему подключения уже рассматривали в предыдущем уроке. В данном уроке продублирую схему подключения LCD 1602 к Arduino UNO по I2C.

Выводим символы на дисплей LCD 1602 и LCD 2004.

В дисплее есть предустановленные символы, которые можно использовать. На рисунке ниже представлены символы и их порядковый номера.

1602 таблица символов

Вывести символ из данной таблицы на дисплей LCD 1602 и LCD 2004 достаточно просто. Вызываем команду:
lcd.print(char(127));

Где 127 номер символа из таблицы.

Таким образом, можно использовать предустановленный набор символов.


Таким образом, можно использовать предустановленный набор символов.

Пример кода (Скетча) вывода символов на дисплей LCD 1602 и LCD 2004.

#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, начиная с установленной позиции курсора
  delay(5000);
  lcd.setCursor(0, 0);
  lcd.print("25");
  lcd.print(char(223));
  lcd.print("C");
  lcd.print(" ");
  lcd.print(char(127));
  lcd.print(" ");
  lcd.print(char(126));
  lcd.print(" ");
  lcd.print(char(37));
  lcd.print(" ");
  lcd.print(char(61));
  lcd.print(char(62));
  lcd.setCursor(0, 1);
  lcd.print(" ");
  lcd.print(char(255));
  lcd.print(" ");
  lcd.print(char(252));
  lcd.print(" ");
  lcd.print(char(219));
  lcd.print(" ");
  lcd.print(char(170));
  lcd.print(" ");
  lcd.print(char(63));
  lcd.print(" ");
  lcd.print(char(58));
  lcd.print(" ");
  lcd.print(char(33));
}

void loop() {
}

Как видим из кода, вывод символов ничем не отличается от вывода обычного текста, только вывести можно всего один символ и при этом нужно преобразовать значение в char(). Это необходимо сделать, чтобы микроконтроллер понял, что мы выводим на дисплей символ, а не число.

В результате выведем вот такой набор символов.

В результате выведем вот такой набор символов.

Создаём и выводим на LCD 1602 собственные символы.

Для того чтобы создать собственный символ достаточно заполнить массив в котором 1 – это закрашенная ячейка на дисплее, а 0 – не закрашенная. В результате получим вот такое изображение.

Создаём и выводим на LCD 1602 собственные символы.

Массив будет выглядит вот так. И массив и картинка очень похожи.

  B00000,
  B01010,
  B10101,
  B10001,
  B01010,
  B00100,
  B00000,
  B00000

По аналогии можно создавать другие спец символы.

По аналогии можно создавать другие спец символы.

Пример кода создания своих символов для вывода на дисплей LCD 1602 и LCD 2004.

Пример кода создания своих символов для вывода на дисплей LCD 1602 и LCD 2004.

Создал 8 спец символов для вывода на дисплей LCD 1602 и LCD 2004.

byte customChar[] = {
  B00000,
  B01010,
  B10101,
  B10001,
  B01010,
  B00100,
  B00000,
  B00000
};
byte customChar1[] = {
  B00001,
  B00010,
  B00100,
  B01000,
  B11111,
  B00010,
  B00100,
  B01000
};
byte customChar2[] = {
  B11111,
  B10001,
  B10001,
  B10001,
  B10001,
  B10001,
  B10001,
  B11111
};
byte customChar3[] = {
  B11111,
  B10101,
  B01010,
  B01110,
  B10101,
  B11011,
  B11111,
  B11111
};
byte customChar4[] = {
  B11110,
  B11101,
  B11011,
  B10111,
  B00000,
  B11101,
  B11011,
  B10111
};
byte customChar5[] = {
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111
};
byte customChar6[] = {
  B10111,
  B11011,
  B11101,
  B11110,
  B11101,
  B11011,
  B10111,
  B11111
};
byte customChar7[] = {
  B01110,
  B01010,
  B01110,
  B10101,
  B01110,
  B00100,
  B01010,
  B10001
};

Давайте сейчас сохраним данные символы в память дисплея. Для этого используется команда lcd.createChar().

  lcd.createChar(0, customChar);
  lcd.createChar(1, customChar1);
  lcd.createChar(2, customChar2);
  lcd.createChar(3, customChar3);
  lcd.createChar(4, customChar4);
  lcd.createChar(5, customChar5);
  lcd.createChar(6, customChar6);
  lcd.createChar(7, customChar7);

После чего символ можно выводить на дисплей и повторно загружать не нужно. Но тут есть свое ограничение, записать можно только 8 символов. Также любой символ можно перезаписать.

Для вывода символов устанавливаем курсор. Например, в домашнюю позицию и выводим по порядку все символы.

  lcd.home();
  lcd.write(0);
  lcd.print(" ");
  lcd.write(1);
  lcd.print(" ");
  lcd.write(2);
  lcd.print(" ");
  lcd.write(3);
  lcd.print(" ");
  lcd.write(4);
  lcd.print(" ");
  lcd.write(5);
  lcd.print(" ");
  lcd.write(6);
  lcd.print(" ");
  lcd.write(7);

Вот так символы отображаются на дисплее LCD 1602 и LCD 2004.

Вот так символы отображаются на дисплее LCD 1602 и LCD 2004.


Но это не позволяет нам выводить русские буквы на дисплей LCD 1602 и LCD 2004. Для этого есть специально адаптированная библиотека с ней мы познакомимся в следующем уроке.

Но это не позволяет нам выводить русские буквы на дисплей LCD 1602 и LCD 2004.

Появились вопросы или предложения, не стесняйся, пиши в комментарии!

Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.

Всем Пока-Пока.

И до встречи в следующем уроке.

Понравилась статья? Поделитесь ею с друзьями:

Файлы для скачивания

Пример кода (Скетча) вывода символов на дисплей LCD 1602 и LCD 2004 Пример кода (Скетча) вывода символов на дисплей LCD 1602 и LCD 2004.ino2 Kb 1122 Скачать
Пример кода создания своих символов для вывода на дисплей LCD 1602 и LCD 2004 Пример кода создания своих символов для вывода на дисплей LCD 1602 и LCD 2004.ino2 Kb 1183 Скачать
Вернуться в раздел: Уроки Arduino: Подключение датчиков и модулей к Arduino Дата публикации 7 июля , 2021

Комментарии

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

Нектоиз.
#2 Гость: Нектоиз. (21 июля, 2021 в 08:13)

Спасибо. Полезная информация.

Рустам290
#1 Рустам290 (17 июля, 2021 в 06:52)
Все что нужно по LCD  в одном месте. Спасибо 

Cлучайные товары

Посмотреть товар в Магазине »

Мы в соц сетях

Подпишись на канал Telegram

Portal-PK (Портал ПК) © 2015 - 2024
Разработка проектов
AT Block
DWIN Box