У дома мрежов хардуер Свързване на LSD дисплей. Character LCD и Arduino

Свързване на LSD дисплей. Character LCD и Arduino

Как да свържа платка Arduino с дисплей със знаци? Доста просто! По-долу е всичко по ред и подробности.

Ако искате да получавате информация от Arduino, без да се свързвате с компютър и да я извеждате към сериен порт, можете да използвате символен дисплей. Не е толкова трудно да се направи. Удобството от комуникацията е безценно.
За работа използвах J204A символен LCD дисплей, базиран на чипа HD44780, често срещан в eBay като LCD2004. 4 реда по 20 символа, обърнати. Купува се с куп други в eBay, само за стотинки, от 60 до 100 рубли на брой. Руският език не се поддържа по подразбиране, но това е разрешим проблем, повече за това следващия път. И конекторите на диаграмата не са запоени, ще трябва да работите с поялник.
Библиотеката се използва за работа с дисплеи LiquidCrystal.hвключен в стандартната Arduino IDE.

Но не намерих лист с данни за дисплея LCD2004, но интернет е пълен с таблици на дисплея. Но те практически не се различават един от друг. Контролите и връзките са напълно идентични. Единствената разлика е броят на редовете/знаците на дисплея. Но това няма да има абсолютно никакъв ефект, ако имате 1602.

Всички контакти са определени в таблицата. Ако вземете дисплея и го обърнете към себе си, контактите ще бъдат разположени отляво надясно, съответно в таблицата те са изброени по ред на нарастване на номерата. В колоната за контакти обозначението в листа с данни е посочено в скоби.

# Контакти За какво се използва? Забележка
1 VSS (VSS) GND. Земята. Захранване за микроконтролер на дисплея. 0V
2 VDD (VCC) Захранващо напрежение за микроконтролера на дисплея. +5V
3 V0(VEE) Контраст на знаците на дисплея. По-добре е да свържете чрез потенциометър. от 0v до +5V
4 RS (RS) Регистрирайте селекцията.
5 RW (R/W) Превключване на режима на четене/запис. Нека го дръпнем на земята, трябва само да предадем информация на дисплея. 0-запис +5V-четене
6 д Часовник
7 D0 (DB0) Данни
8 D1 (DB1) Трансфер на данни. (няма да го използваме) Данни
9 D2 (DB2) Трансфер на данни. (няма да го използваме) Данни
10 D3 (DB3) Трансфер на данни. (няма да го използваме) Данни
11 D4 (DB4) Данни
12 D5 (DB5) Трансфер на данни. (Активиран) Данни
13 D6 (DB6) Трансфер на данни. (Активиран) Данни
14 D7 (DB7) Трансфер на данни. (Активиран) Данни
15 A (LED+) +5V напрежение, подсветка на дисплея, яркост на дисплея могат да се регулират чрез потенциометър. +5V
16 K (LED-) GND Земя, подсветка на дисплея 0V

v

Предаването на данни към дисплея е възможно в два варианта: 8 и 4 бита на такт. защото Arduino има малко контакти, ние ще използваме 4 - това е повече от достатъчно, за да актуализира информацията на дисплея със скорост, която е непосилна за възприемане.

Ето как всичко е свързано с мен. Може да изглежда като хаос, но тук има система. Можете да различите червени, зелени, жълти и оранжеви проводници. Червените винаги отиват към +5V, зелените към GND, а жълтите и оранжевите са проводниците за свързване към Arduino, които пренасят данни.

Най-важната част е физическата връзка на дисплея. С щракване се отваря във висока резолюция, където всичко се вижда ясно.
R1 - резистор 200OM. Съпротивлението ограничава тока, преминаващ през подсветката на дисплея.
R2 - Потенциометър със съпротивление до 10kOM. Завъртаме писалката и избираме контраста на символите.


И изключително проста скица за показване на няколко реда на екрана.

H> // Свързваме библиотеката за работа с дисплея. /* LiquidCrystal команда lcd(rs, enable, d4, d5, d6, d7); Създаваме променлива от тип LiquidCrystal и определяме през кои контакти Arduino работи с дисплея. повече подробности за тази команда тук http://arduino.cc/en/Reference/LiquidCrystalConstructor */ LiquidCrystal lcd(6, 7, 8, 9, 10, 11); void setup() ( lcd.begin(20, 4); // определяне на характеристиките на дисплея (20 знака на ред, 4 реда) // За дисплей 1602 трябва да посочите lcd.begin(16, 2); lcd .setCursor(1, 1); // Посочете от коя позиция да започне показването на текста от 0!!! // 1 ще премести каретката с едно деление от началото на екрана ред под lcd.print("compblog.vlukyanov"); // отпечатване на текста, започващ от указаната позиция lcd.setCursor(7, 2); // отпечатване от 8-ия знак на екрана "); // текст за печат. loop() ( // ние не правим нищо друго в цикъла; всичко вече е направено по време на инициализацията на платката. )

Резултат. Ако знаете как се свързва всичко и как да напишете кода, тогава времето за цялата работа е 5 минути.

Дисплеят може да изпълнява някои функции и независимо, а също така е възможно да се задават някои параметри.

Например:

  • Превъртане на текст;
  • Позиция на Flash курсора;
  • Включване/изключване.

А сега за бонуса!
Подсветката на дисплея хаби енергия, която, например, когато се захранва от батерия, бихте искали да спестите. Направих тази опция за себе си - когато натиснете бутона, подсветката на дисплея се включва за 5 секунди.

H> // Свързваме библиотеката за работа с дисплея. int buttonInt = 0; // Номер на прекъсването, което ще бъде извикано. int screenLed = 4; // Номер на щифта, към който е свързан екранът. +5V летлив дълъг x = 5000; // променлива за съхранение на време LiquidCrystal lcd(6, 7, 8, 9, 10, 11); void setup attach() (Interrupt(buttonInt, screenon, FALLING); // параметри на прекъсване lcd.begin(20, 4); pinMode(screenLed, OUTPUT); digitalWrite(screenLed,HIGH); // включване на LCD дисплея. setCursor(0, 0); lcd.print("Стартиране на теста на екрана!"); // Функция, която ще се изпълни при натискане на бутона. void screenon() ( x = millis()+5000; // Запомнете времето, когато трябва да изключите подсветката. Текущо работно време +5 секунди. digitalWrite(screenLed,HIGH); // Приложете напрежение към подсветката на дисплея. ) void loop() ( lcd.setCursor(0, 2); // отидете на третия ред lcd.print(x); // и покажете часа, когато дисплеят се изключва lcd.setCursor(0, 3); / / отидете на четвъртия ред lcd.print( millis()); // отпечатайте текущото време на работа if (x< millis()) // если время работы выключения наступило >( digitalWrite(screenLed,LOW); // след това изключете дисплея) )

И резултата:

LCD дисплеите с размери 1602, създадени на базата на контролера HD44780, днес все още остават едни от най-достъпните, прости и търсени за разработване на всякакъв вид електронни устройства. Не е изненадващо, че те могат да се видят както в прости единици, сглобени буквално на коляното, така и в по-сериозни индустриални, например кафе машини. Именно с този дисплей се сглобяват най-популярните свързани с Arduino модули и щитове, например LCD I2C модул и LCD Keypad Shield.

Тази статия обяснява подробно с изображения как да свържете LCD към Arduino и да показвате информация.

Стъпка 1: 1602 LCD дисплей за Arduino

1602 дисплея има две различни версии:

Жълта подсветка с черни букви
- или (това се случва много по-често) синя подсветка с бели.

Размерът на дисплеите на контролера HD44780 варира значително, но те се управляват по същия начин. Най-често срещаните размери са 16 на 02 (т.е. 16 знака в два реда) или 20 на 04. Самите знаци са с резолюция 5 на 8 пиксела.

Повечето дисплеи не поддържат кирилица (с изключение на дисплеите, маркирани с CTK). Но този проблем е частично разрешим и статията описва подробно как да направите това.

Дисплеят има 16-пинов конектор за свързване. Изводите имат маркировки на гърба на дъската, то е както следва:

1 (VSS) – отрицателно захранване за контролера.
2 (VDD) – положително захранване на контролера.
3 (VO) – настройки за контрол на контраста.
4 (RS) – избор на регистър.
5 (R/W) – четене и писане, по-специално запис при заземяване.
6 (E) – активиране (разрешаване).
7–10 (DB0-DB3) – битове от нисък ред от осембитовия интерфейс.
11–14 (DB4-DB7) – най-значимите битове от интерфейса
15 (А) – положителен анод за захранване на подсветката.
16 (K) – отрицателен катод за захранване на подсветката.

Стъпка 2: Свържете LCD дисплея

Преди да свържете дисплея и да прехвърлите информация към него, си струва да проверите неговата функционалност. Първо подайте напрежение към VSS и VDD контролера, включете подсветката (A, K), след това регулирайте контраста. За такива настройки е подходящ потенциометър от 10 kOhm; формата му не е важна. +5V и GND се подават към външните крака, а кракът в центъра е свързан към щифта VO.

Когато се подава захранване към веригата, трябва да постигнете необходимия контраст; ако е настроен неправилно, тогава изображението на екрана няма да се вижда. За да регулирате контраста, трябва да "играете" с потенциометъра. Когато веригата е сглобена правилно и контрастът е регулиран правилно, горният ред на екрана трябва да бъде запълнен с правоъгълници.

За да работи дисплеят, се използва специална библиотека LiquidCrystal.h, вградена в Arduino IDE, за която ще пиша по-долу. Може да работи в 8-битов и 4-битов режим. В първия вариант се използват само най-малко значимите и значимите битове (BB0-DB7), във втория - само най-малко значимите (BB4-DB7).

Но използването на 8-битов режим в този дисплей е грешно решение; почти няма предимство в скоростта, тъй като честотата му на опресняване винаги е по-малка от 10 пъти в секунда. За да покажете текст, трябва да свържете щифтове DB7, DB6, DB5, DB4, E и RS към щифтовете на контролера. Те могат да бъдат свързани към всякакви щифтове на Arduino, основното е да зададете правилната последователност в кода.

Ако желаният символ все още не е в паметта на контролера, можете да го дефинирате ръчно (общо до седем символа). Клетката в разглежданите дисплеи има разширение от пет на осем точки. Задачата за създаване на символ е да напишете малко маска и да поставите единици на местата, където точките трябва да светят, и нули, където не трябва.

Диаграмата на свързване, обсъдена по-горе, не винаги е добра, тъй като на Arduino се използват най-малко шест цифрови изхода.

Стъпка 3: Заобиколно решение

Нека проучим вариант да заобиколим това и да минем само с две. Имаме нужда от допълнителен преобразуващ модул за LCD към IIC/I2C. Как е запоен към дисплея и свързан към Arduino може да се види на изображенията по-долу.

Но тази опция за свързване работи само със специална библиотека LiquidCrystal_I2C1602V1, която обаче е лесна за намиране в интернет и инсталиране, след което можете да я използвате без никакви проблеми.

Стъпка 4: Библиотека LiquidCrystal.h

Библиотеката LiquidCrystal.h може да бъде изтеглена от официалния ресурс -. Можете също да изтеглите от връзките по-долу:

Скица

След като изтеглите архива, заменете папката LiquidCrystal в папката библиотеки на вашата инсталационна директория на Arduino.

Можете да видите примерна скица в Файл -> Примери -> LiquidCrystal -> HelloWorld_SPI(Файл -> Примери -> LiquidCrystal -> HelloWorld_SPI).

Това завършва следващия ни урок. Желаем Ви качествени проекти!

Arduino Nano пристигна, пристигна комплект, съдържащ макетна платка и LCD дисплей. На дисплея на платката пише - 1602A, отдолу - QAPASS. Започнах да извайвам първото устройство и, разбира се, исках да показва информация на дисплея, а не да мигат светодиоди.

Google помогна, каза ми, че това е символен дисплей; Ако не го изкривите, тогава най-вероятно са налични ASCII знаци - цифри, латиница, някои от основните знаци.

Следните материали помогнаха за стартирането на дисплея: управление на LCD тип символи от порт за принтер на компютър; Как да свържете Arduino със символен LCD; Pwm серво драйвер за управление на двигателя PDF.

Дисплеят е доста разпространен, а за него вече са измислени щитове - има варианти със SPI, като, и/или с I2C, а в интернет е пълно с рецепти за тези случаи. Но имах само оригиналния 16x2 дисплей и Arduino, към който исках да го прикрепя.

Дисплеят има режим на работа и предаване на данни в битове по 4 бита, като младшите битове на шината не се използват. Свързването само на половината шина за данни е описано на много места и не разбрах как да свържа дисплея и да работя с него над 8 реда. Бях много щастлив, че работи по този начин.

Намерих добро описание на дисплеи от този тип тук - http://greathard.ucoz.com/44780_rus.pdf. И тук (http://arduino.ru/forum/programmirovanie/lcd-i2c-partizanit#comment-40748) е пример за определяне на генератор на знаци.

Връзка

Дисплея ми дойде с незапоени контакти. От началото исках да запоя кабела, срязах 16 жици с дупон, и ги почистих. И тогава се разрових в кита и намерих гребен на DuPont за запояване към платката. От там откъснах 16 контакта и ги запоих.
Дисплеят ми изглеждаше така (преди запояване на контактите):

Първо свързах щифт 15 (A) към +5V, 16 (K) към маса и се уверих, че подсветката работи. По принцип е правилно катодът да се свърже към земята чрез резистор 220 ома, което направих след това.

След това свързах земята (1) и захранването (2). Arduino може да се захранва от USB, от стабилизирано напрежение от 5V и от нестабилизирано 6-12V, като автоматично се избира най-високото напрежение. Сега Arduino се захранва от USB и се чудех от къде да взема 5 волта. Оказа се, че 5V е на извода на Arduino, където е свързан външен стабилизиран 5V. Или по-скоро се оказа 4.7V, но това ми беше достатъчно.

След свързване на захранването, ако всичко е наред, горният ред светва с плътни правоъгълници на познатост.

След това свързваме контрастния потенциометър (пин 3 V0). Хвърляме един от крайните клеми на потенциометъра към земята, вторият към +5V, средният към пин 3 на дисплея. Препоръчва се 10K потенциометър. Имах 50K от whale, първо го използвах. Корекцията беше само на един ръб; беше необходимо да се хване желания контраст много фино. След това намерих подобен на 5K в друг кит и го инсталирах. Настройката се простираше от единия ръб до половин оборот. Явно може да се вземе още по-малък потенциометър. Вероятно се препоръчва 10K, така че веригата да консумира по-малко. Да, трябваше да направя малко запояване; запоих проводници с дупонове към клемите на потенциометрите.

Тестова скица

Взимаме тестовата скица от примерите от Arduino Studio - "C:\Program Files (x86)\Arduino\libraries\LiquidCrystal\ex amples\HelloWorld\HelloWorld.ino", просто трябва да променим контактите на нашите - LiquidCrystal lcd( 7, 6, 5, 4, 3, 2);

По принцип тази скица съдържа и описание какво къде да свържете. Можете да го свържете, както е посочено там, тогава не е необходимо да променяте нищо.

// включва кода на библиотеката: #include // инициализиране на библиотеката с номерата на интерфейсните пинове LiquidCrystal lcd(7, 6, 5, 4, 3, 2); void setup() ( // настройва броя на колоните и редовете на LCD дисплея: lcd.begin(16, 2); // Отпечатване на съобщение на LCD дисплея. lcd.print("hello, world!"); ) void loop() ( // настройва курсора на колона 0, ред 1 // (забележка: ред 1 е вторият ред, тъй като броенето започва с 0): lcd.setCursor(0, 1); // отпечатва броя на секунди след нулиране: lcd.print(millis() / 1000);

Оказва се нещо подобно:

Между другото, дисплеят, който дойде в ръцете ми, не работи без подсветка. Искам да кажа, работи, но почти не можете да видите нищо.

1602A Дисплейни контакти

# контакт Име Как да се свържете
1 VSS GND
2 VDD +5V
3 V0 Контраст - към средната клема на потенциометъра
4 RS (Избор на регистър) D7 Ардуино
5 R/W (четене или запис) GND
6 E (Разрешаване на сигнала) D6 Ардуино
7-14 D0-D7 D0-D3 - не е свързан; D4-D7 - свързан към щифтове D5-D2 на Arduino
15 А Анод за подсветка, свързан към +5V
16 К Катод за подсветка, свързан към маса чрез резистор 220 Ohm

Дисплеят с течни кристали (LCD), съкратено като LCD, се основава на технология с течни кристали. При проектирането на електронни устройства се нуждаем от евтино устройство за показване на информация и вторият също толкова важен фактор е наличието на готови библиотеки за Arduino. От всички налични LCD дисплеи на пазара, най-често използваният е LCD 1602A, който може да показва ASCII символи в 2 реда (16 знака в 1 ред), всеки символ в матрица 5x7 пиксела. В тази статия ще разгледаме основите на свързването на дисплей към Arduino.

Технически спецификации

Захранващо напрежение: 5 V
Размер на дисплея: 2.6 инча
Тип на дисплея: 2 реда x 16 знака
Цвят на подсветката: син
Цвят на символа: бял
Размери: 80 мм х 35 мм х 11 мм

Описание на дисплея

LCD 1602A е електронен модул, базиран на драйвера HD44780 от Hitachi. LCD1602 има 16 пина и може да работи в 4-битов режим (използвайки само 4 линии за данни) или 8-битов режим (използвайки всичките 8 линии за данни), той също може да се използва. В тази статия ще говоря за свързване в 4-битов режим.

Назначаване на контакт:
VSS: “-” модулно захранване
VDD: “+” модулно захранване
VO: щифт за контрол на контраста
RS: Избиране на регистър
RW: Изберете режим на запис или четене (когато е свързан към заземяване, настройте режим на запис)
E: Есенна врата
DB0-DB3: Интерфейсни битове
DB4-DB7: Интерфейсни битове
A: “+” мощност на подсветката
K: "-" мощност на подсветката

В предната част на модула има LCD дисплей и група контакти.

На гърба на модула има два чипа в дизайн "капка" (ST7066U и ST7065S) и електрическо окабеляване, не виждам смисъл да чертая електрическа схема, просто ще ви разкажа за резистора R8 (100 Ohm), който служи като ограничаващ резистор за LED подсветката, така че можете да свържете 5V директно към пин A. Малко по-късно ще напиша статия, в която ще ви кажа как можете да промените подсветката на LCD дисплей с помощта на PWB и транзистор.

Свързване на LCD 1602A към Arduino (4-битов режим)

Необходими части:
Arduino UNO R3 x 1 бр.
LCD дисплей 1602A (2×16, 5V, син) х 1 бр.
Тел DuPont, 2,54 mm, 20 cm, F-F (женски - женски) x 1 бр.
Потенциометър 10 kOhm х 1 бр.
Конектор PLS-16 x 1 бр.
Развойна платка MB-102 x 1 бр.
USB 2.0 A-B кабел х 1 бр.

Връзка:
За свързване ще използваме развойна платка; диаграмата и таблицата за свързване на LCD1602a към Arduino в 4-битов режим могат да се видят на фигурата по-долу.

Свързването на дисплея към макетната платка ще се извърши чрез PLS-16 пинове (те трябва да бъдат запоени към дисплея). Инсталирайте модула на дисплея в макетната платка и свържете захранването VDD (2-ри щифт) към 5V (Arduino) и VSS (1-ви щифт) към GND (Arduino), след което свържете RS (4-ти щифт) към цифров щифт 8 (Arduino). Заземете RW (5-ти щифт), като го свържете към GND (Arduino), след това свържете щифт E към щифт 8 (Arduino). За 4-битова връзка са необходими четири пина (DB4 до DB7). Свържете щифтове DB4 (11-ти щифт), DB5 (12-ти щифт), DB6 (13-ти щифт) и DB7 (14-ти щифт) към цифрови щифтове 4, 5, 6 и 7 на Arduino. 10K потенциометър се използва за регулиране на контраста на дисплея, диаграмата на свързване за LCD дисплеят 1602a е показан по-долу

Библиотеката вече е включена в Arduino IDE и не е необходимо да я инсталирате. Копирайте и поставете този примерен код в прозореца на програмата Arduino IDE и го заредете в контролера.

/* Тестването беше извършено на Arduino IDE 1.6.11 Дата на теста 20.09.2016 г. */ #включи LiquidCrystal lcd (8, 9, 4, 5, 6, 7); void setup() ( lcd.begin(16, 2); // Инициализира LCD 16x2 ) void loop() ( lcd.setCursor(0,0); // Задайте курсора на първия ред lcd.print("Здравей, свят"); // Отпечатване на текста lcd.setCursor(0,1); // Задаване на курсора на втория ред lcd.print("www.site"); // Отпечатване на текста)

Малко за програмата.
За да се улесни комуникацията между Arduino и LCD дисплея, се използва вградената библиотека в Arduino IDE " LiquidCrystal.h « - който е написан за използване на LCD дисплеи HD44780 (Hitachi) чипсет (или съвместими чипове). Тази библиотека може да работи както в 4-битов режим, така и в 8-битов режим на LCD връзка.

Купете от Aliexpress
Arduino UNO R3 контролер

Когато създавате свое собствено устройство, често има нужда от бързо показване на различна информация. Например, ако създавате интелигентен домашен контролер, тогава е разумно да оборудвате устройството с изходно устройство, което ви позволява бързо да разберете текущото състояние на системите. Най-доброто решение е течнокристален дисплей. Консумацията на енергия при изключена подсветка е минимална, а работата с дисплея е изключително лесна и не изисква много намеса в програмния код. Всъщност изходът на информация към LCD дисплея не се различава много от изхода към серийния порт. Статията обсъжда свързването на дисплей, генериращ символи, базиран на популярния чип HD44780, към контролер Arduino.

Как работи LCD текстов дисплей?

За да разберете някои от нюансите, е полезно да знаете как работи дисплей, генериращ знаци. Особеност на този тип дисплей е наличието на собствен контролер със собствена памет. DDRAM - дисплейна памет. За да покажете символ на екрана, трябва да заредите символа в клетка от паметта и след това да подадете команда за показване на клетката от паметта. По време на предаване знаците се кодират с помощта на ASCII кодове. Например, когато записвате код 0x31 в паметта, символът „ 1 " Съответствието на кода на символа с неговото показване на екрана (т.е. „картината“ на символа) се съхранява в CGROM паметта. CGROM е енергонезависима памет. Поради това дисплеят може да показва само онези знаци, които са „закрепени“ в контролера. Ето защо не всеки дисплей може да показва, например, руски знаци. Дисплеите, продавани в нашия магазин, за съжаление не са русифицирани. Има и CGRAM памет. Променливо е. Можем да създадем свои собствени символи и да ги покажем на дисплея. Струва си да се има предвид, че можете да създадете не повече от осем знака.

Цялата тази работа „под капака“ е важна само за разбирането на някои от нюансите. Има проста и ясна библиотека за Arduino, която върши цялата основна работа вместо вас, позволявайки ви да контролирате изхода на дисплея лесно и просто.

Свързване на LCD дисплей към Arduino

За да свържете дисплея, разбира се, трябва да го инсталирате на макет. Моля, обърнете внимание: дисплеите, продавани в нашия магазин, се продават без запоен щифтов конектор. Ако искате да получите дисплей веднага готов за инсталиране на макетна платка, поставете отметка в квадратчето „конектор за запояване“ на страницата на продукта и ние ще запоим конектора вместо вас. Прехвърлянето на данни към дисплея може да се организира по два начина: 4 или 8 бита наведнъж. Съответно ще ви трябват 4 или 8 пина Arduino. На практика няма да има увеличение на скоростта при използване на осем-битов интерфейс. Следователно са ни необходими само 4 цифрови пина за предаване на данни. Ще са необходими още 3 пина за настройка на режима на работа на дисплея. Общо, за да свържете дисплея, ще ви трябват само 7 цифрови изхода на контролера. Контактите на дисплея са обозначени, което ще ви помогне да избегнете объркване при свързване:

Номерираме заключенията отляво надясно:

  • 1-(VSS) Заземяване на дисплея. Свързва се към заземителната релса.
  • 2-(VDD) Захранване на дисплея. Свързва се към захранваща шина.
  • 3-(V.O.) Вход за потенциометър (включен). Контрастът на дисплея се регулира с потенциометър. Средният изход на потенциометъра е свързан към щифта на дисплея.
  • 4-(Р.С.) Вход на сигнал „Команда“. Свързва се към всеки цифров щифт на Arduino. В примера е свързан към щифт №12.
  • 5-(RW) Задава режим „четене“ или „запис“. Ще записваме. Свързваме контакта към земята.
  • 6-(д) Разрешете. Друг „команден“ изход. Когато единица е приложена към изхода, дисплеят изпълнява предварително предадената команда. Свързва се към всеки цифров изход. В примера е свързан към щифт №11.
  • 7-10 (D0-D3) оставяме го несвързан. Това са щифтовете за данни, които се използват в осем-битовия интерфейс. Не ни трябва.
  • 11-14 (D4-D7) Контакти за предаване на данни в четирибитов режим. Отново, те са свързани към всякакви цифрови изходи. В примера те са свързани съответно към щифтове 5, 4, 3 и 2 (D4 към пин 5, D5 към пин 4 и т.н.).
  • 15 (А) Подсветка LED анод. Резисторът за ограничаване на тока вече е инсталиран в дисплея, така че анодът просто се свързва към захранващата шина. Тъй като подсветката използва най-често срещания светодиод, можете да го свържете към всеки щифт, който го поддържа, и да контролирате яркостта на подсветката програмно.
  • 16 (К) Осветителен катод. Свързва се към заземителната релса.

Визуална схема на свързване:

Програмиране

Arduino IDE идва с отлична библиотека за дисплеи с течни кристали - LiquidCrystal. Библиотеката съдържа примери, които напълно разкриват възможностите на екрана. За да започнете, използвайте стандартния пример „HelloWorld“ (Файл -> Примери -> LiquidCrystal -> HelloWorld) или заредете следния код в дъската:

/* *RS щифт на дисплея към arduino пин 12 *Активиране на щифт на дисплея към arduino пин 11 *D4 щифт на дисплея към arduino пин 5 *D5 щифт на дисплея към arduino пин 4 *D6 щифт на дисплея към arduino пин 3 *D7 щифт на дисплея към arduino пин 2 *R/W изход на дисплея към земята *Изход на потенциометъра към VO изхода на дисплея */ // свържете библиотеката: #include ; // Инициализиране на дисплея // Изброяване на щифтовете на Arduino, към които // са свързани контактите на дисплея RS, E, D4, D5, D6, D7 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() ( // Посочете броя на колоните и редовете на дисплея: lcd.begin(16, 2); // Показване на съобщение на дисплея. lcd.print("hello, world!"); ) void loop() ( // задайте курсора на колона 0 (нула) на първия ред // всъщност курсорът ще бъде настроен на втория (долния) ред // номерирането на редове и колони започва от нула lcd.setCursor( 0, 1); // показва броя на секундите, които // са заредени: lcd.print(millis()/1000);

*RS щифт на дисплея към arduino щифт 12

*Активирайте щифта на дисплея към щифта на arduino 11

*D4 щифт на дисплея към щифт 5 на arduino

*D5 щифт на дисплея към щифт 4 на arduino

*D6 щифт на дисплея към щифт 3 на ардуино

*D7 щифт на дисплея към arduino щифт 2

*R/W изход на дисплея към маса

* Изход на потенциометъра към VO пин на дисплея

// свържете библиотеката:

#включи ;

// Инициализиране на дисплея

// Избройте щифтовете на Arduino, към които са свързани

// RS, E, D4, D5, D6, D7 щифтове на дисплея

void setup() (

// Посочете броя на колоните и редовете на дисплея:

lcd. начало (16, 2);

// Показване на съобщение на дисплея.

lcd. печат ("здравей, свят!");

void loop() (

// номерирането на редове и колони започва от нула

lcd. setCursor(0, 1);

// показване на броя секунди

// изминало от зареждането на дъската:

lcd. печат (милиси()/1000);

След като заредите този код в платката Arduino, екранът ще покаже „здравей, свят!“( Английски "Здравей свят!") на първия ред и таймер, отброяващ секундите на втория ред.

Както обикновено се случва, кодът е прост и разбираем. Все пак ще го анализираме по-подробно:

  • Течнокристален LCD(12, 11, 5, 4, 3, 2) - Този ред създава обект за показване, с който ще работим в бъдеще. В скоби номерата на пиновете, към които са свързани контактите на дисплея, се предават като аргументи. Съответно: RS, E, D4, D5, D6, D7. Както беше отбелязано по-горе, пиновете при свързване могат да бъдат избрани напълно произволно.
  • lcd.begin(16, 2) - тук конфигурирахме размерите на дисплея. Този пример има 16 колони и 2 реда. За нашия дисплей 20X4 този ред ще изглежда така: lcd.begin(20, 4).
  • lcd.печат(“Здравей, свят!”) - показва текст на дисплея. След задаване на размера на дисплея (lcd.begin), курсорът се позиционира в горния ляв ъгъл на дисплея. Следователно този текст ще се показва на първия (горния) ред вляво.
  • lcd.setCursor(0, 1) - поставя курсора на посочената позиция. В този случай се посочва най-лявата позиция на втория ред. Номерът на колоната се посочва в скоби, след това номерът на реда. И редовете, и колоните се номерират от позиция нула. Така: lcd.setCursor(0, 0) - ще постави курсора в горния ляв ъгъл, lcd.setCursor(15, 0) - в долния десен ъгъл.
  • lcd.печат(millis()/1000) - вече е описано по-горе. Тук вместо текст като параметър се предава формула за изчисление. Резултатът се показва на екрана.

Сега, след като се справихме с най-простия пример, можем да преминем към по-сложни примери. И ако вече разбирате всичко и сте готови да закупите LCD дисплей, тогава съм събрал за вас връзки към китайски продавачи на дисплеи, които съм проверил:

Характерни LCD дисплеи

Размер на дисплея (колони*редове)Цвят на подсветкатаСтатус
20*4 Синпроверени
20*4 Жълтопроверени
16*2 Синпроверени
16*2 Жълтопроверени
16*2 зеленопроверени

Преглед на други примери за библиотека LiquidCrystal

В стандартните примери, доставени с библиотеката LiquidCrystal, можете да намерите следните скици:

    • Автоматично превъртане- демонстрира възможност за автоматично превъртане на текст. Някаква пълзяща линия. Когато се покаже знак, предишните знаци се изместват. Така новият символ се показва на същото място.

    • Мигайте- демонстрира възможност за активиране на показването на мигащ курсор под формата на правоъгълник.

    • Курсор- демонстрира способността да активирате показването на курсор под формата на мигаща хоризонтална линия.

    • CustomCharacter- показва се възможността да създавате свои собствени символи, които да ги показвате на дисплея. Между другото, има грешка в тази скица. Подробности по-долу.

    • Дисплей- показва начин за "изключване" на дисплея. Тоест показване или скриване на показания текст.

    • Превъртете- демонстрира възможност за ръчно превъртане на текст.

    • SerialDisplay- показва на екрана текста, отпечатан в прозореца на монитора на порта (т.е. текста, предаван през серийния порт).
    • setCursor- изпълва дисплея с букви, демонстрирайки способността за поставяне на курсора на всяка позиция на екрана.
    • TextDirection- демонстрира способността да променя посоката на извеждане на текст (от дясно на ляво или от ляво на дясно).

Нека разгледаме по-подробно процедурите, чиито възможности са демонстрирани от тези примери:

lcd.autoscroll()

След като извикате тази процедура, текстът на екрана ще се превърта автоматично. За да спрете превъртането, обадете се lcd.noAutoscroll().

lcd.blink()

След извикване на процедурата, курсорът ще се появи като мигащ правоъгълник. За да деактивирате обаждането lcd.noBlink()

lcd.cursor()

След извикване на процедурата, курсорът ще се появи като мигаща хоризонтална линия. За да деактивирате обаждането lcd.noСursor(). Курсорът отново ще стане невидим.

lcd.createChar()

Процедурата зарежда знак, описан като масив от байтове, в таблицата със символи на променлив екран (CGRAM памет). Аргументът е номерът на символа и масив от байтове, описващ символа. Нека разгледаме това по-подробно. Можете да въведете максимум осем знака в паметта на дисплея. За да добавите свой собствен символ, трябва:

  1. Създайте масив от байтове, описващ знака.
  2. Запишете символ в паметта на дисплея, като му присвоите номер в таблицата със символи. Знаците са номерирани в диапазона от нула до седем.
  3. Покажете знак на екрана, като използвате процедурата lcd.write()(да не се бърка с lcd.print()), като аргумент на който се предава номерът на символа.

Грешка в средата за разработка и характеристиките на библиотеката доведе до невъзможност за показване на символ номер 0 (нула). Когато компилаторът срещне реда lcd.write(0), той ще изведе грешка: “ извикването на претоварен ‘write(int)’ е двусмислено". Това е точно редът, който се появява в примера CustomCharacterбиблиотеки. Когато се опитате да компилирате стандартния пример, ще получите грешка:

CustomCharacter.ino: Във функцията 'void setup()': CustomCharacter:115: грешка: извикването на претоварен 'write(int)' е двусмислено /home/nazarovd/arduino-1.0.5/libraries/LiquidCrystal/LiquidCrystal.h:82 : забележка: кандидатите са: virtual size_t LiquidCrystal::write(uint8_t) /home/nazarovd/arduino-1.0.5/hardware/arduino/cores/arduino/Print.h:49: забележка: size_t Print::write(const char *)

CustomCharacter. ino : Във функцията 'void setup()':

CustomCharacter: 115: грешка: извикването на претоварен ‘write (int)’ е двусмислено

/home/nazarovd/arduino - 1.0.5/libraries/LiquidCrystal/LiquidCrystal. h : 82 : забележка : кандидатите са : virtual size_t LiquidCrystal :: write (uint8_t )

/home/nazarovd/arduino - 1.0.5/хардуер/arduino/ядра/arduino/Печат. h : 49 : note : size_t Print :: write (const char * )

За да коригирате грешката, просто променете реда lcd.write( 0 ) към lcd.write( (байт) 0).
Сега малък пример за създаване на ваш собствен символ. Нека покажем символа на рублата.

// Включете библиотеката #include ; // Инициализиране на дисплея LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Опишете нашия символ. // Просто „начертаваме“ символа с единици // Когато се показват на екрана, единиците ще се показват като запълнени точки, нулите ще бъдат незапълнени байт rubl = ( 0b00000, 0b01110, 0b01001, 0b01001, 0b01110, 0b01000, 0b11110, 0b01000, ); void setup() ( // записваме нашия символ в паметта на екрана // предаваме номера на символа // и байтов масив, описващ нашия знак като аргументи lcd.createChar(0, rubl); // настройваме дисплея lcd.begin( 16, 2);) void loop() ( // задаване на курсора в горния ляв ъгъл на екрана lcd.setCursor(0,0); // показване на знак нула на екрана lcd.write((byte)0 ); // не прави нищо за 10 секунди закъснение (10000);

// Включете библиотеката

#включи ;

// Инициализиране на дисплея

LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

Ново в сайта

>

Най - известен