Подключение жидкокристаллического (ЖК) дисплея к Arduino

Для обеспечения хорошего взаимодействия между миром людей и миром машин необходимы дисплеи различного вида. Также дисплеи являются важной частью различных встраиваемых систем. Дисплеи, маленькие или большие, работают по аналогичным принципам. В радиолюбительской практике наиболее распространены жидкокристаллические (ЖК) дисплеи 16×1 и 16×2. ЖК дисплей 16×1 может отображать 16 символов, расположенных на одной строке. ЖК дисплей 16×2 может в сумме отображать 32 символа на двух строках – 16 символов на первой строке и 16 символов на второй. Здесь необходимо принимать во внимание тот факт, что каждый символ в подобных дисплеях состоит из 5×10=50 пикселов (точек). То есть чтобы отобразить 1 символ все эти 50 пикселов должны работать вместе. Но мы можем об этом не беспокоиться, потому что за их совместную работу отвечает контроллер HD44780 – его визуально можно увидеть на обратной стороне ЖК дисплея.

Подключение жидкокристаллического (ЖК) дисплея к Arduino: внешний вид конструкции

В данной статье мы будем подключать ЖК дисплей 16×2 к плате Arduino Uno. Как мы увидим далее подключить ЖК дисплей к этой плате значительно проще чем к большинству других аналогичных платформ. Нам не будет нужно беспокоиться о передаче данных и их приеме. Нам необходимо будет только определиться с номерами контактов и мы будем готовы к отображению данных на ЖК дисплее.

Необходимые компоненты

Плата Arduino UNO
Источник питаний 5 В
ЖК дисплей 16х2
Конденсатор 100 нФ

Работа схемы

Схема устройства представлена на следующем рисунке.

Схема подключения жидкокристаллического (ЖК) дисплея к ArduinoВ ЖК дисплее 16×2 если мы хотим задействовать черный цвет, то нам будут нужны все его 16 контактов, в противном случае нам будет достаточно 14 контактов. Эти 2 контакта, отвечающие за черный цвет, можно оставить неиспользованными. Среди оставшихся 14 контактов мы имеем 8 контактов данных (7-14 или D0-D7), 2 контакта для подачи питания (1&2 или VSS&VDD или GND&+5v), 3-й контакт для управления контрастностью (определяет насколько «жирными» будут выглядеть символы на экране дисплея) и 3 управляющих контакта (RS&RW&E).

На представленной схеме можно увидеть, что мы использовали только 2 управляющих контакта – это обеспечивает гибкость в управлении. Бит контраста и READ/WRITE используются редко, поэтому в нашем случае их можно замкнуть на землю – это обеспечивает ЖК дисплею максимальную контрастность и режим чтения. Таким образом, нам необходимо будет контролировать только контакты ENABLE и RS чтобы передавать на ЖК дисплей символы и данные.

В схеме необходимо будет сделать следующие соединения с ЖК дисплеем:
PIN1 или VSS на землю
PIN2 или VDD или VCC к источнику питания +5В
PIN3 или VEE на землю (обеспечивает максимальную контрастность – хорошо для начинающих)
PIN4 или RS (Register Selection) к контакту PIN0 ARDUINO UNO
PIN5 или RW (Read/Write) на землю (переводит ЖК дисплей в режим чтения, что упрощает взаимодействие с ним для начинающих)
PIN6 или E (Enable) к контакту PIN1 of ARDUINO UNO
PIN11 или D4 к контакту PIN8 of ARDUINO UNO
PIN12 или D5 к контакту PIN9 of ARDUINO UNO
PIN13 или D6 к контакту PIN10 of ARDUINO UNO
PIN14 или D7 к контакту PIN11 of ARDUINO UNO

Программная среда ARDUINO IDE позволяет пользователю использовать ЖК дисплей в 4-битном режиме. Этот тип взаимодействия с ЖК дисплеем позволяет сократить использование контактов ARDUINO, к тому же этот режим взаимодействия (4-битный) по умолчанию заложен в ARDUINO. На представленной схеме мы использовали 4-битный режим взаимодействия (контакты D4-D7).

