Подключение LCD 1602 к Arduino
Подключение LCD 1602 к Arduino
Ардуино MEGA
Дисплей LCD 1602 (HD44780)
Резистор 5 кОм
LCD дисплеи размерности 1602, на базе контроллера HD44780, являются одними из самых простых, доступных и востребованных дисплеев для разработки различных электронных устройств. Его можно встретить как и в устройствах собранных домашних условиях, так и в промышленных устройствах, таких, как например, автоматы для приготовления кофе.
В данной статье мы расскажем как его подключить к Arduino и вывести информацию.
Данные дисплеи имеют два исполнения: желтая подсветка с черными буквами либо, что встречается чаще, синюю подсветку с белыми буквами.
Размерность дисплеев на контроллере HD44780 может быть различной, управляться они будут одинаково. Самые распространенные размерности 16×02 (т.е. по 16 символов в двух строках) либо 20×04. Разрешение же самих символов – 5×8 точек.
Большинство дисплеев не имеют поддержку кириллицы, имеют её лишь дисплеи с маркировкой CTK. Но данную проблему можно попытаться частично решить (продолжение в статье).
Выводы дисплея:
На дисплее имеется 16pin разъем для подключения. Выводы промаркированы на тыльной стороне платы.
1 (VSS) – Питание контроллера (-)
2 (VDD) – Питание контроллера (+)
3 (VO) – Вывод управления контрастом
4 (RS) – Выбор регистра
5 (R/W) – Чтение/запись ( режим записи при соединении с землей)
6 (E) – Еnable (строб по спаду)
7-10 (DB0-DB3) – Младшие биты 8-битного интерфейса
11-14 (DB4-DB7) – Старшие биты интерфейса
15 (A) – Анод (+) питания подсветки
16 (K) – Катод (-) питания подсветки
Я сразу припаял пины “папы”
Обратите внимание что Разъемы 15-16 соответственно”+” и “-” я припаял сразу к основному входу питания дисплея. Так делать не обязательно. Желательно этим пинам подать питание 3,3 Вольт
или добавить сопротивление. Так как напряжение подсветки рассчитано на 3,3 Вольт
Вывод информации:
Для работы дисплея используется встроенная с среду Arduino IDE библиотека LiquidCrystal.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//Работа с курсором lcd.setCursor(0, 0); // Устанавливаем курсор (номер ячейки, строка) lcd.home(); // Установка курсора в ноль (0, 0) lcd.cursor(); // Включить видимость курсора (подчеркивание) lcd.noCursor(); // Убрать видимость курсора (подчеркивание) lcd.blink(); // Включить мигание курсора (курсор 5х8) lcd.noBlink(); // Выключить мигание курсора (курсор 5х8) //Вывод информации lcd.print("Mikrotok.ru"); // Вывод информации lcd.clear(); // Очистка дисплея, (удаление всех данных) установка курсора в ноль lcd.rightToLeft(); // Запись производится справа на лево lcd.leftToRight(); // Запись производится слева на право lcd.scrollDisplayRight(); // Смещение всего изображенного на дисплее на один символ вправо lcd.scrollDisplayLeft(); // Смещение всего изображенного на дисплее на один символ влево //Информация полезная для шпионов:) lcd.noDisplay(); // Информация на дисплее становится невидимой, данные не стираются // если, в момент когда данная функция активна, ничего не выводить на дисплей, то lcd.display(); // При вызове функции display() на дисплее восстанавливается вся информация которая была |
Сам же дисплей может работать в двух режимах :
• 8-битный режим – для этого используются и младшие и старшие биты (BB0- DB7)
• 4-битный режим – для этого используются и только младшие биты (BB4- DB7)
Использование 8-битного режима на данном дисплее не целесообразно. Для его работы требуется на 4 ноги больше, а выигрыша в скорости практически нет т.к. частота обновления данного дисплея упирается в предел < 10раз в секунду.
Для вывода текста необходимо подключить выводы RS, E, DB4, DB5, DB6, DB7 к выводам контроллера. Их можно подключать к либым пинам Arduino, главное в коде задать правильную последовательность.
Пример Программного кода
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <LiquidCrystal.h> // Добавляем необходимую библиотеку LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup(){ lcd.begin(16, 2); // Задаем размерность экрана lcd.setCursor(0, 0); // Устанавливаем курсор в начало 1 строки lcd.print("LCD 16x2 Arduino"); // Выводим текст lcd.setCursor(0, 1); // Устанавливаем курсор в начало 2 строки lcd.print("Mikrotok.ru "); // Выводим текст } |
Результат:
Символ я добавил потом. Что касается символов
Создание собственных символов
С выводом текста разобрались, буквы английского алфавита зашиты в память контроллера внутри дисплея и с ними проблем нет. А вот что делать если нужного символа в памяти контроллера нет?
Не беда, требуемый символ можно сделать вручную (всего до 7ми символов). Ячейка, в рассматриваемых нами дисплеях, имеет разрешение 5х8 точек. Все, к чему сводится задача создания символа, это написать битовую маску и расставить в ней единички в местах где должны гореть точки и нолики где нет.
В ниже приведенном примере нарисуем смайлик.
Пример кода:
1 2 3 4 5 6 7 8 9 10 |
byte smile[8] = { B00010, B00001, B11001, B00001, B11001, B00001, B00010, }; |
Тестовый код с применением текста и смайликов:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#include <Wire.h> #include <LiquidCrystal.h> // Добавляем необходимую библиотеку // Битовая маска символа улыбки byte smile[8] = { B00010, B00001, B11001, B00001, B11001, B00001, B00010, }; LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup(){ lcd.begin(16, 2); // Задаем размерность экрана lcd.createChar(1, smile); // Создаем символ под номером 1 lcd.setCursor(0, 0); // Устанавливаем курсор в начало 1 строки lcd.print("\1"); // Выводим смайлик (символ под номером 1) - "\1" } void loop(){ } |
Код с символом нашего сайта
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#include <LiquidCrystal.h> // Лобавляем необходимую библиотеку LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) byte smile[8] = { B01111, B11110, B01111, B11110, B01111, B11110, B01111, }; void setup(){ lcd.begin(16, 2); // Задаем размерность экрана lcd.createChar(1, smile); // Создаем символ под номером 1 lcd.setCursor(0, 0); // Устанавливаем курсор в начало 1 строки lcd.print("LCD 16x2 Arduino"); // Выводим текст lcd.setCursor(0, 1); // Устанавливаем курсор в начало 2 строки lcd.print("Mikrotok.ru "); // Выводим текст lcd.print("\1"); } |
Регулировка подсветки:
На видео видно если не подключать пин регулировки подсветки (как советуют другие) экран может и не показать результат.
Первое время я так и думал. Только потом подключил резистор
2,506 просмотров всего, 8 просмотров сегодня