Как создать уникальные символы для ЖК-дисплея Arduino. Какие компоненты понадобятся для проекта. Как работает точечная матрица ЖК-дисплея. Как написать код для отображения пользовательских символов. Как объединить символы для создания крупных шрифтов.
Необходимые компоненты для создания пользовательских символов на ЖК-дисплее
Для реализации проекта по созданию и отображению пользовательских символов на ЖК-дисплее с помощью Arduino потребуются следующие компоненты:
- Arduino (например, Arduino Uno)
- ЖК-дисплей 16×2 символов
- Потенциометр 10 кОм
- Резисторы (220 Ом для подсветки ЖК-дисплея)
- Соединительные провода
- Макетная плата
Эти компоненты позволят подключить ЖК-дисплей к Arduino и управлять им для отображения пользовательских символов.
Принцип работы точечной матрицы ЖК-дисплея 16×2
ЖК-дисплей 16×2 использует точечную матрицу для формирования символов. Каждый символ представлен матрицей 5×8 пикселей:
- 5 пикселей в ширину
- 8 пикселей в высоту

Создание пользовательских символов с помощью библиотеки LiquidCrystal
Библиотека LiquidCrystal, входящая в стандартную поставку Arduino IDE, предоставляет удобные функции для работы с ЖК-дисплеями. Для создания пользовательских символов используется метод createChar():
- Определите массив из 8 байт, где каждый байт представляет одну строку символа
- Используйте lcd.createChar() для сохранения символа в памяти ЖК-дисплея
- Отобразите созданный символ с помощью lcd.write()
Пример кода для создания пользовательского символа:
«`cpp byte customChar[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000 }; lcd.createChar(0, customChar); lcd.write(byte(0)); «`Этот код создаст простой символ сердца и отобразит его на ЖК-дисплее.
Объединение символов для создания крупных шрифтов
Для создания символов большего размера можно объединить несколько пользовательских символов. Это позволяет формировать крупные цифры или буквы, занимающие несколько позиций на дисплее.

Процесс создания крупных символов включает следующие шаги:
- Разделите большой символ на части, соответствующие стандартным символам 5×8
- Создайте отдельные пользовательские символы для каждой части
- Отобразите эти символы в нужных позициях на ЖК-дисплее
Например, для создания цифры двойной высоты потребуется определить 6 пользовательских символов: 3 для верхней половины и 3 для нижней.
Оптимизация кода для эффективного использования памяти ЖК-дисплея
При работе с пользовательскими символами на ЖК-дисплее важно учитывать ограничения памяти. ЖК-дисплеи обычно имеют место только для 8 пользовательских символов одновременно. Для оптимизации использования памяти можно применить следующие техники:
- Повторно использовать части символов, когда это возможно
- Динамически менять определения символов в зависимости от текущих потребностей отображения
- Использовать симметрию для уменьшения количества уникальных частей символа
Эти методы позволят создавать более сложные пользовательские интерфейсы, несмотря на ограничения памяти ЖК-дисплея.

Применение пользовательских символов в проектах Arduino
Создание пользовательских символов открывает широкие возможности для улучшения интерфейса проектов Arduino с ЖК-дисплеем. Вот несколько примеров применения:
- Отображение специальных иконок для индикации состояния устройства
- Создание анимированных эффектов путем последовательной смены символов
- Вывод графиков и диаграмм с использованием пользовательских символов в качестве элементов
- Реализация многоязычного интерфейса с поддержкой нестандартных символов
Эти приложения позволяют сделать проекты Arduino более интерактивными и информативными для пользователей.
Отладка и решение проблем при работе с пользовательскими символами
При создании пользовательских символов для ЖК-дисплея могут возникнуть некоторые трудности. Вот несколько советов по отладке и решению распространенных проблем:
- Проверьте правильность подключения ЖК-дисплея к Arduino
- Убедитесь, что потенциометр настроен для оптимальной контрастности
- Проверьте корректность определения байтов для пользовательских символов
- Используйте Serial.print() для отладки кода и проверки значений переменных
- Экспериментируйте с различными комбинациями пикселей для улучшения читаемости символов
Внимательный подход к отладке поможет быстро выявить и устранить проблемы с отображением пользовательских символов.

Расширение возможностей: создание анимаций на ЖК-дисплее
Пользовательские символы можно использовать не только для статичных изображений, но и для создания простых анимаций на ЖК-дисплее. Это добавляет динамичности интерфейсу проекта Arduino. Как реализовать анимацию:
- Создайте несколько вариаций символа, представляющих разные кадры анимации
- Используйте таймер или задержки для последовательной смены символов
- Обновляйте содержимое ЖК-дисплея для отображения текущего кадра анимации
Пример простой анимации мигающего сердца:
«`cpp byte heart1[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 }; byte heart2[8] = { 0b00000, 0b01010, 0b10101, 0b10001, 0b01010, 0b00100, 0b00000, 0b00000 }; void setup() { lcd.begin(16, 2); lcd.createChar(0, heart1); lcd.createChar(1, heart2); } void loop() { lcd.setCursor(0, 0); lcd.write(byte(0)); delay(500); lcd.setCursor(0, 0); lcd.write(byte(1)); delay(500); } «`Этот код создаст эффект мигающего сердца, чередуя два разных символа.

Отображение пользовательских символов на ЖК-дисплее 16×2 с использованием Arduino
В этом руководстве мы будем отображать пользовательские символы на ЖК-дисплее 16×2. Жидкокристаллический дисплей (ЖКД) предлагает удобный и недорогой способ предоставления пользовательского интерфейса для проекта.
На сегодняшний день наиболее популярным ЖК-дисплеем является текстовая панель на базе чипа Hitachi HD44780. Он отображает две или четыре строки текста по 16 или 20 символов в строке (также доступны 32- и 40-символьные версии, но обычно по гораздо более высоким ценам).
Мы хотим определить и отобразить пользовательские символы или символы (глифы), которые мы создали. Символы, которые мы хотим отобразить, не заданы заранее в памяти символов ЖК-дисплея.
Библиотека для управления текстовыми ЖК-дисплеями поставляется с Arduino, и вы можете легко печатать текст на ЖК-дисплее, как и на последовательном мониторе, поскольку ЖК-дисплей и последовательный порт используют одну и ту же базовую функцию печати.
Обязательно посмотрите:
Содержание
Необходимые компоненты
- Ардуино.
- ЖК-дисплей 16×2.
- Потенциометр.
- Резисторы.
- Проводная перемычка.
- Макет.
О ЖК-дисплее с точечной матрицей 16×2
Для отображения пользовательских символов на ЖК-дисплее мы должны сначала узнать о точечной матрице ЖК-дисплея, что означает пиксели на ЖК-дисплее. В строках 5 пикселей, а в столбцах 8 пикселей, что означает, что каждый символ представляет собой комбинацию 5*8 точек.
Библиотека LiquidCrystal позволяет создавать до восьми пользовательских символов, которые можно распечатать как коды символов от 0 до 8. Каждый символ на экране рисуется на сетке 5 x 8 пикселей.
Чтобы определить символ, вам нужно создать массив из восьми байтов. Каждый байт определяет одну из строк символа. При записи в виде двоичного числа 1 указывает, что пиксель включен, 0 выключен (любые значения после пятого бита игнорируются).
Код шаблона пользовательских символов
Серийный номер: | Пользовательский символ | Код шаблона |
1 | 0b00000, 0b01010, 0b11111, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000 | |
2 | 0b00000, 0b01010, 0b00000, 0b00000, 0b10001, 0b01110, 0b00000, 0b00000 |
Просто поставьте «0» в незатененном месте и «1» в затененном для каждого байта.
Вы также можете сгенерировать код шаблона с помощью Генератор пользовательских кодов .
Схема для пользовательских символов на ЖК-дисплее.
Код
Следующий код создает пользовательские символы на ЖК-дисплее.
Отображение крупного шрифта/символов двойной высоты
Теперь мы хотим объединить два или более пользовательских символа для печати шрифтов большего размера/символов двойной высоты, чем один символ; например, числа двойной высоты на экране.
Код для символов двойной высоты
На ЖК-дисплее символы фиксированного размера, но вы можете создавать символы большего размера, комбинируя символы. Этот рецепт создает пять пользовательских персонажей.
Массив глифов определяет пиксели для пяти пользовательских символов. Массив имеет два измерения, указанные в квадратных скобках:
byte glyphs[5][8] ={...
[5] — количество глифов [8] — количество строк в каждом глиф. Каждый элемент содержит 1, а 0 указывают, включен или выключен пиксель в этой строке. Если вы сравните значения в глифе [0] (первый глиф), вы увидите, что 1 соответствуют темным пикселям:
{B11111,B11111,B00000,B00000,B00000,B00000,B00000,B00000},
Каждое большое число состоит из шести таких глифов, три из которых образуют верхнюю половину большой цифры, а три — нижнюю половину. BiDigitsTop и bigDigitsBot — это массивы, определяющие, какой пользовательский глиф используется для верхней и нижней строк на ЖК-экране.
Еще несколько статей для вас:
символов LCD с Arduino Uno
Интерфейс a 16×2 символьный ЖК-дисплей
Последнее обновление: май 2019 г.
Проект 9
1. ВВЕДЕНИЕ
2. ЖКД
3. Проводка LCD
4. Проводка топливного курса
5. Программное обеспечение
Введение
Добро пожало Использование во встроенной системе ЖК-дисплея (жидкокристаллического дисплея) для быстрой визуальной обратной связи о том, как работает система! Его можно использовать для отображения данных, полученных от датчиков, создания интерактивного меню или в качестве инструмента отладки. В этом руководстве мы покажем вам, как подключить ЖК-дисплей 16 × 2 символа к Arduino Uno (версия 3).
Отказ от ответственности
ProteShea, LLC является участником партнерской программы Amazon Services LLC, партнерской рекламной программы, предназначенной для предоставления сайтам средств для получения платы за рекламу за счет рекламы и ссылок на Amazon. com
Некоторые ссылки могут быть партнерскими. , в котором ProteShea, LLC получает комиссию, если вы используете эту партнерскую ссылку. Обратите внимание, что это бесплатно для вас и помогает нам создавать больше контента.
Вот что вам нужно для начала:
- FuelCan
- Modulus or solderless breadboard
- Modulus kit
- 16×2 Character LCD
- Arduino Uno Rev3
- 12″ F/M jumper wires
- 10kΩ potentiometer from the Modulus Kit
- Soldering Iron
- Solder
- Кусачки заподлицо
- Инструмент для намотки проволоки 30 AWG
- Провод 30 AWG
Жидкокристаллический дисплей (ЖК-дисплей)
ЖК-дисплей состоит из 16 контактов, которые используются для питания, управления и данных. Он использует стандартный отраслевой контроллер Hitachi, поэтому основные операции у разных поставщиков, которые их продают, одинаковы. Они имеют как 4-битный параллельный, так и 8-битный параллельный интерфейс. Мы будем использовать его в 4-битном режиме вместо 8-битного. Это означает, что мы должны сначала отправить старший полубайт (1 полубайт = 4 бита), а затем младший полубайт, чтобы отправить байт данных, необходимый для каждой команды или символа. Наиболее распространенный ЖК-дисплей имеет размер 16 × 2 или 20 × 4, что означает, что он может отображать 16 символов в каждой из двух строк и 20 символов в каждой из четырех строк соответственно. Распиновка ЖК-дисплея ниже.
ПРИМЕЧАНИЕ : ЖК-дисплей не поставляется с 16-контактным штекерным разъемом, поэтому вам придется его припаять.
Распиновка ЖК-дисплея Контакты 1 и 2 используются для питания ЖК-дисплея и должны быть подключены к GND и +5Vdc соответственно. Контакт 3 используется для регулировки контрастности — он будет подключен к потенциометру 10 кОм (потенциометру), чтобы можно было изменять выходное напряжение на контакте 3. Выбор регистра (RS) на контакте 4 используется либо для отправки команд, когда он низкий, либо для отправки данных, когда он высокий. Контакт 5 предназначен для чтения/записи (R/W) и используется для чтения или записи данных с ЖК-дисплея. ЖК-дисплей имеет возможность выполнять программу и отображать информацию, которая оправдывает необходимость в этом выводе. Однако мы будем записывать только на ЖК-дисплей, поэтому мы можем заземлить этот вывод, который навсегда переведет его в режим записи.
Кроме того, следующие восемь контактов (7-14) используются для отправки данных. Поскольку мы используем ЖК-дисплей в 4-битном режиме, D0-D3 (контакты 7-10) не используются. Пины 15 и 16 — это анод и катод светодиодной подсветки соответственно. Нам нужно будет использовать внешний резистор последовательно с этой подсветкой, чтобы ограничить ток. В противном случае светодиод может сгореть.
ЖК-дисплей имеет временную диаграмму, которой необходимо следовать, чтобы иметь возможность отправлять команды и символьные данные. Также необходимо учитывать время установки и удержания. Это позволяет установить уровни сигналов и гарантировать, что выборка выводов производится в нужное время. На приведенной ниже диаграмме показана временная диаграмма отправки команды на ЖК-дисплей в 4-битном режиме. Если мы хотим отправить команду для очистки дисплея, мы должны отправить 0000 (верхний полубайт) на шину данных, а затем отправить 0001 (младший полубайт) на шину данных.
На приведенной ниже диаграмме показана временная диаграмма отправки данных на ЖК-дисплей в 4-битном режиме. Например, предположим, что мы хотим отправить символ 1 на ЖК-дисплей. 8-битный эквивалент ASCII равен 0x30 или 0011 0000, поэтому мы должны отправить 0011 на шину данных, а затем 0000.
Отправить данные на ЖК-дисплей в 4-битном режиме это библиотека, которую мы можем использовать, называется LiquidCrystal.h . Библиотека проста в использовании и позволяет нам вводить характеристики ЖК-дисплея, такие как количество столбцов и строк, а также использовать ли 4-битный или 8-битный интерфейс. Мы также можем отправить данные и до 19разные команды.
Подключение ЖК-дисплея
Для монтажа ЖК-дисплея мы используем канистру Modulus. Пожалуйста, посмотрите видео ниже, если вы используете Modulus.
После того, как вы закончите крепление ЖК-дисплея к Modulus, мы можем присоединить вилочный конец каждой перемычки к гнездовым контактам Uno. У вас должно быть 6 перемычек: одна на контактах 4, 6 и 11-14. Контакты 4, 6 и 11–14 ЖК-дисплея будут подключаться к контактам 2, 3 и 4–7 Uno соответственно.
Если вы используете макетную плату, схема высокого уровня показана ниже. Мы будем подавать +5V и GND на макетную плату через FuelCan, который будет описан далее в следующем разделе.
Схема цепи с ЖК-дисплеем, установленным на макетной платеПроводка топливной банки
Сначала поместите макетную плату в нижний отсек для хранения, чтобы ограничить длину перемычек, установите Arduino Uno в область прототипирования топливной банки и подключите Modulus к 4 × 26-контактный разъем FuelCan. Вам нужно будет подать + 5 В и GND на шины питания и заземления на макетной плате, используя прилагаемый штекер типа «банан» для тестирования кабелей с зажимами. Вам потребуются два штыревых контакта для установки зажимов тестовых проводов со стороны макетной платы. Вставьте сторону USB-кабеля типа A в разъем USB1, а сторону типа B — в разъем Uno. Включите FuelCan с помощью адаптера питания переменного/постоянного тока.
Для получения дополнительной информации о Fuelcan-910 щелкните здесь или загрузите руководство пользователя.
Программное обеспечение
После завершения проводки и подачи питания на FuelCan мы можем загрузить эскиз в Uno. Эскиз ниже. Библиотека LiquidCrystal содержит девятнадцать различных функций, которые вы можете использовать. Мы не показываем вам все из них, но мы показываем наиболее часто используемые, такие как lcd.print, lcd.clear, lcd.home, lcd.createChar, lcd.write, lcd.setCursor, lcd.blink, lcd. noBlink, lcd.