Pripojenie 1602 r rev 0. LCD WH1602B od Winstar. Operácia čítania je implementovaná podobne

  • 04.11.2019

Nejaký čas taký displej ležal nečinný.


A teraz tu bola túžba pripojiť ho k jednému z projektov, môžete sa, samozrejme, pokúsiť nájsť knižnicu s hotovými funkciami, ale v tomto prípade bude obraz toho, ako displej funguje, neúplný, ale toto nám nevyhovuje. Keď sme sa už zaoberali princípom fungovania LCD displeja, nebude ťažké napísať vlastnú knižnicu pre požadovaný displej, ak chýba alebo vám nejakým spôsobom nevyhovuje.

Takže začnime.
Prvá vec, ktorú musíte urobiť, je nájsť pinout, to znamená, ktorý kontakt je za čo zodpovedný, druhou je nájsť názov ovládača, ktorý ovláda displej, na tento účel si stiahneme katalógový list tohto LCD a otvoríme ho na prvá strana.


Kontakty sa počítajú zľava doprava, prvý je označený červenou šípkou. Napájacie napätie je 5 voltov, riadiaci ovládač S6A0069 alebo podobne, napr. ks0066U.

Prečo sme hľadali názov riadiaceho ovládača? Faktom je, že v údajovom liste pre displej sú časové oneskorenia (časový diagram), je opísaný systém príkazov, ale neexistuje žiadna banálna inicializácia a bez nej nikde.
Ďalej otvoríme druhú stránku a uvidíme tabuľku, ktorá hovorí, ktorý kontakt je za čo zodpovedný.


DB7…DB0– dátová/adresová zbernica.

R/W- určuje, čo budeme robiť, čítať (R/W=1) alebo písať (R/W=0)

R/S– určuje, že pošleme príkaz (RS=0) alebo dáta (RS=1)

E- stroboskopický vstup, zmenou signálu na tomto vstupe umožníme displeju čítať / zapisovať dáta.

LED±- ovládanie podsvietenia.

Musím povedať, že na displeji, ktorý som dostal, sa podsvietenie jednoducho nezapne, preto musíte spájkovať odpor, označený na doske ako R7. Ale zatiaľ to nepotrebujeme.

Stiahnite si údajový list do riadiacej jednotky a nájdite pokyny na inicializáciu. Obrázky je možné zväčšiť kliknutím na ne.



Ukazuje sa, že existujú dve takéto inštrukcie, pre 8-bitový a 4-bitový režim. Aké sú tieto režimy? Tieto režimy určujú, koľko káblov sa bude prenášať dáta: štyri alebo osem. Pozrime sa na prenos 4 drôty, v tomto prípade bude displej pracovať pomalšie, ale ušetríme 4 výstupy mikrokontroléra a implementácia osembitového režimu sa veľmi nelíši.

Schéma informačného spojenia je nasledovná.


Kontrast sa dá nastaviť zapnutím potenciometra medzi napájacími kolíkmi.

Chcel by som poznamenať, že počas inicializácie R/S A R/W sa vždy rovnajú nule, to znamená, že pošleme tímov.

Počas inicializácie môžete nakonfigurovať:

  • N - počet zobrazených riadkov
  • C - povoliť alebo zakázať kurzor
  • B - nechá kurzor blikať
  • I/D - zvýšenie alebo zníženie hodnoty počítadla adries
  • SH - presunúť okno zobrazenia
Pozrime sa bližšie na posledné dva body.
Obrázok nižšie ukazuje, na akú adresu sa majú zapisovať údaje, aby sa zobrazili na určitej pozícii, napríklad ak chceme zobraziť znak na prvá pozícia druhého riadku, potom musíme napísať na adresu 0x40.


Potom sa hodnota počítadla automaticky zmení, buď zvýši alebo zníži, a spolu s tým sa zmení aj poloha kurzora.

Mimochodom, pamäť, do ktorej zapisujeme, sa volá DDRAM, zobrazí sa všetko, čo do tejto pamäte zapíšeme, stále tam je CGROM, ktorý ukladá tabuľku generátora znakov.


Táto tabuľka sa nedá zmeniť, ale dajú sa z nej prevziať hotové symboly. Ďalším typom pamäte je CGRAM, je to aj tabuľka generátora znakov, ale znaky do tejto tabuľky si kreslíme sami.


Teraz pár slov o pohybe obrazovky, faktom je, že zvyčajne na displeji nevidíme celú pamäť DDRAM, ale iba určitú časť, ako je znázornené na obrázku nižšie.


Môžeme písať aj do neviditeľnej časti, ale to, čo píšeme, nebude viditeľné, kým na toto miesto nepresunieme okno obrazovky.

Keď je teória hotová, prejdime k praxi.
Obrázok komunikácie s LCD displejom v 4-bitovom režime je nasledovný.


Dáta sa posielajú v bajtoch, ale keďže máme 4-bitový režim, na odoslanie bajtu je potrebné poslať 2 balíčky, najvýznamnejší bit dopredu. Na obrázku je prvý predpoklad označený D7 (vyššia tetráda), druhý D3 (nižšia tetráda). Pred ďalším odoslaním musíme skontrolovať príznak obsadenosti a ak nie je nastavený, môžeme ho poslať znova, ak je nastavený, počkáme, kým svoju prácu skončí ovládač, ktorý ovláda LCD.

Keď máme všeobecný obrázok odosielania, poďme zistiť, ako implementovať operáciu odoslania.


Pre odoslanie cez 8-bitovú zbernicu:
  • R/W nastavené na 0
  • vydáme príkazový kód / údaje zbernici
  • meškanie 2us
  • dolná brána E

Operácia čítania je implementovaná podobne:

  • skontrolujte, či je hlavný ovládač voľný
  • R/W nastavený na 1
  • zdvihnite stroboskop E (v tomto momente bude LCD vysielať dáta na zbernicu)
  • meškanie 2us
  • čítali sme, čo vydal LCD
  • dolná brána E
Kde sa vzalo oneskorenie 2us?

Nad časovaním je tabuľka, v ktorej je napísané, čomu sa rovnajú oneskorenia zobrazené na grafe, a teda trvanie zábleskového impulzu - tw by sa malo rovnať 230nS alebo 450nS, v závislosti od napájacieho napätia sme brali trochu s rezervou. Prečo sme uvažovali len o tomto oneskorení? Pretože hodnota zostávajúcich oneskorení je veľmi malá.

Pre odoslanie na 4-bitovej zbernici:

  • skontrolujte, či je hlavný ovládač voľný
  • nastavte RS na 0 (príkaz) alebo 1 (údaje), podľa toho, čo posielame
  • R/W nastavené na 0
  • zdvihnúť bránu E (nastavená na 1)
  • seniorský zápisník vydávame do autobusu
  • meškanie 2us
  • dolná brána E
  • meškanie 1us
  • zdvihnúť bránu E (nastavená na 1)
  • vydáme bloček nízkej objednávky do autobusu
  • meškanie 2us
  • dolná brána E

Čítanie na 4-bitovej zbernici:

  • skontrolujte, či je hlavný ovládač voľný
  • pull-up dátový port
  • nastaviť RS na 0 (príkaz) alebo 1 (údaje), podľa toho, čo čítame
  • R/W nastavený na 1
  • zdvihnúť bránu E (nastavená na 1)
  • meškanie 2us
  • prečítajte si starší zošit
  • dolná brána E
  • meškanie 1us
  • zdvihnúť bránu E (nastavená na 1)
  • meškanie 2us
  • čítať juniorský zápisník
  • dolná brána E

Zdvihnutie stroboskopu a výstup príkazu / údajov na zbernicu je možné vymeniť. Teraz nebude ťažké inicializovať displej. Pre zjednodušenie inicializácie nahradíme čítanie príznaku obsadenosti s oneskorením a o práci s príznakom bude reč neskôr.
Treba poznamenať, že pri inicializácii v 4-bitovom režime sa používajú 4-bitové príkazy a po inicializácii sa používa 8-bitový príkazový systém, preto na inicializáciu implementujeme samostatnú funkciu na odosielanie príkazov void Write_Init_Command(uint8_t data).
// Inicializačný kód pre Atmega16 #define F_CPU 8000000UL #define LCD_PORT PORTA #define LCD_DDR DDRA #define LCD_PIN PINA #define DATA_BUS 0XF0 #define RS 0 #define RW 1 #define E 2 #include #include void Write_Init_Command(uint8_t data) ( //vetvy, cez ktoré sa prenášajú príkazy/dáta na výstup LCD_DDR |= DATA_BUS; //pošleme príkaz LCD_PORT &= ~(1<Veselo blikajúci kurzor znamená, že inicializácia bola úspešná. IN

Pri montáži môjho detektora kovov som mal na ovládači HD44780 postavený LCD displej 1602. Rozhodol som sa nepremeškať príležitosť a pripojiť ju k môjmu čínskemu náprotivku Arduino UNO.

Tu dnes pripojíme takýto 1602 displej k Arduinu.

Čísla „1602“ označujú, že displej pozostáva z 2 riadkov, každý po 16 znakoch. Ide o pomerne bežnú obrazovku, pomocou ktorej ľudia navrhujú hodinky, testery a iné vychytávky. Displej má zelené a modré podsvietenie.

Na displej som priletoval hrebeň kontaktov, aby sa dali ľahko pripojiť drôty.

Displej 1602 pripojíme k Arduinu cez 4-bitovú verziu paralelného rozhrania. Existuje aj možnosť 8-bitového rozhrania, ale používa viac káblov a v tomto nevidíme žiadny zisk.

Okrem displeja a Arduina potrebujeme vodiče a 10kΩ premenlivý odpor. Rezistor je vhodný pre akúkoľvek značku, pokiaľ má požadované hodnotenie.

Displej je napájaný z 1. (VSS) A 2. (VDD) závery. K záverom 15 (A) A 16 (K)- napájanie je dodávané do podsvietenia displeja. Keďže na napájanie a podsvietenie je použité rovnaké napätie + 5V, budeme ich napájať z pinov Arduina "5V" A "GND". Hlavná vec je neprepólovať, inak môžete spáliť elektroniku displeja.

3 výkon (V0) na nohu pripojíme premenný odpor, budeme ním ovládať kontrast displeja. Rezistor možno vynechať a výstup "V0" pripojiť sa k GND. V tomto prípade bude kontrast maximálny a nebude existovať možnosť jeho plynulého nastavenia.

5 výkon (RW) slúži na čítanie alebo zápis na displej. Keďže budeme zapisovať len na displej, tento pin spojíme so zemou (GND).

závery: 4. (RS), 6. (E), 11. (D4), 12. (D5), 13. (D6), 14. (D7) pripojte k digitálnym pinom Arduina. Nie je potrebné použiť rovnaké piny ako ja, môžete ich pripojiť k akýmkoľvek digitálnym, hlavné je správne nastaviť ich v náčrte.

Moje pripojené Arduino, zostáva pripojiť k počítaču cez USB a nahrať skicu.

V znamení použijeme náčrt zo štandardnej sady.

V Arduino IDE vyberte "súbor" -"vzorky" -"Tekutý kryštál" - ahoj svet.

Poďme sa pozrieť na kód náčrtu.

V rade LCD s tekutými kryštálmi, v zátvorkách sú digitálne kolíky, ktoré sa používajú na Arduine. Kolíky sú nastavené v nasledujúcom poradí: RS, E, DB4, DB5, DB6, DB7. Ak ste použili iné digitálne kolíky, pri pripájaní displeja ich zadajte v správnom poradí do zátvoriek.

V rade "lcd.print("ahoj, svet!");" na displeji sa zobrazuje pozdrav, štandardne je to nápis ahoj svet!, dá sa zmeniť na ľubovoľný vlastný, píšeme po latinsky.

Nahráme skicu do Arduina a tu je výsledok. Namiesto "ahoj, svet!" Vstúpil som na svoju stránku. Na riadku nižšie odpočítava časovač.

LCD displeje od spoločnosti Winstar sú už niekoľko rokov neoddeliteľnou súčasťou moderných elektronických produktov, a to nielen na ruskom trhu. Sú lacné, veľmi bežné (nevidel som obchody, kde by neboli), ich rozmanitosť umožňuje vývojárovi vybrať si ten správny v závislosti od prevádzkových podmienok. Ich rozdiel spočíva v rozsahoch prevádzkových teplôt, počte riadkov na zobrazenie informácií, počte známosti na riadok, ktorého štandardom sú hodnoty 8, 12, 16, 20, 24 a 40 znakov na riadok. , líšia sa aj veľkosťou znakov, rozlíšením, veľkosťou samotného displeja atď. Winstar vyrába nielen alfanumerické znaky syntetizujúce LCD moduly, ale aj grafické. Tie majú zase iné parametre, čo dáva užívateľovi možnosť vybrať si ten vhodný na základe úlohy.

Mnoho začínajúcich rádioamatérov, ktorí práve začali ovládať digitálnu technológiu, mikrokontroléry, sa skôr či neskôr stretne s problémom súvisiacim s pripojením a ovládaním tohto displeja. Po miernom zjednodušení situácie s datasheetom pre displej WH1602B som sa pokúsil pre pochopenie čo najjednoduchšie popísať proces pripojenia a ovládania modulu.

V predvolenom nastavení vyzerá displej WH1602B takto:

16 výstupných vedení, z toho 11 riadiacich, je usporiadaných v rade s rozstupom 2,54 mm, čo umožňuje vývojárovi priamo prispájkovať kábel alebo dať konektor a vyviesť kábel do riadiacej dosky v závislosti od prevedenia koncové zariadenie.

Zďaleka nie je zriedkavý displej namontovaný na boku.

V závislosti od dizajnu elektronického zariadenia môže vývojár použiť akýkoľvek typ pinout - medzi softvérom nie je absolútne žiadny rozdiel.
Moduly môžu byť vybavené podsvietením obrazovky a typ zdroja podsvietenia je pre rôzne moduly odlišný. Niektoré displeje využívajú elektroluminiscenčné podsvietenie na zabezpečenie rovnomerného rozloženia svetla po celej ploche displeja obrazovky. Hlavnou nevýhodou displeja s týmto typom podsvietenia je možno jedna vec: na napájanie takéhoto displeja je potrebný striedavý prúd vysokého napätia. Nevýhody LED podsvietenia prakticky neexistujú, moduly využívajúce LED podsvietenie je možné použiť v aplikáciách pracujúcich v širokom rozsahu teplôt. Výrobca poskytuje široký výber z hľadiska farby podsvietenia - pretože LED matrice môžu byť inštalované takmer v akejkoľvek farbe.

Významnou nevýhodou displejov WH1602B je súčasná spotreba, preto je úplne nerentabilné používať tento typ displejov v zariadeniach s vlastným napájaním.

Displeje radu WH sú postavené na báze špecializovaného ovládača LCD modulu HD44780, ktorý bol práve navrhnutý na ovládanie LCD panelov syntetizujúcich znaky.

S krátkym popisom sa možno oplatí dokončiť a prejsť k praktickej časti. Číslovanie pinov displeja pri pohľade zhora (teda tak, ako sa naň pozeráme pri čítaní informácií), začína od pinu úplne vľavo. Toto je záver 1.

Pripojenie 1602:

tak pinout 1602:
1) GND - spoločný vodič
2) Vcc - napájacie napätie + 5V
3) V0 - kontrast
4) RS - riadok výberu registra
5) RW - riadok pre výber smeru prenosu dát (čítanie alebo zápis)
6) E - synchronizačná linka
7) DB0 - 14) DB7 - linky dátovej zbernice
15) A - anóda podsvietenia (tu pripájame + 5V cez odpor 100 Ohm)
16) K - katóda podsvietenia (pripojenie k spoločnému vodiču)

Displej môže pracovať v 2 režimoch: v režime 8-bitového prenosu dát, kedy sa dáta prenášajú v skupinách po 8 bitoch (tým je zabezpečená maximálna rýchlosť interakcie s displejom), a v režime 4-bitového prenosu, kedy je 8-bitový dáta sú rozdelené do dvoch skupín, každá so štyrmi bitmi a sú postupne prenášané cez štyri vysoko dátové linky DB4-DB7.

Ak chcete začať pracovať s displejom, musíte ho inicializovať. Proces inicializácie pozostáva zo sériového prenosu určitých údajov do ovládača HD44780. Po ich nájdení bude pripravený prijímať dáta na zobrazenie na obrazovke.

Prejdeme si procesom inicializácie displeja WH1602B v 8-bitovom režime pomocou riadiacej dosky založenej na mikrokontroléri Attiny2313.

Aké kroky je teda potrebné podniknúť na zabezpečenie inicializačný proces:
1) Zapnite displej
2) Pauza na 20 ms
3) Zadajte príkaz 00110000, keď RS=0 RW=0
4) Udržujte prestávku aspoň 40 µs
5) Zadajte príkaz 00110000, keď RS=0 RW=0
6) Udržujte prestávku aspoň 40 µs
7) Zadajte príkaz 00110000, keď RS=0 RW=0
8) Udržujte prestávku aspoň 40 µs
9) Zadajte príkaz 00111000, keď RS=0 RW=0
10) Udržujte prestávku aspoň 40 µs
11) Zadajte príkaz 00001000, keď RS=0 RW=0
12) Udržujte prestávku aspoň 40 µs
13) Zadajte príkaz 00000001, keď RS=0 RW=0
14) Udržujte pauzu aspoň 1,5 ms
15) Zadajte príkaz 00000110, keď RS=0 RW=0.

Vysvetlím: RS - ako je uvedené vyššie - riadok výberu registra (0 - je adresovaný príkazový register, do ktorého zapisujeme príkazy na vypnutie displeja, posunutie riadku, nastavenie kurzora atď.; 1 - adresa interného pamäť, kde bude bajt zapísaný a zobrazený na displeji).

RW - riadok pre výber smeru prenosu dát (0 - zápis na displej, 1 - čítanie údajov z displeja).
Po vydaní údajov do dátovej linky DB0-DB7 a nastavení hodnôt na linkách RS, RW je potrebné tieto dáta zablokovať - ​​na to je potrebné nastaviť linku E na 1 a potom ju prestaviť na jeho pôvodná poloha - na 0.

PD0 mikrokontroléra pripojíme na linku RS LCD, výstup mikrokontroléra PD1 na RW displeja a PD2 na linku E displeja a linky dátovej zbernice DB0-DB7 na príslušné linky portu B mikrokontroléra. Samotný displej je zapojený podľa vyššie uvedenej schémy.

Teraz je to na softvérovej časti:

Zahrnúť "tn2313def.inc" ; Attiny2313, 1 MHz hodiny .cseg .org 0 rjmp reset ;******************************************** *** ************************************ ;Štandardný skok na inicializovanú časť resetovania programu: ldi r16, nízka (RAMEND) ; Inicializácia zásobníka MCU mimo SPL, r16 rcall lcd_init ; Inicializácia displeja;Tu sme inicializovali zásobník mikrokontrolérov a pristúpili k inicializácii modulu LCD;*********************************** ********* **************************************** lcd_init: ldi r16, 0b10000000; resetujte všetky pull-up odpory z MCUCR, r16 ldi r16, 0b11111111 ; Port B s uvedením ddrb, r16 ldi r16, 0b00000111 ; Nastavenie portu D out ddrd, r16 ;Nakonfigurujte linky I/O portu: resetujte pull-up odpory a definujte; ************************* ********************************** * ; Na základe vyššie uvedeného postupu inicializácie vykonajte nasledujúce operácie: ldi r16, 0b00000000 ; Adresovanie IR ldi r17, 0b00110000 ; Nastavenie bitovej hĺbky oneskorenie volania dátovej linky_20000mks ; Pauza pred inicializáciou lcd rcall write_lcd ; Zápis dát na LCD rcall delay_40mks ; Oneskorenie pred vykonaním lcd operácií rcall write_lcd ; Zápis dát na LCD rcall delay_40mks ; Oneskorenie pred vykonaním lcd operácií rcall write_lcd ; Zápis dát na LCD rcall delay_40mks ; Oneskorenie pred vykonaním operácií s lcd ldi r17, 0b00111000 ; Nastavenie parametrov lcd rcall write_lcd ; Zápis dát na LCD rcall delay_40mks ; Oneskorenie pred vykonaním operácií s lcd ldi r17, 0b00001000 ; Vypnúť display rcall write_lcd ; Zápis dát na LCD rcall delay_40mks ; Oneskorenie pred vykonaním operácií s lcd ldi r17, 0b00000001 ; Vymazať zobrazenie rcall write_lcd ; Zápis dát na LCD rcall delay_1500mks ; Oneskorenie pred vykonaním operácií s lcd ldi r17, 0b00000110 ; Nastaviť režim vstupu rcall write_lcd ; Zápis dát na LCD rcall delay_40mks ; Oneskorenie pred vykonaním operácií s lcd ret; Opustite podprogram;************************************************** ***** ********************** delay_20000mks: ldi r18, 0b10110010 ; Zadajte premennú oneskorenia ldi r19, 0b00000101 ; Nastavenie preddeličky rjmp init_delay delay_1500mks: ldi r18, 0b11111010 ; Zadajte premennú oneskorenia ldi r19, 0b00000101 ; Nastavenie preddeličky rjmp init_delay delay_40mks: ldi r18, 0b11011000 ; Zadajte premennú oneskorenia ldi r19, 0b00000010 ; Nastavenie preddeličky init_delay: out TCNT0, r18 ; Inicializujte TCNT0 z TCCR0B, r19 ; Štart T0 test_TIFR: v r18, TIFR ; Prečítajte si TIFR sbrs r18, 1 ; Branch if "T0 Overflow" rjmp test_TIFR ; Nekonečná kontrola TOV0 ldi r20, 0b00000000 ; Doraz T0 von TCCR0B, r20 ldi r20, 0b00000010 ; Zaťaženie TOV0>>0 out TIFR, r21 ret ; Opustite podprogram;************************************************** ***** *********************** write_lcd: out portd, r16 ; Nastavte hodnotu RS linky von portb, r17 ; Výstup dátového bajtu DB0-DB7 nop ; Ochrana proti stroboskopickému hluku sbi portd, 2 ; E>>1 nop; Ochrana pred stroboskopickým šumom cbi portd, 2 ; E>>0 nop ; protihluková ochrana vedenia brány ret ; Opustite podprogram;************************************************** ***** ********************** user_write_IR: ldi r16, 0b00000000 ; IR adresovanie rcall write_lcd ; Zápis dát na LCD rcall delay_40mks ; Oneskorenie pred vykonaním operácií s lcd ret; Opustite podprogram;************************************************** ***** *********************** user_write_DR: ldi r16, 0b00000001 ; Adresovanie DR rcall write_lcd ; Zápis dát na LCD rcall delay_40mks ; Oneskorenie pred vykonaním operácií s lcd ret; Opustite podprogram;************************************************** ***** ********************** lcd_clear: ldi r16, 0b00000000 ; Adresovanie IR ldi r17, 0b00000001 ; Vymazať zobrazenie rcall write_lcd ; Zápis dát na LCD rcall delay_1500mks ; Oneskorenie pred vykonaním operácií s lcd ret; Opustite podprogram;************************************************** ******************************

Ako používať tento kód. Pre zadanie znaku na obrazovke je potrebné do registra R17 zapísať bajt zodpovedajúci kódu tohto znaku. Do registra 17 zadáme 0x1 - ak chceme zapísať znak na obrazovku, alebo prestavíme na 0x0, ak chceme zapísať nejaký príkaz do registra príkazov LCD.

Poskytol som podprogramy, ktoré používateľ volá:
user_write_IR - zápis príkazu do príkazového registra LCD;
user_write_DR - zapisovanie údajov na zobrazenie na LCD;
lcd_clear je podprogram/príkaz, ktorý sa volá na vymazanie displeja.

Ako pracovať s volaniami podprogramu:

Ldi r17, 0x24; Symbol s kódom 0x24 rcall user_write_DR; zápis znaku na zobrazenie ldi r17, 0x2; príkaz 0x2 rcall user_write_IR; napísať do registra.

Podotýkam, že pri použití podprogramu lcd_clear nie je potrebný predbežný záznam v R17.
Kam napísať kód? Tu:

Reset: ldi r16, nízky (RAMEND) ; Inicializácia zásobníka MCU mimo SPL, r16 rcall lcd_init ; Inicializácia displeja; VÁŠ KÓD!!! Napríklad: Ldi r17, 0xC; Zahrnúť obrázok ldi r17, 0x24; Symbol s kódom 0x24 rcall user_write_DR; napíšte znak na zobrazenie

Doplním, že nedávno sa objavili tieto moduly s doskou sériového prevodníka, ktoré umožňujú pripojiť 1602 LCD displejov pomocou 4-vodičového obvodu a fungujúceho cez rozhranie I 2 C. To. mierne sa zjednoduší zapojenie a uložia sa výstupy regulátora. Modul je možné zakúpiť samostatne a pripojiť k existujúcemu LCD 1602.

Zdrojový kód a firmvér si môžete stiahnuť nižšie

Článok hovorí o tom, ako správne pripojiť LCD k Arduinu, všetko, čo potrebujete vedieť o pripojení LCD 1602 a LCD i2c.

Displeje LCD 1602 založené na ovládači HD44780 sú stále jedným z najdostupnejších, najjednoduchších a najžiadanejších displejov na vývoj akéhokoľvek druhu elektronických zariadení v súčasnosti.

Nie je prekvapujúce, že ich možno vidieť ako v jednoduchých jednotkách zostavených doslova na kolene, tak aj vo vážnejších priemyselných, ako sú kávovary. Práve s takýmto displejom sú zostavené najobľúbenejšie moduly a štíty s tematikou Arduino, napríklad modul LCD I2C a štít LCD klávesnice.

V nasledujúcich krokoch si s obrázkami podrobne vysvetlíme, ako pripojiť LCD k Arduinu a zobraziť potrebné informácie na displeji.

Krok 2 LCD displej 1602 pre Arduino

Displeje 1602 sú dostupné v dvoch rôznych prevedeniach:

  • žlté podsvietenie s čiernym nápisom
  • alebo (toto sa stáva oveľa častejšie) modré podsvietenie s bielym.

Rozmery displejov na ovládači HD44780 sú veľmi rozdielne, no ovládajú sa rovnako. Najbežnejšie z rozmerov 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). Ale takýto problém je čiastočne riešiteľný a potom článok podrobne popisuje, ako to urobiť.

Displej má na pripojenie 16-PIN konektor. Výstupy sú označené na zadnej strane dosky, je to nasledovné:

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

Krok 3. Pripojenie LCD

Pred pripojením displeja a prenosom informácií naň sa oplatí skontrolovať jeho výkon. 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ý potenciometer 10 kΩ, jeho tvar nie je dôležitý. +5V a GND sú aplikované na krajné nohy a noha v strede je pripojená k výstupu VO.

Pri privedení napájania do obvodu je potrebné dosiahnuť potrebný kontrast, ak je nesprávne nastavený, obraz na obrazovke nebude viditeľný. Na nastavenie kontrastu sa treba „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.

Na fungovanie displeja slúži špeciálna knižnica zabudovaná v Arduino IDE LiquidCrystal.h, o ktorej budem písať nižšie. Môže pracovať v 8-bitovom a 4-bitovom režime. V prvom variante sa používajú iba nižšie a vyššie bity ( BB0-DB7), v druhom - iba mladší ( 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 jeho obnovovacia frekvencia je vždy nižšia ako 10-krát za sekundu. Ak chcete zobraziť text, musíte pripojiť kolíky DB7, DB6, DB5, DB4, E a RS ku kolíkom ovládača. Môžete ich pripojiť k ľubovoľným pinom Arduino, hlavné je nastaviť správnu postupnosť v kóde.

Ak požadovaný znak ešte nie je v pamäti ovládača, je možné ho určiť manuálne (spolu až sedem znakov). Bunka v uvažovaných displejoch má rozšírenie päť na osem bodov. Úlohou vytvorenia symbolu je napísať bitovú masku a umiestniť jednotky na miesta, kde majú bodky horieť, a nuly tam, kde nemajú. Schéma zapojenia diskutovaná vyššie nie je vždy dobrá, pretože Arduino používa najmenej šesť digitálnych výstupov.

Krok 4. Návod

Poďme preskúmať spôsob, ako to obísť a vystačiť si len s dvomi. Je potrebný ďalší modul prevodníka LCD na IIC/I2C. Ako je prispájkovaný k displeju a pripevnený k Arduinu je možné vidieť na obrázkoch nižšie.

Ale táto možnosť pripojenia funguje iba so špeciálnou knižnicou LiquidCrystal_I2C1602V1, ktorú však možno ľahko nájsť na webe 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ť v sekcii Libraries na našej webovej stránke na tejto stránke alebo z oficiálneho zdroja arduino.cc. Ale tiež si môžete stiahnuť nižšie uvedené odkazy:

Krok 5. Skica (kód programu)

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

Príklad náčrtu si môžete pozrieť na:

Súbor -> Príklady -> LiquidCrystal -> HelloWorld_SPI

Alebo ak máte menu v angličtine:

Súbor -> Príklady -> LiquidCrystal -> HelloWorld_SPI

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

Každý rádioamatér po určitom množstve jednoduchého DIY dospeje k cieľu postaviť niečo veľkolepé pomocou senzorov a tlačidiel. Oveľa zaujímavejšie je totiž zobrazenie údajov na displeji ako na monitore portu. Potom však vyvstáva otázka: aký displej si vybrať? A vo všeobecnosti, ako ho pripojiť, čo je potrebné na pripojenie? Odpovede na tieto otázky budú diskutované v tomto článku.

LCD 1602

Medzi mnohými možnosťami medzi displejmi by som chcel osobitne poznamenať displej LCD1602 založený na radiči HD4478. Tento displej je v dvoch farbách: biele písmená na modrom pozadí, čierne písmená na žltom pozadí. Pripojenie LCD 1602 k Arduinu tiež nespôsobí žiadne problémy, pretože je tu vstavaná knižnica a nemusíte sťahovať nič navyše. Displeje sa líšia nielen cenou, ale aj veľkosťou. Rádioamatéri často používajú 16 x 2, to znamená 2 riadky po 16 znakoch. Ale existuje aj 20 x 4, kde sú 4 riadky po 20 znakov. Rozmery a farba nehrajú žiadnu rolu pri pripájaní lcd 1602 displeja k Arduno, zapájajú sa rovnakým spôsobom. Pozorovací uhol je 35 stupňov, doba odozvy displeja je 250 ms. Môže pracovať pri teplotách od -20 do 70 stupňov Celzia. Počas prevádzky spotrebuje 4 mA pre obrazovku a 120 mA pre podsvietenie.

Kde sa používa?

Tento displej má svoju obľubu nielen medzi rádioamatérmi, ale aj medzi veľkými výrobcami. Napríklad tlačiarne, kávovary používajú aj LCD1602. Je to kvôli nízkej cene, tento displej stojí na čínskych stránkach 200-300 rubľov. Oplatí sa tam kúpiť, keďže v našich predajniach sú marže na tento displej veľmi vysoké.

Pripojenie k Arduinu

Pripojenie LCD 1602 k Arduino Nano a Uno nie je iné. S displejom môžete pracovať v dvoch režimoch: 4 bitový a 8. Pri práci s 8-bitovým displejom sa využívajú spodné aj vyššie bity a pri 4-bitovom len nižšie. Nemá zmysel pracovať s 8-bit, pretože sa pridajú ďalšie 4 kontakty na pripojenie, čo sa neodporúča, pretože rýchlosť nebude vyššia, limit aktualizácie displeja je 10-krát za sekundu. Vo všeobecnosti sa na pripojenie lcd 1602 k Arduinu používa veľa drôtov, čo spôsobuje určité nepríjemnosti, ale existujú špeciálne štíty, ale o tom neskôr. Na fotografii je znázornené pripojenie displeja k Arduino Uno:

Príklad kódu programu:

#include // Pridajte požadovanú knižnicu LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup()( lcd.begin(16, 2); // Nastaviť rozmer obrazovky lcd.setCursor(0, 0); // Nastaviť kurzor na začiatok 1 lines lcd.print("Ahoj, svet!"); // Zobrazte text lcd.setCursor(0, 1); // Nastaví kurzor na začiatok riadku 2 lcd.print("site"); // Zobrazte text ) prázdna slučka ()( )

Čo robí kód? V prvom rade sa pripája knižnica pre prácu s displejom. Ako už bolo spomenuté vyššie, táto knižnica je už súčasťou Arduino IDE a nemusíte ju dodatočne sťahovať a inštalovať. Ďalej sú definované kontakty, ktoré sú pripojené na kolíky: RS, E, DB4, DB5, DB6, DB7, resp. Potom sa nastaví veľkosť obrazovky. Keďže pracujeme s verziou so 16 znakmi a 2 riadkami, zapisujeme takéto hodnoty. Kurzor nastavíme na začiatok prvého riadku a zobrazíme náš prvý text Hello World. Potom umiestnite kurzor na druhý riadok a zobrazte názov stránky. To je všetko! Zvažovalo sa pripojenie lcd 1602 k Arduino Uno.

Čo je to I2C a prečo je to potrebné?

Ako už bolo spomenuté vyššie, pripojenie displeja vyžaduje veľa pinov. Napríklad pri práci s viacerými snímačmi a LCD displejom 1602 kontaktov jednoducho nemusí stačiť. Často rádioamatéri používajú verzie Uno alebo Nano, kde nie je veľa kontaktov. Potom ľudia prišli so špeciálnymi štítmi. Napríklad I2C. Umožňuje vám pripojiť displej iba pomocou 4 pinov. To je dvakrát menej. I2C modul sa predáva ako samostatne, kde si ho musíte sami prispájkovať, tak aj prispájkovaný na LCD 1602 displej.

Pripojenie pomocou I2C modulu

Pripojenie LCD 1602 k Arduino Nano s I2C zaberá málo miesta, iba 4 piny: zem, napájanie a 2 dátové výstupy. Napájanie a zem pripojíme na 5V a GND na Arduino, resp. Zvyšné dva kontakty: SCL a SDA sú pripojené k ľubovoľným analógovým kolíkom. Na fotografii môžete vidieť príklad pripojenia lcd 1602 k arduinu s modulom I2C:

Programový kód

Ak na prácu s displejom bez modulu bolo potrebné použiť iba jednu knižnicu, potom na prácu s modulom sú potrebné knižnice dve. Jeden z nich je už v Arduino IDE - Wire. Ďalšiu knižnicu, LiquidCrystal I2C, je potrebné stiahnuť samostatne a nainštalovať. Ak chcete nainštalovať knižnicu v Arduine, obsah stiahnutého archívu sa musí nahrať do koreňového priečinka Libraries. Príklad kódu pomocou I2C:

#include #include LiquidCrystal_I2C lcd(0x27,16,2); // Nastavenie zobrazenia void setup() ( lcd.init(); lcd.backlight();// Zapnutie podsvietenia displeja lcd..setCursor(8, 1); lcd.print("LCD 1602"); ) void loop ( ) ( // Nastavte kurzor na druhý riadok a nulový znak. lcd. setCursor(0, 1); // Zobrazenie počtu sekúnd od spustenia arduina lcd. print(millis()/1000); )

Ako vidíte, kód je takmer rovnaký.

Ako pridať svoj symbol?

Problém s týmito displejmi je, že neexistuje podpora pre azbuku a symboly. Napríklad je potrebné načítať nejaký znak do displeja, aby ho mohol odrážať. K tomu vám displej umožňuje vytvoriť až 7 vašich postáv. Predstavte si stôl:

0 0 0 1 0
0 0 0 0 1
1 1 0 0 1
0 0 0 0 1
1 1 0 0 1
0 0 0 0 1
0 0 0 1 0
0 0 0 0 0

Ak 0 - nič tam nie je, ak 1 - toto je zatienená oblasť. Vo vyššie uvedenom príklade môžete vidieť vytvorenie postavy „usmievajúceho sa smajlíka“. Pomocou vzorového programu v Arduine by to vyzeralo takto:

#include #include // Pridajte požadovanú knižnicu // Smile symbol bitmask byte smile = ( B00010, B00001, B11001, B00001, B11001, B00001, B00010, ); LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup()( lcd.begin(16, 2); // Nastavenie veľkosti obrazovky lcd.createChar(1, úsmev); // Vytvorenie znaku 1 lcd. setCursor(0, 0); // Nastavte kurzor na začiatok riadku 1 lcd.print("\1"); // Zobrazenie smajlíka (číslo znaku 1) - "\1" ) void loop()( )

Ako vidíte, bitová maska ​​bola vytvorená rovnako ako tabuľka. Po vytvorení sa môže zobraziť ako premenná na displeji. Pamätajte, že do pamäte je možné uložiť iba 7 znakov. V zásade to stačí. Napríklad, ak chcete zobraziť symbol stupňa.

Problémy, pri ktorých nemusí fungovať displej

Sú chvíle, keď displej nefunguje. Napríklad sa zapne, ale nezobrazuje znaky. Alebo sa nezapne vôbec. Najprv skontrolujte, či ste kontakty pripojili správne. Ak ste zvykli pripájať lcd 1202 k Arduinu bez I2C, je veľmi ľahké sa zamotať do drôtov, čo môže spôsobiť nesprávne fungovanie displeja. Mali by ste sa tiež uistiť, že je zvýšený kontrast displeja, pretože pri minimálnom kontraste ani nie je vidieť, či je LCD 1602 zapnutý alebo nie. Ak to nepomôže, problém môže spočívať v spájkovaní kontaktov, je to pri použití modulu I2C. Častým dôvodom, prečo nemusí displej fungovať, je tiež nesprávne nastavenie I2C adresy. Faktom je, že existuje veľa výrobcov a môžu nastaviť inú adresu, musíte to opraviť tu:

LiquidCrystal_I2C lcd(0x27,16,2);

V zátvorkách môžete vidieť dve hodnoty, 0x27 a 16,2 (16, 2 je veľkosť displeja a 0x27 je len I2C adresa). Namiesto týchto hodnôt môžete skúsiť zadať 0x37 alebo 0x3F. Ďalším dôvodom je jednoducho chybný LCD 1602. Vzhľadom na to, že takmer všetko pre Arduino je vyrobené v Číne, nemôžete si byť 100% istý, že zakúpený produkt nie je manželstvom.

Výhody a nevýhody LCD 1602

Zvážte výhody a nevýhody displeja LCD 1602.

  • Cena. Tento modul je možné zakúpiť za veľmi prijateľnú cenu v čínskych obchodoch. Cena je 200-300 rubľov. Niekedy sa dokonca predáva spolu s I2C modulom.
  • Jednoduché pripojenie. V dnešnej dobe asi nikto nepripojí LCD 1602 bez I2C. A s týmto modulom spojenie trvá len 4 kolíky, nebudú žiadne "pavučiny" drôtov.
  • Programovanie. Vďaka hotovým knižniciam je práca s týmto modulom jednoduchá, všetky funkcie sú už napísané. A ak je to potrebné, pridanie vašej postavy trvá len pár minút.
  • Počas používania tisíckami rádioamatérov neboli identifikované žiadne veľké mínusy, existujú iba prípady nákupu manželstva, pretože sa používajú hlavne čínske možnosti zobrazenia.

Tento článok sa týkal toho, ako pripojiť 1602 k Arduinu, a tiež poskytuje vzorové programy pre prácu s týmto displejom. Vo svojej kategórii skutočne patrí k tomu najlepšiemu, nie nadarmo si ho pre svoje projekty vyberajú tisíce rádioamatérov!