Форум программистов, компьютерный форум, киберфорум
Arduino
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 05.02.2022
Сообщений: 2

Русский шрифт на LCD1602 | Учим китайский дисплей русскому языку

18.02.2022, 20:28. Показов 1310. Ответов 0

Студворк — интернет-сервис помощи студентам

Приветствую всех ардуинофобов и ардуинофилов
LCD1602 - один из самых популярных дисплеев из-за его дешевизны и простоты использования. Неприятность заключается в том, что нельзя выводить абы какие символы на дисплей, можно только те что уже вшиты в него на заводе. Обычно встречаются дисплеи с вшитыми китайскими и английскими буквами и цифрами. Существуют дисплеи с вшитой кириллицей (обозначаются маркировкой CT или CP), но их сложнее найти, а стоят они дороже. Этим постом предлагаем решение проблемы.

Создатели дисплея любезно позаботились о нас и оставили 8 пустых ячеек в дисплее куда можно записать свои символы. Вот в эти 8 ячеек мы и засунули 33 буквы русского алфавита, а за одно и переписали цифры и знаки препинания, чтобы всё было в едином стиле.

Демонстрация шрифта. В ролике заметно мерцание текста, в реальности этого не заметно.



Качаем библиотеку BigRus1602 и добавляем ее в Arduino IDE. Основное отличие от других библиотек и экрана со вшитыми кириилическими символами - очень крупный шрифт. Точнее 2 встроенных шрифта: Strong и Smooth.

Есть два основых варианта использования библиотеки:
Вывод текста в режиме бегущей строки
Для часов или таймера в виде ЧЧ:ММ
Прежде чем начинать кодировать расскажу об ограничениях и возможностях библиотеки.
Тестирование проходило на LCD Keypad Shield. С экранами работающими по I2c скорее всего не заработает. Просто не было I2c дисплея под рукой чтобы допилить код под него.

Библиотека принимает данные типа byte, int, long и массив char[].
Доступные для вывода на экран символы:
АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ 1234567890 !?-.,:;

Библиотека BigRus1602 работает с опорой на стандартную библиотеку liquid crystal. По умолчанию она уже встроена в Arduino IDE, делать ничего не нужно.

Для создания шрифта использовались генераторы символов для LCD дисплеев. Подробнее об этих генераторах читайте здесь.


Рассмотрим несколько примеров.

Минимальный код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// В этом примере текст прокручивается по экрану слева направо
#include "BigRus1602.h"
 
char text[] = " АЛХИМИЯ";  // обязательно заглавные буквы
 
//Пины для подключения LCD Keypad Shield
const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
BigRus1602 lcdRus(&lcd);
 
void setup()
{
  lcdRus.begin();
 
  lcdRus.scrollText(true);  // true включаетскроллингтекста. false выключает
  lcdRus.print(text);      // выводим текст на экран единожды
}
 
void loop()
{
}
Скроллинг текста:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//Scroll speed
#include "BigRus1602.h"
 
char textSlow[] = " МЕДЛЕННО";
char textFast[] = " БЫСТРО";
 
//Пины для подключения LCD Keypad Shield
const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
BigRus1602 lcdRus(&lcd);
 
void setup()
{
  lcdRus.begin();
}
 
void loop()
{
  //второй аргумент - временной интервал между сдвигами, вводить его не обязательно(по умолчанию 1000 мс)
  lcdRus.scrollText(true, 500);
  lcdRus.print(textFast);
 
  lcdRus.scrollText(true, 1000);
  lcdRus.print(textSlow);
}
Чтение данных последовательного порта и вывод на ЖК-экран:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//SerialRead
#include "BigRus1602.h"
 
const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
BigRus1602 lcdRus(&lcd);
 
void setup()
{
  lcd.begin(16, 2);
  lcdRus.begin();
  Serial.begin(9600);
  lcdRus.scrollText(true);
}
 
void loop()
{
  char serialText[30];
  if (Serial.available())
  {
    //чем больше символов в строке, тем больше нужно времени чтобы принять ее
    delay(100);
 
    int availableText = Serial.available();
    for (int i = 0; i < availableText; i++)
    {
      serialText[i] = Serial.read();
      serialText[i + 1] = '\0';
    }
    lcdRus.print(serialText);
  }
}
В библиотеке доступно два шрифта: Strong и Smooth. Чтобы выбрать один из них откройте файл BigRus1602Font.h. Путь к этому файлу выглядит примерно так C:\Users\Admin\Documents\Arduino\librari es\BigRus1602\ В указанном файле нужно раскомментированую одну из строк. Остальные строки должны быть закомментированы.

Если нужно сэкономить память контроллера, оставьте раскомментированым только строку BC_ONLY_NUMBER

C++
1
2
3
//#define BC_STRONG_FONT    //угловатые буквы и цифры
#define BC_SMOOTH_FONT        //скругленные буквы и цифры
//#define BC_ONLY_NUMBER    //только цифры (для экономии памяти)
Библиотека написана программистом - любителем для экономии вашего времени. Больше примеров есть в папке Example.

Посмотрите ролик о том, как происходило создание библиотеки.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.02.2022, 20:28
Ответы с готовыми решениями:

Тест по русскому языку
помогите пожалуйста мне разобраться почему тест не считает

Cоставить тест по русскому языку
составить программу-тестирование по русскому языку(10 вопросов;4 варианта ответов к каждому вопросу;выставление итоговой оценки с...

Справочник по русскому языку chm
Добрый день. Простите, что создаю тему тут, но не знаю, куда её приткнуть. На могу найти &quot;Грамматический справочник по русскому...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.02.2022, 20:28
Помогаю со студенческими работами здесь

Нужно сделать тест по русскому языку
Нужно сделать тест по русскому языку (ЦТ). Должно быть 10 вариантов билетов. При активации формы для прохождения теста, должны подгружаться...

Delphi 7. Сделать тест по русскому языку
(Перенесено из раздела &quot;Turbo Pascal&quot;) Сделать тест по русскому языку. Написать программу для тестирования знаний в той или иной...

Оцените сайт(электронный учебник по русскому языку для дизайнеров)
сайт в архиве(желательно проверять в хроме)

Есть ли библиотека или база данных словаря по русскому языку?
Я собираюсь делать генератор кроссвордов, только писать в ручную слова и вопрос слишком долго. Хочется, чтобы кроссворд генерировался...

Написать программу которая будет исправлять ошибки по русскому языку (орфография)
Написать программу которая будет исправлять ошибки на C# к примеру я написал слова с ошибкой а оно мне исправила и так далее во всем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru