Připojení textové obrazovky k Arduinu. Arduino a znakový LCD displej

Existuje velké množství různých textů, nebo, jak se jim také říká, obrazovky z tekutých krystalů syntetizující znaky. Nejběžnější displeje jsou založeny na čipech HD44780 od Hitachi, KS0066 od Samsungu nebo s nimi kompatibilní. Pro práci s takovými obrazovkami existuje standardní knihovna Arduino Liquid Crystal.

Mezi takové displeje patří zejména textové obrazovky od společnosti Melt. Tento článek podrobně popisuje schéma zapojení pro tuto obrazovku, ale je také vhodné pro mnoho dalších textových zobrazení.

Článek popisuje obecné principy. Můžete přejít na podrobný popis vašeho displeje:

Požadované komponenty

Spojení

Připojte obrazovku k prkénku a připojte napájení +5 V a uzemnění z Arduina k napájecím kolejnicím propojovacího panelu.

Sílu a přistání budete potřebovat více než jednou, takže je pohodlnější je hodit na koleje.

Zapněte podsvícení

Podsvícení displeje je samostatný okruh, který není propojen se zbytkem. Můžete jej zapnout přivedením +5 V na 15. pin displeje a připojením 16. pinu k zemi. Připojením těchto dvou kolíků k odpovídajícím kolejnicím můžete zapnout Arduino a vidět rozsvícení displeje.

Vezměte prosím na vědomí, že u některých modelů není číslování kontaktů pouze zprava doleva od prvního do šestnáctého, ale poněkud mazanější. Takže například na obrazovce 16×2 od společnosti Melt je první kontakt fyzicky umístěn na 14. pozici, druhý na 13. a tak dále zprava doleva až po 14. na první pozici a 15. resp. 16. jsou umístěny vpravo. Číslování v blízkosti kontaktů na displeji vám pomůže vyhnout se nejasnostem.

Zapnutí napájení znakového syntezátoru

    První je země. Připojte jej k zemnicí liště.

    Druhým je výživa. Připojte jej k +5V liště.

    Třetí je kontrast. Pro maximální kontrast jej připojte k zemnicí liště. Na tento kontakt můžete přivést libovolné napětí od 0 do 5 V, čím vyšší, tím slabší bude obraz, ale zároveň se sníží spotřeba. Abyste mohli plynule nastavit kontrast, můžete na tento kontakt přivést výstupní signál potenciometru.

Po připojení, pokud zapnete Arduino, můžete vidět obdélníkové známé prostory. V závislosti na kombinaci barev textu a podsvícení mohou být buď jasné a jasně viditelné, nebo sotva znatelné. To je normální: v každém případě bude text vypadat skvěle.

Připojení datové sběrnice

Pro komunikaci mezi Arduinem a obrazovkou je nutné použít několik komunikačních linek:

    2 nebo 3 pro příkazový displej

    4 nebo 8 pro přenos dat (znakové kódy a příkazy)

Obsazeno tak bude 6 až 11 kontaktů z obou zařízení. Pokud nepotřebujete číst z displeje, který vyhovuje většině scénářů použití, budou příkazy vyžadovat 2 řádky.

Pokud také není problém s rychlostí aktualizace dat, stačí k přenosu dat 4 linky.

Pro připojení displeje tedy stačí na Arduinu použít 6 linek, 6 pinů. Podívejme se na tento konkrétní scénář.

Jak bylo zmíněno, z displeje nemáme co číst, budeme na něj pouze zapisovat. Proto připojíme 5. pin displeje, který zodpovídá za volbu čtení/zápisu, k zemnicí liště. To znamená „vždy psát“.

Poté propojíme Arduino a obrazovku s našimi 6 komunikačními linkami. Nezáleží na tom, které kontakty budou na Arduinu vybrány: uvedeme je v programu, ale pro příklad jsme zvolili následující konfiguraci:

    Pin 6 displeje je Arduino pin 5. Toto je řádek oprávnění k přístupu k datům. Známý jako E nebo Enable. Když se tento řádek změní na jedničku, displej provede příkaz nebo vypíše znak z datového řádku.

    11., 12., 13., 14. pin displeje jsou 10., 11., 12., 13. pin Arduina. Jedná se o datové linky. Známý jako DB4, DB5, DB6, DB7.

Obrazovka je připojena a připravena přijímat data. Zbývá jen napsat program pro Arduino.

Programování

Pro výstup textu z Arduina je nejpohodlnější použít vestavěnou knihovnu Liquid Crystal. Chcete-li zobrazit pozdrav a časovač, použijte kód takto:

Hello.pde #include lcd.begin(16, 2); // vytiskne první řádek lcd.print("Ahoj světe!"); // umístěte kurzor do sloupce 0, řádek 1. Tedy na // toto je vlastně druhý řádek, protože číslování začíná od nuly lcd.setCursor(0, 1); // vytiskne druhý řádek lcd.print ("foo bar baz" ) ;

) void loop() ( )

Vše je docela jednoduché a mělo by to být jasné z komentářů.

Informace v této části platí konkrétně pro displeje od společnosti Melt. Je nepravděpodobné, že by čínské a evropské protějšky měly ve znakové sadě azbuku, podívejte se prosím na dokumentaci k displeji, kde se o tom dozvíte více.

Tisk ruských písmen není úplně triviální: nemůžete jen tak napsat lcd.print("Vasya") . To souvisí s konceptem kódování. Víte, že každý znak má odpovídající kód a při kompilaci programu, pokud řetězec obsahuje azbuku, bude převeden na kódy pomocí utf-8, cp-1251 nebo nějaké jiné tabulky, v závislosti na nastavení kompilátoru. Obrazovka zase očekává, že uvidí data ve svém vlastním kódování.

Například písmeno „I“ odpovídá kódu B1 v šestnáctkové soustavě. Chcete-li přenést řetězec „Yandex“ na obrazovku, musíte do řetězce explicitně vložit kód znaku pomocí sekvence \x##:

Lcd.print(" \xB1 ndex") ;

Můžete kombinovat běžné znaky a explicitní kódy v jednom řádku, jak chcete. Jedinou výhradou je, že poté, co kompilátor uvidí sekvenci \x v řádku, přečte všechny znaky za ní, které mohou být číslicemi šestnáctkové soustavy, i když jich je více než dva. Z tohoto důvodu nemůžete jednoduše použít znaky v rozsahu 0-9, a-f po dvoumístném znakovém kódu: to způsobí chybu kompilace. Abyste tento bod obešli, můžete využít toho, že dva řádky napsané vedle sebe jsou slepené. Takže pokud chcete napsat "Yeee":

Lcd.print(" \xB1 eee"); // chyba lcd.print("\xB1"

"eee");

// Správně Například pro napsání „Pozdrav z Amperky“ byl použit kód: cyrillic.pde #include LiquidCrystal lcd(4, 5, 10, 11, 12, 13); void setup() ( lcd.begin(16, 2) ; lcd.print("\xA8 p\xB8 \xB3 " "E\xBF" ); lcd.setCursor(0, 1);

lcd.print(" o

\xBF A\xBC \xBE "

"ep

\xBA\xB8"

); ) void loop() ( ) Přepínání stránek generátoru znaků Zobrazovací modul ukládá do paměti dvě stránky generátoru znaků. Výchozí hodnota je stránka nula. Pro přepnutí stránky použijte metodu command(0x101010) a naopak - command(0x101000). Displej nemůže zobrazovat znaky z různých stránek současně.// RS, E, DB4, DB5, DB6, DB7 LiquidCrystal lcd(4, 5, 10, 11, 12, 13); void setup() (// nastavení velikosti (počet sloupců a řádků) obrazovky lcd.begin(16, 2);) void loop() ( // vytiskne první řádek// nastavte stránku generátoru znaků na 0 (toto je výchozí) lcd.command(0b101000); lcd.print(" \x9b \x9c \x9d \x9e \x9f "); // čekání 1 sekunda zpoždění(1000 ) ;// instalace stránky generátoru 1 znaků

lcd.command(0b101010); // čekání 1 sekunda zpoždění(1000 ) ;// vymazání displeje lcd.clear();)

Během své vášně pro elektroniku jsem měl možnost používat LCD od několika výrobců -

DataVision, WINSTAR, Uniworld Technology Corp
. Lišily se typem ovladače, počtem pinů a délkou linek, ale všechny měly stejné schéma zapojení, příkazový systém a byly obsluhovány stejným programem z mikrokontroléru. Proto, i když teď budeme mluvit o displeji

WH0802A od společnosti WINSTAR

, vše níže uvedené platí pro znakové LCD displeje jiných společností.

Takže připojíme displej WH0802A-YGH-CT k mikrokontroléru

WH0802A je dvouřádkový znakový displej pro 8 znaků s vestavěným řídicím ovladačem KS0066.

Podívejme se na účel pinů displeje.

Některé displeje mají dva další kolíky – podsvícení +LED a –LED. Navíc, pokud existují závěry, neznamená to, že existuje podsvícení. Stejně tak i naopak. Můj displej má podsvícení, ale žádné ovládací kolíky.

Zápisový cyklus pro 8bitovou sběrnici vypadá takto:
1. Nastavte RS (0 - příkaz, 1 - data)
2. Odešlete hodnotu datového bytu na sběrnici DB7…DB0
3. Nastavte E=1
4. Zpoždění softwaru 1
5. Nastavte E=0
6. Zpoždění softwaru 2

Řadič LCD znakového zobrazení není nekonečně rychlý, takže se mezi některými operacemi používají softwarové prodlevy. První je potřeba k udržení stroboskopického signálu po nějakou dobu, druhý proto, aby řadič měl čas zapsat data nebo provést příkaz. Hodnoty zpoždění jsou vždy uvedeny v popisu ovladače displeje a vždy musíte dodržet alespoň jejich minimální hodnotu, jinak jsou nevyhnutelné poruchy v činnosti ovladače.

Obecně má řadič displeje tzv. busy flag - BF. Pokud je příznak 1, ovladač je zaneprázdněn, pokud je 0, je volný. Místo druhého softwarového zpoždění si můžete přečíst příznak obsazenosti a zkontrolovat, kdy je řadič displeje volný. Protože ale chceme rychle získat první výsledky, budeme se s příznakem obsazenosti zabývat později.

//připojení znakového LCD displeje k AVR
#zahrnout
#zahrnout

//port, ke kterému je připojena datová sběrnice LCD
#define PORT_DATA PORTD
#define PIN_DATA PIND
#define DDRX_DATA DDRD

//port, ke kterému jsou připojeny ovládací piny
#define PORT_SIG PORTB
#define PIN_SIG PINB
#define DDRX_SIG DDRB

//čísla pinů mikrokontroléru
//ke kterému jsou připojeny ovládací piny LCD
#define RS 5
#definujte RW 6
#define CS 7

//makra pro práci s bity
#define ClearBit(reg, bit) reg &= (~(1<<(bit)))
#define SetBit(reg, bit) reg |= (1<<(bit))

#define F_CPU 8000000
#define_delay_us(us) __delay_cycles((F_CPU / 1000000) * (us));
#define_delay_ms(ms) __delay_cycles((F_CPU / 1000) * (ms));

//funkce nahrávání příkazů
prázdnota LcdWriteCom( nepodepsaný char data)
{
ClearBit(PORT_SIG, RS); // nastavte RS na 0
PORT_DATA = data; // výstup dat na sběrnici
SetBit(PORT_SIG, EN); // nastavte E na 1
_delay_us(2);
ClearBit(PORT_SIG, EN); // nastavte E na 0
_delay_us(40);

//funkce záznamu dat

prázdnota LcdWriteData( nepodepsaný char data)
{
SetBit(PORT_SIG, RS); //nastavíme RS na 1
PORT_DATA = data; //výstup dat na sběrnici
SetBit(PORT_SIG, EN); //nastav E na 1
_delay_us(2);

ClearBit(PORT_SIG, EN); // nastavte E na 0

Delay_us(40);
}

int hlavní( prázdnota )
{
zatímco (1);
návrat 0;
}

Nejsou zde žádné složité části, vše by mělo být jasné. Jdeme dál.

Jakýkoli LCD displej musí být před použitím inicializován. Proces inicializace je obvykle popsán v datovém listu pro řadič displeje. Ale i když tam žádné informace nejsou, sekvence bude s největší pravděpodobností taková.

1. Podávejte jídlo

2. Počkejte >40 ms

3. Zadejte příkaz Function set

D.L.– bit nastavení šířky sběrnice
0 – 4 bitová sběrnice, 1 – 8 bitová sběrnice

N– bit pro nastavení počtu řádků displeje
0 – jednořádkový režim, 1 – dvouřádkový režim

F– bit nastavení písma
Formát 0 – 5*8, formát 1 – 5*11

* - nezáleží na tom, co bude v těchto kouscích

4. Zadejte příkaz ZAP/VYP displeje

D– bit zapnutí/vypnutí displeje
0 – displej vypnutý, 1 – displej zapnutý

C– bit zapnutí/vypnutí kurzoru
0 – kurzor zakázán, 1 – kurzor povolen

B– bit aktivace blikání
0 – blikající kurzor povolen, 1 – blikající kurzor zakázán

5. Zadejte příkaz Vymazat displej


6. Počkejte > 1,5 ms

7. Zadejte příkaz Entry Mode Set

I/D– pořadí zvyšování/snižování adresy DDRAM (zobrazit data RAM)
0 – kurzor se posune doleva, adresa se sníží o 1, 1 – kurzor se posune doprava, adresa se zvýší o 1

SH– pořadí posunu celého displeje
0 – žádný posun, 1 – posun nastane podle I/D signálu – pokud je jeden 0 – zobrazení se posune doprava, 1 – zobrazení se posune doleva

V našem příkladu bude inicializační funkce vypadat takto

LCD displeje o rozměrech 1602, založené na řadiči HD44780, jsou jedním z nejjednodušších, cenově nejdostupnějších a nejoblíbenějších displejů pro vývoj různých elektronických zařízení. Nachází se jak v zařízeních sestavených na koleně, tak v průmyslových zařízeních, jako jsou například kávovary. Nejoblíbenější moduly a štíty s tematikou Arduina, jako jsou a jsou shromažďovány na základě tohoto displeje.

V tomto článku vám řekneme, jak jej připojit k Arduinu a zobrazovat informace.

Použité komponenty (koupit v Číně):

. Řídicí deska

. Spojovací vodiče

Tyto displeje mají dvě provedení: žluté podsvícení s černými písmeny nebo, což je častější, modré podsvícení s bílými písmeny.

Velikost displejů na ovladači HD44780 může být různá, ale budou se ovládat stejně. Nejběžnější rozměry jsou 16x02 (tj. 16 znaků ve dvou řádcích) nebo 20x04. Rozlišení samotných symbolů je 5x8 pixelů.

Většina displejů azbuku nepodporuje, mají ji pouze displeje označené CTK. Tento problém se ale můžeme pokusit částečně vyřešit (pokračování v článku).

Zobrazení výstupů:

Displej má pro připojení 16pinový konektor. Kolíky jsou označeny na zadní straně desky.

1 (VSS) - Napájení ovladače (-)
2 (VDD) - Napájení ovladače (+)
3 (VO) - Kontrolní kolík kontrastu
4 (RS) - Výběr registru
5 (R/W) - čtení/zápis (režim zápisu při připojení k zemi)
6 (E) - Povolit (stroboskop při poklesu)
7-10 (DB0-DB3) - Bity nižšího řádu 8bitového rozhraní
11-14 (DB4-DB7) - Bity vyššího řádu rozhraní
15 (A) - Anodový (+) zdroj podsvícení
16 (K) - Katodový (-) zdroj podsvícení

Režim autotestu:

Před pokusem o připojení a výstup informací by bylo dobré vědět, zda displej funguje nebo ne. Chcete-li to provést, musíte přivést napětí na samotný ovladač ( VSS a VDD), zapněte podsvícení ( A a K) a také upravte kontrast.

Pro nastavení kontrastu použijte potenciometr 10 kOhm. Je jedno, jaký bude mít tvar. Na vnější nohy je přivedeno +5V a GND, centrální noha je připojena k výstupu V.O.

Po připojení napájení do obvodu je nutné dosáhnout správného kontrastu, pokud není správně nastaven, na obrazovce se nic nezobrazí. Pro nastavení kontrastu byste si měli pohrát s potenciometrem.

Pokud je obvod správně sestaven a kontrast je správně nastaven, horní řádek by měl být vyplněn obdélníky na obrazovce.

Informační výstup:

K ovládání displeje se používá knihovna LiquidCrystal.h zabudovaná do Arduino IDE.

Funkce knihovny

//Práce s kurzorem lcd.setCursor(0, 0); // Nastavení kurzoru (číslo buňky, řádek) lcd.home(); // Nastavte kurzor na nulu (0, 0) lcd.cursor(); // Povolit viditelnost kurzoru (podtržení) lcd.noCursor(); // Odebrat viditelnost kurzoru (podtržení) lcd.blink(); // Povolit blikání kurzoru (kurzor 5x8) lcd.noBlink(); // Vypnout blikání kurzoru (kurzor 5x8) //Výstupní informace lcd.print("site"); // Výstupní informace lcd.clear(); // Vymazat displej, (smazat všechna data) nastavit kurzor na nulu lcd.rightToLeft(); // Nahrávání se provádí zprava doleva lcd.leftToRight(); // Zápis se provádí zleva doprava lcd.scrollDisplayRight(); // Posune vše na displeji o jeden znak doprava lcd.scrollDisplayLeft(); // Posune vše na displeji o jeden znak doleva //Informace užitečné pro špiony :) lcd.noDisplay(); // Informace na displeji se stanou neviditelnými, data se nevymažou // pokud se v okamžiku, kdy je tato funkce aktivní, nic nezobrazuje, tak lcd.display(); // Při volání funkce display() všechny informace, které byly

Samotný displej může pracovat ve dvou režimech:

8bitový režim – k tomu se používají nízké i vysoké bity (BB0-DB7)

4bitový režim – k tomu se používají pouze nejméně významné bity (BB4-DB7)

Použití 8bitového režimu na tomto displeji se nedoporučuje. Jeho provoz vyžaduje 4 další nohy a prakticky nedochází k žádnému nárůstu rychlosti, protože Obnovovací frekvence tohoto displeje je omezená< 10раз в секунду.

Pro výstup textu je potřeba propojit piny RS, E, DB4, DB5, DB6, DB7 s piny řadiče. Mohou být připojeny k libovolným pinům Arduina, hlavní je nastavit správnou sekvenci v kódu.

Ukázkový kód:

//Testováno na Arduino IDE 1.0.5 Přepínání stránek generátoru znaků // Přidejte požadovanou knihovnu LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) prázdnota nastavení()(lcd.begin(16, 2); // Nastavení velikosti obrazovky lcd.setCursor(0, 0); // Nastaví kurzor na začátek 1 řádku lcd.print("Ahoj světe!"); // Zobrazení textu lcd.setCursor (0, 1); // Nastavte kurzor na začátek řádku 2 lcd.print("site"); // Výstupní text ) void smyčka (){ }

Vytvořte si vlastní symboly

Textový výstup jsme vytřídili, písmena anglické abecedy jsou napevno zabudována do paměti ovladače uvnitř displeje a nejsou s nimi žádné problémy. Co ale dělat, když požadovaný symbol není v paměti ovladače?

LCD displeje 1602 velikostí, vytvořené na základě řadiče HD44780, dnes stále zůstávají jedním z nejdostupnějších, nejjednodušších a nejžádanějších pro vývoj jakéhokoli druhu elektronických zařízení. Není divu, že je lze vidět jak v jednoduchých jednotkách sestavených doslova na koleně, tak ve vážnějších průmyslových, například kávovarech. Právě s tímto displejem jsou sestaveny nejoblíbenější moduly a štíty související s Arduino, například modul LCD I2C a štít LCD klávesnice.

Tento článek podrobně vysvětluje pomocí obrázků, jak připojit LCD k Arduinu a zobrazit informace.

Má 1602 displejů dvě různé verze:

Žluté podsvícení s černými písmeny
- nebo (to se stává mnohem častěji) modré podsvícení s bílými.

Velikost displejů na ovladači HD44780 se velmi liší, ale ovládají se stejným způsobem. Nejběžnější rozměry jsou 16 x 02 (tedy 16 znaků ve dvou řádcích) nebo 20 x 04. Samotné znaky mají rozlišení 5 x 8 pixelů.

Většina displejů nepodporuje azbuku (s výjimkou displejů s označením CTK). Ale tento problém je částečně řešitelný a článek dále podrobně popisuje, jak to udělat.

Displej má pro připojení 16-PIN konektor. Závěry mají označení na zadní straně desky, je to takto:

1 (VSS) – záporné napájení regulátoru.
2 (VDD) – kladné napájení regulátoru.
3 (VO) – nastavení ovládání kontrastu.
4 (RS) – výběr registru.
5 (R/W) – čtení a zápis, zejména zápis při spojení se zemí.
6 (E) – aktivace (povolit).
7–10 (DB0-DB3) – bity nižšího řádu z osmibitového rozhraní.
11–14 (DB4-DB7) – nejvýznamnější bity z rozhraní
15 (A) – kladná anoda pro napájení podsvícení.
16 (K) – záporná katoda pro napájení podsvícení.

Krok 2: Připojte LCD displej

Před připojením displeje a přenosem informací na něj se vyplatí zkontrolovat jeho funkčnost. Nejprve zapojte napětí do ovladače VSS a VDD, zapněte podsvícení (A, K) a poté upravte kontrast. Pro takové nastavení je vhodný potenciometr 10 kOhm, jeho tvar není důležitý. K vnějším nohám je přivedeno +5V a GND a středová noha je připojena ke kolíku VO.

Když je obvod napájen, musíte dosáhnout potřebného kontrastu, pokud je nastaven nesprávně, obraz na obrazovce nebude viditelný. Pro nastavení kontrastu si musíte „pohrát“ s potenciometrem. Když je obvod správně sestaven a kontrast je správně nastaven, horní řádek na obrazovce by měl být vyplněn obdélníky.

Aby displej fungoval, slouží speciální knihovna LiquidCrystal.h zabudovaná v Arduino IDE, o které budu psát níže. Může pracovat v 8bitovém a 4bitovém režimu. V první možnosti se používají pouze nejméně významné a významné bity (BB0-DB7), ve druhé - pouze nejméně významné (BB4-DB7).

Ale použití 8bitového režimu v tomto zobrazení je špatné rozhodnutí, neexistuje téměř žádná rychlostní výhoda, protože obnovovací frekvence je vždy nižší než 10krát za sekundu. Pro zobrazení textu je potřeba propojit piny DB7, DB6, DB5, DB4, E a RS s piny řadiče. Mohou být připojeny k libovolným pinům Arduina, hlavní je nastavit správnou sekvenci v kódu.

Pokud požadovaný symbol ještě není v paměti ovladače, můžete jej definovat ručně (celkem až sedm symbolů). Buňka v uvažovaných displejích má rozšíření pět na osm pixelů. Úkolem vytvoření symbolu je napsat bitovou masku a umístit jedničky na místa, kde mají svítit tečky, a nuly tam, kde nemají.

Výše uvedené schéma zapojení není vždy dobré, protože na Arduinu je použito alespoň šest digitálních výstupů.

Krok 3: Řešení

Pojďme prozkoumat možnost, jak to obejít a vystačit si pouze se dvěma. Potřebujeme přídavný modul převodníku pro LCD na IIC/I2C. Jak je připájen k displeji a připojen k Arduinu je vidět na obrázcích níže.

Tato možnost připojení ale funguje pouze se speciální knihovnou LiquidCrystal_I2C1602V1, kterou však lze snadno najít na internetu a nainstalovat, poté ji můžete bez problémů používat.

Krok 4: Knihovna LiquidCrystal.h

Knihovnu LiquidCrystal.h lze stáhnout z oficiálního zdroje -. Stahovat můžete také z níže uvedených odkazů:

Skica

Jakmile si stáhnete archiv, nahraďte složku LiquidCrystal ve složce libraries v instalačním adresáři Arduina.

Ukázku skicu můžete vidět v Soubor -> Příklady -> LiquidCrystal -> HelloWorld_SPI(Soubor -> Příklady -> LiquidCrystal -> HelloWorld_SPI).

Tím naše další lekce končí. Přejeme kvalitní projekty!

Jak propojit Arduino desku se znakovým displejem? Docela jednoduché! Vše níže v pořádku a s detaily.

Pokud chcete přijímat informace z Arduina bez připojení k počítači a jejich výstupu na sériový port, můžete použít znakový displej. Není to tak těžké udělat. Pohodlí získané komunikací je neocenitelné.
Pro práci jsem používal znakový LCD displej J204A založený na čipu HD44780, který se na eBay často vyskytuje jako LCD2004. 4 řádky po 20 znacích, převrácené. Koupeno se spoustou dalších na eBay, za pouhé haléře, od 60 do 100 rublů za kus. Ruský jazyk není standardně podporován, ale to je řešitelný problém, o tom příště. A konektory ve schématu nejsou pájené, budete muset pracovat s páječkou.
Knihovna slouží k práci s displeji LiquidCrystal.h součástí výchozího Arduino IDE.

Ale nenašel jsem datový list pro displej LCD2004, ale internet je plný zobrazovacích tabulek. Ale prakticky se od sebe neliší. Ovládání a zapojení jsou zcela totožné. Jediný rozdíl je v počtu řádků/znaků na displeji. Ale to nebude mít absolutně žádný vliv, pokud máte 1602.

Všechny kontakty jsou definovány v tabulce. Pokud vezmete displej a otočíte jej směrem k sobě, kontakty budou umístěny zleva doprava, v tabulce jsou seřazeny podle rostoucích čísel. Ve sloupci kontakty je v závorce uvedeno označení v datovém listu.

# Kontakty K čemu se používá? Poznámka
1 VSS (VSS) GND. Země. Napájecí zdroj pro mikrokontrolér displeje. 0V
2 VDD(VCC) Napájecí napětí pro mikrokontrolér displeje. +5V
3 V0 (VEE) Kontrast znaků na displeji. Lepší je připojení přes potenciometr. od 0V do +5V
4 RS (RS) Výběr registrace.
5 RW (R/W) Přepínání režimu čtení/zápisu. Přitáhneme k zemi, potřebujeme pouze přenášet informace na displej. 0-zápis +5V-čtení
6 E Hodiny
7 D0 (DB0) Data
8 D1 (DB1) Přenos dat. (nepoužijeme) Data
9 D2 (DB2) Přenos dat. (nepoužijeme) Data
10 D3 (DB3) Přenos dat. (nepoužijeme) Data
11 D4 (DB4) Data
12 D5 (DB5) Přenos dat. (Aktivováno) Data
13 D6 (DB6) Přenos dat. (Aktivováno) Data
14 D7 (DB7) Přenos dat. (Aktivováno) Data
15 A (LED+) +5V napětí, podsvícení displeje, jas displeje lze nastavit pomocí potenciometru. +5V
16 K (LED-) GND Ground, podsvícení displeje 0V

proti

Přenos dat na displej je možný ve dvou variantách: 8 a 4 bity na takt. Protože Arduino má málo kontaktů, my použijeme 4 - to je více než dost pro aktualizaci informací na displeji rychlostí, která je pro vnímání nepřípustná.

Takhle se mi to celé pojí. Může se to zdát jako chaos, ale existuje zde systém. Můžete rozlišit červené, zelené, žluté a oranžové dráty. Červené jdou vždy na +5V, zelené na GND a žluté a oranžové jsou vodiče pro připojení k Arduinu, které nesou data.

Nejdůležitější částí je fyzické připojení displeje. Kliknutím se otevře ve vysokém rozlišení, kde je vše jasně vidět.
R1 - odpor 200OM. Odpor omezuje proud procházející podsvícením displeje.
R2 - Potenciometr s odporem do 10kOM. Otáčíme perem a volíme kontrast symbolů.


A extrémně jednoduchý náčrt pro zobrazení několika řádků na obrazovce.

H> // Připojíme knihovnu pro práci s displejem. /* příkaz LiquidCrystal lcd(rs, povolit, d4, d5, d6, d7); Vytvoříme proměnnou typu LiquidCrystal a určíme, přes které kontakty Arduino pracuje s displejem. více podrobností o tomto příkazu zde http://arduino.cc/en/Reference/LiquidCrystalConstructor */ LiquidCrystal lcd(6, 7, 8, 9, 10, 11); void setup() ( lcd.begin(20, 4); // určení vlastností displeje (20 znaků na řádek, 4 řádky) // Pro displej 1602 je třeba zadat lcd.begin(16, 2); lcd .setCursor(1, 1) // Určete, od které pozice se má začít zobrazovat text Řádky a znaky začínají od 0!!! řádek níže lcd.print("compblog.vlukyanov" ); // tisk textu od zadané pozice lcd.setCursor(7, 2) // tisk od 8. znaku na obrazovce lcd.print(.com); "); // text, který se má vytisknout. loop() ( // ve smyčce neděláme nic jiného; vše již bylo provedeno během inicializace desky. )

Výsledek. Pokud víte, jak se to všechno propojuje a jak napsat kód, pak je čas na veškerou práci 5 minut.

Některé funkce může displej vykonávat i samostatně a je možné nastavit i některé parametry.

Například:

  • rolování textu;
  • pozice flash kurzoru;
  • Zapnout/vypnout.

A teď k bonusu!
Podsvícení displeje plýtvá energií, kterou byste například při napájení z baterie rádi ušetřili. Tuto možnost jsem si udělal pro sebe – po stisknutí tlačítka se na 5 sekund rozsvítí podsvícení displeje.

H> // Připojíme knihovnu pro práci s displejem. tlačítko intInt = 0; // Číslo přerušení, které bude voláno. int screenLed = 4; // Číslo pinu, ke kterému je obrazovka připojena. +5V těkavé dlouhé x = 5000; // proměnná pro uložení času LiquidCrystal lcd(6, 7, 8, 9, 10, 11); void setup connect() (Interrupt(buttonInt, screenon, FALLING); // parametry přerušení lcd.begin(20, 4); pinMode(screenLed, OUTPUT); digitalWrite(screenLed,HIGH); // zapnutí LCD displeje. setCursor(0 , 0); lcd.print("Spustit test obrazovky!"); void screenon() ( x = millis()+5000; // Zapamatujte si čas, kdy potřebujete vypnout podsvícení. Aktuální provozní doba +5 sekund. digitalWrite(screenLed,HIGH); // Přiveďte napětí na podsvícení displeje. ) void loop() ( lcd.setCursor(0, 2); // přejděte na třetí řádek lcd.print(x); // a zobrazí se čas, kdy se displej vypne lcd.setCursor(0, 3); / / přejděte na čtvrtý řádek lcd.print( millis() // vytiskne aktuální provozní dobu if (x< millis()) // если время работы выключения наступило >( digitalWrite(screenLed,LOW); // pak vypněte displej))

A výsledek:




Nahoru