Как проверить ЖК-дисплей 1602 на производительность

Обновлено: 24.11.2024

Как мы все знаем, хотя ЖК-дисплеи и некоторые другие дисплеи значительно улучшают взаимодействие человека и машины, у них есть общая слабость. Когда они подключены к контроллеру, несколько IO будут заняты контроллером, у которого не так много внешних портов. Также он ограничивает другие функции контроллера. Поэтому для решения проблемы разработан LCD1602 с шиной I2C.
Шина I2C — это тип последовательной шины, изобретенный компанией PHLIPS. Это высокопроизводительная последовательная шина, которая имеет управление шиной и функцию высокоскоростной или низкоскоростной синхронизации устройств, необходимую для системы с несколькими хостами. Шина I2C имеет только две двунаправленные сигнальные линии: последовательную линию данных (SDA) и последовательную линию синхронизации (SCL). Синий потенциометр на I2C LCD1602 используется для регулировки подсветки, чтобы упростить отображение на I2C LCD1602.

Компоненты

- 1 * плата SunFounder Uno
- 1 * модуль I2C LCD1602
- 1 * кабель USB
- несколько соединительных проводов

Экспериментальный принцип

В этом эксперименте мы позволим I2C LCD1602 отображать «SUNFOUNDER» и «hello, world» с помощью программирования.
I²C (Inter-Integrated Circuit), произносится как I-squared-C, представляет собой одностороннюю последовательную компьютерную шину с несколькими главными и подчиненными устройствами, изобретенную Philips Semiconductor (теперь NXP Semiconductors). Обычно он используется для подключения низкоскоростных периферийных ИС к процессорам и микроконтроллерам. В качестве альтернативы I²C пишется как I2C (произносится как I-two-C) или IIC (произносится как IIC).
I²C использует только две двунаправленные линии с открытым стоком, последовательную линию передачи данных (SDA) и последовательную линию синхронизации (SCL), подтянутые резисторами. Обычно используются напряжения +5 В или +3,3 В, хотя допускаются системы с другими напряжениями.

Дополнительную информацию о принципе работы I2C см. на странице I²C.

Экспериментальные процедуры

Шаг 1. Подключите цепь

См. следующую таблицу для связи между I2C LCD1602 и платой SunFounder Uno:

I2C LCD1602 плата SunFounder Uno
Заземление Заземление
VCC
SDA A4 /pin 20 mega2560
SCL A5 /pin 21 mega2560

Шаг 2. Добавьте библиотеку

Прежде чем загружать код на плату управления, необходимо добавить библиотеку LiquidCrystal_I2C.
1) Загрузите библиотеку LiquidCrystal_I2C

2) Откройте среду разработки Arduino, выберите «Скетч» -> «Включить библиотеку» -> «Добавить ZIP-библиотеку».

3) Найдите файл LiquidCrystal_I2C, который вы только что скачали. Щелкните его, чтобы открыть, и затем вам будет предложено «Библиотека добавлена ​​в ваши библиотеки. Установите флажок «Импортировать библиотеки». Вы также можете увидеть, что только что импортированные библиотеки появились в списке, выбрав Sketch->Include Library->LiquidCrystal_I2C.

Шаг 3. Скопируйте код

Скопируйте следующий код в Arduino IDE, щелкните значок загрузки, чтобы загрузить код на плату управления

экспериментальное явление

Примечание

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

Как мы все знаем, хотя ЖК-дисплеи и некоторые другие дисплеи значительно улучшают взаимодействие человека и машины, у них есть общая слабость. Когда они подключены к контроллеру, несколько IO будут заняты контроллером, у которого не так много внешних портов. Также он ограничивает другие функции контроллера. Поэтому для решения этой проблемы разработан LCD1602 с шиной I2C.

Шина I2C – это тип последовательной шины, разработанный компанией PHLIPS. Это высокопроизводительная последовательная шина, которая имеет управление шиной и функцию высокоскоростной или низкоскоростной синхронизации устройств, необходимую для системы с несколькими хостами. Синий потенциометр на I2C LCD1602 (см. рисунок ниже) используется для регулировки подсветки для лучшего отображения. I²C использует только две двунаправленные линии с открытым стоком, последовательную линию передачи данных (SDA) и последовательную линию синхронизации (SCL), подтянутые резисторами. Типичные используемые напряжения +5 В или +3.3 В, хотя разрешены системы с другим напряжением.

Компоненты

– 1 * плата SunFounder Uno

– 1 * модуль I2C LCD1602

– Несколько перемычек

Принцип эксперимента

В этом эксперименте мы позволим I2C LCD1602 отображать «SunFounder» и «hello, world» путем программирования.

Экспериментальные процедуры

Шаг 1. Создайте схему

Соединение между I2C LCD1602 и платой SunFounder Uno:

< /tr>
I2C LCD1602SunFounder Uno
ЗаземлениеЗаземление< /td>
VCC5V
SDAA4
SCLA5

Примечание. Подключение I2C LCD1602 одинаково на следующих уроках.

Шаг 2. Программа (см. пример кода в разделе УЧИТЬСЯ -> Получить учебные пособия на нашем веб-сайте)

Шаг 3: Поскольку в некоторых кодах необходимые библиотеки не включены в Arduino, вам необходимо добавить их перед компиляцией. Разархивируйте загруженный файл. Скопируйте папки из папки «Библиотека» в папку libraries в Arduino (если вы не можете найти путь в Arduino, откройте среду разработки Arduino, нажмите «Файл» -> «Настройки», и вы увидите путь в окне «Обзор»). , как показано на следующей диаграмме). Скомпилируйте программу.

Шаг 4. Загрузите скетч на плату SunFounder Uno

Теперь вы должны увидеть, что ваш I2C LCD1602 отображает плавные символы: «SunFounder» и «hello, world».

Код

Видео

ЖК-дисплей 16×2 назван так потому, что; он имеет 16 столбцов и 2 строки. Доступно множество комбинаций, таких как 8×1, 8×2, 10×2, 16×1 и т. д. Но чаще всего используется ЖК-дисплей 16*2, поэтому мы используем его здесь.

Все вышеупомянутые ЖК-дисплеи будут иметь 16 контактов, и подход к программированию также одинаков, поэтому выбор остается за вами. Ниже приведены распиновка и описание контактов ЖК-модуля 16x2:

Старший Нет

Пин-код

Имя булавки

Тип булавки

Описание булавки

Контактное соединение

Это контакт заземления ЖК-дисплея

Подключен к земле MCU/источника питания

Это контакт питания ЖК-дисплея

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

Регулирует контрастность ЖК-дисплея.

Подключен к переменному POT, который может быть источником 0–5 В

Переключение между регистрами команд и данных

Подключен к контакту MCU и получает либо 0, либо 1.

0 -> Командный режим

Переключает ЖК-дисплей между операциями чтения/записи

Подключен к контакту MCU и получает либо 0, либо 1.

0 -> Операция записи

1-> Операция чтения

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

Подключен к MCU и всегда находится на высоком уровне.

Выводы, используемые для отправки команды или данных на ЖК-дисплей.

Только 4 контакта (0-3) подключены к MCU

Все 8 контактов (0-7) подключены к MCU

Обычная светодиодная подсветка ЖК-дисплея

Подключен к +5 В

Обычный светодиодный индикатор для освещения ЖК-дисплея, подключенного к GND.

Подключен к земле

Ничего страшного, если вы не понимаете функции всех контактов, я подробно объясню ниже. Теперь давайте перевернем наш LCD:

Хорошо, а что это за два черных круга на задней панели ЖК-дисплея?

Эти черные кружки состоят из интерфейсной ИС и связанных с ней компонентов, которые помогают нам использовать этот ЖК-дисплей с микроконтроллером. Поскольку наш ЖК-дисплей представляет собой ЖК-матрицу с разрешением 16*2 точек, он будет иметь (16*2=32) всего 32 символа, и каждый символ будет состоять из 5*8 точек пикселей. Один символ со всеми включенными пикселями показан на рисунке ниже.

Итак, теперь мы знаем, что каждый символ имеет (5*8=40) 40 пикселей, а для 32 символов у нас будет (32*40) 1280 пикселей. Кроме того, ЖК-дисплей также должен быть проинструктирован о положении пикселей.

Обрабатывать все с помощью микроконтроллера будет сложной задачей, поэтому используется интерфейсная микросхема, такая как HD44780, которая устанавливается на сам ЖК-модуль.Функция этой ИС состоит в том, чтобы получать команды и данные от микроконтроллера и обрабатывать их для отображения значимой информации на нашем ЖК-экране.

Давайте обсудим различные типы режимов и параметров, доступных на нашем ЖК-дисплее, которые должны управляться нашими контактами управления.

Режим чтения и записи ЖК-дисплея:

Как уже говорилось, сам ЖК-дисплей состоит из интерфейсной ИС. MCU может либо читать, либо писать в эту интерфейсную ИС. В большинстве случаев мы будем просто писать в IC, так как чтение усложнит задачу, а такие сценарии очень редки. При необходимости можно прочитать такую ​​информацию, как положение курсора, прерывания завершения состояния и т. д., но это выходит за рамки данного руководства.

Интерфейсная ИС, присутствующая в большинстве ЖК-дисплеев, — HD44780U, чтобы запрограммировать наш ЖК-дисплей, мы должны изучить полное техническое описание ИС. Спецификация приведена здесь.

ЖК-команды:

В ЖК-дисплее есть несколько предустановленных инструкций команд, которые нам нужно отправить на ЖК-дисплей через какой-нибудь микроконтроллер. Ниже приведены некоторые важные инструкции для команд:

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

Дисплей, который я использую, представляет собой ЖК-дисплей 16 x 2, который я купил примерно за 5 долларов США. Вам может быть интересно, почему он называется ЖК-дисплеем 16×2. Часть 16×2 означает, что ЖК-дисплей имеет 2 строки и может отображать 16 символов в строке. Таким образом, ЖК-экран 16×2 может одновременно отображать до 32 символов. Однако с прокруткой можно отобразить более 32 символов.

Код в этой статье написан для ЖК-дисплеев, использующих стандартный драйвер Hitachi HD44780. Если ваш ЖК-дисплей имеет 16 контактов, то, вероятно, он имеет драйвер Hitachi HD44780. Эти дисплеи могут быть подключены либо в 4-битном, либо в 8-битном режиме. Обычно предпочтительнее подключение ЖК-дисплея в 4-битном режиме, поскольку при этом используется на четыре провода меньше, чем в 8-битном режиме. На практике заметной разницы в производительности между двумя режимами нет. В этом уроке я подключу ЖК-дисплей в 4-битном режиме.

БОНУС: я составил краткое руководство для этого руководства, которое вы можете загрузить и вернуться к нему позже, если не можете настроить его прямо сейчас. В нем описаны все шаги, диаграммы и код, необходимые для начала работы.

Подключение ЖК-дисплея к Arduino

Вот схема контактов на ЖК-дисплее, который я использую. Соединения от каждого контакта к Arduino будут одинаковыми, но ваши контакты могут быть расположены по-разному на ЖК-дисплее. Обязательно ознакомьтесь с техническим описанием или поищите этикетки на вашем конкретном ЖК-дисплее:

Кроме того, вам может потребоваться припаять 16-контактный разъем к ЖК-дисплею, прежде чем подключать его к макетной плате. Следуйте приведенной ниже схеме, чтобы подключить ЖК-дисплей к Arduino:

Резистор на схеме выше устанавливает яркость подсветки. Типичное значение — 220 Ом, но подойдут и другие значения. Меньшие резисторы сделают подсветку ярче.

Потенциометр используется для регулировки контрастности экрана. Обычно я использую потенциометр на 10 кОм, но подойдут и другие значения.

Вот техническое описание ЖК-дисплея 16 x 2 со всей технической информацией о дисплее:

Программирование Arduino

Во всем приведенном ниже коде используется библиотека LiquidCrystal, которая предустановлена ​​вместе с Arduino IDE. Библиотека — это набор функций, которые можно легко добавить в программу в сокращенном формате.

Теперь мы готовы приступить к программированию! Через мгновение я расскажу о более интересных вещах, которые вы можете сделать, а пока давайте просто запустим простую тестовую программу. Эта программа напечатает «hello, world!» на экран. Введите этот код в Arduino IDE и загрузите его на плату:

Ваш ЖК-экран должен выглядеть так:

Параметры ЖК-дисплея

В библиотеке LiquidCrystal есть 19 различных функций, которые мы можем использовать. Эти функции выполняют такие действия, как изменение положения текста, перемещение текста по экрану или включение или выключение дисплея.Далее следует краткое описание каждой функции и способов ее использования в программе.

Жидкий Кристалл()

Функция LiquidCrystal() устанавливает контакты, которые Arduino использует для подключения к ЖК-дисплею. Вы можете использовать любой из цифровых контактов Arduino для управления ЖК-дисплеем. Просто поместите номера выводов Arduino в скобки в следующем порядке:

Жидкий Кристалл(RS, E, D4, D5, D6, D7)

RS, E, D4, D5, D6, D7 — это контакты ЖК-дисплея.

Например, вы хотите, чтобы контакт D7 ЖК-дисплея соединился с контактом 12 Arduino. Просто введите «12» вместо D7 в следующей функции:

Жидкий Кристалл(RS, E, D4, D5, D6, 12)

Эта функция должна быть размещена перед разделом void setup() программы.

lcd.begin()

Эта функция устанавливает размеры ЖК-дисплея. Его нужно разместить перед любой другой функцией LiquidCrystal в разделе программы void setup(). Количество строк и столбцов указывается как lcd.begin(columns, rows) . Для ЖК-дисплея 16 × 2 вы должны использовать lcd.begin(16, 2) , а для ЖК-дисплея 20 × 4 — lcd.begin(20, 4) .

lcd.clear()

Эта функция удаляет любой текст или данные, уже отображаемые на ЖК-дисплее. Если вы используете lcd.clear() с lcd.print() и функцией delay() в разделе void loop(), вы можете создать простую программу с мерцающим текстом:

lcd.home()

Эта функция помещает курсор в верхний левый угол экрана и печатает любой последующий текст с этой позиции. Например, этот код заменяет первые три буквы «hello world!» с крестиками:

lcd.setCursor()

Похожим, но более полезным, чем lcd.home(), является lcd.setCursor() . Эта функция помещает курсор (и любой печатный текст) в любое место на экране. Его можно использовать в разделе void setup() или void loop() вашей программы.

Позиция курсора определяется с помощью lcd.setCursor(column, row) . Координаты столбца и строки начинаются с нуля (0-15 и 0-1 соответственно). Например, используя lcd.setCursor(2, 1) в разделе void setup() окна «hello, world!» программа выше печатает «привет, мир!» на нижнюю строку и сдвигает ее вправо на два пробела:

lcd.write()

Эту функцию можно использовать для записи на ЖК-дисплей различных типов данных, например, показаний датчика температуры или координат из модуля GPS. Вы также можете использовать его для печати пользовательских символов, которые вы создаете сами (подробнее об этом ниже). Используйте lcd.write() в разделе void setup() или void loop() вашей программы.

lcd.print()

Эта функция используется для печати текста на ЖК-дисплее. Его можно использовать в разделе программы void setup() или void loop().

Чтобы напечатать буквы и слова, заключите текст в кавычки (""). Например, чтобы напечатать hello, world!, используйте lcd.print("hello, world!") .

Чтобы напечатать числа, кавычки не нужны. Например, чтобы напечатать 123456789, используйте lcd.print(123456789) .

lcd.print() может печатать числа в десятичной, двоичной, шестнадцатеричной и восьмеричной системе счисления. Например:

  • lcd.print(100, DEC) печатает «100»;
  • lcd.print(100, BIN) печатает «1100100»
  • lcd.print(100, HEX) печатает «64»
  • lcd.print(100, OCT) печатает «144»

lcd.cursor()

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

Функция lcd.noCursor() выключает курсор. lcd.cursor() и lcd.noCursor() можно использовать вместе в разделе void loop(), чтобы сделать мигающий курсор похожим на то, что вы видите во многих полях ввода текста:

Это помещает мигающий курсор после восклицательного знака в "hello, world!"

Курсоры можно размещать в любом месте экрана с помощью функции lcd.setCursor(). Этот код помещает мигающий курсор прямо под восклицательным знаком в слове «hello, world!»:

lcd.blink()

Эта функция создает курсор в виде блока, который мигает примерно с частотой 500 миллисекунд за цикл. Используйте его в разделе void loop(). Функция lcd.noBlink() отключает мигающий блочный курсор.

lcd.display()

Эта функция включает любой текст или курсоры, которые были напечатаны на ЖК-экране. Функция lcd.noDisplay() отключает любой текст или курсоры, напечатанные на ЖК-дисплее, не удаляя их из памяти ЖК-дисплея.

Эти две функции можно использовать вместе в разделе void loop() для создания эффекта мерцания текста. Этот код заставит «hello, world!» мигание текста включается и выключается:

lcd.scrollDisplayLeft()

Эта функция берет все, что напечатано на ЖК-дисплее, и перемещает его влево.Его следует использовать в секции void loop() с командой задержки, следующей за ней. Функция переместит текст на 40 пробелов влево, прежде чем вернуться к первому символу. Этот код перемещает «привет, мир!» текст слева, со скоростью одна секунда на символ:

Текстовые строки длиннее 40 пробелов будут напечатаны в строке 1 после 40-й позиции, а начало строки будет продолжать печататься в строке 0.

lcd.scrollDisplayRight()

Эта функция ведет себя как lcd.scrollDisplayLeft() , но перемещает текст вправо.

lcd.autoscroll()

Эта функция берет строку текста и прокручивает ее справа налево с шагом, равным количеству символов в строке. Например, если у вас есть строка текста длиной 3 символа, она будет сдвигать текст на 3 пробела влево с каждым шагом:

Как и в функциях lcd.scrollDisplay(), текст может иметь длину до 40 символов до повторения. На первый взгляд эта функция кажется менее полезной, чем функции lcd.scrollDisplay(), но она может оказаться очень полезной для создания анимации с пользовательскими персонажами.

lcd.noAutoscroll()

lcd.noAutoscroll() отключает функцию lcd.autoscroll(). Используйте эту функцию до или после lcd.autoscroll() в разделе void loop() для создания последовательностей прокручиваемого текста или анимации.

lcd.rightToLeft()

Эта функция задает направление печати текста на экране. Режим по умолчанию — слева направо с использованием команды lcd.leftToRight(), но вы можете найти некоторые случаи, когда полезно выводить текст в обратном направлении:

Этот код печатает «привет, мир!» текст как «!dlrow, olleh». Если вы не укажете положение курсора с помощью lcd.setCursor() , текст будет напечатан с позиции (0, 1), и будет виден только первый символ строки.

lcd.createChar()

Эта команда позволяет вам создавать своих собственных персонажей. Каждый символ ЖК-дисплея 16×2 имеет ширину 5 пикселей и высоту 8 пикселей. В одной программе можно определить до 8 различных пользовательских символов. Чтобы создать своих собственных персонажей, вам нужно будет создать двоичную матрицу вашего пользовательского персонажа из генератора символов с ЖК-дисплеем или отобразить ее самостоятельно. Этот код создает символ градуса (°):

С этими ЖК-дисплеями 16 x 2 можно сделать много интересных вещей! Попробуйте объединить некоторые из этих функций и посмотрите, что получится.

Вот видеоверсия этого руководства, чтобы вы могли увидеть, что делает каждая функция на ЖК-дисплее в режиме реального времени:

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

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