Как очистить дисплей 1602

Обновлено: 07.07.2024

Символьные ЖК-дисплеи LCD 1602 и LCD 2004 достаточно часто используются в Arduino проектах, благодаря большому размеру и относительно небольшой стоимости. Кроме этого с данными дисплеями достаточно просто работать. Сегодня в Arduino уроке рассмотрим основы работы с ЖК-дисплеями LCD 1602 и LCD 2004. Подключим lcd 1602 к Ардуино. И рассмотрим пару примеров скетчей, которые позволят вывести текстовую информацию на LCD 1602 и 2004.

Описание и классификация LCD 1602 и LCD 2004.

LCD 1602 дисплей еще называют символьным. Это связано с тем, что ЖК-дисплей разбит на области точек. На каждую такую область можно вывести 1 символ. В связи с чем дисплей данного типа подразделяется по количеству строчек и символов в строке. Например, 2 строки и 16 символов в каждой строке, данное значение указывается в названии дисплея 1602. По аналогии 20 символов и 4 строки это LCD 2004. Также есть и другое разрешение дисплея 0802, но у меня, к сожалению, нет таких маленьких дисплеев и продемонстрировать их я вам не смогу. Но работа с ними ничем не отличается от старших братьев.

LCD 1602 дисплей еще называют символьным.

Также можно выделить разный тип подсветки. Существуют дисплеи: синий фон белые буквы, зелёный фон чёрные буквы, чёрный фон белые буквы и проч. Я буду использовать, с синим фоном и белыми буквами.

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

LCD 1602 и LCD 2004 подключение к Ардуино.

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

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

Чтобы уменьшить количество проводов для подключения LCD 1602, используется плата PCF8574, которая позволяет подключить дисплей по I2C. Что уменьшает количество проводов до 2. Сегодня в уроке будем использовать подключение LCD 1602 и LCD 2004 к Arduino по I2C.

 LCD 1602 и LCD 2004 к Arduino по I2C

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


LCD 2004, LCD 1602 библиотека.

Для работы с дисплеем используется библиотека LiquidCrystal. Но в связи с тем, что мы будем использовать подключение LCD 1602 и LCD 2004 к Arduino по I2C. Библиотеку использовать будем другую LiquidCrystal_I2C. Которую можно скачать с GitHub. Или внизу статьи, в разделе «Файлы для скачивания».

После того как вы скачали архив с библиотекой. Заходим в Arduino IDE, открываем вкладку «Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку…»

LCD 2004, LCD 1602 библиотека.

В открывшемся окне выбираем скаченный архив. После чего вы увидите, что библиотека успешно установлена.

установились с библиотекой LiquidCrystal_I2C

Сейчас можно посмотреть примеры, которые установились с библиотекой LiquidCrystal_I2C. Я же данные примеры немного изменю и подпишу, что означает каждая строка кода.

примеры, которые установились с библиотекой LiquidCrystal_I2C

Описание библиотеки LiquidCrystal_I2C.

Описание библиотеки LiquidCrystal_I2C.

Перед тем как начать работать с дисплеем LCD 2004, LCD 1602 давайте рассмотрим библиотеку LiquidCrystal_I2C. Ниже приведены основные функции, которые необходимы для работы с дисплеем.

Пример кода вывода текста на LCD 1602 с использованием библиотеки LiquidCrystal.

Не смотря на то, что урок ориентирован на использование подключения дисплея по I2C. Рассмотрим пример подключения дисплея LCD 1602 подключённого по 4-битной параллельной шине. Для работы с дисплеем LCD2004 нужно изменить пятую строчку кода на lcd.begin(20, 4);

Пример вывода текста на LCD 2004, LCD 1602 с использованием библиотеки LiquidCrystal_I2C.

Пример вывода текста на LCD 2004, LCD 1602 с использованием библиотеки LiquidCrystal_I2C.

Не смотря на то, что в примере будем использовать подключение LCD 1602 по I2C и библиотеку LiquidCrystal_I2C. Код не сильно изменится. Для работы с дисплеем LCD2004 нужно изменить 3 строку на LiquidCrystal_I2C LCD (0x27,20,4);

Для работы с дисплеем LCD2004 нужно изменить 3 строку на LiquidCrystal_I2C LCD (0x27,20,4);

Выводим время прошедшее после старта на дисплей LCD1602 подключённый по шине I2C.

Выводим время прошедшее после старта на дисплей LCD1602 подключённый по шине I2C.

Если дисплей LCD 2004, LCD 1602 не отображает текст.

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

  • Если дисплей показывает чёрные прямоугольники или пустой экран – нужно отрегулировать яркость дисплея, это синий квадратный регулятор на задней стороне платы.
  • Если кроме чёрных прямоугольников и пустого экрана ничего не видно – меняем адрес в программе. Их всего два: 0x27 и 0x3F.
  • Если все равно не работает – проверяем подключение и повторяем сначала.

На этом урок про дисплеи LCD 2004, LCD 1602 заканчивается. В следующем уроке рассмотрим, какие символы есть в прошивке дисплея и как их вывести, а также создадим свои символы.

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

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

Подключение библиотеки и дисплея

Использование данной библиотеки стандартно для платформы Arduino. Перед первым вызовом любых функций необходимо прописать режим, в котором работает дисплей и номера используемых выводов Arduino . Могут быть использованы любые цифровые вывода, в произвольном порядке. Этот факт значительно повышает универсальность библиотеки и позволяет использовать устройства индикации, совместно с другой периферией в уже готовых проектах.

Для 4-х проводного режима объявление библиотеки выглядит следующим образом:

LiquidCrystal lcd(RS, E, D4,D5,D6,D7);

Здесь lcd – имя, по которому производится вызов функций управления дисплеем. Параметрами являются номера выводов Arduino , к которым подключены соответствующие линии ЖК-индикатора:

  • RS – выбор регистра адрес/данные
  • E – разрешение чтения с шины
  • D 4- D 7 – 4 линии шины данных индикатора

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

lcd.begin(Ch,S, С hSz);

Данная функция выполняет инициализацию дисплея, а также задает количество строк S и символов в строке Ch . Также можно задать размер шрифта ChSz . По умолчанию последний равен 5 x 8.

Функции библиотеки LiquidCrystal

lcd.print();

Функция отображает на дисплее произвольную информацию, начиная с текущего положения курсора. В качестве аргумента можно использовать текстовую строку или переменную.

lcd.setCursor( Pos , Str );

Устанавливает курсор ЖК-дисплея в позицию Pos , строки Str дисплея.

  • Установка нулевого положения курсора

lcd. home ();

Устанавливает курсор дисплея в нулевую позицию, строки 0 дисплея.

lcd. clear ();

Стирает всю информацию с экрана

lcd. Display();

lcd. noDisplay();

lcd. Cursor();

lcd. noCursor();

  • Включение/выключение мигания курсора

lcd. blink();

lcd. noblink();

Влево lcd. scrollDisplayLeft();

Вправо lcd. scrollDisplayRight();

  • Установка направления вывода текстовой строки

Слева направо lcd .leftToRight();

Справа налево lcd . rightToLeft ();

Lcd . createChar ( Adr , CH []);

Команда записывает в память дисплея произвольный символ. Запись выполняется по одному из первых 8 адресов (от 0 до 7) в памяти знакогенератора. Символ CH [] должен представлять собой массив из 8 байт. Для задания пикселей, в каждом байте используется только 8 младших бит.



Эта статья охватит все, что необходимо знать, чтобы начать работу с LCD 1602 . Да и не только с 1602 (16×2), но и любыми другими символьными ЖК-дисплеями (например, 16×4, 16×1, 20×4 и т. д.), основанными на контроллере параллельного интерфейса HD44780 от Hitachi.

В LCD дисплеях используются жидкие кристаллы для создания видимого изображения. Когда к подобному кристаллу прикладывается ток он становится непрозрачным, перекрывая подсветку, которая находится за экраном. В результате эта конкретная область становиться темной по сравнению с другой. Подобным образом на экране отображаются символы.

Обзор LCD 1602


Если вы посмотрите внимательно, вы можете увидеть маленькие прямоугольники для каждого символа на дисплее и пиксели, которые составляют символ. Каждый из этих прямоугольников представляет собой сетку 5 × 8 пикселей.

Хотя такие дисплеи отображают только текст, они бывают разных размеров и цветов: например, 16×1, 16×4, 20×4, с белым текстом на синем фоне, с черным текстом на зеленом и другие.

Распиновка 16х02 символов

Перед тем, приступить к сборке и написанию кода, давайте сначала взглянем на распиновку LCD 1602.

Распиновка 16х02 символов


Прочная металлическая основа с порошковым покрытием, четыре гибкие руч.

Практика

Теперь мы переходим к интересным вещам. Давайте проверим ЖК-дисплей. Сначала подключим контакты 5В и GND от Arduino Uno к шинам электропитания макетной платы. Затем подключим LCD 1602. Данный LCD имеет две отдельные линии питания:

  1. Контакт 1 и контакт 2 для питания самого LCD 1602
  2. Контакт 15 и контакт 16 для подсветки LCD 1602

Подсоедините контакты 1 и 16 LCD на минус питания, а контакты 2 и 15 к + 5В.

Далее необходимо подключить контакт 3, который отвечает за контрастность и яркость дисплея. Для точной настройки контрастности необходимо подключить крайние выводы потенциометра сопротивлением 10 кОм к 5В и GND, а центральный контакт (бегунок) потенциометра к контакту 3 на LCD дисплея.

Регулировка контрастности ЖК-дисплея с помощью потенциометра

Теперь включите Arduino и вы увидите подсветку. Поворачивая ручку потенциометра, вы должны заметить появление первой линии прямоугольников. Если это произойдет, поздравляем! Ваш ЖК-дисплей работает правильно.

Подключение LCD 1602 к Arduino

Прежде чем мы приступим к загрузке скетча и отправке данных на дисплей, давайте подключим LCD 1602 к Arduino.

LCD дисплей имеет много контактов (16 контактов). Но, хорошая новость заключается в том, что не все эти контакты необходимы для нас, чтобы подключиться к Arduino.

Итак, что мы будем работать с LCD дисплеем, используя 4-битный режим, и, следовательно, нам нужно только 6 контактов: RS, EN, D7, D6, D5 и D4.

Подключение 16-символьного ЖК-дисплея к Arduino UNO

Подключение 16-символьного ЖК-дисплея к Arduino UNO

Скетч

Объяснение кода:

Скетч начинается с подключения библиотеки LiquidCrystal. Как упоминалось ранее в этом руководстве, в сообществе Arduino есть библиотека LiquidCrystal, которая облегчает использование LCD дисплеев. Вы можете узнать больше о библиотеке LiquidCrystal на официальном сайте Arduino .

Далее мы должны создать объект LiquidCrystal. Этот объект использует 6 параметров и указывает, какие выводы Arduino подключены к выводам RS, EN и выводам данных: d4, d5, d6 и d7.

Теперь, когда мы объявили объект LiquidCrystal, мы можем получить доступ к специальным методам (или функциям), специфичным для ЖК-дисплея.

В функции setup() мы будем использовать две функции: первая функция begin(). В ней указываются размер дисплея, т.е. количества столбцов и строк. Если вы используете 16 × 2 символьный ЖК-дисплей, укажите параметры 16 и 2, если вы используете ЖК-дисплей 20 × 4, укажите параметры 20 и 4.

Вторая функция clear() очищает экран и перемещает курсор в верхний левый угол.

После этого мы переводим курсор на вторую строку, вызвав функцию setCursor(). Позиция курсора указывает место, где вам нужно отобразить новый текст на дисплее. Верхний левый угол считается col = 0, row = 0.

Другие полезные функции библиотеки LiquidCrystal

Есть несколько полезных функций, которые вы можете использовать с объектом LiquidCrystal. Немногие из них перечислены ниже:

  • Если вы просто хотите расположить курсор в верхнем левом углу дисплея без очистки дисплея, используйте home().
  • Существует много приложений, таких как turbo C++ или notepad ++, в которых нажатие клавиши «insert» на клавиатуре меняет курсор. Точно так же вы можете изменить курсор на ЖК-дисплее с помощью blink() или lcd.Cursor().
  • Функция blink() отображает мигающий блок размером 5 × 8 пикселей, а lcd.Cursor() подчеркивание (линия) на позиции, в которую будет записан следующий символ.
  • Вы можете использовать функцию noblink(), чтобы отключить мигающий курсор на дисплее и lcd.noCursor() чтобы скрыть курсор.
  • Вы можете прокрутить содержимое дисплея на один пробел вправо, используя lcd.scrollDisplayRight() или один пробел влево используя lcd.scrollDisplayLeft(). Если вы хотите непрерывно прокручивать текст, вам нужно использовать эти функции внутри цикла for.

Генерация пользовательских символов для LCD

Если вы находите символы на дисплее неподходящими и неинтересными, вы можете создать свои собственные символы (глиф) для своего ЖК-дисплея. Пользовательские символы чрезвычайно полезны в том случае, когда вы хотите отобразить символ, который не является частью стандартного набора символов ASCII.

Как мы уже обсуждали ранее в этом руководстве, символ на дисплее формируется в матрице 5×8 пикселей, поэтому вам нужно определить свой пользовательский символ в этой матрице. Для определения символа необходимо использовать функцию createChar() библиотеки LiquidCrystal.

Для использования createChar() сначала необходимо назначить массив из 8 байт. Каждый байт (учитывается только 5 бит) в массиве определяет одну строку символа в матрице 5×8. В то время как нули и единицы в байте указывают, какие пиксели в строке должны быть включены, а какие-выключены.

Генератор символов LCD

Создание собственного символа до сих пор было непросто! Поэтому было создано небольшое приложение под названием «Генератор пользовательских символов» для LCD.

Вы видите синюю сетку ниже? Вы можете нажать на любой из 5 × 8 пикселей, чтобы установить/очистить этот конкретный пиксель. И когда вы нажимаете на пиксели, код для символа генерируется рядом с сеткой. Этот код может быть непосредственно использован в вашем скетче Arduino.

Единственным ограничением является то, что библиотека LiquidCrystal поддерживает только восемь пользовательских символов.

Следующий скриншот демонстрирует, как вы можете использовать эти пользовательские символы на дисплее.

После включения библиотеки нам нужно инициализировать пользовательский массив из восьми байтов.

Далее в цикле для отображения пользовательского символа мы используем функцию write(), а в качестве параметра мы используем номер символа, который мы зарезервировали.

В этой статье рассмотрим подключение простенького LCD дисплея к Arduino, а также выясним, для чего он предназначен и каковы особенности написания кода для работы с ним.

Подключая какие-либо датчики и модули к Arduino или к другим платформам, мы часто используем монитор порта для вывода данных.

Но ведь, если вы сделали метеостанцию на Arduino (пусть даже самую простую), вам непременно захочется сделать ее автономной и поместить в каком-нибудь отдельном месте дома или квартиры, чтобы следить за показаниями. В этом случае постоянно держать под рукой компьютер не получится.

На помощь придет обычный дисплей, который позволит нам выводить данные напрямую на экран, и тогда не придется постоянно заходить в монитор порта.

Для реализации проекта из этой статьи нам потребуются следующие компоненты:

Обзор дисплея LCD 1602

LCD 1602 - подключение к Arduino

Подключение дисплея

Дисплей имеет 16 контактов для подключения:

Также для подключения понадобится переменный резистор (потенциометр) на 10 кОм.

Все это подключается так, как на схеме ниже:

1 GND (земля)
2 +5В питание
3 VO (установка контрастности)
4 RS (команды и данные)
5 RW (чтение и запись)
6 E (Enable)
7-14 (DB0…DB7) линия данных
15 A (плюс подсветки)
16 K (минус подсветки)

LCD 1602 - подключение к Arduino

После успешного подключения и подачи питания на Arduino дисплей загорится. А еще с помощью резистора вы можете менять яркость подсветки.

Как можно заметить, подключение довольно муторное, ибо занимает 9 пинов на плате Ардуино, что значительно снизит возможность платы в вашем проекте (особенно, если в нем присутствуют несколько модулей).

Для удобства подключения принято использовать интерфейс I2C. Благодаря данной шине число пинов, используемых на подключение дисплея, сводится к четырем.

Чаще всего такие дисплеи уже продаются с данной шиной, припаянной с обратной стороны, но вы также можете подключить этот интерфейс к экрану и самостоятельно, если изначально приобрели дисплей без I2C переходника.

LCD 1602 - подключение к Arduino

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

Подключение в Arduino IDE

Для работы дисплея используется встроенная в среду Arduino IDE библиотека LiquidCrystal.h. Если вы подключаете дисплей по i2c протоколу, то лучше используйте библиотеку LiquidCrystal_I2C.h.

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

LCD 1602 - подключение к Arduino

Программа “HelloWorld” выводит текст в кавычках на дисплей и является самой простой для работы с дисплеем.

Стоит он не дорого и не нуждается в какой либо тонкой и сложной настройке. Все что нужно для того чтобы начать с ним работать это подключить его к Arduino по схемам ниже. Подключить библиотеку для работы с ним и написать скрипт.

Распиновка LCD модуля 1602

Распиновка выводов модуля lcd 1602

Назначение выводов дисплея 1602

Основные технические характеристики дисплея 1602

Схема подключения LCD модуля 1602 к Arduino без I2C

Схема подключения LCD модуля 1602 к Arduino без I2C

В данной схеме мы напрямую подключаем Arduino к LCD модулю, при такой схеме подключения много проводов. Что не очень удобно. Как видно из схемы для подключения Arduino напрямую к LCD 1602 понадобится 6 проводов.

Схема подключения LCD модуля 1602 к Arduino при помощи модуля I2C

Схема подключения LCD модуля 1602 к Arduino при помощи модуля I2C

В данной схеме используется модуль I2C , при помощи которого можно значительно сократить количество проводов. Для подключения понадобится всего 4 провода, которые соединяются с модулем.

Модуль i2c для работы с LCD 1602

Этот интерфейсный модуль позволяет уменьшить количество используемых выводов контроллера, вместо 8 или 4-битного соединения, требуется только 2 вывода (SDA и SCL).

  • поддержка дисплеев: LCD 16×02 / 20×04;
  • дополнительно: регулировка контрастности;
  • напряжение питания. 5 В;
  • интерфейс: I2C;
  • размеры модуля: 54 мм x 19 мм x 15 мм

Схема модуля i2c для работы с LCD 1602

Схема модуля i2c для работы с LCD 1602

Внешний вид интерфейсного модуля i2c

Внешний вид модуль i2c

Для соединения на модуле расположено три группы контактов:

Первая группа:

  • SCL: линия тактирования (Serial CLock)
  • SDA: линия данных (Serial Dфta)
  • VCC: «+» питание
  • GND: «-» питание

Вторая группа:

  • VSS: «-» питание
  • VDD: «+» питание
  • VO: Вывод управления контрастом
  • RS: Выбор регистра
  • RW: Чтение/запись ( режим записи при соединении с землей)
  • E: Еnable (строб по спаду)
  • DB0-DB3: биты интерфейса (младшие )
  • DB4-DB7: биты интерфейса (старшие)
  • A: «+» питания подсветки
  • K: «-» питания подсветки

Третья группа: (по умолчанию установлена перемычка)

Библиотека для работы с модулем LCD 1602

Для соединения Arduino c LCD 1602 по протоколу I2C потребуются две библиотеки:

Примеры скетчев

Описание функций и методов библиотеки LiquidCrystal I2C:

  • home() и clear() – возврат курсора в начало экрана, вторая это очистка экрана курсор после очистки переходи в начало;
  • write(ch) – вывод символа на экран;
  • cursor() и noCursor() – показать/скрыть курсор на экране;
  • blink() и noBlink() – включение/выключение мигание курсора;
  • display() и noDisplay() – подключаем/отключаем дисплей;
  • scrollDisplayLeft() и scrollDisplayRight() – смещаем экран на один символ вправо/влево;
  • autoscroll() и noAutoscroll() – позволяет вкл./выкл. режим автопрокрутки. В этом режиме каждый новый символ записывается в одном и том же месте, вытесняя ранее написанное на экране;
  • leftToRight() и rightToLeft() – направление выводимых символов слева направо или справа налево;
  • createChar(ch, bitmap) – создание символа с кодом ch (0 – 7), для создания черных и белых точек

Возможные ошибки при подключении модуля I2C

Если после того загрузили программу в arduino экран никак не реагирует и он не отображается никакого символа, попробуйте выполнить следующие шаги:

1. Попробуйте увеличить или уменьшить контрастность монитора. Часто символы просто не видны из-за режима контрастности и подсветки. 2. Если первый пункт не помогает проверьте правильность подключения контактов, подключено ли питание подсветки. Если вы использовали отдельный i2c переходник, то проверьте еще раз качество пайки контактов.

Другой причиной не рабочего экрана может стать неправильный i2c адрес, для устранения неисправности попробуйте выполнить следующие шаги:

Читайте также: