4.01.7. Лабораторная работа №4.1.7.md
ЖК-дисплей
Тема работы
До сих пор для получения информации от Рудирона
мы использовали монитор порта. Это удобно для отладки, но для автономного устройства, которое должно работать без компьютера, нужен свой собственный экран. В этой лабораторной работе мы подключим и научимся управлять самым популярным и доступным типом дисплея — символьным ЖК 16x2. Мы выведем на него текст и научимся обновлять информацию в реальном времени.
Цель
- Понять принцип работы и устройство символьного ЖК-дисплея.
- Научиться подключать дисплей к
GPIO
-пинамРудирона
в 4-битном режиме. - Освоить работу с библиотекой
Rudiron_LCD1602
для вывода текста и управления курсором. - Создать устройство с собственным интерфейсом вывода информации.
Оборудование и материалы
- Отладочная плата
Рудирон
. - Макетная плата.
- Символьный ЖК-дисплей 16x2.
- Потенциометр (10 кОм) для регулировки контрастности.
- Резистор 220 Ом (для подсветки).
- Соединительные провода.
- USB-кабель для подключения
Рудирона
. - Компьютер с
Arduino IDE
и установленной библиотекойRudiron_LCD1602
.
Ход работы
-
Как устроен ЖК-дисплей?
LCD (Liquid Crystal Display) — это жидкокристаллический дисплей. В его основе лежат жидкие кристаллы, которые под действием электрического поля могут менять свою поляризацию. Каждый символ на экране (16 символов в 2 строках) — это матрица из 5x8 таких крошечных ячеек-пикселей.
Управляет всем этим встроенный контроллер (обычно
Hitachi HD44780
). Он принимает отРудирона
команды и данные и сам «рисует» нужные символы. Чтобы сэкономить пины микроконтроллера, мы будем использовать 4-битный режим, передавая данные по 4 проводам двумя порциями. -
Установка библиотеки
Rudiron_LCD1602
- Скачайте архив с библиотекой из нашего репозитория: Rudiron Libraries.
- В
Arduino IDE
установите её через меню Sketch → Include Library → Add .ZIP Library…
-
Сборка схемы
Это самая сложная схема из всех, что мы собирали. Будьте внимательны!
- Установите дисплей и потенциометр на макетную плату.
- Подключите питание и контрастность дисплея:
VSS
(вывод 1) иRW
(вывод 5) — кGND
.VDD
(вывод 2) — к+5V
.VO
(вывод 3) — к центральному выводу потенциометра. Крайние выводы потенциометра подключите к+5V
иGND
.
- Подключите подсветку:
A
(илиLED+
, вывод 15) — через резистор 220 Ом к+5V
.K
(илиLED-
, вывод 16) — кGND
.
- Подключите управляющие пины к
Рудирону
:RS
(вывод 4) — к пину 12.E
(вывод 6) — к пину 11.
- Подключите шину данных (4-битный режим):
D4
(вывод 11) — к пину 5.D5
(вывод 12) — к пину 4.D6
(вывод 13) — к пину 3.D7
(вывод 14) — к пину 2.
-
Написание и загрузка кода
- Установите перемычку
PRG | RUN
в положениеPRG
. -
В
Arduino IDE
введите следующий код, который соответствует нашей библиотекеRudiron_LCD1602
:// 1. Подключаем нашу библиотеку #include <Rudiron_LCD1602.h> // 2. Создаём объект для работы с дисплеем Rudiron_LCD1602 lcd; int seconds = 0; void setup() { // 3. Инициализируем дисплей, указывая пины, к которым он подключен // Порядок пинов: (RS, E, D4, D5, D6, D7) lcd.attach(12, 11, 5, 4, 3, 2); // 4. Выводим приветственное сообщение lcd.print("Hello, Rudiron!"); } void loop() { // 5. Устанавливаем курсор во 2-ю строку, 1-й столбец // (нумерация с нуля: столбец 0, строка 1) lcd.setCursor(0, 1); // 6. Выводим количество прошедших секунд lcd.print("Time: "); lcd.print(seconds); seconds++; // Увеличиваем счётчик delay(1000); }
- Нажмите кнопку «Upload», чтобы загрузить код на плату.
- Установите перемычку
-
Проверка работы
- После загрузки на дисплее должна появиться надпись «Hello, Rudiron!». Если символы не видны, покрутите ручку потенциометра для настройки контрастности.
- На второй строке начнёт работать счётчик секунд, обновляясь каждую секунду.
Результаты
Вы успешно подключили LCD-дисплей
и вывели на него информацию. Теперь ваши проекты могут быть полностью автономными и общаться с пользователем напрямую, без компьютера.
Анализ результатов
#include <Rudiron_LCD1602.h>
. Подключает библиотеку, которая скрывает всю сложную логику управления пинами.lcd.attach(...)
. В отличие от стандартной библиотеки, здесь мы инициализируем дисплей и указываем пины в одном действии внутриsetup()
.lcd.print(...)
. Выводит на дисплей текст или числа.lcd.setCursor(col, row)
. Перемещает курсор в указанную позицию (нумерация с нуля), позволяя выводить текст в любом месте экрана.
Выводы
В этой лабораторной работе вы научились работать с символьным LCD-дисплеем
— одним из самых распространённых способов вывода информации в DIY-проектах. Вы поняли, как с помощью библиотеки можно легко управлять сложным устройством, и создали автономный счётчик.
Вопросы для самопроверки
- Какие два режима работы есть у
LCD-дисплея
и какой пин за них отвечает? - Зачем в схеме используется потенциометр?
- Какая команда перемещает курсор на дисплее?
- Что делает команда
lcd.clear()
? (Найдите ответ в интернете или примерах библиотеки). - Задача со звёздочкой: Объедините эту лабораторную работу с лабораторной работой
4.01.06
(датчикDHT11
). Напишите программу, которая будет выводить на первую строку дисплея температуру, а на вторую — влажность.
Вы научились выводить текстовую информацию!
- Страницы
- 1. Введение
- 1.01. Лабораторная работа №1.1
- 1.02. Лабораторная работа №1.2
- 1.03. Лабораторная работа №1.3
- 1.04. Лабораторная работа №1.4
- 1.05. Лабораторная работа №1.5
- 2. Основы электроники
- 2.01. Электрический ток и параметры цепи
- 2.01.1. Лабораторная работа №2.1.1
- 2.01.2. Лабораторная работа №2.1.2
- 2.02. Сопротивление в цепи
- 2.02.1. Лабораторная работа №2.2.1
- 2.02.2. Лабораторная работа №2.2.2
- 2.03. Полупроводники
- 2.03.1. Лабораторная работа №2.3.1
- 2.03.2. Лабораторная работа №2.3.2
- 3. Основы программирование на C++
- 3.01. Типы данных и переменные
- 3.01.1. Практикум
- 3.02. Операторы в C++
- 3.02.1. Практикум
- 3.03. Структуры ветвления
- 3.03.1. Практикум
- 3.04. Структуры повторения
- 3.04.1. Практикум
- 3.05. Массивы
- 3.05.1. Практикум
- 3.06. Функции
- 3.06.1. Практикум
- 3.07. Решения задач
- 4. Программирование микроконтроллеров
- 4.01. Цифровые сигналы и GPIO
- 4.01.1. Лабораторная работа №4.1.1
- 4.01.2. Лабораторная работа №4.1.2
- 4.01.3. Лабораторная работа №4.1.3
- 4.01.4. Лабораторная работа №4.1.4
- 4.01.5. Лабораторная работа №4.1.5
- 4.01.6. Лабораторная работа №4.1.6
- 4.01.7. Лабораторная работа №4.1.7
- 4.01.8. Лабораторная работа №4.1.8
- 4.02. Аналоговые сигналы и ШИМ
- 4.02.1. Лабораторная работа №4.2.1
- 4.02.2. Лабораторная работа №4.2.2
- 4.02.3. Лабораторная работа №4.2.3
- 4.02.4. Лабораторная работа №4.2.4
- 4.02.5. Лабораторная работа №4.2.5
- 4.03. Аналоговый сигнал и АЦП
- 4.03.1. Лабораторная работа №4.3.1
- 4.03.2. Лабораторная работа №4.3.2
- 4.03.3. Лабораторная работа №4.3.3
- 4.03.4. Лабораторная работа №4.3.4
- 4.03.5. Лабораторная работа №4.3.5
- 4.04. Аналоговый сигнал и ЦАП
- 4.04.1. Лабораторная работа №4.4.1
- 4.04.2. Лабораторная работа №4.4.2
- 4.05. Генерация и измерение импульсов
- 4.05.1. Лабораторная работа №4.5.1
- 4.05.2. Лабораторная работа №4.5.2
- 4.06. Аппаратные прерывания
- 4.06.1. Лабораторная работа №4.6.1
- 4.06.2. Лабораторная работа №4.6.2
- 4.07. Псевдопараллелизм
- 4.07.1. Лабораторная работа №4.7.1
- 4.07.2. Лабораторная работа №4.7.2
- 4.08. Интерфейсы связи - UART
- 4.08.1. Лабораторная работа №4.8.1
- 4.09. Интерфейсы связи - I2C
- 4.09.1. Лабораторная работа №4.9.1
- 4.10. Интерфейсы связи - SPI
- 4.10.1. Лабораторная работа №4.10.1
- home
-
imgs
- 1. Введение
- 1.01. Лабораторная работа №1.1
- 1.02. Лабораторная работа №1.2
- 1.03. Лабораторная работа №1.3
- 1.04. Лабораторная работа №1.4
- 1.05. Лабораторная работа №1.5
- 2. Основы электроники
- 2.01. Электрический ток и параметры цепи
- 2.01.1. Лабораторная работа №2.1.1
- 2.01.2. Лабораторная работа №2.1.2
- 2.02. Сопротивление в цепи
- 2.02.1. Лабораторная работа №2.2.1
- 2.02.2. Лабораторная работа №2.2.2
- 2.03. Полупроводники
- 2.03.1. Лабораторная работа №2.3.1
- 2.03.2. Лабораторная работа №2.3.2
- 3. Основы программирование на C++
- 3.01. Типы данных и переменные
- 3.01.1. Практикум
- 3.02. Операторы в C++
- 3.02.1. Практикум
- 3.03. Структуры ветвления
- 3.03.1. Практикум
- 3.04. Структуры повторения
- 3.04.1. Практикум
- 3.05. Массивы
- 3.05.1. Практикум
- 3.06. Функции
- 3.06.1. Практикум
- 3.07. Решения задач
- 4. Программирование микроконтроллеров
- 4.01. Цифровые сигналы и GPIO
- 4.01.1. Лабораторная работа №4.1.1
- 4.01.2. Лабораторная работа №4.1.2
- 4.01.3. Лабораторная работа №4.1.3
- 4.01.4. Лабораторная работа №4.1.4
- 4.01.5. Лабораторная работа №4.1.5
- 4.01.6. Лабораторная работа №4.1.6
- 4.01.7. Лабораторная работа №4.1.7
- 4.01.8. Лабораторная работа №4.1.8
- 4.02. Аналоговые сигналы и ШИМ
- 4.02.1. Лабораторная работа №4.2.1
- 4.02.2. Лабораторная работа №4.2.2
- 4.02.3. Лабораторная работа №4.2.3
- 4.02.4. Лабораторная работа №4.2.4
- 4.02.5. Лабораторная работа №4.2.5
- 4.03. Аналоговый сигнал и АЦП
- 4.03.1. Лабораторная работа №4.3.1
- 4.03.2. Лабораторная работа №4.3.2
- 4.03.3. Лабораторная работа №4.3.3
- 4.03.4. Лабораторная работа №4.3.4
- 4.03.5. Лабораторная работа №4.3.5
- 4.04. Аналоговый сигнал и ЦАП
- 4.04.1. Лабораторная работа №4.4.1
- 4.04.2. Лабораторная работа №4.4.2
- 4.05. Генерация и измерение импульсов
- 4.05.1. Лабораторная работа №4.5.1
- 4.05.2. Лабораторная работа №4.5.2
- 4.06. Аппаратные прерывания
- 4.06.1. Лабораторная работа №4.6.1
- 4.06.2. Лабораторная работа №4.6.2
- 4.07. Псевдопараллелизм
- 4.07.1. Лабораторная работа №4.7.1
- 4.07.2. Лабораторная работа №4.7.2
- 4.08. Интерфейсы связи - UART
- 4.08.1. Лабораторная работа №4.8.1
- 4.09. Интерфейсы связи - I2C
- 4.09.1. Лабораторная работа №4.9.1
- 4.10. Интерфейсы связи - SPI
- 4.10.1. Лабораторная работа №4.10.1
- home