0,00 €

V košarici ni izdelkov.

0,00 €

V košarici ni izdelkov.

More
    DomovLiteraturaArhiv literatureLCD prikazovalnik s PIC

    Kako na LCD izpisujemo tekst

    Sedaj, ko poznamo vse ukaze LCD prikazovalnika in ko ga znamo inicializirati, bi radi nanj tudi kaj izpisali. To je pri znanju, ki smo ga nabrali do sedaj, mačji kašelj. Pri inicializaciji ste lahko videli, da sem na koncu poslal LCD-ju nekaj ukazov. Te ukaze lahko sedaj prepoznate iz gornjega seznama: z njimi sem nastavil tip LCD-ja, način komunikacije, pisanje na zaslon od leve proti desni, brisanje zaslona… Vse te ukaze (razen »function set«) lahko pošljete kjerkoli v programu ali pa jih že pri inicializaciji spremenite, da bo zaslon deloval po vaših željah. Po inicializaciji moramo vpisati ukaz, s katerim nastavimo trenutni DDRAM naslov na 0x00, in že lahko pišemo na LCD. Vsakič, ko boste vpisali podatek v LCD, se bo kurzor pomaknil za 1 mesto v desno in za njim se bo izpisal znak s kodo, ki je enaka vpisanemu podatku. Če želite pisati na začetek druge vrstice dvovrstičnega LCD-ja, morate trenutni DDRAM naslov nastaviti na 0x40. Znake lahko izpisujete kjerkoli na vidnem ali nevidnem delu zaslona. Če postavite kurzor (DDRAM naslov) na mesto, kjer se že nahaja znak, ga bo nov vpisan znak prepisal, ostali tekst pa se ne bo pomaknil naprej, kot je to navada pri računalnikih. Ker program pove več kot tisoč besed, si poglejte izpis programa, ki na dvovrstični LCD v prvo vrstico izpiše stavek »LCD«, v drugo vrstico pa »Dela!«. Nato bo program po približno 1 s izključil kurzor, po še 1 s pa bo tekst pomaknil za dve mesti v desno. Še 1 s kasneje bo izbrisal zaslon, ga postavil v originalno pozicijo, vključil majhen kurzor in v prvo vrstico izpisal stavek »Hisa«, ki ga bo po 1 s spremenil v »Nisa« tako, da bo samo črko H nadomestil z N. Tako bom v enem samem programu prikazal uporabo večine LCD-jevih funkcij.

    Program lcd.asm se nahaja na downloadu.

    V programu ni ničesar novega, kar še ne bi poznali. V njem smo samo združili vse, kar smo se že naučili o LCD-jih. Edina stvar, ki si zasluži komentar, je ta, da smo na LCD vpisovali kar črke in ne kakšnih »čudnih« znakovnih kod. To je normalno, saj sem že prej omenil, da imajo vse črke angleške abecede, številke in pogosti znaki svoje kode na LCD-ju enake njihovi standardni ASCII kodi. Kot vemo še iz prejšnjega poglavja, bo MPLAB črko v enojnih navednicah pretvoril v njeno standardno ASCII kodo, zato bo tudi izpis na LCD-ju enak tistemu v MPLAB-u. Dodatni znaki iz LCD-jevega nabora se lahko razlikujejo med različnimi prikazovalniki in najbolje je, da si napravite programček, ki bo izpisoval znake z vsemi kodami od 8 do 255 (kode od 0 do 7 imajo namreč znaki, ki jih sami naredimo) na zaslon. Tako boste točno vedeli, katere znake imate na voljo. V programu sem na začetku z EQU direktivo priredil kodam ukazov imena, da je postal tako program bolj čitljiv in razumljiv. Na koncu moram priznati, da je program zelo slabo napisan, ker nisem hotel poglavja obremenjevati s še kakšnimi novimi »dodatki«. Ponavadi namreč ne izpisujemo besed črko po črko, temveč imamo shranjen celoten niz črk v EEPROM-u ali v programskemu pomnilniku in jih od tam izpisujemo na zaslon s posebnim podprogramom. Izpisovanje iz EEPROM-a ni težko, saj smo EEPROM že prejšnjič spoznali, zato bo tak program vaša naloga. Shranjevanje nizov v programski pomnilnik pa bomo pustili za naslednje poglavje.

    Izdelava lastnih znakov

    Slike niKončno smo prišli do zadnjega dela poglavja, kjer se bomo naučili izdelave lastnih znakov. Na sliki 7 si lahko pogledate, kako je organiziran CGRAM, ki te podatke shranjuje:

    Kot vidite, zavzame vsak znak 8 bajtov CGRAM-a, in ker je vsega prostora 64 bajtov, lahko napravimo do 8 svojih znakov. Ti znaki imajo kode od 0x00 do 0x07, na zaslon pa jih izpisujemo tako kot vse druge znake z vpisom njihove kode. Na sliki 7 sta narisana dva znaka (prvi je »smeško«, drugi pa črka č). Kot vidite, pomeni vsak bajt v CGRAM-u eno vrstico matrike znaka. Ker je znak velik 5×8 pik (5 stolpcev, 8 vrstic), se višji trije biti podatka ne upoštevajo, nižjih 5 bitov pa predstavlja eno vrstico znaka. Tisti bit, ki je postavljen na 1, bo na simbolu temen, tisti bit, ki pa je enak 0, pa bo svetel. Na sliki lahko vidite, kakšne simbole bodo ustvarili napisani podatki. Sedaj lahko sami narišete svoje znake na karirast papir in tako določite, kakšne vrednosti bo potrebno vpisati v CGRAM. Paziti morate le, da je celotna najnižja vrstica znaka svetla, ker je v njej prostor za kurzor. Vpisovanje podatkov v CGRAM je popolnoma enako vpisovanju v DDRAM, le da je potrebno pred začetkom pošiljanja podatkov vpisati na LCD ukaz za nastavitev trenutnega CGRAM naslova na ustrezno vrednost. Po tem ukazu lahko pošljete enega za drugim vseh 64 bajtov podatkov oz. kolikor znakov mislite ustvariti. Naslov CGRAM-a se bo namreč po vsakem vpisu podatka avtomatsko povečal za 1. Če želite npr. ustvariti le znak s kodo 0x01, morate vseh njegovih 8 bajtov vpisati od naslova 0x08 dalje (kjer se konča prvi znak). Poglejmo si še izpis programa, ki ustvari takšna znaka, kot sta na sliki 7, in jih izpiše enega za drugim v zgornji levi kot zaslona:

    Program crke.asm se nahaja na downloadu.

    V programu spet ni dosti novega. Dodal sem mu nov podprogram, ki nastavi naslov CGRAM-a, ki pa nič kaj posebnega – le ustrezen ukaz naredi s pomočjo operacije OR. Ukaze sem zopet definiral z direktivo EQU na začetku programa. Podatke za nova dva znaka sem zapisal kar v EEPROM s pomočjo MPLAB-ove direktive DE, pri zagonu programa pa jih podprogram Crke vpise v CGRAM. Pri tem sem uporabil trik za preverjanje, ali je vpisanih že vseh 16 podatkov. Ko v zanki prvič dosežemo število 16, se namreč postavi na 1 bit 4 v podatku (poskusite binarno šteti, pa boste videli, da imam prav). Ker število 16 pomeni, da je na vrsti 17 podatek, ki ga ni, instrukcija BTFSS poskrbi, da pridemo ven iz zanke (16 podatkov je na decimalnih naslovih od 0 do 15, naslov 16 zato nosi 17. podatek). Uporabil sem tudi novo instrukcijo, CLRW (CLeaR W), ki postavi register W na 0 (ga izbriše). CLRW se izvede v 1 strojnem ciklu.

    Naloga št.3:

    Napišite program, ki bo iz EEPROM-a prebral vaše ime in ga izpisal v zgornjem levem kotu LCD-ja. Ime mora nato potovati po zaslonu od leve proti desni in nazaj v neskončni zanki. Med posameznimi koraki animacije naj bo približno 1 s premora. Sami lahko izberete, na katere pine 16F84 boste priključili LCD. Ime vpišite v EEPROM preko MPLAB-ove direktive DE.

    Program

    Virtualna trgovina, nakup brošure in informacije!

    LCD prikazovalnik s PIC mikrokontrolerjem

    Avtor: Jernej Škvarč

    Ljubljana, avgust 2004