LCD 1602 русский шрифт на Ардуино

lcd 1602 русский шрифт на Ардуино

На дисплее LCD 1602 русский шрифт не работает, но можно вывести кириллицу на Arduino с помощью собственных символов. Рассмотрим, как сделать любые символы и буквы на кириллице на LCD дисплее Ардуино. Для этого нам потребуется использовать в скетче переменную byte и функцию lcd.createChar (). Сразу отметим, что объем памяти на Ардуино для знаков ограничен всего восемью символами.

Видео. Русские буквы на LCD Display I2C 1602

Как вывести свой символ на LCD 1602

Вывести свой символ или кириллическую букву на дисплей поможет таблица знакогенератора (CGROM). Такой вид памяти в Ардуино, как CGRAM, может хранить собственные символы, но размер памяти ограничен и может вместить лишь 8 собственных символов. Один из нестандартных символов, который пригодится для создания домашней метеостанции — знак градуса. Давайте нарисуем символ.

Создаем свой символ для LCD дисплея 1602
Создаем свой символ для LCD дисплея 1602

Для начала возьмите листок бумаги и нарисуйте на нем таблицу, где будет 5 столбцов и 8 строчек. Далее заштрихуйте в таблице клеточки (смотри фото выше), которые должны высвечиваться на дисплее. Дело в том, что каждый символ на дисплее состоит из пикселей (5 пикселей в ширину и 8 пикселей в высоту). Далее представим наш символ в виде массива данных, состоящего из восьми элементов — восьми строк.

Выводим на LCD 1602 собственный символ

Подключение LCD дисплея по I2C производится четырьмя проводами «папка-мамка» — 2 провода данных и 2 провода питания. Если вы подключаете дисплей Ардиуно УНО, используйте следующую схему — вывод SDA подключается к порту A4, вывод SCL – к порту A5 и два провода питания — GND и 5V. Если LCD 1602 подключается по шине I2C к Arduino MEGA, то на плате имеются соответствующие порты — SDA и SCL.

Для занятия нам понадобятся следующие детали:

  • Плата Arduino Uno;
  • USB-кабель;
  • LCD монитор 1602;
  • 4 провода «папка-мамка».
Подключение LCD 1602 к Arduino UNO через I2C
Подключение LCD 1602 к Arduino UNO через I2C

После подключения монитора к Ардуино загрузите скетч (скачать скетч)

#include <Wire.h> // библиотека для управления устройствами по I2C 
#include <LiquidCrystal_I2C.h> // подключаем библиотеку для LCD 1602

LiquidCrystal_I2C lcd(0x27,20,2); // присваиваем имя lcd для дисплея 20х2

byte simvol[8] = { // создаем свой символ и присваиваем ему имя "simvol"
0b01100,
0b01010,
0b10010,
0b10010,
0b01100,
0b00000,
0b00000,
0b00000
};

void setup() // процедура setup
{
  lcd.init(); // инициализация LCD дисплея
  lcd.backlight(); // включение подсветки дисплея

  lcd.createChar(1, simvol);
   
  lcd.setCursor(0,0); // ставим курсор на 1 символ первой строки
  lcd.print(char(1)); // печатаем символ на первой строке
}

void loop() // процедура loop
{
}

Пояснения к коду:

  1. С помощью функции byte simvol[8] = { }; мы зашифровали знак градуса, который нарисовали ранее на бумаге;
  2. Функция lcd.createChar(num, data); создает пользовательский символ для LCD. В скобках указан номер символа — num (от 0 до 7) и data — данные о пикселях символа.

На что обратить внимание:

  1. Мы задали имя «simvol» byte simvol[8], но имя можно задавать любое;
  2. Каждая строка начинается с 0b — «ноль» и латинская прописная буква «B».

Задание для самостоятельного выполнения:

  1. Измените скетч так, чтобы символ выводился в центре второй строки LCD дисплея;
  2. Добавьте в скетч свой собственный символ и выведите его на дисплей монитора.

Выводим на LCD 1602 русский шрифт

Напомним, что дисплей поддерживает только 8 новых символов или русских букв (пронумерованных от 0 до 7) размером 5 на 8 пикселей. Букву на кириллице, как и символ, можно задать массивом из восьми байт, характеризующий соответствующую строку. Поскольку можно добавить только до 8 новых букв и символов, то используйте для написания фраз латинские и кириллические буквы, как на примере ниже.

Загрузите скетч с надписью «Я ❤ РОБОТЕХНИКА18.РФ» (скачать скетч)

#include <Wire.h> // библиотека для управления устройствами по I2C 
#include <LiquidCrystal_I2C.h> // подключаем библиотеку для LCD 1602

LiquidCrystal_I2C lcd(0x27,20,2); // присваиваем имя lcd для дисплея 20х2

// создаем символ сердца и четырех букв на кириллице

byte heart[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000 };

byte I[8] = { 0b01111, 0b10001, 0b10001, 0b01111, 0b00101, 0b01001, 0b10001, 0b00000 };
byte B[8] = { 0b11111, 0b10000, 0b10000, 0b11110, 0b10001, 0b10001, 0b11110, 0b00000 };
byte N[8] = { 0b10001, 0b10001, 0b10011, 0b10101, 0b11001, 0b10001, 0b10001, 0b00000 };
byte F[8] = { 0b01110, 0b10101, 0b10101, 0b10101, 0b01110, 0b00100, 0b00100, 0b00000 };

void setup() // процедура setup
{
  lcd.init(); // инициализация LCD дисплея
  lcd.backlight(); // включение подсветки дисплея

// присваиваем символам порядковый номер

  lcd.createChar(1, heart);
  lcd.createChar(2, I);
  lcd.createChar(3, B);
  lcd.createChar(4, N);
  lcd.createChar(5, F);
  
  lcd.setCursor(6,0); // устанавливаем курсор на 6 символ первой строки
  
  lcd.print(char(2));
  lcd.print(" ");
  lcd.print(char(1));
  
  lcd.setCursor(0,1); // устанавливаем курсор на начало второй строки
  
  lcd.print("P");
  lcd.print("O");
  lcd.print(char(3));
  lcd.print("O");
  lcd.print("T");
  lcd.print("E");
  lcd.print("X");
  lcd.print("H");
  lcd.print(char(4));
  lcd.print("K");
  lcd.print("A");
  lcd.print("1");
  lcd.print("8");
  lcd.print(".");
  lcd.print("P");
  lcd.print(char(5));
}

void loop() // процедура loop
{
}

Пояснения к коду:

  1. Массивы строк в функции byte simvol[8] = { }; можно прописывать в строку;
  2. Слово РОБОТЕХНИКА18.РФ использует набор русских и латинских букв.

На что обратить внимание:

  1. Процедура void loop() в скетче не используется, но все равно присутствует.

Задание для самостоятельного выполнения:

  1. Выведите на LCD-монитор свое слово или фразу на русском языке.

1 Star2 Stars3 Stars4 Stars5 Stars (4 votes, average: 4,25 out of 5)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *