Учебное пособие по ЖК-дисплею Arduino 16×2 — все, что вам нужно знать
<основной класс="главный сайт" id="главный">
В этом руководстве по Arduino мы узнаем, как подключить и использовать ЖК-дисплей (жидкокристаллический дисплей) с Ардуино . Подобные ЖК-дисплеи очень популярны и широко используются во многих электронных проектах, поскольку они отлично подходят для отображения простой информации, например данных датчиков, и при этом очень доступны по цене.
Я уже использовал их в нескольких своих проектах Arduino, и вы можете ознакомиться с ними здесь:
- Проект системы безопасности и сигнализации Arduino
- Торговый автомат «Сделай сам» — проект мехатроники на базе Arduino
- Проект дальномера Arduino и цифрового уровня
Вы можете посмотреть следующее видео или прочитать письменный учебник ниже. Он включает в себя все, что вам нужно знать об использовании символьного ЖК-дисплея с Arduino, например, разводку ЖК-дисплея, схему подключения и несколько примеров кодов.
Что такое символьный ЖК-дисплей?
Символьный ЖК-дисплей — это уникальный тип дисплея, который может выводить только отдельные символы ASCII фиксированного размера. Используя эти отдельные символы, мы можем сформировать текст.
Если мы внимательно посмотрим на дисплей, то заметим, что есть небольшие прямоугольные области, составленные из сетки 5×8 пикселей. Каждый пиксель может подсвечиваться отдельно, поэтому мы можем генерировать символы в каждой сетке.
Количество прямоугольных областей определяет размер ЖК-дисплея. Самым популярным ЖК-дисплеем является ЖК-дисплей 16 × 2, который имеет две строки с 16 прямоугольными областями или символами. Конечно, есть и другие размеры, такие как 16×1, 16×4, 20×4 и так далее, но все они работают по одному принципу. Кроме того, эти ЖК-дисплеи могут иметь различный цвет фона и текста.
Распиновка ЖК-дисплея 16×2
Он имеет 16 контактов, и первый слева направо является землей . штырь. Второй контакт — это VCC . который мы подключаем к контакту 5 вольт на плате Arduino. Далее идет контакт Vo, к которому мы можем прикрепить потенциометр для управления контрастностью дисплея.
Далее RS контакт или регистровый контакт выбора используется для выбора того, будем ли мы отправлять команды или данные на ЖК-дисплей. Например, если контакт RS установлен в низкое состояние или нулевое напряжение, то мы отправляем команды на ЖК-дисплей, например:установить курсор в определенное место, очистить дисплей, выключить дисплей и так далее. И когда контакт RS установлен в состояние High или 5 вольт, мы отправляем данные или символы на ЖК-дисплей.
Далее идет R/W контакт, который выбирает режим, будем ли мы читать или писать на ЖК-дисплей. Здесь режим записи очевиден и используется для записи или отправки команд и данных на ЖК-дисплей. Режим чтения используется самим ЖК-дисплеем при выполнении программы, которую нам не нужно обсуждать в этом руководстве.
Далее идет E вывод, который разрешает запись в регистры, или следующие 8 выводов данных от D0 до D7. Таким образом, через эти контакты мы отправляем 8-битные данные при записи в регистры или, например, если мы хотим видеть последнюю заглавную букву A на дисплее, мы отправим 0100 0001 в регистры в соответствии с таблицей ASCII. Последние два контакта A и К , или анод и катод предназначены для светодиодной подсветки.
В конце концов, нам не нужно сильно беспокоиться о том, как работает ЖК-дисплей, так как библиотека жидких кристаллов позаботится почти обо всем. На официальном сайте Arduino вы можете найти и просмотреть функции библиотеки, которые позволяют легко использовать ЖК-дисплей. Мы можем использовать библиотеку в 4- или 8-битном режиме. В этом уроке мы будем использовать его в 4-битном режиме или будем использовать только 4 из 8 контактов данных.
Как подключить Arduino к ЖК-дисплею — схема подключения
Вот как нам нужно подключить ЖК-дисплей 16×2 к плате Arduino.
Мы будем использовать только 6 цифровых входных контактов платы Arduino. Регистры ЖК-дисплея от D4 до D7 будет подключен к цифровым контактам Arduino с 4 по 7. Кнопка Enable контакт будет подключен к контакту номер 2 и RS контакт будет подключен к контакту номер 1. Кнопка R/W контакт будет подключен к земле, а Vo контакт будет подключен к среднему контакту потенциометра.
Вы можете получить эти компоненты на любом из следующих сайтов:
- Символьный ЖК-экран 16×2……………………..
- Потенциометр …………………………….
- Плата Arduino ……………………………
- Макет и соединительные провода………
Регулировка контрастности ЖК-дисплея
Мы можем отрегулировать контраст ЖК-дисплея, отрегулировав входное напряжение на Vo. штырь. Мы используем потенциометр, потому что таким образом мы можем легко настроить контраст, регулируя входное напряжение от 0 до 5 В.
Можно ли использовать ЖК-дисплей без потенциометра?
Да, если у нас нет потенциометра, мы все равно можем отрегулировать контраст ЖК-дисплея с помощью делителя напряжения, состоящего из двух резисторов. С помощью делителя напряжения нам нужно установить значение напряжения между 0 и 5В, чтобы получить хороший контраст на дисплее. Я обнаружил, что напряжение около 1 В отлично подходит для моего ЖК-дисплея. Я использовал резистор 1K и 220 Ом, чтобы получить хороший контраст.
Существует также другой способ регулировки контрастности ЖК-дисплея — подача ШИМ-сигнала от Arduino на Vo. вывод ЖК-дисплея. Мы можем подключить Vo к любому выводу с поддержкой ШИМ Arduino, а в разделе настройки мы можем использовать следующую строку кода:
analogWrite(11,100); // Generate PWM signal at pin D11, value of 100 (out of 255)
Code language: Arduino (arduino)
Он будет генерировать ШИМ-сигнал на контакте D11 со значением 100 из 255, который преобразуется в напряжение от 0 до 5 В, на входе Vo будет около 2 В. Пин ЖК-дисплея.
ЖК-код Arduino
Вот простой код, с помощью которого мы можем объяснить принцип работы библиотеки жидких кристаллов. Это код первого примера из видео:
/*
* Arduino LCD Tutorial
*
* Crated by Dejan Nedelkovski,
* www.HowToMechatronics.com
*
*/
#include <LiquidCrystal.h> // includes the LiquidCrystal Library
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)
void setup() {
lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display }
}
void loop() {
lcd.print("Arduino"); // Prints "Arduino" on the LCD
delay(3000); // 3 seconds delay
lcd.setCursor(2,1); // Sets the location at which subsequent text written to the LCD will be displayed
lcd.print("LCD Tutorial");
delay(3000);
lcd.clear(); // Clears the display
lcd.blink(); //Displays the blinking LCD cursor
delay(4000);
lcd.setCursor(7,1);
delay(3000);
lcd.noBlink(); // Turns off the blinking LCD cursor
lcd.cursor(); // Displays an underscore (line) at the position to which the next character will be written
delay(4000);
lcd.noCursor(); // Hides the LCD cursor
lcd.clear(); // Clears the LCD screen
}
Code language: Arduino (arduino)
Описание кода:
Первое, что нам нужно сделать, это вставить библиотеку жидких кристаллов. Мы можем сделать это следующим образом:Sketch> Include Library> Liquid Crystal. Затем мы должны создать объект LC. Параметры этого объекта должны быть номерами цифровых входных контактов платы Arduino соответственно контактам ЖК-дисплея следующим образом:(RS, Enable, D4, D5, D6, D7). В настройках мы должны инициализировать интерфейс для ЖК-дисплея и указать размеры дисплея с помощью begin() функция.
В цикле пишем нашу основную программу. Использование print() функция, которую мы печатаем на ЖК-дисплее.
lcd.print("Arduino"); // Prints "Arduino" on the LCD
Code language: Arduino (arduino)
setCursor() Функция используется для установки места, в котором будет отображаться последующий текст, записываемый на ЖК-дисплей.
lcd.setCursor(2,1); // Sets the location at which subsequent text written to the LCD will be displayed
Code language: Arduino (arduino)
мигание() используется для отображения мигающего курсора и функции noBlink() функция выключения.
lcd.blink(); //Displays the blinking LCD cursor
Code language: Arduino (arduino)
курсор() используется для отображения курсора подчеркивания и функции noCursor() функция выключения. Использование clear() функция, мы можем очистить ЖК-экран.
lcd.clear(); // Clears the LCD screen
Code language: Arduino (arduino)
Пример прокрутки текста на LCD 16x2 и Arduino
Если у нас есть текст длиной более 16 символов, мы можем прокручивать текст с помощью scrollDisplayLeft() илиscrollDisplayRight() функция из библиотеки LiquidCrystal.
Вот пример кода:
#include <LiquidCrystal.h>
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)
void setup() {
lcd.begin(16, 2);
lcd.print("Scrolling Text Example");
}
void loop() {
lcd.scrollDisplayLeft();
delay(500);
}
Code language: Arduino (arduino)
Мы можем выбрать, будет ли текст прокручиваться влево или вправо, используя функцию scrollDisplayLeft(). илиscrollDisplayRight() функции. С помощью delay() мы можем установить скорость прокрутки.
Если вы хотите больше контролировать прокрутку текста, вы также можете сделать прокрутку самостоятельно, используя цикл for. Вот пример:
#include <LiquidCrystal.h>
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)
void setup() {
lcd.begin(16, 2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display
}
void loop() {
// scroll text to the right
for (int i = 0; i <= 13; i++) {
lcd.setCursor(i, 0); // Sets the location at which subsequent text written to the LCD will be displayed
lcd.print("LCD");
delay(500); // 1 second delay
lcd.clear(); // Write a character to the LCD
}
// scroll text to the left
for (int i = 12; i >= 1; i--) {
lcd.setCursor(i, 0);
lcd.print("LCD");
delay(500);
lcd.clear();
}
}
Code language: Arduino (arduino)
Как создавать и отображать пользовательские символы на ЖК-дисплее
В дополнение к символам ASCII с помощью библиотеки LiquidCrystal также можно создавать и отображать на ЖК-дисплее пользовательские символы.
Мы можем указать внешний вид каждого символа массивом из 8 байт. Вот пример кода:
#include <LiquidCrystal.h>
byte heart[8] = { // Array of bytes
B00000, // B stands for binary formatter and the five numbers are the pixels
B01010,
B11111,
B11111,
B01110,
B00100,
B00000,
B00000
};
byte smile[8] = {
B00000,
B00000,
B01010,
B00000,
B10001,
B01110,
B00000,
B00000
};
byte lock[8] = {
B01110,
B10001,
B10001,
B11111,
B11011,
B11011,
B11111,
B00000
};
byte character[8] = {
B11111,
B10101,
B11111,
B01010,
B01110,
B11111,
B01110,
B01110
};
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)
void setup() {
lcd.begin(16, 2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display
lcd.createChar(0, heart); // Create a custom character
lcd.createChar(1, smile);
lcd.createChar(2, lock);
lcd.createChar(3, character);
// Clears the LCD screen
lcd.clear();
// Print a message to the LCD
lcd.print("Custom Character");
}
void loop() {
lcd.setCursor(1, 1);
lcd.write(byte(0)); // Display the custom character 0, the heart
lcd.setCursor(5, 1);
lcd.write(byte(1));
lcd.setCursor(9, 1);
lcd.write(byte(2));
lcd.setCursor(13, 1);
lcd.write(byte(3));
}
Code language: Arduino (arduino)
Мы можем заметить, как мы можем указать внешний вид символа, заменив 0 на 1 в сетке 5×8 пикселей.
В настройках мы должны создать собственный символ с помощью createChar() функция.
lcd.createChar(0, heart); // Create a custom character
Code language: Arduino (arduino)
Первый параметр в этой функции — это число от 0 до 7, иначе мы должны зарезервировать один из 8 поддерживаемых пользовательских символов. Второй параметр — это имя массива байтов.
Мы записываем пользовательский символ на дисплей с помощью write() функцию и в качестве параметра используем номер символа.
lcd.write(byte(0)); // Display the custom character 0, or the heart
Code language: Arduino (arduino)
См. также:Учебное пособие по сенсорному экрану Arduino | ЖК-дисплей TFT
Заключение
Итак, мы рассмотрели почти все, что нам нужно знать об использовании ЖК-дисплея с Arduino. Эти ЖК-дисплеи очень удобны для отображения информации для многих проектов электроники. В приведенных выше примерах я использовал ЖК-экран 16×2, но тот же принцип работы применим и к символьным дисплеям любого другого размера.
Надеюсь, вам понравился этот урок и вы узнали что-то новое. Не стесняйтесь задавать любые вопросы в разделе комментариев ниже и не забудьте ознакомиться с моей полной коллекцией из 30+ проектов Arduino.
Производственный процесс
- Все, что вам нужно знать о Plunge EDM
- Все, что вам нужно знать о чугуне
- Все, что вам нужно знать о доменной печи
- Все, что вам нужно знать о фрезерном станке
- Все, что вам нужно знать о строгальном станке
- Все, что вам нужно знать о формовочной машине
- Все, что вам нужно знать о металлообработке
- Все, что вам нужно знать о станке с ЧПУ
- Все, что вам нужно знать о машинном прессе
- Все, что вам нужно знать о гидравлическом прессе