То есть в сумме мы подсоединили 6 контактов ЖК дисплея к нашей плате Arduino, из которых 4 контакта будут использоваться для передачи данных и 2 контакта для целей управления.

Исходный код программы

Чтобы в программе подключить ЖК дисплей к ARDUINO UNO, необходимо сделать следующие несколько вещей:

#include <LiquidCrystal.h>
lcd.begin(16, 2);
LiquidCrystal lcd(0, 1, 8, 9, 10, 11);
lcd.print("hello, world!");

В первую очередь мы должны подключить заголовочный файл (#include <LiquidCrystal.h>’), в котором находятся все необходимые инструкции для взаимодействия с ЖК дисплеем, что значительно упростит взаимодействие с ним в 4 битном режиме. Используя этот заголовочный файл нам не нужно будет передавать в ЖК дисплей бит за битом и нам не нужно будет самим программировать какие-либо функции для взаимодействия с ЖК дисплеем.

Во второй строчке мы должны сказать плате ARDUINO UNO какой тип ЖК дисплея мы собираемся использовать, поскольку существует достаточно большое число типов подобных дисплеев, например, 20×4, 16×2, 16×1 и т.д. В нашем проекте мы собираемся подключать к ARDUINO UNO ЖК дисплей 16х2, поэтому мы и должны записать команду ‘lcd.begin(16, 2);’. А если бы мы подключали ЖК дисплей 16х1, то в этом случае изменилась бы и команда соответствующим образом — ‘lcd.begin(16, 1);’.

В следующей инструкции мы сообщаем плате ARDUINO UNO к каким контактам мы подсоединили ЖК дисплей. В нашем случае мы использовали контакты ЖК дисплея “RS, En, D4, D5, D6, D7”, которые подсоединены к контактам «0, 1, 8, 9, 10, 11» ARDUINO UNO, поэтому и приведенная команда выглядит следующим образом — “LiquidCrystal lcd(0, 1, 8, 9, 10, 11);”.

Для того, чтобы напечатать на экране дисплея строку символов, мы использовали команду lcd.print(«hello, world!»), которая выводит на экран дисплея строку ‘hello, world!’.

Как мы видим из представленного кода, нам не нужно заботиться больше ни о каких аспектах взаимодействия с ЖК дисплеем, нам нужно просто инициализировать ЖК дисплей в программе и тогда плата ARDUINO UNO будет готова к отображению информации на экране дисплея.

Далее представлен исходный код программы (с комментариями) для взаимодействия платы ARDUINO UNO с ЖК дисплеем 16х2.

#include <LiquidCrystal.h>
// инициализируем библиотеку для взаимодействия с ЖК дисплеем
LiquidCrystal lcd(0, 1, 8, 9, 10, 11); /// сообщаем Arduino номера контактов, к которым подключен ЖК дисплей - REGISTER SELECT PIN,ENABLE PIN,D4 PIN,D5 PIN, D6 PIN, D7 PIN
void setup()
{
// устанавливаем число столбцов и строк для ЖК дисплея
lcd.begin(16, 2);
}

void loop()
{
// устанавливаем курсор в нулевой столбец первой строки
lcd.print(" CIRCUIT DIGEST"); //печатаем строку
lcd.setCursor(0, 1); // устанавливаем курсор в нулевой столбец второй строки
lcd.print("http://www.circuitdigest.com/");//печатаем строку
delay(750); //задержка на 0.75 сек
lcd.scrollDisplayLeft();// переключаем данные на ЖК дисплее
lcd.setCursor(0, 0);// устанавливаем курсор в нулевой столбец первой строки
}

Видео, демонстрирующее работу схемы

(1 голосов, оценка: 5,00 из 5)
Загрузка...
20 просмотров


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *