Domov sieťový hardvér Pripojenie LSD displeja. Charakter LCD a Arduino

Pripojenie LSD displeja. Charakter LCD a Arduino

Ako pripojiť dosku Arduino so znakovým displejom? Celkom jednoduché! Nižšie je všetko v poriadku a s podrobnosťami.

Ak chcete prijímať informácie z Arduina bez pripojenia k počítaču a ich výstupu na sériový port, môžete použiť znakový displej. Nie je to také ťažké. Pohodlie získané z komunikácie je neoceniteľné.
Na prácu som používal znakový LCD displej J204A založený na čipe HD44780, ktorý sa často nachádza na eBay ako LCD2004. 4 riadky po 20 znakov, prevrátené. Kúpené s množstvom ďalších na eBay, len za centy, od 60 do 100 rubľov za kus. Ruský jazyk nie je štandardne podporovaný, ale ide o riešiteľný problém, o tom nabudúce. A konektory v schéme nie sú spájkované, budete musieť pracovať s spájkovačkou.
Knižnica slúži na prácu s displejmi LiquidCrystal.h zahrnuté v predvolenom Arduino IDE.

Ale nenašiel som datasheet pre LCD2004 displej, ale internet je plný zobrazovacích tabuliek. Ale prakticky sa navzájom nelíšia. Ovládanie a pripojenia sú úplne identické. Jediný rozdiel je v počte riadkov/znakov na displeji. Ale toto nebude mať absolútne žiadny vplyv, ak máte 1602.

Všetky kontakty sú definované v tabuľke. Ak zoberiete displej a otočíte ho smerom k sebe, kontakty budú umiestnené zľava doprava, v tabuľke sú zoradené podľa rastúcich čísel. V stĺpci kontakty je označenie v údajovom liste uvedené v zátvorkách.

# Kontakty Načo sa to používa? Poznámka
1 VSS (VSS) GND. Zem. Napájací zdroj pre mikrokontrolér displeja. 0V
2 VDD(VCC) Napájacie napätie pre mikrokontrolér displeja. +5V
3 V0 (VEE) Kontrast znakov na displeji. Je lepšie pripojiť cez potenciometer. od 0V do +5V
4 RS (RS) Výber registrácie.
5 RW (R/W) Prepínanie režimu čítania/zápisu. Stiahneme ho k zemi, potrebujeme len prenášať informácie na displej. 0-zápis +5V-čítanie
6 E Hodiny
7 D0 (DB0) Údaje
8 D1 (DB1) Prenos dát. (nepoužijeme) Údaje
9 D2 (DB2) Prenos dát. (nepoužijeme) Údaje
10 D3 (DB3) Prenos dát. (nepoužijeme) Údaje
11 D4 (DB4) Údaje
12 D5 (DB5) Prenos dát. (zasnúbený) Údaje
13 D6 (DB6) Prenos dát. (zasnúbený) Údaje
14 D7 (DB7) Prenos dát. (zasnúbený) Údaje
15 A (LED+) +5V Napätie, podsvietenie displeja, jas displeja je možné nastaviť pomocou potenciometra. +5V
16 K (LED-) GND Ground, podsvietenie displeja 0V

v

Prenos dát na displej je možný v dvoch možnostiach: 8 a 4 bity na takt. Pretože Arduino má málo kontaktov, my použijeme 4 - to je viac než dosť na aktualizáciu informácií na displeji rýchlosťou, ktorá je pre vnímanie zakázaná.

Takto sa mi to celé spája. Môže sa to zdať ako chaos, ale existuje tu systém. Môžete rozlíšiť červené, zelené, žlté a oranžové drôty. Červené idú vždy na +5V, zelené na GND a žlté a oranžové sú vodiče na pripojenie k Arduinu, ktoré nesú dáta.

Najdôležitejšou časťou je fyzické pripojenie displeja. Kliknutím sa otvorí vo vysokom rozlíšení, kde je všetko jasne viditeľné.
R1 - 200OM rezistor. Odpor obmedzuje prúd prechádzajúci podsvietením displeja.
R2 - Potenciometer s odporom do 10kOM. Otočíme perom a vyberieme kontrast symbolov.


A extrémne jednoduchý náčrt na zobrazenie niekoľkých riadkov na obrazovke.

H> // Pripojíme knižnicu pre prácu s displejom. /* príkaz LiquidCrystal lcd(rs, povoliť, d4, d5, d6, d7); Vytvoríme premennú typu LiquidCrystal a určíme, cez ktoré kontakty Arduino spolupracuje s displejom. viac podrobností o tomto príkaze tu http://arduino.cc/en/Reference/LiquidCrystalConstructor */ LiquidCrystal lcd(6, 7, 8, 9, 10, 11); void setup() ( lcd.begin(20, 4); // určenie charakteristík displeja (20 znakov na riadok, 4 riadky) // Pre displej 1602 musíte zadať lcd.begin(16, 2); lcd .setCursor(1, 1) // Určte, z ktorej pozície sa má začať zobrazovať text Riadky a znaky začínajú od 0 // 1 už posunie vozík o jeden dielik od začiatku obrazovky a posunie text o jeden riadok nižšie lcd.print("compblog.vlukyanov" ); // tlač textu od zadanej pozície lcd.setCursor(7, 2) // tlač od 8. znaku na obrazovke lcd.print(.com); "); // text, ktorý sa má vytlačiť. loop() ( // v slučke nerobíme nič iné; všetko sa už urobilo počas inicializácie dosky. )

Výsledok. Ak viete, ako sa to všetko spája a ako napísať kód, čas na všetku prácu je 5 minút.

Displej dokáže vykonávať niektoré funkcie aj samostatne a taktiež je možné nastaviť niektoré parametre.

Napríklad:

  • posúvanie textu;
  • pozícia flash kurzora;
  • Zapnúť/vypnúť.

A teraz k bonusu!
Podsvietenie displeja plytvá energiou, ktorú by ste napríklad pri napájaní z batérie chceli ušetriť. Túto možnosť som urobil pre seba - po stlačení tlačidla sa na 5 sekúnd zapne podsvietenie displeja.

H> // Pripojíme knižnicu pre prácu s displejom. tlačidlo intInt = 0; // Číslo prerušenia, ktoré sa bude volať. int screenLed = 4; // Číslo pinu, ku ktorému je pripojená obrazovka. +5V prchavé dlhé x = 5000; // premenná na uloženie času LiquidCrystal lcd(6, 7, 8, 9, 10, 11); void setup connect() (Interrupt(buttonInt, screenon, FALLING); // parametre prerušenia lcd.begin(20, 4); pinMode(screenLed, OUTPUT); digitalWrite(screenLed,HIGH); // zapnutie lcd displeja. setCursor(0 , 0); lcd.print("Spustiť test obrazovky!"); void screenon() ( x = milis()+5000; // Zapamätajte si čas, kedy potrebujete vypnúť podsvietenie. Aktuálny prevádzkový čas +5 sekúnd. digitalWrite(screenLed,HIGH); // Priveďte napätie na podsvietenie displeja. ) void loop() ( lcd.setCursor(0, 2); // prejdite na tretí riadok lcd.print(x); // a zobrazí sa čas, kedy sa displej vypne lcd.setCursor(0, 3); / / prejdite na štvrtý riadok lcd.print( millis() // vypíše aktuálny prevádzkový čas if (x< millis()) // если время работы выключения наступило >( digitalWrite(screenLed,LOW); // potom vypnite displej) )

A výsledok:

LCD displeje 1602 veľkostí, vytvorené na základe radiča HD44780, dnes stále zostávajú jedným z najdostupnejších, najjednoduchších a najžiadanejších pre vývoj akéhokoľvek druhu elektronických zariadení. Nie je prekvapujúce, že ich možno vidieť v jednoduchých jednotkách zostavených doslova na kolene, ako aj vo vážnejších priemyselných, napríklad kávovaroch. Práve s týmto displejom sú zostavené najpopulárnejšie moduly a štíty súvisiace s Arduino, napríklad modul LCD I2C a štít LCD klávesnice.

Tento článok podrobne vysvetľuje pomocou obrázkov, ako pripojiť LCD k Arduinu a zobraziť informácie.

Krok 1: 1602 LCD displej pre Arduino

1602 displejov má dve rôzne verzie:

Žlté podsvietenie s čiernymi písmenami
- alebo (toto sa stáva oveľa častejšie) modré podsvietenie s bielymi.

Veľkosť displejov na ovládači HD44780 sa veľmi líši, ale ovládajú sa rovnakým spôsobom. Najbežnejšie rozmery sú 16 x 02 (teda 16 znakov v dvoch riadkoch) alebo 20 x 04. Samotné znaky majú rozlíšenie 5 x 8 pixelov.

Väčšina displejov nepodporuje cyriliku (s výnimkou displejov s označením CTK). Tento problém je však čiastočne riešiteľný a článok ďalej podrobne popisuje, ako to urobiť.

Displej má na pripojenie 16-PIN konektor. Závery majú značky na zadnej strane dosky, je to takto:

1 (VSS) – záporné napájanie regulátora.
2 (VDD) – kladné napájanie regulátora.
3 (VO) – nastavenie ovládania kontrastu.
4 (RS) – výber registra.
5 (R/W) – čítanie a zápis, najmä zápis pri pripojení k zemi.
6 (E) – aktivácia (povoliť).
7–10 (DB0-DB3) – bity nízkeho rádu z osembitového rozhrania.
11–14 (DB4-DB7) – najdôležitejšie bity z rozhrania
15 (A) – kladná anóda pre napájanie podsvietenia.
16 (K) – negatívna katóda pre napájanie podsvietenia.

Krok 2: Pripojte LCD displej

Pred pripojením displeja a prenosom informácií naň sa oplatí skontrolovať jeho funkčnosť. Najprv zapojte napätie do ovládača VSS a VDD, zapnite podsvietenie (A, K) a potom upravte kontrast. Pre takéto nastavenia je vhodný 10 kOhm potenciometer, jeho tvar nie je dôležitý. +5V a GND sú napájané na vonkajšie nohy a noha v strede je pripojená na kolík VO.

Keď je obvod napájaný, musíte dosiahnuť potrebný kontrast, ak je nesprávne nastavený, obraz na obrazovke nebude viditeľný. Ak chcete nastaviť kontrast, musíte sa „pohrať“ s potenciometrom. Keď je obvod správne zostavený a kontrast je správne nastavený, horný riadok na obrazovke by mal byť vyplnený obdĺžnikmi.

Aby displej fungoval, slúži špeciálna knižnica LiquidCrystal.h zabudovaná v Arduino IDE, o ktorej budem písať nižšie. Môže pracovať v 8-bitovom a 4-bitovom režime. V prvej možnosti sa používajú iba najmenej významné a významné bity (BB0-DB7), v druhej - iba najmenej významné (BB4-DB7).

Použitie 8-bitového režimu v tomto zobrazení je však nesprávne rozhodnutie, neexistuje takmer žiadna výhoda rýchlosti, pretože obnovovacia frekvencia je vždy nižšia ako 10-krát za sekundu. Pre zobrazenie textu je potrebné pripojiť piny DB7, DB6, DB5, DB4, E a RS ku kolíkom ovládača. Môžu byť pripojené k akýmkoľvek Arduino pinom, hlavné je nastaviť správnu sekvenciu v kóde.

Ak požadovaný symbol ešte nie je v pamäti ovládača, môžete ho definovať manuálne (spolu až sedem symbolov). Bunka v uvažovaných displejoch má rozšírenie päť na osem pixelov. Úlohou vytvorenia symbolu je napísať bitovú masku a umiestniť jednotky na miesta, kde by mali svietiť bodky, a nuly tam, kde by nemali.

Schéma zapojenia diskutovaná vyššie nie je vždy dobrá, pretože na Arduine sa používa najmenej šesť digitálnych výstupov.

Krok 3: Riešenie

Poďme preskúmať možnosť, ako to obísť a vystačiť si len s dvoma. Potrebujeme dodatočný modul prevodníka pre LCD na IIC/I2C. Ako je prispájkovaný k displeju a pripojený k Arduinu je vidieť na obrázkoch nižšie.

Ale táto možnosť pripojenia funguje len so špeciálnou knižnicou LiquidCrystal_I2C1602V1, ktorá sa však dá ľahko nájsť na internete a nainštalovať, po čom ju môžete bez problémov používať.

Krok 4: Knižnica LiquidCrystal.h

Knižnicu LiquidCrystal.h si môžete stiahnuť z oficiálneho zdroja -. Môžete si tiež stiahnuť z nižšie uvedených odkazov:

Skica

Po stiahnutí archívu nahraďte priečinok LiquidCrystal v priečinku libraries inštalačného adresára Arduino.

Vzorový náčrt môžete vidieť v Súbor -> Príklady -> LiquidCrystal -> HelloWorld_SPI(Súbor -> Príklady -> LiquidCrystal -> HelloWorld_SPI).

Týmto sa naša ďalšia lekcia končí. Prajeme vám kvalitné projekty!

Prišlo Arduino Nano, dorazila súprava, ktorá obsahuje dosku na pečenie (breadboard) a LCD displej. Displej na doske hovorí - 1602A, nižšie - QAPASS. Začal som vyrezávať prvé zariadenie a samozrejme som chcel na displeji zobrazovať informácie a nie blikať LED diódy.

Google pomohol, povedal mi, že ide o zobrazenie znakov; Ak to neskresľujete, potom sú s najväčšou pravdepodobnosťou k dispozícii znaky ASCII - čísla, latinka, niektoré zo základných znakov.

Nasledujúce materiály pomohli spustiť displej: Ovládanie znakového LCD z portu PC tlačiarne; Ako prepojiť Arduino so znakovým LCD ; Pwm Servo Driver Motor Control PDF.

Displej je celkom bežný a na to už boli vynájdené štíty - existujú možnosti s SPI, ako a / alebo s I2C a internet je plný receptov na tieto prípady. Mal som ale len pôvodný 16x2 displej a Arduino, na ktoré som ho chcel pripevniť.

Displej má režim prevádzky a prenosu dát v kúskoch, každý po 4 bitoch, pričom bity nižšieho rádu zbernice sa nepoužívajú. Zapojenie len polovice dátovej zbernice je popísané na mnohých miestach a neprišiel som na to, ako pripojiť displej a pracovať s ním cez 8 riadkov. Bol som celkom rád, že to takto funguje.

Dobrý popis displejov tohto typu som našiel tu - http://greathard.ucoz.com/44780_rus.pdf. A tu (http://arduino.ru/forum/programmirovanie/lcd-i2c-partizanit#comment-40748) je príklad špecifikácie generátora znakov.

Pripojenie

Môj displej prišiel s nespájkovanými kontaktmi. Od začiatku som chcel prispájkovať kábel, prerezať 16 drôtov s dupontmi a vyčistiť ich. A potom som sa pohrabal vo veľrybe a našiel som hrebeň DuPont na spájkovanie na dosku. Odtiaľ som odlomil 16 kontaktov a prispájkoval ich.
Môj displej vyzeral asi takto (pred spájkovaním kontaktov):

Najprv som pripojil pin 15 (A) na +5V, 16 (K) na zem a uistil som sa, že funguje podsvietenie. Vo všeobecnosti je správne pripojiť katódu k zemi cez odpor 220 Ohm, čo som potom urobil.

Potom som pripojil uzemnenie (1) a napájanie (2). Arduino je možné napájať z USB, zo stabilizovaného napätia 5V a z nestabilizovaného 6-12V sa automaticky zvolí najvyššie napätie. Teraz je Arduino napájané z USB a bol som zvedavý, kde získať 5 voltov. Ukázalo sa, že 5V je na pine Arduina, kde je pripojených externých stabilizovaných 5V. Lepšie povedané, vyšlo mi to 4,7V, ale mne to stačilo.

Po pripojení napájania, ak je všetko v poriadku, sa horný riadok rozsvieti s pevnými obdĺžnikmi.

Potom pripojíme kontrastný potenciometer (pin 3 V0). Jeden krajný vývod potenciometra hodíme na zem, druhý na +5V, stredný na pin 3 displeja. Odporúča sa 10K potenciometer. Mal som 50K od veľryby, použil som ju ako prvú. Úprava bola len na jednej hrane bolo potrebné veľmi jemne zachytiť želaný kontrast. Potom som našiel podobnú v inej veľrybe na 5K a nainštaloval som ju. Nastavenie sa natiahlo z jednej hrany na pol otáčky. Zrejme si môžete vziať ešte menší potenciometer. Pravdepodobne sa odporúča 10K, aby obvod spotreboval menej. Áno, musel som trochu spájkovať drôty s dupontmi na svorky potenciometrov.

Skúšobný náčrt

Testovaciu skicu berieme z príkladov z Arduino Studio - "C:\Program Files (x86)\Arduino\libraries\LiquidCrystal\ex amples\HelloWorld\HelloWorld.ino", stačí zmeniť kontakty na naše - LiquidCrystal lcd( 7, 6, 5, 4, 3, 2);

V zásade tento náčrt obsahuje aj popis toho, čo kam pripojiť. Môžete ho pripojiť, ako je tam uvedené, potom nemusíte vôbec nič meniť.

// zahrňte kód knižnice: #include // inicializujte knižnicu číslami pinov rozhrania LiquidCrystal lcd(7, 6, 5, 4, 3, 2); void setup() ( // nastavenie počtu stĺpcov a riadkov na LCD: lcd.begin(16, 2); // Vytlačte správu na LCD. lcd.print("hello, world!"); ) void loop() ( // nastavte kurzor na stĺpec 0, riadok 1 // (poznámka: riadok 1 je druhý riadok, pretože počítanie začína 0): lcd.setCursor(0, 1); // vypíše číslo sekúnd od resetovania: lcd.print(millis() / 1000);

Ukazuje sa niečo takéto:

Mimochodom, displej, ktorý sa mi dostal do rúk, nefunguje bez podsvietenia. Teda, funguje to, ale takmer nič nevidíte.

1602A Zobrazenie kontaktov

# kontakt názov Ako sa pripojiť
1 VSS GND
2 VDD +5V
3 V0 Kontrast - k strednej svorke potenciometra
4 RS (výber registrácie) D7 Arduino
5 R/W (čítanie alebo zápis) GND
6 E (povoliť signál) D6 Arduino
7-14 D0-D7 D0-D3 - nepripojené; D4-D7 - pripojený na piny D5-D2 Arduina
15 A Anóda podsvietenia, pripojená na +5V
16 K Katóda podsvietenia, pripojená k zemi cez odpor 220 Ohm

Displej z tekutých kryštálov (LCD), skrátene LCD, je založený na technológii tekutých kryštálov. Pri navrhovaní elektronických zariadení potrebujeme lacné zariadenie na zobrazovanie informácií a druhým nemenej dôležitým faktorom je dostupnosť hotových knižníc pre Arduino. Zo všetkých dostupných LCD displejov na trhu je najčastejšie používaný LCD 1602A, ktorý dokáže zobraziť ASCII znaky v 2 riadkoch (16 znakov v 1 riadku), každý znak v matici 5x7 pixelov. V tomto článku sa pozrieme na základy pripojenia displeja k Arduinu.

Technické špecifikácie

Napájacie napätie: 5V
Veľkosť displeja: 2,6 palca
Typ zobrazenia: 2 riadky x 16 znakov
Farba podsvietenia: modrá
Farba postavy: biela
Rozmery: 80 x 35 x 11 mm

Zobraziť popis

LCD 1602A je elektronický modul založený na ovládači HD44780 od Hitachi. LCD1602 má 16 pinov a môže pracovať v 4-bitovom režime (pomocou iba 4 dátových liniek) alebo 8-bitovom režime (pomocou všetkých 8 dátových liniek), dá sa tiež použiť. V tomto článku budem hovoriť o pripojení v 4-bitovom režime.

Zadanie kontaktu:
VSS: napájanie modulu „-“.
VDD: napájanie modulu „+“.
VO: Kontrolný kolík kontrastu
RS: Register Vyberte
RW: Výber režimu zápisu alebo čítania (po pripojení k zemi nastavte režim zápisu)
E: Pádová brána
DB0-DB3: Bity rozhrania
DB4-DB7: Bity rozhrania
A: „+“ výkon podsvietenia
K: "-" výkon podsvietenia

Na prednej strane modulu je LCD displej a skupina kontaktov.

Na zadnej strane modulu sú dva čipy v “kvapôčkovom” prevedení (ST7066U a ST7065S) a elektrické vedenie, nevidím zmysel v kreslení schémy zapojenia, poviem vám len o rezistore R8 (100 Ohm), ktorý slúži ako obmedzovací odpor pre LED podsvietenie, takže môžete pripojiť 5V priamo na pin A. O niečo neskôr napíšem článok, v ktorom vám poviem, ako môžete zmeniť podsvietenie LCD displeja pomocou PWB a tranzistor.

Pripojenie LCD 1602A k Arduinu (4-bitový režim)

Požadované diely:
Arduino UNO R3 x 1 ks.
LCD displej 1602A (2×16, 5V, Modrý) x 1 ks.
DuPont drôt, 2,54 mm, 20 cm, F-F (Female - Female) x 1 ks.
Potenciometer 10 kOhm x 1 ks.
Konektor PLS-16 x 1 ks.
Vývojová doska MB-102 x 1 ks.
Kábel USB 2.0 A-B x 1 ks.

Pripojenie:
Na pripojenie použijeme vývojovú dosku, schému a tabuľku na pripojenie LCD1602a k Arduinu v 4-bitovom režime môžete vidieť na obrázku nižšie.

Pripojenie displeja k breadboardu bude realizované cez PLS-16 piny (treba ich prispájkovať k displeju). Nainštalujte modul displeja do doštičky a pripojte napájací VDD (2. kolík) k 5V (Arduino) a VSS (1. kolík) k GND (Arduino), potom pripojte RS (4. kolík) k digitálnemu kolíku 8 (Arduino). Uzemnite RW (5. kolík) pripojením k GND (Arduino), potom pripojte kolík E k kolíku 8 (Arduino). Pre 4-bitové pripojenie sú potrebné štyri piny (DB4 až DB7). Piny DB4 (11. pin), DB5 (12. pin), DB6 (13. pin) a DB7 (14. pin) pripojte k digitálnym pinom Arduino 4, 5, 6 a 7. 10K potenciometer slúži na nastavenie kontrastu displeja, schéma zapojenia pre LCD displej 1602a je zobrazený nižšie

Knižnica je už súčasťou Arduino IDE a nie je potrebné ju inštalovať. Skopírujte a prilepte tento príklad kódu do okna programu Arduino IDE a nahrajte ho do ovládača.

/* Testovanie bolo vykonané na Arduino IDE 1.6.11 Dátum testu 20.09.2016. */ #include LiquidCrystal lcd(8, 9, 4, 5, 6, 7); void setup() ( lcd.begin(16, 2); // Inicializuje 16x2 LCD) void loop() ( lcd.setCursor(0,0); // Nastaví kurzor na prvý riadok lcd.print("Ahoj , world" ); // Vytlačte text lcd.setCursor(0,1); // Nastavte kurzor na druhý riadok lcd.print("www.site"); // Vytlačte text )

Trochu o programe.
Na uľahčenie komunikácie medzi Arduinom a LCD displejom sa používa vstavaná knižnica v Arduino IDE " LiquidCrystal.h « - ktorý je napísaný pre použitie LCD displejov HD44780 (Hitachi) čipset (alebo kompatibilné čipy). Táto knižnica zvládne pripojenie LCD v 4-bitovom režime aj v 8-bitovom režime.

Kúpiť na Aliexpress
Arduino UNO R3 ovládač

Pri vytváraní vlastného zariadenia často vzniká potreba rýchleho zobrazenia rôznych informácií. Ak napríklad vytvárate ovládač inteligentnej domácnosti, potom je rozumné vybaviť zariadenie výstupným zariadením, ktoré vám umožní rýchlo zistiť aktuálny stav systémov. Najlepším riešením je displej z tekutých kryštálov. Spotreba energie pri vypnutom podsvietení je minimálna a práca s displejom je mimoriadne jednoduchá a nevyžaduje veľké zásahy do programového kódu. V skutočnosti sa výstup informácií na LCD displej príliš nelíši od výstupu na sériový port. Článok pojednáva o pripojení displeja generujúceho znaky založeného na populárnom čipe HD44780 k ovládaču Arduino.

Ako funguje textový LCD displej?

Aby ste pochopili niektoré nuansy, je užitočné vedieť, ako funguje zobrazenie na vytváranie znakov. Zvláštnosťou tohto typu displeja je prítomnosť vlastného ovládača s vlastnou pamäťou. DDRAM - pamäť displeja. Ak chcete zobraziť symbol na obrazovke, musíte symbol načítať do pamäťovej bunky a potom zadať príkaz na zobrazenie pamäťovej bunky. Počas prenosu sa znaky kódujú pomocou kódov ASCII. Napríklad pri zápise kódu 0x31 do pamäte sa symbol „ 1 " Zhoda kódu symbolu s jeho zobrazením na obrazovke (t. j. „obrázok“ symbolu) je uložená v pamäti CGROM. CGROM je energeticky nezávislá pamäť. Preto môže displej zobraziť len tie znaky, ktoré sú „napevno zapojené“ do ovládača. Preto nie každý displej dokáže zobraziť napríklad ruské znaky. Displeje predávané v našom obchode, žiaľ, nie sú rusifikované. Nechýba ani CGRAM pamäť. Je to premenlivé. Môžeme si vytvárať vlastné symboly a zobrazovať ich na displeji. Stojí za zváženie, že nemôžete vytvoriť viac ako osem znakov.

Celá táto práca „pod kapotou“ je dôležitá len na pochopenie niektorých nuancií. Existuje jednoduchá a priamočiara knižnica pre Arduino, ktorá urobí všetku prácu za vás, čo vám umožní ľahko a jednoducho ovládať výstup displeja.

Pripojenie LCD displeja k Arduinu

Pre pripojenie displeja je samozrejme potrebné ho nainštalovať na dosku. Upozornenie: displeje predávané v našom obchode sa predávajú bez spájkovaného kolíkového konektora. Ak chcete dostať displej ihneď pripravený na inštaláciu na kontaktnú dosku, zaškrtnite políčko „spájkovať konektor“ na stránke produktu a my vám konektor prispájkujeme. Prenos dát na displej je možné organizovať dvoma spôsobmi: 4 alebo 8 bitov naraz. Preto budete potrebovať buď 4 alebo 8 pinov Arduino. V praxi nedôjde k žiadnemu zvýšeniu rýchlosti pri použití osembitového rozhrania. Na prenos dát teda potrebujeme len 4 digitálne piny. Ďalšie 3 kolíky budú potrebné na nastavenie prevádzkového režimu displeja. Celkovo na pripojenie displeja budete potrebovať iba 7 digitálnych výstupov ovládača. Kontakty na displeji sú označené, čo vám pomôže vyhnúť sa nejasnostiam pri pripájaní:

Závery očíslujeme zľava doprava:

  • 1-(VSS) Pozemok displeja. Pripája sa k uzemňovacej koľajnici.
  • 2-(VDD) Napájanie displeja. Pripája sa k napájacej koľajnici.
  • 3-(V.O.) Vstup potenciometra (súčasť balenia). Kontrast displeja sa nastavuje pomocou potenciometra. Stredný výstup potenciometra je pripojený na pin displeja.
  • 4-(R.S.) Vstup signálu „Command“. Pripája sa k akémukoľvek digitálnemu pinu Arduino. V príklade je pripojený na pin č.12.
  • 5-(RW) Nastavuje režim „čítania“ alebo „zápisu“. Ideme nahrávať. Spojíme kontakt so zemou.
  • 6-(E)Povoliť. Ďalší „príkazový“ výstup. Keď sa na výstup použije jedna, displej vykoná predtým vyslaný príkaz. Pripája sa k akémukoľvek digitálnemu výstupu. V príklade je pripojený na pin č.11.
  • 7-10 (D0-D3) necháme nezapojené. Toto sú dátové kolíky, ktoré sa používajú v osembitovom rozhraní. Nepotrebujeme to.
  • 11-14 (D4-D7) Kontakty pre prenos dát v štvorbitovom režime. Opäť sú pripojené k ľubovoľným digitálnym výstupom. V tomto príklade sú pripojené na kolíky 5, 4, 3 a 2 (D4 na kolíky 5, D5 na kolíky 4 atď.).
  • 15 (A) Anóda LED podsvietenia. Prúdový obmedzovací odpor je už nainštalovaný v displeji, takže anóda sa jednoducho pripojí k napájacej lište. Keďže podsvietenie využíva najbežnejšiu LED diódu, môžete ho pripojiť k akémukoľvek pinu, ktorý to podporuje a ovládať jas podsvietenia programovo.
  • 16 (K) Iluminačná katóda. Pripája sa k uzemňovacej koľajnici.

Vizuálna schéma zapojenia:

Programovanie

Arduino IDE prichádza s vynikajúcou knižnicou pre displeje z tekutých kryštálov – LiquidCrystal. Knižnica obsahuje príklady, ktoré plne odhaľujú možnosti obrazovky. Ak chcete začať, použite štandardný príklad „HelloWorld“ (Súbor -> Príklady -> LiquidCrystal -> HelloWorld) alebo nahrajte nasledujúci kód do dosky:

/* *Kolík displeja RS k pinu arduino 12 *Povoliť pin displeja k pinu arduino 11 * pin displeja D4 k pinu arduino 5 * pin displeja D5 k pinu arduino 4 * pin displeja D6 k pinu arduino 3 * pin displeja D7 k pinu arduino 2 *R/W výstup displeja na zem *Výstup potenciometra na VO výstup displeja */ // pripojenie knižnice: #include ; // Inicializujte displej // Vypíšte arduino piny, ku ktorým sú // pripojené kontakty displeja RS, E, D4, D5, D6, D7 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() ( // Zadajte počet stĺpcov a riadkov zobrazenia: lcd.begin(16, 2); // Zobrazenie správy na displeji. lcd.print("hello, world!"); ) void loop() ( // nastavíme kurzor na 0 (nulový) stĺpec prvého riadku // v skutočnosti sa kurzor nastaví na druhý (dolný) riadok // číslovanie riadkov a stĺpcov začína od nuly lcd.setCursor( 0, 1 // zobrazí počet sekúnd, ktoré // uplynuli od načítania dosky: lcd.print(millis()/1000);

*Kolík displeja RS na kolík arduino 12

*Povoliť pin displeja na arduino pin 11

* D4 pin displeja arduino pin 5

*D5 zobrazovací kolík na arduino kolík 4

*D6 pin displeja arduino pin 3

* D7 pin displeja arduino pin 2

*Výstup R/W displeja na zem

*Výstup potenciometra na kolík VO displeja

// pripojenie knižnice:

#include ;

// Inicializácia displeja

// Vypíšte arduino piny, ku ktorým sú pripojené

// Zobrazovacie kolíky RS, E, D4, D5, D6, D7

void setup() (

// Zadajte počet stĺpcov a riadkov zobrazenia:

lcd. begin(16, 2);

// Zobrazenie správy.

lcd. tlač ("ahoj, svet!" ) ;

void loop() (

// číslovanie riadkov a stĺpcov začína od nuly

lcd. setCursor(0, 1);

// zobrazenie počtu sekúnd,

// uplynulo od načítania dosky:

lcd. print(millis()/1000);

Po načítaní tohto kódu do dosky Arduino sa na obrazovke zobrazí „ahoj, svet!“( Angličtina "Ahoj Svet!") na prvom riadku a časovač odpočítavajúci sekundy na druhom riadku.

Ako to už zvyčajne býva, kód je jednoduchý a zrozumiteľný. Budeme to však analyzovať podrobnejšie:

  • LCD LiquidCrystal(12, 11, 5, 4, 3, 2) – Tento riadok vytvára objekt zobrazenia, s ktorým budeme v budúcnosti pracovať. V zátvorkách sú ako argumenty uvedené čísla pinov, ku ktorým sú pripojené kontakty displeja. Podľa toho: RS, E, D4, D5, D6, D7. Ako je uvedené vyššie, čísla kolíkov pri pripájaní je možné zvoliť úplne ľubovoľne.
  • lcd.začať(16, 2) - tu sme nakonfigurovali rozmery displeja. Tento príklad má 16 stĺpcov a 2 riadky. Pre náš displej 20X4 by tento riadok vyzeral takto: lcd.začať(20, 4).
  • lcd.print(„ahoj, svet!“) – zobrazí text na displeji. Po zadaní veľkosti displeja (lcd.begin) sa kurzor umiestni do ľavého horného rohu displeja. Preto sa tento text zobrazí v prvom (hornom) riadku vľavo.
  • lcd.setCursor(0, 1) - nastaví kurzor na zadanú pozíciu. V tomto prípade je označená pozícia druhého riadku úplne vľavo. Číslo stĺpca je uvedené v zátvorkách a potom číslo riadku. Riadky aj stĺpce sú číslované od pozície nula. Teda: lcd.setCursor(0, 0) - nastaví kurzor do ľavého horného rohu, lcd.setCursor(15, 0) - do pravého dolného rohu.
  • lcd.print(millis()/1000) - už bolo popísané vyššie. Tu sa namiesto textu odovzdáva ako parameter vzorec na výpočet. Výsledok sa zobrazí na obrazovke.

Teraz, keď sme sa zaoberali najjednoduchším príkladom, môžeme prejsť na zložitejšie príklady. A ak už všetkému rozumiete a ste pripravení kúpiť LCD displej, potom som pre vás zhromaždil odkazy na čínskych predajcov displejov, ktorých som overil:

Znakové LCD displeje

Veľkosť zobrazenia (stĺpce*riadky)Farba podsvieteniaPostavenie
20*4 Modráoverené
20*4 žltáoverené
16*2 Modráoverené
16*2 žltáoverené
16*2 zelenáoverené

Prehľad ďalších príkladov knižníc LiquidCrystal

V štandardných príkladoch dodávaných s knižnicou LiquidCrystal môžete nájsť nasledujúce náčrty:

    • Automatické posúvanie- demonštruje schopnosť automaticky posúvať text. Nejaká plazivá línia. Keď sa zobrazí znak, predchádzajúce znaky sa posunú. Nový znak sa teda zobrazí na rovnakom mieste.

    • Blikať- demonštruje schopnosť povoliť zobrazenie blikajúceho kurzora vo forme obdĺžnika.

    • Kurzor- demonštruje schopnosť povoliť zobrazenie kurzora vo forme blikajúcej vodorovnej čiary.

    • CustomCharacter- zobrazí sa možnosť vytvárať si vlastné symboly na ich zobrazenie na displeji. Mimochodom, v tomto náčrte je chyba. Podrobnosti nižšie.

    • Displej- ukazuje spôsob, ako „vypnúť“ displej. Teda zobraziť alebo skryť zobrazený text.

    • Prejdite- demonštruje schopnosť manuálne posúvať text.

    • Sériový displej- zobrazí na obrazovke text vytlačený v okne monitora portu (tj text prenášaný cez sériový port).
    • nastaviť kurzor- vyplní displej písmenami, čo demonštruje schopnosť umiestniť kurzor na ľubovoľnú pozíciu na obrazovke.
    • TextDirection- demonštruje schopnosť meniť smer výstupu textu (sprava doľava alebo zľava doprava).

Pozrime sa podrobnejšie na postupy, ktorých schopnosti demonštrujú tieto príklady:

lcd.autoscroll()

Po vyvolaní tohto postupu sa text na obrazovke automaticky posunie. Ak chcete zastaviť rolovanie, zavolajte lcd.noAutoscroll().

lcd.blink()

Po vyvolaní procedúry sa kurzor zobrazí ako blikajúci obdĺžnik. Ak chcete zakázať hovor lcd.noBlink()

lcd.cursor()

Po vyvolaní procedúry sa kurzor zobrazí ako blikajúca vodorovná čiara. Ak chcete zakázať hovor lcd.noСursor(). Kurzor sa opäť stane neviditeľným.

lcd.createChar()

Procedúra načíta znak opísaný ako bajtové pole do tabuľky znakov premennej obrazovky (pamäť CGRAM). Argumentom je číslo symbolu a bajtové pole popisujúce symbol. Pozrime sa na to podrobnejšie. Do pamäte displeja môžete zadať maximálne osem znakov. Na pridanie vlastného symbolu potrebujete:

  1. Vytvorte bajtové pole popisujúce znak.
  2. Zapíšte symbol do pamäte displeja priradením čísla v tabuľke symbolov. Znaky sú očíslované v rozsahu od nuly do sedem.
  3. Zobrazte znak na obrazovke pomocou postupu lcd.write()(nezamieňať s lcd.print()), ako argument, ktorý obsahuje číslo symbolu.

Chyba vo vývojovom prostredí a funkciách knižnice mala za následok nemožnosť zobrazenia čísla symbolu 0 (nula). Keď kompilátor narazí na riadok lcd.write(0), vyhodí chybu: “ volanie preťaženého ‘write(int)’ je nejednoznačné". Toto je presne ten riadok, ktorý sa zobrazuje v príklade CustomCharacter knižnice. Keď sa pokúsite skompilovať štandardný príklad, zobrazí sa chyba:

CustomCharacter.ino: Vo funkcii 'void setup()': CustomCharacter:115: chyba: volanie preťaženého 'write(int)' je nejednoznačné /home/nazarovd/arduino-1.0.5/libraries/LiquidCrystal/LiquidCrystal.h:82 : note: kandidátmi sú: virtuálna veľkosť_t LiquidCrystal::write(uint8_t) /home/nazarovd/arduino-1.0.5/hardware/arduino/cores/arduino/Print.h:49: note: size_t Print::write(const char *)

CustomCharacter. ino : Vo funkcii 'void setup()':

CustomCharacter : 115 : error : volanie preťaženého „write (int )“ je nejednoznačné

/home/nazarovd/arduino - 1.0.5/libraries/LiquidCrystal/LiquidCrystal. h : 82 : poznámka : kandidáti sú : virtuálna veľkosť_t LiquidCrystal :: zápis (uint8_t )

/home/nazarovd/arduino - 1.0.5/hardware/arduino/cores/arduino/Print. h : 49 : note : size_t Print :: write (const char * )

Ak chcete chybu opraviť, stačí zmeniť riadok lcd.write( 0 ) na lcd.write( (bajt)0).
Teraz malý príklad na vytvorenie vlastného symbolu. Ukážme symbol rubľa.

// Zahrnúť knižnicu #include ; // Inicializácia displeja LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Opíšte náš symbol. // Symbol jednoducho „nakreslíme“ jednotkami // Pri zobrazení na obrazovke sa jednotky zobrazia ako vyplnené bodky, nuly – nevyplnený bajt rubl = ( 0b00000, 0b01110, 0b01001, 0b01001, 0b01110, 0b01000, 0b10b1 ); void setup() ( // zápis nášho znaku do pamäte obrazovky // odovzdanie čísla symbolu // a bajtového poľa popisujúceho náš znak ako argumenty lcd.createChar(0, rubl); // nastavenie zobrazenia lcd.begin( 16, 2 ) void loop() ( // nastavenie kurzora do ľavého horného rohu obrazovky lcd.setCursor(0,0); // zobrazenie čísla znaku nula na obrazovke lcd.write((byte)0); ); // nerob nič po dobu 10 sekúnd (10000);

// Zahrňte knižnicu

#include ;

// Inicializácia displeja

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

Novinka na stránke

>

Najpopulárnejší