Жидкокристаллические дисплеи используются во многих устройствах. Они играют очень важную роль во встроенных системах. Многие электронные дисплеи используются во встроенных системах, например 7-сегментные светодиодные дисплеи, но они имеют свои ограничения. В этом статье пробежимся по интерфейсу ЖК-дисплея LCD 1602 и рассмотрим подключение его к плате Arduino.
По сравнению с другими контроллерами, взаимодействие ЖК-дисплея с Arduino очень простое. В других микроконтроллерах необходимо написать полностью код для работы с ЖК-дисплея, в то время как Arduino предоставляет готовую библиотеку.
LCD 1602 является наиболее часто используемым ЖК-дисплеем. 16×2 означает, что он может отображать 32 символа, по 16 символов в 2 строки. Он имеет 16 контактов.
Распиновка ЖК-дисплея 1602
Описание контактов LCD 16×2
VSS
Это контакт заземления модуля. Подключается к GND.
VDD или VCC
Это контакт питания модуля. Напряжение питания +5В.
V0 или VEE
Вывод VEE или еще может обозначатся V0 используется для управления контрастностью ЖК-дисплея. Для регулировки контрастности экрана подключается потенциометр (переменный резистор) на 10 кОм и устанавливается оптимальный уровень напряжения (потенциометр в этом случае играет роль делителя напряжения). Средний контакт потенциометра подключается к этому контакту, крайние к VSS и VDD. Подключение можно увидеть на схеме ниже.
RS
Register Select. Вывод RS используется для выбора регистра. В этом ЖК-дисплее есть два регистра. Это регистр инструкций и регистра данных. Регистр данных отправляет данные на экран, а регистр инструкций отправляет команды на контроллер ЖК-дисплея, который управляет инструкциями.
- Высокий логический уровень (логическая 1) — активирует регистр данных.
- Низкий логический уровень (логический 0) — активирует регистр инструкций.
RW
Read/Write. Вывод RW отвечает за выбор режима чтения или записи. Обычно используется только режим записи, поэтому этот вывод подключают к GND.
- Высокий логический уровень (логическая 1) — активирует режим чтения.
- Низкий логический уровень (логический 0) — активирует режим записи.
E
Enable. Включает модуль ЖК-дисплея.
DB0 — DB7
Это линии ввода/вывода данных. Если используется 4-х битный режим передачи, то используются контакты DB4 — DB7.
A или LED+
Напряжение питания для светодиодной подсветки. Этот вывод подключается к +5В.
K или LED-
Земля для светодиодной подсветки. Подключается к GND.
Пример подключения LCD 1602 к плате Arduino
Подключим дисплей к ардуино нано в программе Proteus.
ЖК-дисплей можно использовать как в 4-битном, так и в 8-битном режиме. В 4-битном режиме требуется 7 (или 6, если использовать только режим записи) контактов ввода-вывода Arduino.
- Вывод VSS ЖК-дисплея подключен к земле GND, а вывод VDD подключен к питанию +5В.
- VEE ЖК-дисплея подключен к переменному резистору для регулировки контрастности.
- Контакты E (включение) и RS (выбор регистра) подключены к контактам ардуино D4 и D5 соответственно.
- Вывод RW подключен к земле GND, поскольку будет использоваться только в режиме записи.
- Четыре вывода данных дисплея от D4 до D7 подключены к четырем цифровым контактам от D0 до D3 Arduino.
Скетч для подключения LCD 1602 к Ардуино
Приведенная ниже программа выводит на первую строку ЖК-дисплея «RxTx.su», а на вторую — «LCD 1602».
#include<LiquidCrystal.h> // Подключаем библиотеку LiquidCrystal LiquidCrystal lcd(5, 4, 3, 2, 1, 0); // Создаем объект lcd, передавая контакты в качестве параметров void setup() { lcd.begin(16, 2); // Инициализация LCD 16 на 2 } void loop() { lcd.setCursor(0, 0); // Устанавливаем курсор на первой строке в самое левое положение lcd.print("RxTx.su"); // Выводим текст lcd.setCursor(0,1); // Устанавливаем курсор на второй строке в самое левое положение lcd.print("LCD 1602"); // Выводим текст }
Для управления дисплеем используется библиотека Arduino Liquid Crystal. Она поддерживает 8-разрядный и 4-разрядный режим работы.
LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
Строка сверху создает объект класса LiquidCrystal. А в качестве параметров конструктор класса принимает номера соответствующих контактов, подключенных к ардуино.
В функции setup()
выполняется инициализация дисплея. В методе begin()
указываем количество символов в строке и количество строк LCD.
lcd.begin(16, 2);
Метод setCursor(столбец, строка) устанавливает курсора, то есть с какого места начать выводить данные.
lcd.setCursor(0, 0);
Метод print() выводит указанную строку на дисплей.
lcd.print("RxTx.su");