Rad s simboličkim LCD-om na temelju HD44780 kontrolera. STM32 i LCD. Rad s grafičkim prikazom knjižnice za rad s LCD-om

Na zahtjev radnika, a moja obećanja odlučila je opisati rad s signalom LCD 16x2 u okruženju CodevisionaVR. Počnimo s opisom samog LCD-a. Alpotovitski digitalni LCD zaslon s ugrađenim Chip Hd44780 tvrtke Hitachi može izlazati znakove u jednom, dva ili četiri puta od 8, 16, 20 ili 40 znakova. U ovom članku ću razmotriti LCD 16x2 (16 znakova, 2 redaka) , Ovaj zaslon za fizičku vezu s MK ima 16 zaključaka. (Mjesto zaključaka ovisi o poduzeću proizvođača) , Pogledajmo ove zaključke. Bez kaustave, smrdljiv znak u tali. U načelu, pogodan je za bilo koji LCD.
Pa, mislim da nije potrebno objasniti zašto je potreban jedan ili drugi PIN. Sve je tamo napisano na ruskom. Ali postoje neki mali, ali. 1) LCD zasloni mogu se objaviti u dvije opcije za 5 volti ili do 3.3. 2) Aktualno ograničavajući otpornik nije uvijek ugrađen u strujni krug. Pažljivo pogledajte, može stajati samo kratkospojnik. (Tako sam spalio pozadinsko osvjetljenje na dva zaslona.) 3) shema za otpornik za podešavanje kontrasta.
Dakle, kako je to čudo za povezivanje s MK. Radit ćemo s Atmega8 i Quartz na 4 MHz. Ovdje je stvarna i shema.
Kao što možete vidjeti bilo što komplicirano. Prva tri priključka D. Poslužite za upravljanje i posljednje četiri za podatke. Također možete raditi s ovim zaslonima preko 8-bitnog autobusa, ali mislim da daju dodatne 4 noge je otpad. Stoga ćemo raditi na 4-bitni autobus. Zakazano s shemom, sada ćemo biti s programom. Da biste inicijalizirali zaslon i prenijeli ga u 4-bitni način rada, morate obaviti nekoliko naredbi. Ali prije toga, želim razjasniti kako upravljački bitovi rade. Bit RS je odgovoran za ono što će dobiti LCD. Ako a Rs \u003d 0.onda prolazimo tim, i ako 1 Da su podaci. Ako je bit Rw \u003d 0.onda smo snimljeni na LCD-u i ako 1 , onda pročitajte. Bitni E. Samo vrata. To je, čim želimo ući u naredbu ili podatke, nakon što stavite sve bitove na noge jednostavno pokazuju 1 bitni E.i onda opet padne 0 , 1 - Uključite napajanje 2 - izdržati stanku od najmanje 20 ms 3 - naredbu za 4 bita. Gume 4 - izdržati stanku od najmanje 40 μs 5 - tima za 4 bita. gume (Rs \u003d 0), (RW \u003d 0), (D7 \u003d 0), (D6 \u003d 0), (D5 \u003d 1), (D4 \u003d 1) 6 - izdržati stanku od najmanje 40 μs 7 - tima za 4 bita. gume (Rs \u003d 0), (RW \u003d 0), (D7 \u003d 0), (D6 \u003d 0), (D5 \u003d 1), (D4 \u003d 1) 8 - Da bi se izdržala stanka od najmanje 40 μs 9 - tima za 4 bita. gume (Rs \u003d 0), (RW \u003d 0), (D7 \u003d 0), (D6 \u003d 0), (D5 \u003d 1), (D4 \u003d 0) 10 - izdržati stanku od najmanje 40 μs 11 - podesite parametre (Rs \u003d 0), (RW \u003d 0), (D7 \u003d 0), (D6 \u003d 0), (D5 \u003d 1), (D4 \u003d 0) (Rs \u003d 0), (RW \u003d 0), (D7 \u003d 1), (D6 \u003d 0), (D5 \u003d 0), (D4 \u003d 0) 12 - Isključite zaslon (Rs \u003d 0), (RW \u003d 0), (D7 \u003d 0), (D6 \u003d 0), (D5 \u003d 0), (D4 \u003d 0) (Rs \u003d 0), (RW \u003d 0), (D7 \u003d 0), (D6 \u003d 0), (D5 \u003d 1), (D4 \u003d 0) 13 - Očistite zaslon (Rs \u003d 0), (RW \u003d 0), (D7 \u003d 0), (D6 \u003d 0), (D5 \u003d 0), (D4 \u003d 0) (Rs \u003d 0), (RW \u003d 0), (D7 \u003d 0), (D6 \u003d 0), (D5 \u003d 0), (D4 \u003d 1) 14 - način unosa podataka (Rs \u003d 0), (RW \u003d 0), (D7 \u003d 0), (D6 \u003d 0), (D5 \u003d 0), (D4 \u003d 0) (Rs \u003d 0), (RW \u003d 0), (D7 \u003d 0), (D6 \u003d 1), (D5 \u003d 1), (D4 \u003d 0) O tome kako. Sada nakon ove abracadabra, naš je zaslon spreman za primanje podataka. Što je sljedeće. A onda razmotrimo LCD timove. Za prijenos naredbe / podataka na LCD-u na 4-bitni autobus, potrebne su dvije početne. Prvo prolazimo starije 4 bajta, a drugi prenosimo mlađe 4 bajta. Nadalje, sve naredbe ću pisati u parovima. Tim Čišćenje indikatora i postavljanje pokazivača u gornji lijevi kut. Rs \u003d 0, rw \u003d 0, D4 \u003d 0, D5 \u003d 0, D6 \u003d 0, D7 \u003d 0 (e \u003d 1 zatim 0) Rs \u003d 0, RW \u003d 0, D4 \u003d 0, D6 \u003d 0, D6 \u003d 0, D6 \u003d 0, D6 \u003d 0, D6 \u003d 0, D7 \u003d 1 (e \u003d 1 zatim 0) Naredba naredbe lijevom položaju. (X-znači ukazivanje na vrijednost) Rs \u003d 0, RW \u003d 0, D4 \u003d 0, D5 \u003d 0, D6 \u003d 0, D7 \u003d 0 (e \u003d 1 zatim 0) Rs \u003d 0, rw \u003d 0, D4 \u003d 0, D5 \u003d 0, D6 \u003d 0, D6 \u003d 0, D5 \u003d 0, D5 \u003d 0, D5 \u003d 0, D7 \u003d x (e \u003d 1 zatim 0) Naredba postavlja smjer smjera kursora (ID \u003d 0/1 lijevo / desno). Također, razlučivost pomak zaslona (SH \u003d 1) pri snimanju u DDRAM-u. Rs \u003d 0, rw \u003d 0, D4 \u003d 0, D5 \u003d 0, D6 \u003d 0, D7 \u003d 0 (E \u003d 1 zatim 0) Rs \u003d 0, RW \u003d 0, D4 \u003d 0, D6 \u003d 1, D6 \u003d 1, D6 \u003d 1, D6 \u003d ID, D7 \u003d sh (e \u003d 1 zatim 0) Naredba prikaza (d \u003d 1) i odaberite pokazivač (a, b). A \u003d 0, b \u003d 0 Nema pokazivača, ništa ne treperi A \u003d 0, b \u003d 1 Kursor ne, treperi cijeli simbol A \u003d 1, b \u003d 0 Kursor u obliku podvlake ne trepće A \u003d 1, b \u003d 1 Pokazivač u obliku naglašavanja i treperi Rs \u003d 0, RW \u003d 0, D4 \u003d 0, D5 \u003d 0, D6 \u003d 0, D7 \u003d 0 (e \u003d 1 zatim 0) Rs \u003d 0, RW \u003d 0, D4 \u003d 1, D5 \u003d D, D6 \u003d D, D6 \u003d D, D, D6 \u003d D, D, D7 \u003d b (e \u003d 1 zatim 0) Display / Cursor Shift Team (sc \u003d 0/1 kursor / prikaz rl \u003d 0/1 lijevo / desno). Rs \u003d 0, RW \u003d 0, D4 \u003d 0, D5 \u003d 0, D6 \u003d 0, D7 \u003d 1 (e \u003d 1 zatim 0) Rs \u003d 0, rw \u003d 0, D4 \u003d SC, D5 \u003d RL, D6 \u003d RL, D6 \u003d RL D7 \u003d x (e \u003d 1 zatim 0) Naredba za instalaciju u gumama (DL \u003d 0/1 4/8 bita), kao i na stranici znaka R. Rs \u003d 0, RW \u003d 0, D4 \u003d 0, D5 \u003d 0, D6 \u003d 1, D7 \u003d DL (E \u003d 1 zatim 0) Rs \u003d 0, RW \u003d 0, D4 \u003d 1, D5 \u003d 0, D6 \u003d 0, D6 \u003d P D7 \u003d 0 (e \u003d 1 zatim 0) Naredba za postavljanje adrese sljedeće operacije s instalacijom pokazivača i odaberite Cggram (njegovi izumljeni znakovi). Rs \u003d 0, RW \u003d 0, D4 \u003d 0, D5 \u003d 1, D6 \u003d ACG, D7 \u003d ACG (e \u003d 1 zatim 0) Rs \u003d 0, RW \u003d 0, D4 \u003d ACG, D5 \u003d ACG, D6 \u003d ACG, D6 \u003d ACG, D6 \u003d ACG, D6 \u003d ACG, D6 D7 \u003d ACG (e \u003d 1 zatim 0) Sljedeća naredba za postavljanje funkcije i odabir područja DDRAM memorije (znakova generator). Rs \u003d 0, rw \u003d 0, D4 \u003d 0, D5 \u003d 1, D6 \u003d DODAJ, D7 \u003d Dodaj (e \u003d 1 zatim 0) Rs \u003d 0, rw \u003d 0, D4 \u003d Dodaj, D5 \u003d Dodaj, D6 \u003d Dodaj, D7 \u003d dodaj (e \u003d 1 zatim 0) Naredba za snimanje podataka trenutnom području. Rs \u003d 1, rw \u003d 0, D4 \u003d podaci, D5 \u003d podaci, D6 \u003d podaci, D7 \u003d podaci (e \u003d 1 zatim 0) Rs \u003d 1, rw \u003d 0, D4 \u003d podaci, D5 \u003d podaci, D6 \u003d podaci, D6 \u003d podaci, D7 \u003d podaci (e \u003d 1 zatim 0) Naredbu čitanja podataka u trenutnom području. Rs \u003d 1, RW \u003d 1, D4 \u003d podaci, D5 \u003d podaci, D6 \u003d podaci, D7 \u003d podaci (e \u003d 1 zatim 0) Rs \u003d 1, RW \u003d 1, D4 \u003d podaci, D5 \u003d podaci, D6 \u003d podaci, D6 \u003d podaci, D6 \u003d Podaci, D7 \u003d podaci (e \u003d 1 zatim 0) To je zapravo sve momčadi. Još uvijek postoji tim za čitanje zastave pretjerivanja, ali ne koristim je, već samo izdržati svaki tim najmanje 40 μs. To je sve. A sada nakon čitanja ove rasprave, popijte šalicu čaja ili kave i zaboravite na sve. Budući da sve to Mugura preuzima funkcije iz knjižnice Codevisionavr. Stvoriti novi projekt kao što je već rečeno. Za one koji ovdje ne znaju, ostatak ulazi u kodu generatora na karticu LCD. i odaberite Portd.. Ono što smo radili. Prvi smo rekli programu koji želimo raditi s LCD zaslonom (odabirom kartice LCD.). Onda smo rekli da je povežemo s lukom D., Ispod padajućeg popisa omogućuje odabir broja znakova u nizu. Kao što je zadano vrijedno 16 I želimo raditi s LCD 16x2, nije potrebno ništa promijeniti. U nastavku za upute su obojene lučke noge za ispravnu povezanost LCD-a na MK. Sve, spremite projekt i pogledajte svježe generirani kod. Prva stvar koju treba obratiti pozornost je na dio koda nakon Direktive o preprocesoru #Include. Ovdje na ovome: // Alfanumerički LCD modul funkcije #Sm. Aqut __lcd_port \u003d 0x12; portdd #endazam #include > Razajmo ga. Prvi redak komentar u kojem piše da smo povezali snimku zaglavlja s funkcijama za rad s ikoničnim LCD-om. Otvaramo jedinicu za ulazak u asembler naredbe. Sljedeći niz dodjeljuje priključak na kojem je LCD povezan. Tim . U asemburu čini istu stvar #Include. U C. Ako slučajno odabirete kod u generatoru koda, uvijek se može promijeniti u ovom redu. Broj porta uvijek se može naći u datoteci MK inicijalizacije. Uvijek se povezuje u prvom retku. U našem slučaju, to mega8.h., Sljedeća linija zatvara jedinicu koda montaže. A posljednja linija samo povezuje sve što je potrebno za rad s LCD-om. Sada ćemo pokrenuti osnovne funkcije. Prva funkcija koja mora biti uzrokovana prije nego što ste počeli mučiti LCD - to je, naravno, funkcija inicijalizacije zaslona. Izgleda ovako: void LCD_Init (nepotpisan char lcd_columns) Ova značajka inicijalizira zaslon, a prijenos parametra mora biti broj znakova u retku. Pružamo naš program na dno i ispred glavnog ciklusa vidimo dvije linije sljedećeg sadržaja: // inicijalizacija LCD modula LCD_Init (16); Ovdje su iste 16 linija koje su odabrane na popisu programa koda generatora i gurnuli argument na funkciju. I ovdje, ako ste zaboravili strah koji imate 8 ili 20 znakova na nizu, jednostavno promijenite vrijednost argumenta u ovoj funkciji. void LCD_GOTOXY (nepotpisani CHE X, nepotpisani char y) Ova značajka, sudeći po imenu, prevodi pokazivač na položaj x, Y., Ovdje x. - Ovo je bukva. S lijeva na desno od 0 do 15/19/39 (Ovisi o broju slova u nizu) , ALI yor - Ovo je niz. Od vrha do dna od 0 do 0/1/3 (Ovisi o broju linija) . void LCD_PUTCHR (char c) Ova značajka prikazuje jedan znak trenutnom položaju. Primjer: lCD_PUTCHAR ("A") ili lCD_PUTCHAR (0x41) Da će na izlazu dati isti rezultat. To jest, parametar može biti i simbol i njegov kod. LCD_GOTOXY (0,0); LCD_PUTCHAR ("A"); LCD_GOTOXY (0,1); LCD_PUTCHAR (0x41); Mislim da su i komentari i ovdje, pogledajmo rezultat.
Sljedeća funkcija. void LCD_PARTS (char * str) Ova značajka prikazuje niz koji se nalazi u SRAM-u počevši od trenutnog položaja. Primjer: LCD_GOTOXY (0,0); LCD_PARS ("niz"); Mi vidimo:
Sljedeća funkcija. void LCD_Putsf (char * str) Ova značajka prikazuje niz u Flash počevši od trenutnog položaja. Primjer: LCD_GOTOXY (0,0); Lcd_putsf ("niz"); Mi vidimo:
Pa, zatvara svu ovu sramotu "Eraser" funkciju void lcd_lesr (praznina) Pozivanje ove značajke izbrisat ćete sve što je na zaslonu, a pokazivač će se povećati na ekstremno lijevo mjesto gornjeg niza. Dakle, za početak možete prikazati riječi i brojeve na LCD zaslonu pomoću gotovih funkcija. Sada ćemo razgovarati o tome kako izlazati vrijednost varijabli. U te svrhe trebat ćemo još jednu knjižnicu. Pa, oni koji su programirani na računalu moraju znati. To se zove stDio.h. Podižemo se na sam vrh programa i nakon direktive o unaprijed #Include. Doblym #Include. Kao rezultat toga, naš će kôd pogledati. // Alfanumerički LCD modul funkcije #Sm. Aqut __lcd_port \u003d 0x12; portdd #endazam #include #Include. Sada se upoznajte s funkcijom koja se bavi oblikovanjem teksta. void Printf (char Flash * FMTSTR [, Arg1, Arg2, ...]) Kako radi. U char flash * fmtstr Format izlazne vrijednosti je postavljen, au argumentima arg1, Arg2, ... Ime varijable. Primjer. nepotpisani char temp \u003d 123; Printf ("temp \u003d% 05d", temp); Što znači ovaj abra-kadabra. Prvi redak stvara varijablu i dodjeljuje vrijednost. Ovdje je sve jasno, ali ono što drugi radi. Sve u redu. Prvi prikazan temp \u003d.onda 00123 , Zašto se izlučuju 00123 , Ali zato što imamo stanje % 05d Što kaže: 1) % - Mi ćemo formatirati vrijednosti prvog argumenta 2) 0 - Podigdjet ćemo n znakova, praznih nula nula 3) 5 - Uzimamo 5 znakova ako je broj manji od 5 znakova, a zatim ispunite pacifiers nula. To ukazuje na stavku 2. Broj će biti usklađen na desnom rubu. četiri) d. - Izrađujemo broj u decimalnom formatu. pet) N. - Major nakon prikazivanja simbola ići na drugi niz. Sljedeća funkcija. void Sprintf (char bljesak, char flash * fmtstr [, arg1, arg2, ...]) Ova je značajka najzanimljivija za nas. Ona formatira niz i zapisuje ga u niz. Nakon što možemo podesiti na prikaz. Kako radi. nepotpisani char temp \u003d 123; Nepotpisani char niz; Sprintf (niz, "temp \u003d% 05d", temp); Lcd_parts (niz); Tako izgleda živo.
Tako smo naučili reproducirati formatirani tekst na LCD-u. Zatim kratko prođite kroz vrste transformacije. i. d. - da povuče decimalnu cjelinu s znakom u. - Izlaz decimatina bez znaka e. -d.D e-d E. - za izlaz tvari s promjenjivom točkom tipa -d.D e-d f. - za izlaz tvari s promjenjivom točkom tipa -dd. x. - za povlačenje u gospodi, mala slova X. - za povlačenje u šestom obliku velikih slova c. - Za prikaz na simbolu ako pišete % -05D. zatim potpišite "-" Prisiljeni poravnati na lijevom rubu, a pacifiers neće biti začepljen. Ako pokušate ispisati broj za pomicanje, onda je jako iznenađen. Broj se ne ispisuje. U zasjedi)) problem leži u postavkama kompilatora. Da bi prevodilac počeo shvaćati format plutati. Morate ga malo konfigurirati. Za ovo Project-\u003e Konfiguracija. i idite na karticu C kompajler, U pokrajini (S) Značajke Printf: Odabrati float, širina, preciznost, To je sve. Pokušajte, eksperimentirajte. Bit će pitanja, napišite na forumu. Sretno!

Čitatelj našeg blog Mihail ( mishadesh) Stvorio je izvrsnu knjižnicu za rad LCD. I predložio pisanje članka kako bi pokazao svoje sposobnosti. Zapravo, danas se radi o tome i raspravljat ćemo se da se funkcije provode, kao i na kraju članka bit će primjer za rad s prikazom.

Kao i obično, počet ću s raspravom o željezu ... i onda ne postoji ništa o čemu razgovarati. Kao iu prvom članku o radu s prikazima (), koristit ćemo odbor za otklanjanje pogrešaka Mini stm32., Zapravo, spajanje zaslona, \u200b\u200bglavne naredbe za pisanje podataka, slijed uputa za inicijalizaciju - sve to jest \u003d) dakle, sada idemo izravno na raspravu o knjižnici za rad s grafičkim prikazima.

Ovdje je potpuni popis značajki s objašnjenjima:

Sljedeća funkcija, kao što se vidi iz imena, mijenja orijentaciju zaslona. Neka dva položaja zaslona, \u200b\u200bodnosno dvije moguće vrijednosti parametara orijentacija:

  • Orijentacija_portrait.
  • Orijentacija_album.

Funkcija crta simbol na grafičkom zaslonu tako da ga stavlja na koordinate prenesene na funkciju, kao i postavljanjem njegove boje. Symbol probir odgovara fontu definiranom u datoteci. font.c. (Datoteka ide u knjižnicu).

Iz funkcije Lcd_drawchar () Slijedi sljedeća funkcija:

Void lcd_drawstring (char * s, uint16_t x, UInt16_t y, UInt16_t boja, UInt16_t backcolor, UInt8_t isttransparent);

Ovdje je jasno i bez nepotrebnih riječi 😉 funkcija se ispisuje LCD. Liniju teksta. Osnovica za ovu funkciju je prethodna - Lcd_drawchar ().

Osim simbola i teksta, naravno, potrebno je imati sposobnost crtanja osnovnih grafičkih primitiva, kao što je linija ili krug. Za to se provode sljedeće:

Void LCD_DRAWLINE (INT X1, INT Y1, INT X2, INT Y2, UINT16_T); Void LCD_DRAWRECT (INT X1, INT Y1, INT X2, INT Y2, UINT16_T boja, UInt8_t ispunjen); Void LCD_DRAWELLIPSE (UInt16_t X1, UInt16_t Y1, UInt16_t R, UINT16_T boju);

Da biste nacrtali liniju, morate proći u koordinatnu funkciju polazišta, koordinate krajnje točke, kao i željenu boju. Za pravokutnik - koordinate gornjeg lijevog kuta i koordinate donjeg desnog kuta (!). Posljednji parametar pun - Određuje je li potreban oblik za izvođenje. Jedinica znači da, broj će biti oslikana odabranom bojom, nula - samo će se obrisati kontura slike. To je razumljivo) ostao je samo krug - funkcija Lanelipse (), Ovdje, umjesto koordinata početka i kraja (gornji / donji kutovi), prenosimo središte kruga i radijusa kao argumente.

Pa, konačno, još jedna značajka:

Void LCD_filfilscr (uint16_t boja);

Funkcija vam omogućuje da sipajte zaslon čvrstom bojom.

Sve navedene značajke su implementirane u datoteci. Gui_drv.c..

Osim njih, knjižnica uključuje funkcije za pisanje podataka na zaslon ( Lcd_driver.c.) kao i već spomenutih fontova ( font.c.). Kao što možete vidjeti, sve je jasno sortirano različitim datotekama, tako da u načelu sve je vrlo jasno, pa idemo na praktični primjer!

Rječimo se! Idite u datoteku. main.c.... Neću dati potpuni kod perifernih inicijalizacijskih funkcija, sve to se može vidjeti izravno u datoteci ili u prethodnom članku, pozivanje na koji je bio na početku ovog članka 😉 funkcija glavni ():

Inperiph (); initfsmc (); initlcd (); kašnjenje (10.000); lcd_fillscr (0xffff); kašnjenje (100); LCD_sets (orijentacija_album); kašnjenje (100); LCD_drawstring ( "Knjižnica za LGDP4532", 30, 30, 0x888f, 0x0000, 0); LCD_DRAWRECT (100, 100, 200, 200, 0x0000, 0); LCD_DRAWRECT (120, 120, 180, 180, 0xff00, 1); LCD_DRAWELPSE (150, 150, 50, 0xF000); Dok (1) ())

Počinjemo s inicijalizacijom, slikajte zaslon bijelim i ugradite krajobraznu orijentaciju zaslona. I sada idite na crtanje grafike)

Prikazujemo niz na zaslonu, kao i dva pravokutnika i krug. Rezultat je očigledan:

Očito, sve radi dobro

Dakle, na ovo danas završite, hvala vam, zahvaljujući Mihailu za obavljenu rad i materijale predstavljeni. Evo kontakata autora knjižnice:

Skype - mishadesh

Pošta - [Zaštićeno e-poštom]

To je sve, hvala na vašoj pozornosti, do dvosmislenih sastanaka!

Općenito

STM32L-Discovery Debug Board ima indikator likvidnog kristala (LCD, engleski LCD. Zaslon s tekućim kristalima), koji ima šest 14 segmentiranih znakova, 4 znakova debelog crijeva (debelo crijevo), 4 boda (DP), 4 trake (bar). Svi segmenti se kombiniraju u kompleks grupe, COM1, COM2, COM3 u 24 segmente. Svaka grupa ima svoju zasebnu "zajedničku žicu".


Odbor za ispravljanje pogrešaka instaliran je mikrokontroler STM32L152RBT6. Mikrokontroler ima ugrađeni LCD kontroler, koji kontrolira jednobojne indikatore tekućih kristala.
LCD kontroler:

  1. Omogućuje konfiguriranje frekvencije ažuriranja (brzina okvira - frekvencija s kojom se ažuriraju informacije na LCD-u)
  2. Podržava statički i multipleksni način kontrole
  3. Podržava instalaciju softvera kontrasta
  4. Omogućuje korištenje nekoliko razina upravljačkog napona (do četiri)
  5. Koristi dvostruko puferiranje koje vam omogućuje da ažurirate podatke u LCD_RAM \u200b\u200bregistrima u bilo kojem trenutku programa, bez narušavanja integriteta informacija o prikazu

Registre memorije LCD kontrolera

U mikrokontroleru STM32L152RB, označeni su posebni LCD_RAM \u200b\u200bregistri, informacije pohranjene u kojima odgovara skupini segmenta COM0 - COM3. Svaka skupina odgovara dva 32 deviz registra. Takav broj registara omogućuje mikrokontroleru da kontrolira LCD s velikim brojem segmenata nego instaliran na ploči za otklanjanje pogrešaka.

Za kontrolu LCD-a s 176 segmenata, 4 skupine COM0 - COM3 koriste se za 44 segmenata, 8 skupina COM0 - COM7 u 40 segmenata koristi se za kontrolu LCA s 320 segmenata svaki.



Odbor za otklanjanje debuga STM32L-a koristi LCD s 96 segmentima odvojenim s 4 skupine COM0 - COM3 u 24 segmenata.


LCD na STM32L-Discovery debug odbora povezan je na takav način da se S40, S41 bitovi drugog LCD_RAM \u200b\u200bregistara koriste u svakoj skupini i S0-S27 bita prvih LCD_RAM \u200b\u200bregistara. Da bi se smanjio broj korištenih registara, informacije iz S40-S43 bita bit će zabilježene u slobodnim bitovima S28-S31 koristeći funkciju preraspodjele (remapping).

Jedinica razdjelnika frekvencije

Jedinica razdjelnika frekvencije (generator frekvencije) omogućuje vam da postignete različite frekvencije okvira (brzine okvira) na LCD-u u rasponu od 32 kHz do 1 MHz. Može se koristiti izvor taktičkog signala:
  1. Vanjski NF generator s frekvencijom od 32 kHz (LSE.)
  2. Interni HF generator s frekvencijom od 37 kHz (LSI. LSI.)
  3. Vanjski RF generator s frekvencijskim divizorima za 2,4,8 i 16 i maksimalnu frekvenciju 1 MHz. (HSE. Vanjska brzina)
Da bi se postigla točna sinkronizacija i smanjila pomicanje istosmjernog napona kroz segmente LCD-a, izvor osjetljivog signala mora imati stabilnost. Signal osjetljiv na LCDCLK ulazi u LCD kontroler. Učestalost sata signala je podijeljena, u skladu s koeficijentima fisije koje postavljaju PS bitovi, LCD_FCR Registriraj Div (Registar kontrole okvira). Rezultirajuća frekvencija na izlazu frekvencijskog razdjelnika se izračunava formulom:

F ck_div \u003d f lcdclk / (2 ps * (16 + div))

Brzina okvira izračunava se formulom:

F okvir \u003d f ck_div * dužnost

Gdje je dužnost koeficijent punjenja - omjer trajanja impulsa u njegovo razdoblje. Tijekom jednog okvira na LCA, informacije iz LCD_RAM \u200b\u200b[X], LCD_RAM \u200b\u200bi TD registara je sekvencijalno prikazana. Da bi LCD instaliran na ploči za otklanjanje pogrešaka, u jednom okviru, LCD kontroler mora izvući informacije iz 4 skupine COM0 segmenata - COM3, stoga trajanje kontrolnog impulsa za jednu skupinu će biti 1/4 trajanja okvira, tj. dužnost \u003d 1/4.

LCD upravljanja

Postoje dva načina za kontrolu LCD-a - statički način kontrole i način kontrole multipleksa. Sa statičkim zaslonom, svaki segment ispuštanja indikatora spojen je na izlaz mikrokontrolera. Što se tiče LCD-a, na Odboru debuga STM32ldiscovery, to će trajati 6 * 14 \u003d 84 zaključci mikrokontrolera (isključujući debelo crijevo, bodove i trake). Zbog korištenja takvih zaključaka, veza drugog periferije će biti nemoguće. STM32L152RB mikrokontroler ima 64 izlaza. Prilikom načina kontrole multipleksa (način rada dinamičkog upravljanja), isti se segmenti ispražnjenja indikatora kombiniraju se u skupine. Prikaz informacija dolazi zbog alternativnog paljenja segmenata za pražnjenje indikatora, s frekvencijom koja ljudsko oko ne doživljava.

Multipleks kontrolira vam da upravljate velikim brojem segmenata. Umjesto odvojene kontrole svakim elementom, mogu se dodati na liniju i stupce (COM i SEG), tako pojednostavljeni kontrolnim krugom, jer Svaki segment ne zahtijeva vlastitu kontrolnu liniju. Da biste omogućili odabrani segment, potrebno je poslati razliku u COM i SEG potencijalima. Primjer rada prvog iscjedka indikatora ("1:" prikazuje se na indikatoru):


Prva znamenka indikatora u vremenu t 0


Prva znamenka indikatora u vremenu t 1


Prva znamenka indikatora u vremenu t2


Opća shema za povezivanje segmenata do zaključaka LCD-a


Dijagram veze zaključaka LCD-a do portova mikrokontrolera

Za seg linije koristi se upravljački napon, čiji je broj razina određen koeficijentom pristranosti. LCD na ploči za ispravljanje pogrešaka koristi način višestruke kontrole s dutom \u003d 1/4 i pristranost \u003d 1/3. Vrijednost dužnosti i pristranosti instaliraju se kroz LCD_CR registar (kontrolni registar) u dužnosti i bias bita.

Praksa

Konfiguriranje priključaka mikrokontrolera

Za kontrolu LCD priključaka, mikrokontroler mora biti konfiguriran u skladu s tim:
  1. Do izlaza
  2. Koristite alternativnu funkciju AF 11 (alternativna funkcija)
  3. Imaju izlazne frekvencije u port 400 kHz
  4. Koristite način push-pull
  5. Bez stezanja otpornika
Kada se priključak radi u alternativnoj funkciji, izlazni spremnik porta kontrolira perifery signali. Datoteka zaglavlja STM32LXX.H CMSIS knjižnica sadrži opis svih perifernih registara, kao i pristupnih struktura.

Nalazi LCD-a spojeni su na GPIOA portove (PA1-PA3, PA8-PA10, PA15), GPIOB (PB3-PB5, PB8-PB15), GPIOC (PC0-PC3, PC6-PC11) mikrokontrolera. Za rad LCA-a morate poslati signal sata odabranim portovima. Tact GPIO portova mikrokontrolera dolazi iz RCC AHB sabirnice (resetiranje i kontrolu sata) - taktički i resetirani sustavi. Sat signal je napravljen instaliranjem odgovarajućih bitova u RCC_AHBENR registru (AHB periferni sat omogućiti registar).

RCC_AHBENR Registar (slika prikazuje prvih 15 ispuštanja)

Za GPioa, GPiob, GPPOC priključke, potrebno je postaviti 1 do 0, 1, 2 ispražnjenja registracije.

Zatim ću dati kod za snimanje informacija u registar koristeći BitMascus i korištenjem heksadecimalnih kodova. Korištenje bitmaske je prikladnije, ali rad s heksadecimalnim kodovima omogućuje vam da shvatite suštinu rada s registrima.

RCC-\u003e ahbenr | \u003d (rcc_hbenr_gpioen | rcc_ahbenr_gpioben | rcc_ahbenr_gpioceen); ili RCC-\u003e ahbenr \u003d 0x7; / * 0x7 \u003d 111 * /

Da biste odredili načine rada priključka, koristi se GPIOX_MODER Registar (Registar GPIO PORT moda) (x \u003d a..h). Sve ispražnjenja registracije grupirani su u motornu skupinu, gdje je Y broj PINA odgovarajući luka. Portovi moraju biti konfigurirani za alternativni način rada, tj. U grupi odgovornim za Idus, postavite vrijednost 10. za GPIOA priključak, morate podesiti igle 1-3.8-10.15, tj. Postavite 1 do 3,5,7,17,19,21,31 ispuštanja.


Registrirajte se GPIOX_MODER (GPPIO PORT MODE Registar)

GPioa-\u003e Moder | \u003d (gpio_moder_moder1_1 | gpio_moder_moder2_1 | gpio_moder_moder3_1 | gpio_moder_moder8_1 | gpio_moder_moder9_1 | gpio_moder_moder10_1 | gpio_moder_moder15_1); ili gpioa-\u003e moder \u003d 0x802a00a8; / * 0x802A00A8 \u003d 1000 0000 0010 1010 0000 0000 1010 1000 * /
Portovi mikrokontrolera moraju biti prevedeni u Push-Pull Mode. Da biste to učinili, morate postaviti 1 u GPIOX_OTYPER Registar (GPIO PORT izlazni registar) 1 u ispuštanju odgovornih za igle.


GPIOX_OTYPER (GPIO PORT izlazni tip registra)

Gpioa-\u003e otyper_ot_1 | gpio_otyper_ot_2 | gpio_otyper_ot_3 | gpio_otyper_ot_8 | gpio_otyper_ot_9 | gpio_otyper_ot_10 | gpio_otyper_ot_15); ili gpioa-\u003e otyper & \u003d ~ 0x0000870e; / * 0x870e \u003d 1000 0111 0000 1110 * /
Obje opcije utječu na odabrane igle. (PIN-ovi 1-3.8-10.15 konfiguriraju se za GPIA port). Ako trebate prevesti sve portove za push-pull mod, možete pisati u registarsku vrijednost:
Gpioa-\u003e otyper \u003d 0x0;
Da biste odredili frekvenciju informacija izlaza u priključak, koristi se registar GPIOX_SPEEDR (GPIO PORT Registrirajte se registar). Svi ispuštanja registra grupirani su u Obspeedry grupe, gdje je Y borovi broj odgovarajuće luke. U ovom radu mora se instalirati učestalost od 400 kHz. U grupi odgovornim za Idus postavite vrijednost 00.


Registrirajte se GPIOX_OSPEEDR (GPPIO PORT izlazni registar brzine)

Gpioa-\u003e ospeedr & \u003d ~ (gpio_speeder_ospedR1 | gpio_speeder_ospedR2 | gpio_speeder_ospeedR3 | gpio_speeder_ospeedr8 | gpio_speeder_ospeedR9 | ili gpioa-\u003e ospeedr & \u003d ~ 0xc03f00fc; / * 0xc03f00fc \u003d 1100 0000 0011 1111 0000 0000 1111 1100 * /
Ako trebate postaviti izlaznu frekvenciju u priključak 400 kHz za sve igle, možete pisati u registarsku vrijednost:
Gpioa-\u003e ospeedr \u003d 0x0;
Da biste onemogućili povlačenje otpornika, povlačenjem za odabrane igle, koristite GPIOX_PUPRDR Registar (GPIO PORT PullUp / Pull-DOWN Registar). Svi ispuštanja registracije grupirani su u grupe za pupked, gdje je Y broj odgovarajuće luke. Da biste onemogućili pritezanje otpornika u skupini koja je odgovorna za IDUS je postavljen na 00.


Registrirajte se GPIOX_PUPDR (GPIO Pull-Up / Pull-Dop Registar)

B ili gpioa-\u003e pupdr & \u003d ~ 0xc03f00fc; / * 0xc03f00fc \u003d 1100 0000 0011 1111 0000 0000 1111 1100 * /
Ako trebate isključiti pritezanje otpornika za sve igle, možete pisati u registarsku vrijednost:
Gpioa-\u003e pupdr \u003d 0x0;
Koristiti alternativnu funkciju za priključci mikrokontrolera, koristi se dva GPIOX_AFRL registra (GPPIO alternativna funkcija niska registra), koja je odgovorna za mlađe igle (od 0 do 7) i GPIOX_AFRH (GPIO alternativna funkcija Visoki registar), koji je odgovoran za starije igle (od 8 do 15). Svi redovito ispuštaju se grupirani u AFRY i AFHY Grupe, gdje je Y borovi broj odgovarajuće luke. Luke moraju biti konfigurirane za korištenje alternativne funkcije AF11, za to u skupini koja je odgovorna za IDUS mora biti postavljena na 1011.


Registrirajte se GPIOX_AFRL (GPIO alternativna funkcija Niska registra)


Registrirajte se GPIOX_AFRH (GPPIO Alternativna funkcija Visoki registar)

Da biste to učinili, pišite registrima:
Gpioa-\u003e afr \u003d 0xbbb0; / * 0xbbb0 \u003d 1011 1011 1011 0000 * / gpioa-\u003e afr \u003d 0xb0000bbb; / * 0xb0000bbb \u003d 1011 0000 0000 0000 0000 1011 1011 1011 * /

AFR \u003d 0xbBb0 - Piše vrijednost u GPIOX_AFRL registra.
AFR \u003d 0xb0000BBB - piše vrijednost u registar GPIOX_AFRH.

Postavke dotičnih PINS GPIOB priključaka, GOC se proizvode slično.

Postavljanje LCD kontrolera

Kada radite s LCD kontrolorom, kao i kod druge periferije, potrebno je poslati signal sata. Signal sata se također hrani sustavu upravljanja energijom. Sustav upravljanja kontrolom i energijom za taktiranje korištenja APB1 autobusa. Da biste riješili sat u RCC_APB1ENR registru (APB1 periferni sat omogućio registar), potrebno je postaviti 1 u 9 i 28 ispuštanja.


RCC_APB1ENR Registar (APB1 periferni sat Omogući registar)

RCC-\u003e APB1ENR | \u003d RCC_APB1ENR_PREN | RCC_APB1ENR_LCden; ili RCC-\u003e APB1enR | \u003d 0x10000200; / * 0x10000200 \u003d 1 0000 0000 0000 0000 0000 0000 0000 * /
Da biste radili LCD kontroler, morate odrediti izvor signala sata. Izvor je naveden u RCC_CSR registru. Prema zadanim postavkama, zabilježen je zapis u ovom registru. U Registar upravljanja napajanjem PWR_CR (REGISTRIR KONTROLA PWR POWER), uklanja se zaštita od pisanja na RCC_CSR registar. RCC_CSR Registar kontrolira RTC Clock Clock izvori i LCD kontroler
Snimanje na RCC_CSR Registar je dopušteno instalirati 1 u 8 kategoriju PWR_CR registra.


PWR_CR registar (Registar kontrole PWR snage)

Pwran-\u003e cr | \u003d pwr_cr_dbp; ili pwran-\u003e cr | \u003d 0x100; / * 0x100 \u003d 1 0000 0000 * /
Za promjenu izvora mjerenja LCD kontrolera (i RTC sat), prvo morate resetirati izvor sata RTCRST bit bit (postavku 1 do 23 kategorije) u RCC_CSR registar (kontrola / status registar).


RCC_CSR Registar (Registar kontrole / statusa)

RCC-\u003e CSR | \u003d rcc_csr_rtrst;
Ili pisati vrijednost u registar pomoću operatera "| \u003d", jer Vrijednost
Zadani registar se razlikuje od 0x0:
RCC-\u003e CSR | \u003d 0x800000; / * 0x800000 \u003d 1000 0000 0000 0000 0000 0000 * /
Da biste odabrali novi izvor sata, morate ukloniti RTCRST bit:
RCC-\u003e csr & \u003d ~ rcc_csr_rtrst; ili RCC-\u003e CSR & \u003d ~ 0x800000;
Izvor signala sata odabran je vanjski LC generator. Da biste uključili generator u RCC_CSR registru, morate instalirati LSEon Bits (SET 1 do 8 kategorije):
Rcc-\u003e csr | \u003d rcc_csr_lseon; ili RCC-\u003e CSR | \u003d 0x100; / * 0x100 \u003d 1 0000 0000 * /
Nakon uključivanja generatora, potrebno je neko vrijeme da ga stabilizira. Pripravnost generatora provjerava se pomoću postavke LSerdy bit u RCC_CSR registru:
Dok (! (Rcc-\u003e csr & rcc_csr_lserdy));
Odabir vanjskog LC generatora kao izvora sata provodi se postavkom u RTCSEL grupi RCC_CSR vrijednosti 01:
RCC-\u003e CSR | \u003d rcc_csr_rtcsel_lse; ili RCC-\u003e CSR | \u003d 0x10000; / * 0x10000 \u003d 01 0000 0000 0000 0000 * /
U LCD kontroleru morate instalirati željeni način pristranosti. Da biste to učinili, u LCD_CR registru (LCD kontrolni registar) morate postaviti vrijednost od 10 na grupu pristranosti. Prije instaliranja bita potrebno je očistiti bitove iz "smeća".


LCD_CR Registar (Registar upravljanja LCD-om)

Resetirajte bitove:
LCD-\u003e Cr & \u003d ~ lcd_cr_bias; ili LCD-\u003e CR & \u003d ~ 0x60;
Odabir moda bias \u003d 1/3 Korištenje bitmascusa:
LCD-\u003e cr | \u003d lcd_cr_bias_1; ili LCD-\u003e cr | \u003d 0x40;
Ugradite duty \u003d 1/4 način rada. Da biste to učinili, prvo odbacite sve bitove:
LCD-\u003e CR & \u003d ~ lcd_cr_duty; ili LCD-\u003e CR & \u003d ~ 0x1c;
Ugradite vrijednost 011 u dužnost LCD_CR za
Dužnost \u003d 1/4:
LCD-\u003e cr | \u003d LCD_CR_DUTY_0 | LCD_CR_DUTY_1; ili LCD-\u003e cr | \u003d 0xc;
Aktivirajte značajku preraspodjele zaključke. Da biste to učinili, postavite 1 do 7 kategorija registra LCD_CR:
LCD-\u003e cr | \u003d lcd_cr_mux_seg; ili LCD-\u003e cr | \u003d 0x80;
Instalirajte vrijednosti koeficijenata frekvencija LCDCLK-a. Vrijednosti koeficijenata postavljene su u registru LCD_FCR (Registar kontrole LCD okvira). Prvo, također čistimo sve bitove, a zatim instalirate željenu.


LCD_FCR Registar (Registar kontrole LCD okvira)

LCD-\u003e FCR i \u003d ~ LCD_FCR_PS; LCD-\u003e FCR & \u003d ~ LCD_FCR_DIV; ili LCD-\u003e FCR & \u003d ~ 0x3C00000; LCD-\u003e FCR & \u003d ~ 0x3C0000;
Vrijednosti coeficijenti frekvencije sata su postavljene na ck_ps \u003d LCDCLK / 16, ck_div \u003d ck_ps / 17. Da biste to učinili, postavite 1 do 24 i u 18 kategorija:
LCD-\u003e FCR | \u003d 0x1040000; / * 0x1040000 \u003d 1 0000 0100 0000 0000 0000 0000 * /
Da biste instalirali željenu razinu kontrasta, potrebno je postaviti vrijednost 010 na SS grupu, također unaprijed cijenjene bitove iz starih vrijednosti:
LCD-\u003e FCR & \u003d LCD_FCR_CC; LCD-\u003e FCR | \u003d LCD_FCR_CC_1; ili LCD-\u003e FCR & \u003d ~ 0x1c00; LCD-\u003e FCR | \u003d 0x800; / * 0x800 \u003d 1000 0000 0000 * /
Nakon instalacije svih vrijednosti potrebno je neko vrijeme na sinkronizaciji LCD_FCR registra. Sinkronizacija registra provjerava FCRSF bit instalacije u LCD_SR registru (LCD status registar).

LCD_SR Registar (Registar statusa LCD-a)

Dok (! (LCD-\u003e SR & LCD_SR_FCRSR));
Kao izvor napona za LCD, odaberite unutarnji korak up pretvarač u formiranje V LCD. Da biste to učinili, prva kategorija registra LCD_CR (Registar LCD kontrole) postavljen je na 0:
LCD-\u003e cr & \u003d ~ lcd_cr_vsel; ili LCD-\u003e CR & \u003d ~ 0x2;
Dopuštenje rada LCD kontrolera postavljen je na 1 u 0 kategoriji LCD_CR registra (LCD kontrolni registar):
LCD-\u003e cr | \u003d LCD_CR_LCden; ili LCD-\u003e cr | \u003d 0x1;
Nakon instalacije kao izvor napona unutarnji pretvarač, potrebno je pričekati spremnost. Spremnost se provjerava ugradnjom hardvera u RDY-u u LCD_SR registar (LCD status registar):
Dok (! (LCD-\u003e SR & lcd_sr_rdy));
Nakon rješavanja rada LCD kontrolera potrebno je čekati spremnost. Spremnost se provjerava ugradnjom hardvera ugrađenih bitova u LCD_SR registru (registar LCD statusa):
Dok (! (LCD-\u003e SR & LCD_SR_ENS));

Formiranje slike na LCD-u

Svi segmenti indikatora kombiniraju se u skupinu COM0 - COM3 u 24 segmenta (Seg0-SEG23). Informacije o segmentima pohranjuju se u LCD_RAM \u200b\u200bregistrima LCD kontrolera. Ožičenje tiskane pločice je takva da broj segmenata ne odgovara kategorijama LCD_RAM \u200b\u200bregistara.

Za prikaz 1 U prvom iscjedak LCD-a, morate lagane segmente 1b, 1c. Segment 1B pripada COM0 skupini, 1C segment pripada COM1 skupini. Prema tome, informacije o njima moraju biti zabilježene u RAM registrima (LCD_RAM0), RAM (LCD_RAM2). 1B segment zadovoljava LCDSEG22 LCD izlaz, informacije o tome koji je pohranjen u registru SEG40 RAM (LCD_RAM1). Koristeći funkciju preraspodjele, segment LCDSEG22 bit će odgovoran za registar SEG28 RAM (LCD_RAM0). 1C segment je odgovoren na LCDSEG1 LCD izlaz, informacije o tome koji je pohranjen u seg1 iscjedak RAM registra (LCD_RAM2).

LCD-\u003e RAM \u003d 0x10000000; / * 0x10000000 \u003d 1 0000 0000 0000 0000 0000 0000 0000 * / LCD-\u003e RAM \u003d 0x2; / * 0x2 \u003d 10 * /
Prije snimanja vrijednosti u memorijskim registrima potrebno je provjeriti je li dovršen prethodni prijenos podataka na LCD. To potvrđuje URD (ažuriranje zahtjeva za prikaz) LCD_SR Registar (LCD status registar). LCD kontroler ima dva izlazna spremnika, informacije se unose u prvi međuspremnik i prikazuje se na LCD-u od drugog međuspremnika. URD bit je postavljen tijekom prijenosa iz prvog međuspremnika u drugom, štiteći LCD_RAM \u200b\u200bregistre:
Dok (LCD-\u003e SR & LCD_SR_UDR);
Nakon snimanja informacija u LCD_RAM \u200b\u200bregistrima, morate instalirati Udr bit u LCD_SR registar (LCD status registar) (Postavite 1 u 2 Kategorije):
LCD-\u003e SR | \u003d LCD_SR_UDR; ili LCD-\u003e SR | \u003d 0x4; / * 0x4 \u003d 100 * /

Često korisnik mora primiti neke vizualne informacije s elektroničkog uređaja. Ako se informacije mogu zastupati u simboličkom obliku, jedna od opcija za njegov prikaz je korištenje simbola tekućih kristalnih pokazatelja (LCD ili LCD u inozemstvu). Danas ćemo govoriti o simboličkim pokazateljima provedenim na temelju kontrolora Hitachi. HD44780, SAMSUNG KS 0066 i slično.

Kao primjer, razmot ću LCD WinStar Wh1602D-Tmi-CT #Imam pokuse. Već sam spomenuo ovaj LCD u članku, grafički razvoj kojim danas koristim.

Detaljan datasheet. do LCD WinStar WH1602D-Tmi-ct:

Kategorija: Dokumenti.
Datum: 22.03.2015

Pojednostavljena LCD shema može biti predstavljena na sljedeći način:

Osnova indikatora je tekuća kristalna matrica, hraniv napon na element, možemo promatrati točku na zaslonu. U simboličkom LCD-u, ova matrica se sastoji od određenog broja poznanika, koji su grupirani po redovima i stupcima. Veličina poznanika u pikselima često je 5 × 8 bodova. Označavanje mog indikatora sadrži brojeve 1602 i to znači da moj pokazatelj može prikazati 2 retka od 16 znakova u svakoj. Također, kodiranje uključuje: kod proizvođača i vrstu indikatora, označavanje, boju, tablicu kodova i tako dalje.

Sustav indikatora WinStar

Prikaži / sakrij oznake dešifriranja

1. Proizvođač: WinStar Display Co, Ltd

2. Tip indikatora:

  • H. - simbol (znak sinteze)
  • C. - grafička boja s pasivnom matricom CSTN (Colorstn.)
  • X. - grafički s matricom Karticu. (Automatsko lijepljenje trake.- kristal montiran na troslojnu poliamidnu supstratnu kasetu)
  • O. - grafički s matricom Kog. (Čip na staklu. - kristal na staklu)

3. Horizontalna rezolucija:

  • broj znakova u nizu za simboličke pokazatelje tipa
  • broj horizontalnih točaka za grafičke pokazatelje

4. Vertikalna rezolucija:

  • broj retka za simboličke pokazatelje tipa
  • broj vertikalnih točaka za grafičke pokazatelje

5. Modelni kod

  • Kodira geometrijske dimenzije koje koristi kontroler

6. Vrsta pozadinskog osvjetljenja:

  • N. - bez pozadinskog osvjetljenja
  • B. - Elektrolumin, boja sjaja
  • D. - Elektrolumin, boja sjajnog
  • W. - Elektrolumin, boja sjaj - bijela
  • Yor - LED, sjaj boja - žuto-zelena
  • A. - LED, boja sjaja - jantar
  • R. - LED, svijetli boje - crveno
  • G. - LED, sjaj boja - zelena
  • T. - LED, sjaj boja - bijela
  • P. - LED, sjaj boja - plava
  • F. - Hladna katodna lampa (CCFL), boja sjaj - bijela

7. LCD tehnologija proizvodnje

  • B. - Tn sivo, pozitivno
  • N. - TN, negativni
  • G. - STN Grey, Pozitivno
  • Yor - Stn žuto-zelena, pozitivna
  • M. - STN Blue, Negativno
  • F.- FSTN pozitivno
  • T. - FSTN negativ
  • H. - HTN Gray, pozitivan
  • I. - HTN Black, negativ
  • Tn. (Iskrivljen nematic) -struktura kristala ima spiralni tip
  • STN. (Super upletena nematica.) - matrica koja se sastoji od LCD elemenata s promjenjivom transparentnošću
  • FSTN. (Film kompenzira STN.) — STN.- Satchase s naknadom za film. Tehnologija vam omogućuje da dobijete uvećani kut gledanja.
  • Htn (Homeotropna upletena nematica.) - Prikaz se temelji na snažnijem molekularnom uvijanju (obično 110 °) u usporedbi s konvencionalnim uvijenim nematičnim tn (90 °). Dajte širok kut gledanja i poboljšani kontrast. Prema karakteristikama, STN tehnologija je superiornija. Niski radni napon (2.5V i najniži trošak između nematica čini ih korisnima u prijenosnim samostalnim uređajima).

8. polarizator, kut gledanja, raspon radnog temperature

  • A. - rf, 6:00, n.t.
  • D. - rf, 12:00, n.t.
  • G. - rf, 6:00, w.t.
  • J. - rf, 12:00, w.t.
  • B. - Tf, 6:00, n.t.
  • E.- Tf, 12:00, n.t.
  • H. - Tf, 6:00, W.T.
  • K. - Tf, 12:00, W.T.
  • C. - TM, 6:00, n.t.
  • F.- TM, 12:00, n.t.
  • I. - TM, 6:00, W.T.
  • L. - TM, 12:00, W.T.
  • Rf (Reflektirajuća LCD) - LCD indikator koji radi isključivo na odraz svjetlosti. Slika je vidljiva samo s dovoljno vanjske rasvjete.
  • Tf. - (Transflektivan LCD.) Hidrokristalni zaslon, koji odražava svjetlo i emitira ga (sjaji samostalno).
  • Tm (transmisivno LCD.) - svjetlo dolazi kroz LCD s strane pozadinskog osvjetljenja. Ima visoko kvalitetne slike u zatvorenom prostoru i obično je vrlo niska (crni zaslon) s suncem.
  • N.t. - Normalni raspon temperature 0 ... + 50ºC Širiti - Napredni raspon temperature -20 ... + 70ºC

9. Dodatne opcije

Prva dva znaka su znak:

  • Ct./Cp. - Latina / ćirilica
  • EP./Et./Ee/En/EC/Es - Latina / Europe
  • JP./Jt./Js./Jn. - Latina / Japanski
  • Hp./Hs. - hebrejski

3-4 simbola:

  • T. - Naknada temperature
  • E. ili Ez. - Edge bl (pozadinsko osvjetljenje nalaze se oko perimetra). Simbol također može biti odsutan.
  • K.ili Rt - Eco Bl (LED diode se nalaze na stražnjoj strani zaslona ravnomjerno)
  • Vlan - Ugrađeni izvor negativnog napona
  • N. - bez ugrađenog izvora negativnog napona

10. Dodatne informacije:

# - kompatibilnost sa standardom Rohs.

Bilješka (Proizvođač mikrocirkula kontrolera):

  • xs. - Samsung
  • xp. - Sunplus.
  • xt. - Sitronix.
  • xe. - Epson.
  • xuja - UMC.

Koristeći ovaj sustav oznaka, otkrio sam da sam se pokazala kao znak indikatora sinteze PobjedničkiPrikazivanje znakova u 16 stupca i 2 redaka pomoću regulatora Ks. 0066 ili njegov analog, s LED osvjetljenjem bijele boje oko perimetra, s plavim negativnim transmisive.- zadovoljiti kut pregleda "za 6 sati", radni raspon temperatura -20 ... + 70ºC sa signigeneratorom, uključujući i ćirilicu i kompatibilan sa standardom Rohs. (Ne sadrži komponente štetne za zdravlje, čini se da se, kada se sastavlja, korišten lemnik bez olova).

Pokazatelji na temelju kontrolera HD44780., KS066U.

Upravlja radom indikatora ugrađenog kontrolera. Kao što kontrolor obično nastupa Hitachi HD44780., Samsung KS0066U. ili njihove brojne analoge i klonove. U pokazateljima koje proizvodi ruska tvrtka toll koristi kontroler PCF8576.

Kontroler ima jednu bajtne memorijske stanice ( Ddram), sadržaj koji se zapravo prikazuju na zaslonu u skladu s tablicom zabilježenim u Cggram., Memorijske stanice se obično upoznaju na LCD-u, tako da se rješava poznanstvo morate pogledati datasheet., Moramo snimiti kôd željenog simbola u željenom položaju, a sve ostale kontrolera će to učiniti sami.

Da biste odabrali položaj, postoji virtualno, kontrolirano pomoću naredbi kursor (broj trenutne memorijske ćelije, Ac). Može se učiniti vidljivom. Prema zadanim postavkama, prilikom pisanja simbola u ćeliju, pokazivač se kreće naprijed na jedan položaj.

Tablica koda indikatora obično se sastoji od tri dijela:

  • 0 × 00-0 × 07 - preuzeti signogenerator, znakovi stvoreni od vas
  • 0 × 20-0xff - ASCII kodovi Standardni simboli set i engleska abeceda
  • 0xa0-0xff - simboli nacionalnih slova i drugih, s simbolima preskakanja podudaranja na inventaru s engleskim.

Prikaži / sakrij tablicu koda, ćirilica

Primjer: Hex kod 0x4a odgovara slovu J., 0xB6 kod - pismo j..

Stariji četiri bita definiraju stupac odabranog simbola u tablici, mlađi red. Možete stvoriti vlastitu tablicu simbola tako da ga pišete Cggram., Svaki znak zahtijeva 5 bajtova (na bajtnom stupcu). Jedinice u svakoj papini određuju značajne piksele. Na primjer, za kodiranje pixelno brojeva 8 Ovaj slijed je potrebno: 0x6c, 0 × 92.0 × 92.0 × 92.0x6c.

Converter ćirilica

Za pretvaranje teksta koji sadrži ćirilične znakove u kodovima koji odgovaraju gornjoj tablici, unesite željeni tekst u tekstni okvir. Rezultat dobiven u nastavku može se kopirati i koristiti u vašim programima za izlaz ovog teksta na LCD-u.

Izvorni tekst:

Kodirani tekst:

Tablica kodova tima:

D7. D6. D5. D4. D3. D2. D1 D0. Svrha
0 0 0 0 0 0 0 1 Čišćenje zaslona Ac\u003d 0, adresiranje Ac na Ddram
0 0 0 0 0 0 1 Ac\u003d 0, adresirajući se na Ddram, Promjene se resetiraju, početak linije se upućuje na početku Ddram
0 0 0 0 0 1 ISKAZNICA.S.Odabire smjer pomicanja kursora ili zaslona
0 0 0 0 1 D.C.B.Odabir načina prikaza
0 0 0 1 S / C.R / l.Tim za smjenu kursora / zaslona
0 0 1 DlN.F.Definicija parametara pometa i širine sabirnice podataka
0 1 Ac5AC4.Ac3Ac2Ac1Ac0.Dodjeljivanje brojila Ac Adrese u regiji Cggram.
1 Ac6Ac5AC4.Ac3Ac2Ac1Ac0.Dodjeljivanje brojila Ac Adrese u regiji Ddram

Vrijednosti tablice zastave:

Zastava Vrijednost
ISKAZNICA.Distribucija brojača AC adrese, 0 - Smanjenje, 1 - povećanje
S.Način rada Shift Shift Shift Flag. 0 - Screen Shift nije napravljen, 1 - Nakon snimanja u DDRAM sljedećeg koda, zaslon se pomiče u smjeru određenom zastavom I / D: 0 - desno, 1 - lijevo. Shift ne mijenja sadržaj DDRAM-a. Samo Indikatori lokacije vidljivog početka retka u DDRAM-u
S / C.Zastava-naredba, proizvodnja zajedno s R / L zastavom, rad pomicanja zaslona (kao iu prethodnom slučaju, bez promjena u DDRAM) ili pokazivaču. Definira offset objekt: 0 - Pomaknut pokazivač, 1 - Pomaknuo zaslon
R / l.Flag-Command proizvodnju zajedno s S / C zastava zaslona pomak ili pokazivača. Određuje smjer smjene: 0 - lijevo, 1 - desno
D / l.Zastava Zastava definiranje širine sabirnice podataka: 0 - 4 ispuštanje, 1 - 8 ispuštanja
N.Način skeniranja slika na LCD-u: 0 - jedan redak, 1 - dvije linije
F.Simboli matrice veličine: 0 - 5 × 8 bodova, 1 - 5 × 10 bodova
D.Dostupnost slike: 0 - Onemogućeno, 1 - Uključeno
C.Kursor u obliku simbola podvlake: 0 - off, 1 - omogućeno
B.Kursor u obliku treperavog poznanika: 0 - off, 1 - omogućeno

Imenovanje zaključaka kontrolora:

  • DB0.-DB7. - odgovorni za dolazne / odlazne podatke
  • Rs. - Visoka razina znači da je signal na izlaza DB0-DB7 podataka, niske naredbe
  • W / r. - određuje smjer podataka (čitanje / pisanje). Budući da je operacija čitanja podataka s indikatora obično ne zatraženo, može se kontinuirano instalirati na ovom unosu nisko
  • E. - impuls s trajanjem od najmanje 500 ms na ovom izlazu određuje signal za čitanje / pisanje podataka iz DB0-DB7, RS i W / R terminala
  • V 0 - Koristi se za određivanje kontrastne slike
  • A, K. - Pozadinsko osvjetljenje energije (anoda i katoda) ako je dostupna
  • V cc. i GND. - Indikator LCD-a prehrane

Da biste kontrolirali LCD indikator, potrebno je za 6 ili 10 izlaza, ovisno o tome je li odabran način rada 4 ili 8 bitnih podataka. Da biste smanjili željeni broj zaključaka, mikrokontroler se može upravljati u 4-bitni način rada. U ovom slučaju, o zaključcima DB4.-DB7. Indikator će se najprije prenijeti starijim četiri podatkovna bitova / naredbi, a zatim najmlađi četiri bita. zaključci DB0.-DB3. će ostati neiskorišteni.

Jedan kontroler kontrolira ograničen broj znakova. Na indikatorskoj ploči mogu postojati 1, 2, 4, 8 kontrolera, a možda i više.

Dokumentacija o kontrolerima:

Kontroler Samsung KS0066U.

Kontroler Hitachi HD44780.

Kategorija: Dokumenti.
Datum: 21.03.2015

prevedeno u rusku opciju:

Kategorija: Dokumenti.
Datum: 21.03.2015

Pokazatelji različitih proizvođača često su kompatibilni i međusobno zamjenjivi, ali se mogu razlikovati u dimenzijama, pričvršćivanju, kontaktima i drugim stvarima. Stoga, prilikom odabira novog razvoja i potrage za zamjenama, kontaktirajte kataloge proizvođača:

Tablica kompatibilnosti simboličkih LCD pokazatelja različitih proizvođača:

Prikaži / sakrij tablicu

Tip Pobjednički TOPITI Vizija podataka. Boliymin. Sunca. Mikrotipovi. Wintek. Amspire.
8 × 2.Wh0802a.MT-8S2A.DV-0802.Bc0802a.SC0802A.MTC-0802X.WM-C0802m.AC082A.
10 × 1.MT-10S1
12 × 2.Wh1202a.Bc1202a.
16 × 1.Wh1601a.DV-16100.Bc1601a1SC1601A.MTC-16100X.Wm-c1601mAC161A.
Wh1601b.Bc1601b.SC1601B.
Wh1601lMT-16S1A.DV-16100.Bc1601d1.SC1601D.MTC-16101X.WM-C1601Q.AC161B.
DV-16120.AC161J.
16 × 2.Wh1602lMT-16S2RDV-16210.Bc1602e.SC1602e.MTC-16201X.WM-C1602Q.AC162E.
SC1602N.
Wh1602D.MT-16S2J.DV-16230.BC1602B1SC1602B.MTC-16202X.WM-C1602N.AC162A.
DV-16235MTC-16203X.
Wh1602c.MT-16S2D.DV-16236.Bc1602d.SC1602D.
Wh1602a.Mt-16s2hDV-16244.Bc1602hSC1602c.MTC-16204X.WM-C1602K.
Wh1602b.DV-16252.BC1602A.SC1602A.MTC-16205b.WM-C1602M.
Wh1602m.DV-16257.Bc1602f.SC81602F.
DV-16275
DV-16276.
16 × 4.Wh1604a.MT-16S4A.DV-16400.Bc1604A1.SC1604A.MTC-16400X.WM-C1604m.AC164A.
Wh1604b.
20 × 1.DV-20100.
Mt-20s1l
20 × 2.Wh2002a.MT-20S2A.DV-20200.Bc2002a.Sc2002a.MTC-20200X.WM-C2002m.AC202A.
Wh2002m.
Wh2002lMt-20s2m.DV-20210.Bc2002b.SC2002C.MTC-20201X.WM-C2002P.AC202B.
DV-20211AC202D.
DV-20220.
DV-20206-1
20 × 4.Wh2004a.MT-20S4A.DV-20400.Bc2004a.SC2004A.MTC-20400X.WM-C2004P.AC204A.
Sc2004g.
SC2004C.
Wh2004lDV-20410.Bc2004b.MTC-20401X.WM-C2004R.Ac204b.
24 × 1.Mt-24s1l
24 × 2.Wh2402a.MT-24S2A.DV-24200.BC2402A.SC2402A.MTC-24200X.WM-C2402P.AC242A.
Mt-24s2l
40 × 2.Wh4002a.DV-40200.BC4002A.SC4002A.MTC-40200X.WM-C4002P.AC402A.
40 × 4.Wh4004a.DV40400.BC4004A.SC4004A.MTC-40400X.WM-C4004m.AC404A.
SC4004C.

Snaga, podešavanje kontrasta i pozadinsko osvjetljenje

Pažljivo treba biti povezan s polaritetom priključka napajanja na LCD indikator, kao i osigurati da se napon napajanja leži u rasponu od +4,5 ... 5,5 V. Nepažljiv stav prema ovim trenucima može dovesti do pokazatelja izlaza!

LCD pokazatelji omogućuju vam da prilagodite kontrast pomoću naponskog razdjelnika. Prije prikazivanja podataka na indikator morate biti sigurni da je kontroliranje stresa u radnom području. Ocjene otpornika razlikuju se u različitim proizvođačima LCD-a. Neki modeli pokazatelja na ploči pružaju mjesta za instaliranje takav razdjelnika i dovoljno da imaju potrebne stope otpornika. Kontrast indikatora ovisi o kutu gledanja. Ako je indikator "dvanaest sati", onda pogledajte takav pokazatelj na takav način da je ispod razine očiju, ako je "nula sati", onda je dizajniran za promatranje razine očiju (okomito na ravninu zaslona) , Ako je indikator "šest sati" onda treba koristiti kada se promatra iznad razine očiju. Ovaj se trenutak mora uzeti u obzir prilikom kupnje.

Prehrambeno osvjetljenje

Ako indikator ima pozadinsko osvjetljenje, zaključci se obično nalaze odvojeno. Potrebno je povezati s napajanjem, postavljanjem nazivne struje pomoću vanjskog otpornika R (vidi datasheet.). Za moj pokazatelj, nazivni napon na anodi trebao bi biti 3,5 V i struja od 40 mA. Na temelju toga, denominacija strujnog ograničavanja otpornika:

Neki proizvođači na indikatorskoj ploči pružaju mjesto za instaliranje takav otpornik, morate imati odgovarajuću nominalnu vrijednost, približiti skakač i pozadinsko osvjetljenje će se pokrenuti iz iste linije kao i indikator.

Kako ocjenjujete ovu publikaciju?

  • FC-113 modul se vrši na temelju PCF8574T čip, koji je 8-bitni registar pomicanja - "Expander" izlaza za serijsku gumu I2C. Na slici mikrocirkutra je označen dd1.
  • R1 je brzi otpor za podešavanje kontrasta LCD zaslona.
  • J1 Jumper se koristi za uključivanje pozadinskog osvjetljenja zaslona.
  • Zaključci 1 ... 16 se koriste za povezivanje modula do izlaza LCD zaslona.
  • Kontaktne platforme A1 ... A3 su potrebne za promjenu i2C adrese uređaja. Sjedeći odgovarajuće skakače, možete promijeniti adresu uređaja. Tablica prikazuje sukladnost adresa i skakača: "0" odgovara rupturi lanca, "1" - podesivi skakač. Prema zadanim postavkama, sva 3 skakači otvorena i adresa uređaja 0x27..

2 Shema veze Arduino LCD zaslonaprema i2c.

Povezivanje modula na Arduino provodi se standard za I2C Bus: SDA izlaz modula je spojen na analogni priključak A4, SCL izlaz na analogni priključak A5 Arduino. Modul se pokreće pomoću napona +5 V iz Arduina. Sam modul povezan je zaključcima 1 ... 16 s odgovarajućim zaključcima od 1 ... 16 na LCD zaslonu.


3 Knjižnica za radprema i2c.

Sada vam je potrebna biblioteka za rad s LCD-om putem I2C sučelja. Možete koristiti, na primjer, ovaj (link u "download uzorak kod i knjižnica" redak).

Preuzeta arhiva LiquidCrystal_i2cv1-1.rar. Raspakirajte u mapi Knjižnice \\ tkoji se nalazi u Arduino Ide imeniku.

Knjižnica podržava skup standardnih funkcija za LCD zaslone:

FunkcijaSvrha
LiquidCrystal () stvara varijablu tipa tekućine i prihvaća postavke prikaza (PIN brojevi);
početi () inicijalizacija LCD zaslona, \u200b\u200bpostavljanje parametara (broj redaka i simbola);
Čisto () Čišćenje zaslona i vratite pokazivač na početni položaj;
dom () vratite pokazivač na početni položaj;
setcursor () ugradnja pokazivača na određeni položaj;
pisati () prikazuje simbol na LCD zaslonu;
ispis () prikazuje tekst na LCD zaslonu;
kursor () prikazuje pokazivač, tj. Podcrtavanje na sljedećem sjedalu simbola;
nocuursor () skriva kursor;
treptati () treperi pokazivač;
noblink () otkazati treptanje;
nodiseplay () isključite zaslon tijekom spremanja svih prikazanih informacija;
pRIKAZ () uključite zaslon tijekom spremanja svih prikazanih informacija;
scrolldisplayeft () pomicanje sadržaja zaslona na prvom položaju s lijeve strane;
scrolldisplayright () pomicanje sadržaja zaslona na 1 položaj udesno;
autoSkroll () uključivanje automatskog ugovaranja;
noutoscroll () isključivanje auto rabljenja;
s lijeva nadesno () određuje smjer teksta s lijeva na desno;
s desna na lijevo () smjeru teksta na desnoj strani na lijevo;
creachechar () stvara prilagođeni simbol za LCD zaslon.

4 Skica za izlaz tekstana LCD zaslonu putem i2c autobusa

Otvorimo uzorak: Uzorci datoteka LiquidCrystal_i2c CustomChari I malo ga mijenja. Povlačit ćemo poruku na kraju koji će biti ljepljiv simbol će biti. U komentarima na kod, komentiraju se sve nijanse skice.

#Include. // Spojite žicu #include knjižnicu // Povezujemo knjižnicu LCD #Define Printbyte (ARGS) pisanje (ARGS); // uint8_t srce \u003d (0x0.0xa, 0x1f, 0x1f, 0xE, 0x4,0x0); // Bit maska \u200b\u200bSimbol "Srce" LiquidCrystal_i2c LCD (0x27, 16, 2); // Postavite adresu 0x27 za LCD zaslon 16x2 postavljanje praida () () ( LCD.Init (); // inicijalizacija LCD zaslona LCD.Backlight (); // Uključivanje pozadinskog osvjetljenja LCD.Createechar (3, srce); // stvoriti simbol srca u 3 LCD.HOME () memorijske ćelije; // Stavite kursor u gornji lijevi kut, na položaj (0,0) LCD.! "); // Ispiši LCD.Setcursor Text String (0, 1); // Prijenos pokazivača na niz 2, simbol 1 LCD.Print ("I"); // Ispis poruke na liniji 2 LCD.Printbyte (3); // Ispiši simbol "Srce", koji se nalazi u LCD-u 3. stanice ("Arduino"); } praznina () () ( // treptanje posljednjeg LCD.Setcursor simbol (13, 1); // prijenos kursor na string 2, simbol 1 LCD.print ("\\ t); Kašnjenje (500); LCD.Stursor (13, 1); // prijenos kursor na string 2, simbol 1 LCD.print (""); Kašnjenje (500); }

Usput, likovi zabilježeni od strane tima lcd.createchar ();, ostaju na zaslonu zaslona čak i nakon isključivanja, jer Zabilježeno u 1602 mFU.

5 Stvaranje vlastitih likovaza LCD zaslon

Još malo detalja, razmotrite pitanje stvaranja vlastitih znakova za LCD zaslone. Svaki simbol na zaslonu sastoji se od 35 bodova: 5 u širini i 7 u visini (+1 backup niz za potkopavanje). U redu 6 dane skice postavili smo niz 7 brojeva: (0x0, 0xA, 0x1f, 0x1f, 0xe, 0x4, 0x0), Mi transformiramo 16-bogatih brojeva u binarnu: {00000, 01010, 11111, 11111, 01110, 00100, 00000} , Ovi brojevi nisu samo malo maski za svaku od 7 redaka simbola, gdje "0" označavaju svjetlosnu točku i "1" - tamno. Na primjer, simbol srca naveden u obliku bitne maske će gledati na zaslon kao što je prikazano na slici.

6 Office LCD zaslonna autobusu i2c

Voziti skicu u Arduinu. Na zaslonu će se na kraju pojaviti natpis s trepeljim pokazivačem.


7 Što je "za"guma i2c.

Kao bonus, razmislite o privremenom dijagramu izlaza latinskih znakova "A", "B" i "C" na LCD zaslonu. Ovi su znakovi dostupni na zaslonu ROM i prikazani su jednostavno prijenosom njihove adrese. Dijagram se uklanja iz zaključaka RS, RW, E, D4, D5, D6 i D7 zaslon, tj. Već nakon FC-113 pretvarač "i2c paralelni autobus". Možemo reći da uronimo malo "dublje" u "željezo".


Privremeni dijagram izlaza latinskih znakova "A", "B" i "C" na LCD zaslonu 1602

Dijagram pokazuje da su likovi koji su u DVLD ROM-u (vidi stranicu 9.11 Datasheet, referenca u nastavku) prenosi dva ghee, od kojih prvi definira tablicu stupca stola, a drugi je broj linije. U isto vrijeme, podaci "ugrabiti" na prednjoj strani E. (Omogući) i liniju Rs. (Registracija Odaberite, Registrirajte selekciju) je u stanju logičke jedinice, što znači prijenos podataka. Niski status državnog statusa RS znači prijenos uputa koje vidimo prije prijenosa svakog simbola. U tom slučaju, kod upute za povratak prijevoza se prenosi na položaj LCD zaslona položaja (0, 0), kao što možete saznati i proučavanjem tehničkog opisa zaslona.

I još jedan primjer. Na ovom vremenskom dijagramu prikazuje izlaz simbola "Heart" na LCD zaslonu.


Opet, prva dva impulsa Omogućiti Upute za usklađenost Dom () (0000 0010 2) - povratak prijevoza na položaj (0; 0), a druga dva - izlaz na LCD zaslonu pohranjen u memorijskoj ćeliji 3 10 (0000 0011 2) "Srce" simbol (upute lcd.createchar (3, srce); Skica).