Подключение LCD (ЖК дисплея) к микроконтроллеру Arduino
Статья рассказывает о том, как правильно подключить LCD к Arduino, рассмотрено всё необходимое про подключение LCD 1602 и LCD i2c.
Шаг 1. О проекте
Дисплеи LCD 1602 размера, созданные на базе HD44780 контроллера, в наши дни всё ещё остаются одними из самых доступных, простых и востребованных, чтобы разрабатывать какие бы то ни было электронные устройства.
Неудивительно, что их можно увидеть как в простых, собранных буквально на коленке агрегатах, так и в более серьезных промышленных, например автоматах для приготовления кофе. Именно с таким дисплеем и собираются наиболее популярные модули и шилды по тематике Arduino, например LCD I2C модуль и LCD Keypad Shield.
В следующих шагах подробно с изображениями рассказываем как подключить LCD к Arduino и отобразить на дисплее нужную информацию.
Шаг 2. LCD-дисплей 1602 для Ардуино
Дисплеи 1602 имеют два различных исполнения:
- жёлтая подсветка с чёрными буквами
- либо (это бывает гораздо чаще) синяя подсветка с белыми.
Размерность дисплеев на HD44780 контроллере бывает самой разной, а управляются они одинаково. Наиболее распространённые из размерностей – 16 на 02 (то есть по 16 символов в двух строках) или 20 на 04. Сами же символы имеют разрешение в 5 на 8 точек.
Большая часть дисплеев не поддерживает кириллицу (за исключением дисплеев CTK-маркировки). Но такая проблема частично решаема, и далее статья подробно рассказывает, как это сделать.
На дисплее есть 16-PIN разъём для подключения. Выводы имеют маркировку с тыльной стороны платы, она следующая:
- 1 (VSS) – питание на минус для контроллера.
- 2 (VDD) – питание на плюс для контроллера.
- 3 (VO) – настройки управления контрастом.
- 4 (RS) – выбор для регистра.
- 5 (R/W) – чтение и запись, в частности, запись при соединении с землёй.
- 6 (E) – активация (enable).
- 7–10 (DB0-DB3) – младшие биты от восьмибитного интерфейса.
- 11–14 (DB4-DB7) – старшие биты от интерфейса
- 15 (A) – положительный анод на питание подсветки.
- 16 (K) – отрицательный катод на питание подсветки.
Шаг 3. Подключаем ЖК-дисплей
Перед тем как подключать дисплей и передавать на него информацию, стоит проверить его работоспособность. Сперва подайте напряжение на VSS и VDD контроллер, запитайте подсветку (A, K), далее настройте контрастность.
Для таких настроек подойдёт потенциометр с 10 кОм, форма его не важна. На крайние ноги подают +5V и GND, а ножку по центру соединяют с VO выводом.
Когда на схему подаётся питание, нужно добиться необходимого контраста, если он настраивается неправильно, то и изображение на экране видно не будет. Чтобы настроить контраст, нужно «поиграть» с потенциометром. Когда схема будет собрана правильно и контраст настроен верно, верхняя строка на экране должна заполниться прямоугольниками.
Чтобы дисплей работал, применяется встроенная в Arduino IDE среду специальная библиотека LiquidCrystal.h, о которой я напишу ниже. Он может действовать в 8-битном и в 4-битном режиме. В первом варианте применяют лишь младшие и старшие биты (
Но применение 8-битного режима в этом дисплее – неправильное решение, преимущества в скорости почти нет, поскольку частота обновления у него всегда меньше 10 раз за секунду. Чтобы выводился текст, надо присоединить выводы DB7, DB6, DB5, DB4, E и RS к выводам контроллера. Присоединять их допустимо к любым пинам Arduino, главное – задание верной последовательности в коде.
Если необходимого символа пока что нет в памяти контроллера, то можно его определить вручную (всего до семи символов). Ячейка в рассматриваемых дисплеях имеет расширение в пять на восемь точек. Задача создания символа в том, чтобы написать битовую маску и расставить единички в местах, где точки должны гореть, а нолики – где не должны. Рассмотренная выше схема подключения не всегда хороша, т. к. на Arduino занимается минимум шесть цифровых выходов.
Шаг 4. Схема обхода
Изучим вариант, как обойти это и обойтись только двумя. Нужен добавочный модуль-конвертор для LCD в IIC/I2C. Как он припаивается к дисплею и присоединяется к Arduino, можно увидеть на изображениях ниже.
Но такой вариант подключения действует лишь со специальной библиотекой LiquidCrystal_I2C1602V1, которую, впрочем, нетрудно найти в Сети и установить, после чего можно без проблем им пользоваться.
Шаг 4: Библиотека LiquidCrystal.h
Библиотеку LiquidCrystal.h можно скачать в разделе Библиотек нашего сайта на этой странице или с официального ресурса arduino.cc. Но также вы можете скачать ниже по ссылкам:
Шаг 5. Скетч (код программы)
После того, как вы скачали архив замените папку LiquidCrystal в папке с библиотеками вашего каталога установки Arduino.
Вы можете увидеть примерный скетч по адресу:
Файл -> Примеры -> LiquidCrystal -> HelloWorld_SPI
Либо, если у вас меню на английском:
File -> Examples -> LiquidCrystal -> HelloWorld_SPI
На этом наш очередной урок завершен. Желаем вам качественных проектов!
Подключение TFT ЖК дисплея к Arduino Uno – полное руководство
В этой статье мы рассмотрим подключение TFT ЖК дисплея (TFT LCD Shield) диагональю 2.4 дюйма, выполненного в виде шилда (расширения), к плате Arduino Uno. С помощью этого цветного ЖК дисплея TFT типа мы можем отображать символы, строки, блоки, изображения и т.д. Также мы можем использовать этот TFT Shield в различных устройствах на основе Arduino: охранные системы, автоматизация дома, игры и др.
Подключить TFT ЖК дисплей к плате Arduino достаточно просто. Нам будут необходимы плата Arduino, TFT Shield (дисплей) с диагональю 2.4 дюйма и библиотека Arduino IDE & TFT. В интернете можно найти много драйверов для TFT Shield’ов Arduino, но различные TFT ЖК дисплеи имеют различные встроенные драйверы. Таким образом, сначала необходимо идентифицировать драйвер TFT ЖК дисплея и затем установить подходящую библиотеку для него. В этом проекте мы будем использовать TFT ЖК дисплей (шилд) с драйвером ili9341. Далее в статье представлена ссылка для скачивания необходимой библиотеки для этого драйвера (дисплея). Также, если интересно, можете прочитать статью про подключение обычного ЖК дисплея к плате Arduino.
Необходимые компоненты
Аппаратное обеспечение
- Плата Arduino Uno (купить на AliExpress).
- 2.4” TFT LCD display Shield (шилд TFT ЖК дисплея) (купить на AliExpress).
- USB кабель.
Программное обеспечение
Arduino IDE
TFT библиотека для Arduino (spfd5408)
Работа схемы
Вам в этом случае необходимо только вставить TFT Shield поверх платы Arduino как показано на рисунке. Данный TFT Shield совместим с Arduino UNO и Arduino mega.
Установка TFT library (библиотеки) в среду Arduino IDE
Шаг 1: Скачайте TFT library для Arduino по приведенной ссылке сделайте ее zip архивом (если она таковым не является): https://github.com/JoaoLopesF/SPFD5408.
Шаг 2: Скопируйте этот архив с библиотекой в папку библиотек Arduino в Program Files.
Шаг 3: Откройте Arduino IDE и выберите пункт меню Sketch -> Include Library -> Add .ZIP Library.
Затем откройте папку библиотек Arduino в Program Files (My Computer -> C: Drive -> Program Files -> Arduino -> libraries), куда вы скопировали zip архив с необходимой библиотекой на шаге 2 и выберите и откройте в ней заархивированную библиотеку SPFD5408-Master.
После открытия библиотеки SPFD5408 Master вы увидите что она установилась в Arduino IDE.
Шаг 4: Теперь в Arduino IDE выберите File -> Example -> SPFD5408-master -> spfd5408_graphictest. Откройте его, скомпилируйте и загрузите в плату Arduino.
Вы увидите результаты работы программы на TFT ЖК дисплее. Вы можете изменять этот файл по своему желанию чтобы он выполнял нужные вам задачи.
Примечание: аналогичные шаги можно использовать чтобы установить любую другую библиотеку в программную среду Arduino IDE.
Видео, демонстрирующее работу проекта
Загрузка… 5 677 просмотровКакие бывают Arduino LCD дисплеи — Arduino Mania
При разработке проектов Arduino, часто приходится использовать дисплеи для вывода информации. Дисплеи эти бывают разные и иногда начинающий разработчик ставит перед собой вопрос, — какой использовать? Давайте разберемся в этих непонятных аббревиатурах: LCD, TFT, OLED
Все имеющиеся в продаже Arduino LCD дисплеи можно поделить на две основные группы:
- Сегментные – экраны простого типа, ныне используются в основном для отображения небольшого количества информации, вроде температуры.
- LCD или ЖК-дисплеи (жидкокристаллические) – на экраны такого рода уже можно вывести информации побольше. Например, температуру с информационным словом (Temp — 16С).
Сегментный дисплей – это тема отдельной статьи, здесь будем говорить только о ЖК дисплеях.
Разновидности Arduino LCD дисплеев
В интернет – магазинах часто встречаются экраны трех видов:
- LCD — это обычный монохромный дисплей, который позволяет выводить символы определенного количества и размера. Отличным примером может служить lcd дисплей arduino 1602. Экран может отображать две строки по 16 символов каждая. Обычно этого хватает с лихвой для отображения информации в проектах Arduino для начинающих. Есть варианты с кнопками – lcd keypad shield.
- TFT — это графический дисплей, который позволяет отображать не только символы, но и изображения. Качество изображения зависит от разрешения экрана. TFT экраны стоят на порядок дороже, особенно сенсорные. Но и результат гораздо выше.Дисплеи Arduino LCD TFT отлично подходят для проектов с построением графиков. Есть варианты с шилдов с возможностью подключения SD – карты. Сенсорные варианты хороши возможностью реализации кнопок на одном шилде с экраном, что в свою очередь позволяет экономить на цифровых выходах.
- OLED — это тот же TFT экран только вместо жидких кристалов используются светодиоды, что дает большой угол обзора, сочную картинку и меньшее потребление энергии. Однако, их цена на сегодняшний день очень велика, чтобы использовать в проектах Arduino для начинающих.
Видео проектов с применением LCD дисплеев Ардуино
Начинающие разработчики, как правило реализуют свои проекты с применением обычного LCD 1602, видео ниже демонстрирует, что представляет из себя экранчик, в конце видео можно посмотреть, как дисплей отображает символы.
Отличное видео демонстрации работы дисплея arduino tft. Паренек рассказывает, как подключить его, показывает примеры вывода графической и текстовой информации на экран. Еще упоминает о выводе текста в Arduino tft на русском языке. Интересное видео, рекомендую.
Пример работы с OLED LCD Display Module I2C 0.96 в среде Arduino. Подробная видео инструкция по применению, от подключения, до установки библиотеки.
К выбору экрана нужно подходить из требований проекта. Например, если в планах выводить временной график температуры, то лучше использовать TFT дисплей, если нужно отображать пару значений, достаточно обойтись arduino lcd 1602 или даже сегментным. OLED дисплеи Ардуино можно применить, когда остро встает проблема потребления электроэнергии.
Метки: Метки LCD LCD 1602 oled tft дисплей
4-дюймовый сенсорный ЖК-экран для Arduino
4-дюймовый сенсорный ЖК-экран для Arduino
Характеристики
- Резистивный сенсорный экран TFT LCD, 4 дюйма, разрешение 480×320
- Стандартный интерфейс Arduino, совместимый с платами разработки, такими как: Arduino UNO, Leonardo, UNO PLUS, NUCLEO, XNUCLEO
- Встроенный автономный сенсорный контроллер, лучше касание, чем решения, которые используют контакты AD непосредственно для сенсорного управления
- ШИМ управление подсветкой, позволяет настроить подсветку до комфортного уровня
- Слот Micro SD, обеспечивает простой способ хранения фотографий для отображения
- Управляется через SPI, используются только несколько выводов Arduino
- Поставляется с примерами STM32 и Arduino, удобными для портирования
Ключевые параметры
ЖК-дисплей Тип | TFT |
---|---|
ЖК-интерфейс | SPI |
ЖК-контроллер | ИЛИ 9486 |
Сенсорный экран Тип | резистивный |
Контроллер сенсорного экрана | XPT2046 |
Цвета | RGB, 65K цветов |
Разрешение | 480×320 (пикселей) |
Соотношение сторон | 8: 5 |
Напряжение ввода / вывода | 3.3 В / 5 В |
Интерфейс
Символ | ПИН-код Arduino / NUCLEO | Описание |
---|---|---|
5 В | 5V | Потребляемая мощность 5 В |
ЗЕМЛЯ | GND | Земля |
SCLK | D13 | Часы SPI |
MISO | D12 | Ввод данных SPI |
MOSI | D11 | Вывод данных SPI |
LCD_CS | D10 | Выбор микросхемы ЖК-дисплея |
LCD_BL | D9 | Подсветка ЖК-дисплея |
LCD_RST | D8 | Сброс ЖК-дисплея |
LCD_DC | D7 | Выбор данных / команд на ЖК-дисплее |
TP_BUSY | D6 | Сенсорная панель занята |
SD_CS | D5 | Выбор микросхемы карты Micro SD |
TP_CS | D4 | Выбор микросхемы сенсорной панели |
TP_IRQ | D3 | Сенсорная панель прерывания |
Внешний размер
Ресурсы для разработчиков
Вики: www.waveshare.com/wiki/4inch_TFT_Touch_Shield
Руководство по выбору
Посмотрите (при подключении к плате управления XNUCLEO):
Распиновка ЖК-дисплея 16×2 | Сопряжение ЖК-дисплея 16×2 с Arduino
Жидкокристаллические дисплеи (ЖКД) можно встретить повсюду вокруг нас. Компьютеры, калькуляторы, телевизоры, мобильные телефоны, цифровые часы используют какой-то дисплей для отображения времени.
ЖК-экран – это электронный дисплейный модуль, который использует жидкие кристаллы для создания видимого изображения.ЖК-дисплей 16 × 2 – это очень простой модуль, обычно используемый в домашних хозяйствах и схемах. Формат 16 × 2 переводит на дисплей 16 символов в строке в 2 таких строки. На этом ЖК-дисплее каждый символ отображается в матрице 5 × 7 пикселей.
16X2 Распиновка ЖК-дисплея
Контактный № | Функция | Имя |
1 | Земля (0 В) | Земля |
2 | Напряжение питания; 5 В (4.7 В – 5,3 В) | Vcc |
3 | Регулировка контрастности; Лучше всего использовать переменный резистор, например, потенциометр. К этому выводу подключен выход потенциометра. Поверните ручку потенциометра вперед и назад, чтобы отрегулировать контрастность ЖК-дисплея. | Vo / VEE |
4 | Выбирает регистр команд при низком уровне и регистр данных при высоком уровне | RS (выбор регистра) |
5 | Младший для записи в регистр; Высокая для чтения из регистра | Чтение / запись |
6 | Отправляет данные на выводы данных при подаче импульса от высокого к низкому; Для выполнения инструкции требуется подача дополнительного напряжения, и для этой цели используется сигнал EN (разрешение).Обычно мы устанавливаем en = 0, когда мы хотим выполнить инструкцию, мы делаем ее высоким en = 1 на несколько миллисекунд. После этого снова заземляем, то есть en = 0. | Включить |
7 | 8-битные выводы данных | DB0 |
8 | DB1 | |
9 | DB2 | |
10 | DB3 | |
11 | DB4 | |
12 | DB5 | |
13 | DB6 | |
14 | DB7 | |
15 | Подсветка VCC (5V) | Светодиод + |
16 | Заземление подсветки (0 В) | светодиод – |
RS (Выбор регистра)
ЖК-дисплей формата 16X2 имеет два регистра, а именно: команду и данные.Выбор регистра используется для переключения с одного регистра на другой. RS = 0 для регистра команд, тогда как RS = 1 для регистра данных.
Регистр команд: Регистр команд хранит командные инструкции, передаваемые на ЖК-дисплей. Команда – это инструкция ЖК-дисплею для выполнения заранее определенной задачи. Примеры вроде:
- инициализация
- очистка экрана
- установка позиции курсора
- управление дисплеем и т. Д.
Обработка команд происходит в регистре команд.
Регистр данных: Регистр данных хранит данные, которые должны отображаться на ЖК-дисплее. Данные представляют собой значение ASCII символа, отображаемого на ЖК-дисплее. Когда мы отправляем данные на ЖК-дисплей, они попадают в регистр данных и там обрабатываются. Когда RS = 1, выбирается регистр данных.
Важные коды команд для ЖК-дисплея
Старший № | Шестнадцатеричный код | Команда в регистр инструкций ЖК-дисплея |
1 | 01 | Четкий экран дисплея |
2 | 02 | Возвращение домой |
3 | 04 | Курсор уменьшения (сдвиг курсора влево) |
4 | 06 | Увеличить курсор (сдвинуть курсор вправо) |
5 | 05 | Сдвиг отображения вправо |
6 | 07 | Сдвиг дисплея влево |
7 | 08 | Дисплей выключен, курсор выключен |
8 | 0A | Дисплей выключен, курсор на |
9 | 0C | Дисплей включен, курсор выключен |
10 | 0E | Дисплей включен, курсор мигает |
11 | 0F | Дисплей включен, курсор мигает |
12 | 10 | Сдвинуть курсор влево |
13 | 14 | Сдвинуть курсор вправо |
14 | 18 | Сдвинуть весь дисплей влево |
15 | 1С | Сдвинуть весь дисплей вправо |
16 | 80 | Установить курсор в начало (1-я строка) |
17 | C0 | Установить курсор в начало (2-я строка) |
18 | 38 | 2 строки и матрица 5 × 7 |
Отображение настраиваемых символов на ЖК-дисплее 16X2
Создание пользовательских символов на ЖК-дисплее не очень сложно.Это требует знаний о пользовательской памяти с произвольным доступом (CG-RAM) ЖК-дисплея и контроллера ЖК-чипа. Большинство ЖК-дисплеев содержат контроллер Hitachi HD4478.
CG-RAM является основным компонентом при создании пользовательских персонажей. Он хранит пользовательские символы, однажды объявленные в коде. Размер CG-RAM составляет 64 байта, что дает возможность создавать восемь символов за раз. Каждый символ имеет размер восемь байт.
Адрес CG-RAM начинается с 0x40 (шестнадцатеричный) или 64 в десятичном. Мы можем создавать собственные символы по этим адресам.Как только мы сгенерируем наши символы по этим адресам, мы сможем распечатать их, просто отправив команды на ЖК-дисплей. Адреса символов и команды печати приведены ниже.
В таблице выше вы можете увидеть начальные адреса для каждого символа с их командами печати.
Первый символ генерируется по адресам от 0x40 до 0x47 и печатается на ЖК-дисплее путем простой отправки команды 0.
Второй символ генерируется по адресам от 0x48 до 0x55 и печатается при отправке команды 1.
Как создавать собственные символы в CG-RAM
В ЖК-дисплеях каждый символ находится в матрице 5 × 8. Где 5 – количество столбцов, а 8 – количество строк.
Вот простой пример того, как создать букву «b» в CG-RAM.
Массив для создания ‘b’ – char b [7] = {0x10,0x10,0x16,0x19,0x11,0x11,0x1E}; То есть
- Отправьте адрес, по которому вы хотите создать персонажа.
- Теперь создайте своего персонажа по этому адресу.Отправьте значения массива символов «b», определенные выше, одно за другим в регистр данных ЖК-дисплея.
- Для печати сгенерированного символа по адресу 0x40. Отправьте команду 0 в регистр команд ЖК-дисплея. Таблица ниже поясняет это более ясно
Сопряжение ЖК-дисплея 16X2 с Arduino
Модули ЖК-дисплеяиграют очень важную роль во многих встраиваемых системах на базе Arduino для улучшения пользовательского интерфейса системы. Взаимодействие с Arduino дает программисту больше свободы для легкой настройки кода.Для построения схемы достаточно любой платы Arduino, ЖК-дисплея 16X2, перемычек и макета. Интерфейс Arduino к ЖК-дисплею ниже.
Исходный код для
16X2LCD и Arduino .Отображение яркости светодиода на ЖК-дисплее 16 × 2
Комбинация ЖК-дисплея и Arduino дает несколько проектов, самым простым из которых является ЖК-дисплей для отображения яркости светодиода. Все, что нам нужно для этой схемы, – это ЖК-дисплей, Arduino, макетная плата, резистор, потенциометр, светодиод и несколько соединительных кабелей.Схема подключения представлена ниже.
Детальный проект доступен при отображении яркости светодиода на ЖК-дисплее
Эта статья была впервые опубликована 21 ноября 2016 г. и недавно обновлена 17 июля 2021 г.
Учебное пособие по взаимодействию графического ЖК-дисплея 128×64 с Arduino
В этом проекте я покажу вам, как сопрягать графический ЖК-дисплей 128×64 с Arduino UNO. Этот конкретный ЖК-модуль основан на ЖК-контроллере ST7920.Итак, сначала мы немного поговорим о графическом ЖК-модуле и его ЖК-контроллере ST7920.
Затем мы увидим шаги по взаимодействию графического ЖК-дисплея 128 × 64 с платой Arduino UNO и отобразим растровое изображение.
Введение
В предыдущем проекте Arduino я подключил ЖК-модуль Nokia 5110 к Arduino . Это также графический ЖК-дисплей, который может отображать некоторые базовые растровые изображения и графику. Но проблема с ЖК-модулем Nokia 5110 заключается в его разрешении.
ЖК-дисплей Nokia 5110 с разрешением 84 x 48 пикселей может использоваться для реализации пользовательского интерфейса на основе меню. Из-за своего небольшого размера результирующее меню будет ограничено 3 или 4 пунктами на странице.
Если нам нужен больший дисплей и больше места для работы, то очевидным выбором будет более крупный и лучший графический ЖК-модуль 128 × 64.
В качестве демонстрации, после выполнения всех аппаратных подключений, я покажу растровое изображение на графическом ЖК-модуле. Если вы заинтересованы в реализации простого алфавитно-цифрового ЖК-дисплея 16 × 2 с помощью Arduino, ознакомьтесь с из этого руководства по .
Краткое описание графического ЖК-дисплея 128 × 64
На первый взгляд, графический ЖК-модуль 128 × 64 кажется старшим братом знаменитых ЖК-модулей 16 × 2 или 20 × 4 с их аналогичной конструкцией и почти одинаковыми расположение контактов.
Но между этими двумя есть существенная разница. ЖК-дисплеи 16 × 2 или 20 × 4 в основном представляют собой символьные дисплеи. Они могут отображать только буквенно-цифровые символы и некоторые простые пользовательские символы, ограниченные матрицей 5 × 8.
Переходя к графическому ЖК-дисплею 128 × 64, как следует из названия, это графический дисплей, состоящий из 128 × 64 i.е., 8192 индивидуально управляемых точки.
Используя различные комбинации пикселей, мы можем отображать символы разных размеров. Но на этом волшебство не заканчивается. Вы также можете отображать изображения и графику (небольшую анимацию). В ЖК-модуле 128 × 64 64 строки и 128 столбцов.
Контроллер ЖК-дисплея ST7920
На рынке существует несколько версий графического ЖК-дисплея. Несмотря на то, что использование, приложение и реализация практически идентичны, основное различие заключается во внутреннем ЖК-контроллере, который используется для управления точечно-матричным дисплеем.
Некоторые из наиболее часто используемых ЖК-контроллеров: KS0108, SSD1306, ST7920, Sh2106, SSD1322 и т. Д. Выводы окончательного ЖК-модуля могут отличаться в зависимости от используемого ЖК-контроллера. Поэтому, пожалуйста, проверьте ЖК-контроллер, а также штырьки перед покупкой.
Приобретенный мной графический ЖК-модуль состоит из контроллера ST7920. Он производится Sitronix и поддерживает три типа шинных интерфейсов: 8-битный режим, 4-битный режим и последовательный интерфейс.
Если вы раньше использовали ЖК-дисплей 16 × 2, то, возможно, вы знакомы как с 4-битными, так и с 8-битными параллельными интерфейсами.Последовательный интерфейс – это что-то новое, и мы рассмотрим этот вариант в этом проекте.
128 × 64 Распиновка ЖК-дисплея
Как я уже упоминал, дважды уточняйте у производителя распиновку графического ЖК-модуля. В следующей таблице описана распиновка ЖК-модуля 128 × 64, который у меня есть.
Номер контакта | Имя контакта | Описание контакта |
1 | GND | Земля |
2 | VCC | Напряжение питания |
3 | VO | Регулировка контрастности |
4 | RS | Выбор регистра (CS в последовательном) |
5 | RW | Управление чтением / записью (ввод последовательных данных) |
6 | E | Включение (последовательный CLK ) |
7-14 | D0 – D7 | Данные |
15 | PSB | Выбор интерфейса (0: последовательный, 1: 8-битный / 4-битный параллельный) |
16 | NC | Не подключен |
17 | RST | Сброс |
18 | VOUT | Выход удвоителя напряжения ЖК-дисплея | 9003 0
19 | BLA | Светодиодный анод подсветки |
20 | BLK | Светодиодный катод подсветки |
На следующем изображении показана задняя часть ЖК-дисплея с напечатанной распиновкой.
Сопряжение графического ЖК-дисплея 128 × 64 с Arduino
Теперь, когда мы немного познакомились с графическим ЖК-дисплеем и его контроллером ST7920, давайте приступим к сопряжению графического ЖК-дисплея 128 × 64 с Arduino. Я реализую простую схему, чтобы продемонстрировать, насколько легко взаимодействовать между ЖК-дисплеем и Arduino, используя очень мало внешних компонентов.
Я буду использовать последовательный интерфейс для передачи данных, а также отображать растровое изображение на графическом ЖК-дисплее.
Принципиальная схема
На следующем изображении показана принципиальная схема для взаимодействия графического ЖК-дисплея ST7920 с Arduino UNO.
Необходимые компоненты
- Arduino UNO
- Графический ЖК-модуль 128 × 64
- Потенциометр 10 кОм
- Макетная плата
- Источник питания макетной платы 3
- Соединительные провода 9000 Разные соединения 9000
способы взаимодействия графического ЖК-дисплея с Arduino. Это:
- 4-битный параллельный режим
- 8-битный параллельный режим
- Последовательный режим
В последовательном режиме нам нужны только три контакта для фактической передачи данных.Это RS, RW и E. RS действует как контакт выбора микросхемы в последовательной связи. RW и E действуют как контакты Serial Data IN и Serial CLK соответственно.
Итак, подключите RS, RW и E ЖК-дисплея к контактам цифрового ввода-вывода 10, 11 и 13 Arduino UNO. Кроме того, чтобы выбрать режим последовательного интерфейса, вывод печатной платы должен быть подключен к GND.
Остальные соединения аналогичны традиционному ЖК-дисплею 16 × 2. VCC и GND подключены к 5V и заземлению источника питания. VO подключен к дворнику 10 кОм POT, в то время как два других терминала POT подключены к 5V и GND соответственно.
Для подсветки ЖК-дисплея подключите BLA к 5 В, а BLK к GND.
Цвет подсветки моего ЖК-дисплея синий. Но также распространены белый и зеленый.
Генерация HEX-кода для растрового изображения
Вместо отображения символов разных шрифтов (да, есть библиотеки, с помощью которых вы можете реализовать различные шрифты), я сразу же покажу изображение в виде растрового изображения. Перед написанием кода необходимо преобразовать растровое изображение в байтовые массивы.
Я использовал вышеуказанный логотип «Офис». Помните, что разрешение ЖК-дисплея 128×64 равно 128×64 пикселей. Итак, максимальный размер изображения должен быть 128 × 64. Итак, с помощью Microsoft Paint я снизил разрешение приведенного выше изображения до 128 × 64 пикселей и также сохранил его как монохромное растровое изображение.
Следующим шагом является преобразование этого растрового изображения в массив байтов. Я пробовал несколько инструментов конвертера (как онлайн, так и офлайн), но ни один из них не смог сгенерировать код, совместимый с моей настройкой.
Итак, я использовал программу «GIMP». Вы можете скачать GIMP с по этой ссылке и установить его. После установки вы можете открыть растровое изображение 128 × 64 в программе GIMP и экспортировать его как «Растровое изображение X».
Будет создан файл .xbm. Он содержит шестнадцатеричный код для выбранного растрового изображения 128 × 64. Откройте его в любом текстовом редакторе (например, Notepad ++) и внесите следующие изменения. Массив должен быть статическим константным беззнаковым символом с добавлением «PROGMEM» после имени массива.
static const unsigned char myBitmap [] PROGMEM = {
0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, , 0xff, 0xff,
, 0x3f, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
… ..
0xff, 0xff, 0xff, 0x7f};
Код
Перед написанием кода вам необходимо скачать специальную библиотеку под названием «U8g2». В среде Arduino IDE перейдите в Инструменты -> Управление библиотеками… Найдите «u8g2» и установите последнюю версию.Это сложная библиотека, и ее страница github содержит всю необходимую документацию.
В наш код необходимо добавить сгенерированный ранее HEX код.
Заключение
Здесь реализован простой проект по взаимодействию графического ЖК-дисплея 128 × 64 с Arduino. Вместо того, чтобы отображать простые символы, я отобразил растровое изображение на ЖК-дисплее, чтобы показать его возможности.
В следующем проекте я покажу вам, как создать простой дисплей меню на графическом ЖК-дисплее 128 × 64 с помощью поворотного энкодера.
Как подключить ЖК-экран в Arduino
Добавив привлекательные возможности отображения в свой проект Arduino, вы можете сделать свое интеллектуальное устройство более читабельным и более полезным.
В этом руководстве мы рассмотрим, как подключить экран жидкокристаллического дисплея (ЖКД) к плате Arduino Uno.
Как работают ЖК-дисплеи
Прежде чем мы начнем, очень важно знать, как работает ЖК-дисплей. Плоские ЖК-дисплеи могут быть разных типов, поэтому в зависимости от потребностей вашего проекта вам придется выбирать правильный экран.
В самой базовой версии используются «семисегментные дисплеи», обычно встречающиеся в калькуляторах, цифровых сигнализациях и дисплеях насосов АЗС. Они просто состоят из лопастей, которые можно зажигать в различных комбинациях для получения числовых значений.
С другой стороны, существуют «ЖК-дисплеи на тонкопленочных транзисторах (TFT)», которые используются в телевизорах, ноутбуках, смартфонах и сложных электронных устройствах. В них используются пиксельные алгоритмы, обеспечивающие быстрое время отклика, широкие углы обзора, высокую контрастность и точные цветовые схемы.
«Точечно-матричный ЖК-дисплей» находится где-то посередине между основными и наиболее продвинутыми ЖК-технологиями. Они полезны для отображения алфавитов, цифр, а также верхнего и нижнего регистра букв.
Одним из наиболее распространенных матричных ЖК-дисплеев является модуль 2 × 16, который относится к двум строкам и шестнадцати столбцам выводов ЖК-дисплея. Это то, что мы будем использовать в наших соединениях с платой Arduino.
Настройка проекта
Следующее оборудование необходимо для сопряжения ЖК-экрана с Arduino.
- Плата Arduino Uno
- Матричный ЖК-экран 2 × 16 (как указано выше)
- Соединительные провода
- Макетная плата
- 10K Потенциометр для изменения контрастности ЖК-дисплея
- Пайка контактов дисплея с макетной платой
Arduino сайт предлагает подробный пример сборки. Он совместим со встроенной библиотекой, доступной для Arduino IDE.
Хотя на первый взгляд схема может показаться сложной, вот простое пошаговое объяснение различных этапов.
Во-первых, все шестнадцать контактов ЖК-дисплея должны быть подключены к нижней положительной шине макета.
Затем первый и последний контакты ЖК-дисплея подключаются к отрицательной шине сверху. Контакты Arduino GND и 5 В на стороне источника питания подключены к положительной шине, в отличие от разъемов ЖК-дисплея.
Кроме того, потенциометр 10 кОм должен подключаться к макетной плате для конфигураций GND и + 5V.
ЖК-дисплей имеет различные контакты, такие как контакты выбора регистра (RS), контакты чтения / записи (R / W), контакты включения и 8 контактов данных.Каждый из них выполняет определенную функцию по отношению к проекту.
Вам не нужно разбираться в них подробно, поскольку их роли четко объяснены во встроенном примере, который мы будем использовать. Единственное, что требуется, – это правильно выполнить соединения в соответствии со схемой ниже.
Схема сборки Arduino Uno-LCD (Источник: Arduino.cc)Рабочий код
Сначала убедитесь, что в вашей системе установлена Arduino IDE. У нас есть подробные руководства по настройке IDE в Windows, Mac и Linux.
Откройте среду IDE и перейдите в «Файл -> Примеры -> LiquidCrystal -> HelloWorld», чтобы получить код для этого проекта.
Как объяснялось ранее, сама библиотека примеров содержит все данные, необходимые для создания ваших соединений.
Кодовые команды довольно просты, если вы понимаете основы Arduino IDE. Они описаны в нашей удобной шпаргалке. Кроме того, вам понадобится begin ()
, который помогает инициализировать интерфейс с ЖК-экраном.
Вы можете изменить отображаемый текст в соответствии с вашими потребностями. Чтобы изменить положение курсора в другом месте на ЖК-экране, используйте lcd.setcursor (x, y)
. Время отображения в миллисекундах также можно настроить, как показано ниже.
Нажмите кнопки «Подтвердить» и «Загрузить», и скетч будет загружен на плату Arduino Uno.
С ЖК-дисплеем можно повозиться гораздо больше. Физическая схема не изменится, но вы можете заставить дисплей прокручиваться влево и вправо, используя scroll ()
или автоматически перемещаясь справа налево и наоборот, используя autoscroll ()
.Есть еще один вариант для курсора в стиле подчеркивания с использованием курсора ()
.
Заключение
ЖК-экраны– одно из самых полезных приложений в проектах интеллектуальных устройств Arduino. Как показано в этом руководстве, можно подключить ЖК-экран, используя стандартный пример из библиотеки Arduino.
Вы пробовали включать ЖК-экраны в свои проекты Arduino или Raspberry Pi? Пожалуйста, дайте нам знать о своем опыте в разделе комментариев.
Саяк БоралIoT-зависимых с начала 2016 года.Люблю изучать проблемы, возможности и тенденции проникновения в суть того, что становится третьей волной Интернета.
Учебное пособие поLCD Arduino – Как подключить ЖК-дисплей к Arduino
ЖК-дисплей 16 × 2
ЖК-дисплеи являются общей частью большинства проектов встраиваемых систем, так как это самый простой метод считывания для отображения инструкций пользователя, текста или выходных значений и т. Д.
В этой статье объясняются основы ЖК-дисплея AJHD162A 16 × 2 и его интерфейса с Arduino UNO R3.
ЖК-дисплей JHD162A 16 × 2 представляет собой 16-контактный интерфейсный модуль, состоящий из 16 столбцов x 2 строки с
СИМВОЛ. ТОЧКИ : 5 x 8 (5 столбцов x 8 строк)
Контакты и функции модульного ЖК-дисплея JHD162A 16 × 2 описаны ниже.
Контакт NO | Имя | Функция |
1 | VSS | Земля |
2 | VCC | + 5 В постоянного тока |
3 | VEE | Регулировка контрастности |
4 | RS | Зарегистрироваться выбрать |
5 | R / W | Чтение или запись |
6 | E | Включить |
7 | DB0 | Бит данных |
8 | DB1 | Бит данных |
9 | DB2 | Бит данных |
10 | DB3 | Бит данных |
11 | DB4 | Бит данных |
12 | DB5 | Бит данных |
13 | DB6 | Бит данных |
14 | DB7 | Бит данных |
15 | светодиод + | Подсветка LED + |
16 | светодиод – | Подсветка LED- |
JHD162A Описание контакта
Pin1 (Vss) : подключен к клемме заземления источника питания
Вывод 2 (Vcc) : К этому выводу подключен входной источник постоянного напряжения +5 В.
Контакт 3 (V0) : Регулировка контрастности: Контакт регулировки контрастности подсоединен к выводу стеклоочистителя потенциометра, концевые выводы подсоединены к + 5 В и заземлению. Контрастность ЖК-дисплея можно регулировать, изменяя напряжение на выводе VEE. Заземленный вывод VEE также работает нормально.
Контакт 4 (выбор регистра) : Модуль LCD JHD162A имеет два регистра, например регистр данных и регистр команд.
Одновременно будет выбран регистр данных или регистр команд.Активное высокое состояние вывода RS выбирает регистр данных, а низкое состояние выбирает регистр команд.
, когда регистр данных выбрал вход на выводы данных, будет рассматриваться как данные и отображаться на экране ЖК-матрицы. И если выбран регистр команд, данные будут выбраны как инструкции для управления модулем матрицы.
Вывод 5 (R / W) : Этот вывод используется для выбора режимов чтения и записи.
Логическое состояние ВЫСОКОГО состояния контакта R / W выбирает режим чтения, т.е.е. чтение из регистра и логический LOW на выводе R / W выбирают режим записи, то есть запись в регистр.
Pin6 (E) : Для включения ЖК-модуля. Сигнал ВЫСОКИЙ-НИЗКИЙ на разрешающем контакте позволяет записывать в регистры 8 контактов данных (D0 -D7).
Вывод 7 (DB0) – Вывод 14 (DB7) : Выводы от DB0 до DB7 – это выводы с 8 битами данных. Команды и данные отправляются через эти контакты. Состояния этих выводов данных (высокий или низкий) – это биты, которые вы записываете в регистр при записи, или значения, которые вы читаете при чтении.Состояние низкого уровня на этих выводах представляет собой бит «0», а высокий уровень – как бит «1».
Pin15 (LED +) и Pin16 (LED-) : анод и катод светодиодной подсветки. Подключите контакт 15 LED + к источнику питания 5 В, а контакт 16 LED- к земле.
Подключение ЖК-дисплея ArduinoДля интерфейса Arduino контакты ЖК-дисплея подключаются к плате Arduino UNO R3 следующим образом.
Вывод включения ЖК-дисплея (вывод 6) на цифровой вывод 11, Вывод ЖК-дисплея RS (вывод 4) на цифровой вывод 12
ЖК-модуль взаимодействует с Arduino в 4-битном режиме.Таким образом, подключены только выводы данных DB4 – DB7 ЖК-дисплея, а оставшиеся выводы битов данных DB0 – DB3 остаются отключенными.
Подключение выводов данных ЖК-дисплея DB4 к DB7 с соответствующими выводами Arduino указано ниже.
ЖК-дисплей (вывод 11) Вывод D4 на цифровой вывод 5
ЖК-дисплей (вывод 12) Вывод D5 на цифровой вывод 4
ЖК-дисплей (вывод 13) Вывод D6 на цифровой вывод 3
ЖК-дисплей (вывод 14) Вывод D7 на цифровой вывод 2
Vss (контакт 1) подключен к земле.
Vcc (контакт 2) К этому контакту подключен входной источник постоянного напряжения +5 В.
VEE (контакт 3) подключен к клемме 2 потенциометра, клемма 1 подключена к + 5 В, а клемма 3 к земле.
LCD R / W (pin5) pin подключен к земле для выбора режима записи.
LED + (контакт 15) подключен к источнику питания + 5 В, а LED- (контакт 16) подключен к земле.
Arduino LCD
display Пример кода#include < LiquidCrystal .h> LiquidCrystal ЖК (12, 11, 5, 4, 3, 2); int я = 0; void setup () { lcd.begin (16, 2); } void loop () { lcd.setCursor (4,0); lcd.print («Мехатрофис»); for (i = 0; i <4; i ++) { lcd.scrollDisplayLeft (); задержка (500); } for (i = 0; i <4; i ++) { lcd.scrollDisplayRight (); задержка (500); }}
Попробуйте приведенный выше пример кода, который перемещает текст «Mechatrofice» туда и обратно на ЖК-дисплее 16 × 2.
ЖК-дисплей к интерфейсу Arduino с использованием адаптера I2C / IIC
Еще один простой способ связать ЖК-дисплей с Arduino - использовать модуль адаптера последовательного интерфейса I2C.
Преимущество ЖК-интерфейса I2C заключается в том, что он сохраняет схему аккуратной и простой, а также упрощает подключение. Для более крупных схем это наиболее осуществимый метод, поскольку меньшее количество выводов Arduino будет зарезервировано для ЖК-дисплея.
В описанном выше методе ЖК-дисплей подключается напрямую к Arduino через параллельное соединение.При использовании интерфейса I2C параллельная связь преобразуется в последовательную связь I2C. I2C - это последовательный протокол с двухпроводным интерфейсом с использованием линий связи SDA (Serial DATA Line) и SCL (Serial Clock Line). Таким образом, включая два провода для VCC и GND, подключение к ЖК-дисплею от Arduino может быть ограничено 4-проводной схемой.
В параллельном ЖК-интерфейсе использовалась библиотека LiquidCrystal.h. Но для интерфейса I2C требуются библиотеки LiquidCrystal_I2C.h и wire.h; провод.Библиотека h предназначена для связи I2C, а библиотека LCD позволяет плате Arduino управлять жидкокристаллическими дисплеями.
Библиотека Wire.h уже встроена в Arduino IDE, что позволяет нам взаимодействовать с устройствами I2C / TWI (межинтегральная схема / двухпроводной интерфейс). Чтобы добавить библиотеку LiquidCrystal I2C, либо загрузите файл .zip, либо добавьте прямо из менеджера библиотеки.
Библиотека загрузок
https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library или
https: // github.com / johnrickman / LiquidCrystal_I2C - В этой библиотеке wire.h уже включен в библиотеку LiquidCrystal_I2C, ему не требуется wire.h для дополнительного импорта в эскиз.
В среде Arduino IDE Sketch> Включить библиотеку> Добавить .ZIP-библиотеку> Выберите и откройте загруженный zip-файл. Скетч Arduino, представленный на этой странице, подходит для работы с двумя вышеупомянутыми библиотеками.
Установить из диспетчера библиотек
Sketch> Включить библиотеку> Управление библиотеками> найдите LiquidCrystal_I2C и установите библиотеку.
Подключите ЖК-дисплей и адаптер I2C, как в схеме, или напрямую подключите 16 штыревых контактов разъема модуля I2C к штыревым контактам ЖК-разъема, затем последовательные контакты адаптера I2C можно подключить к Arduino. Контрастность ЖК-дисплея можно отрегулировать с помощью потенциометра на модуле I2C.
Подключение I2C к Arduino
Штифт адаптера I2C | Штырь Arduino Uno |
ЗЕМЛЯ | GND |
VCC | 5V |
SDA | A4 (Аналоговый контакт 4) |
SCL | A5 (Аналоговый вывод 5) |
Код ЖК-дисплея Arduino с использованием I2C
#include < LiquidCrystal_I2C .h> // # включаем// Адрес I2C 0x27 LiquidCrystal_I2C lcd (0x27,16,2); // дисплей 16x2 установка void () { lcd.init (); // инициализируем ЖК-дисплей lcd.