Подключение LCD2004A к Arduino UNO R3
ArduinoВ данной публикации речь пойдет о подключении жидкокристаллического дисплея LCD2004A без интерфейса I2C. Это обычный жидкокристаллический дисплей с четырьмя строками по 20 символов в каждой, подключается он так же как и двухстрочный аналогичный дисплей, поэтому инструкция будет полезна и для дисплея с двумя строками LCD2002.
Выглядит дисплей вот так:
Данный дисплей имеет 16 выводов:
- 1 Vss — Земля (общий провод)
- 2 Vdd — Питание + 5 В
- 3 Vo — Управление контрастностью дисплея. Вход для подключения среднего вывода делителя напряжения + 5 В. Можно использовать подстроечный резистор сопротивлением 10-20 кОм.
- 4 RS — Выбор регистра: 0 – регистр команд; 1 – регистр данных. Низкий уровень сигнала означает, что на шине данных сформирована команда, высокий уровень – на шине данные.
- 5 R/W — Направление передачи данных: 0 – запись; 1 – чтение. Во многих приложениях функция чтения не используется, поэтому сигнал часто подключается к земле.
- 6 E — Строб операции шины (по отрицательному фронту).
- 7 DB0 — Младшие биты восьми битного режима. При четырех битном интерфейсе не используются.
- 8 DB1 — Младшие биты восьми битного режима. При четырех битном интерфейсе не используются.
- 9 DB2 — Младшие биты восьми битного режима. При четырех битном интерфейсе не используются.
- 10 DB3 — Младшие биты восьми битного режима. При четырех битном интерфейсе не используются.
- 11 DB4 — Старшие биты восьми битного режима или биты данных четырех битного интерфейса.
- 12 DB5 — Старшие биты восьми битного режима или биты данных четырех битного интерфейса.
- 13 DB6 — Старшие биты восьми битного режима или биты данных четырех битного интерфейса.
- 14 DB7 — Старшие биты восьми битного режима или биты данных четырех битного интерфейса.
- 15 A — Анод питания подсветки (+).
- 16 K — Катод питания подсветки (-). Ток должен быть ограничен.
Для нашей сборки мы будем использовать четырех битный интерфейс.
Схема сборки на макетной плате:

Принципиальная схема:

После сборки схемы, нам понадобится скетч, для теста.
Вначале лучше запустить скетч который выведет все символы ASCII на дисплей, это позволит нам понять, есть ли у дисплея русские символы, ниже приведён именно такой скетч.
/*
* Подключение LCD к Arduino
*
* babakov.net
*
*/
#include <LiquidCrystal.h> // Подключаем библиотеку LiquidCrystal
LiquidCrystal lcd(11, 12, 4, 5, 6, 7); // Создаем объект с параметрами: (rs, enable, d4, d5, d6, d7)
void setup() {
// укажем для LCD число колонок и строк:
lcd.begin(20, 4);
// Напечатаем на LCD все символы ASCII по порядку
for (int i=0; i <= 255; i++){
lcd.print(char(i));
delay(10);
}
}
void loop() {
// Здесь ничего не делаем пока
}
Дело в том, что многие дисплеи привезённые из Китая, не обладают русским набором символов, и если после заливки и выполнении скетча на устройстве вы видите это:

Это означает, что дисплей не имеет русских символов в прошивке, а если вы видите русские буквы, то вам повезло. :)
Теперь попробуем другую прошивку, которая отобразит тестовую информацию, при этом в данной прошивке мы создадим свой символ в виде человечка (Правда таких символов можно создать всего 8).
Скетч примера:
/*
* Подключение LCD к Arduino
*
* babakov.net
*
*/
#include <LiquidCrystal.h> // Подключаем библиотеку LiquidCrystal
LiquidCrystal lcd(11, 12, 4, 5, 6, 7); // Создаем объект с параметрами: (rs, enable, d4, d5, d6, d7)
void setup() {
// указываем для LCD число колонок и строк:
lcd.begin(20, 4);
// Задаем свой символ
byte human[8] = {
B00000100,
B00001110,
B00010101,
B00010101,
B00000100,
B00001010,
B00001010,
B00011011
};
// загружаем свой символ в 0 ячейку (всего их 8 от 0 до 7)
lcd.createChar(0, human);
lcd.begin(20, 4);
// выводим свой символ
lcd.write(byte(0));
lcd.print(" - It's a human.");
// переходим ниже
lcd.setCursor(0, 1);
// напечатаем название сайта
lcd.print("www.babakov.net");
// переходим ещё ниже
lcd.setCursor(0, 2);
// напечатаем строку разделитель
lcd.print("--------------------");
}
void loop() {
// переводим курсор на позицию колонка 0 строка 3
lcd.setCursor(0, 3);
// печатаем секунды с начала работы скетча:
lcd.print(millis() / 1000);
}
Вот что должно получиться после загрузки и выполнения данного скетча:

Вот и всё.
Надеюсь публикация кому-то окажется полезной.
Вот как вся сборка на макетной плате в итоге выглядела у меня:

Всем удачи.
Вопросы и комментарии приветствуются.
Работа с Postgresql в C#
Не так давно занялся разработкой приложения на C# работающего на базе PostreSQL, появилась информаци (читать далее...)
1098Работа с MySQL в C#
Надеюсь данная публикация не даст читателям повторить мои ошибки и поможет сделать изначально правил (читать далее...)
648Работа со строками в Oracle (PL/SQL)
Основные способы обработки строковых значений в Oracle. В этой публикации я приведу основные функции (читать далее...)
628Подключение датчика температуры и влажности DHT11 к Arduino UNO R3
Подключение датчика температуры DHT11 задача довольно простая. Всё, что нам понадобится для подключе (читать далее...)
295Самое простое что можно сделать на Arduino - Мигаем светодиодом.
Итак, мигание обычным светодиодом. Самое простое, что можно сделать на Arduino. Вот как это выглядит (читать далее...)
94
Оставить первый комментарий: