Entry mode set (nastavitev načina vpisa v LCD)
LCD ima to dobro lastnost, da po vpisu vsakega znaka avtomatsko poveča trenutni naslov DDRAM-a, tako da se znaki avtomatsko izpisujejo eden za drugim. Prav tako se avtomatsko povečuje naslov pri vpisovanju v CGRAM. S tem ukazom si lahko izberemo več različnih načinov delovanja: LCD lahko izpisuje znake od leve proti desni (torej povečuje DDRAM naslov), lahko pa jih izpisuje tudi od desne proti levi (torej ob vsakem vpisu novega znaka zmanjša trenutni DDRAM naslov). Poleg tega lahko tudi vključimo ali izključimo avtomatsko pomikanje vidnega polja zaslona: če to izbiro omogočimo, se bo po vsakem vpisu znaka na LCD zaslon ta pomaknil tako, da bo kurzor vedno na začetku vrstice, vpisanega teksta pa ne bomo videli, ker se bo nahajal na predhodnih, nevidnih naslovih DDRAM-a (viden del zaslona se bo pomikal skupaj s kurzorjem). Koda tega ukaza izgleda takole, , tabela 6.
Bit I/D določa način spreminjanja naslova DDRAM-a pri vpisu – če je vklopljen, se bodo naslovi pri vpisu povečevali, če pa je izklopljen, se bodo naslovi zmanjševali. Bit S nadzoruje pomikanje zaslona – če je enak 1, se bo vidni zaslon pomikal s kurzorjem, če pa je izklopljen, bo vidni zaslon vedno na istem položaju, pomikal pa se bo samo kurzor. Ker ne pišemo od desne proti levi in ker bi radi to, kar napišemo, tudi videli na zaslonu, se ustrezna koda za to nastavitev glasi 0x06. Pri vpisu tega ukaza morata biti pina RS in R/W izključena, po ukazu pa moramo počakati več kot 50 µs.
Display on/off control (nadzor nad vklopom/izklopom zaslona)
Ta ukaz omogoča izklop LCD-ja, poleg tega pa z njim določimo, ali bo kurzor viden in kakšno obliko bo imel. Poglejmo si njegovo kodo, , tabela 7.
Bit D nadzoruje zaslon – če ga vklopimo, bo zaslon vklopljen, če pa ga izklopimo, bo zaslon izklopljen. Bit C nadzoruje kurzor – če je vklopljen, bo kurzor na zaslonu viden, če pa je izklopljen, bo kurzor skrit. Bit B nadzoruje obliko kurzorja – če je 1, bo kurzor utripajoč temen pravokotnik, če je 0, bo kurzor tanka črtica. Če želite npr. vklopljen zaslon z utripajočim kurzorjem, se bo koda ukaza glasila 0x0F. Pri vpisu ukaza morata biti pina RS in R/W izključena, po vpisu pa moramo počakati več kot 50 µs.
Cursor or display shift (pomik kurzorja ali zaslona)
Ta ukaz naredi to, o čemer smo govorili na začetku poglavja: vidni del zaslona (»okno«) pomika po DDRAM pomnilniku, omogoča pa tudi premikanje kurzorja. Po vsaki izvedbi ukaza se zaslon ali kurzor premakne za en znak v levo oz. desno. Njegova koda je, tabela 8.
Nižja 2 bita sta lahko poljubna, 0 ali pa 1. V nadaljevanju jih bom nastavljal na 0. Bit S/C določa, kaj se bo pomaknilo: če je 1, se pomakne zaslon, če pa je 0, se pomakne kurzor. Bit R/L določa smer pomika: če je 1, bo pomik v desno, če pa je 0, bo pomik v levo. Primer ukaza za pomik zaslona za 1 znak v desno: 0x1C. Pri vpisu ukaza morata biti pina RS in R/W izključena, po vpisu pa moramo počakati več kot 50 µs.
Functio set (nastavitev LCD-ja)
To je ukaz, ki ga lahko izvedemo le pri inicializaciji LCD-ja. Kasneje njegova uporaba ni več mogoča. Z njim nastavimo tip znakov, način delovanja in število vrstic na LCD-ju. Njegova koda je, , tabela 9.
Spodnja 2 bita sta lahko zopet poljubna, jaz jih bom postavljal na 0. Bit DL določa način delovanja LCD-ja: če je 1, bo način 8-biten, če pa je 0, bo način 4-biten. Bit N določa število vrstic na LCD-ju: za enovrstični LCD je ta bit enak 0, za dvovrstičnega pa 1. Bit F določa tip znakov na zaslonu: če je 1, bodo znaki velikosti 5×10 pik, če pa je 0, bodo znaki velikosti 5×8 pik. Ker imajo naši LCD-ji večinoma znake 5×8 pik, bo ta bit vedno enak 0. Primer ukaza, ki nastavi dvovrstičen LCD na 4-biten način, z znaki velikosti 5×8 pik: 0x28. Pri vpisu tega ukaza morata biti pina RS in R/W izključena, po vpisu pa je potrebno počakati najmanj 50 µs.
Set CGRAM address (nastavi trenutni naslov CGRAM-a)
Ta ukaz nastavi trenutni naslov CGRAM-a, od katerega dalje se bodo vpisovali poslani podatki. Po izvršitvi tega ukaza lahko vpisujemo nove znake v CGRAM oz. jih iz njega beremo. Koda ukaza je taka, ,tabela 10. Biti ACG sestavljajo število, ki predstavlja nov trenutni naslov CGRAM-a. Ker je CGRAM-a 64 bajtov, lahko to zapišemo s 6-bitnim številom. Kodo ukaza za vpis novega naslova dobimo najlaže tako, da napravimo logično operacijo OR med vrednostjo novega CGRAM naslova (med 0 in 63 decimalno) ter masko b’01000000′. Primer kode za nastavitev trenutnega CGRAM naslova na 0x0F: 0x4F. Pri vpisu tega ukaza morata biti pina RS in R/W izključena, po vpisu pa je treba počakati najmanj 50 µs.
Set DDRAM address (nastavi trenutni naslov DDRAM-a)
Ta ukaz je podoben predhodnemu, le da ima drugačno kodo in nastavi nov trenutni naslov DDRAM-a. Ker ima DDRAM velikost 80 bajtov, je potrebno njegov naslov zapisati s 7-bitnim številom. Po izvedbi tega ukaza lahko vpisujemo podatke v DDRAM od nastavljenega naslova naprej in če je ta naslov v trenutno vidnem delu zaslona, bomo na zaslonu videli znake, ki jih ti podatki predstavljajo. Koda ukaza je taka, , tabela 10
Biti ADD predstavljajo 7-biten naslov, ki ga želimo z ukazom nastaviti. Ukaz lahko tvorimo na enak način kot prejšnjega, z logičnim OR, le da je sedaj naslov število med 0 in 79 (decimalno) in da je potrebno napraviti logično operacijo OR z masko b’10000000′. Pri vpisu tega ukaza morata biti pina RS in R/W izključena, po vpisu pa je treba počakati najmanj 50 µs. Kurzor se bo seveda postavil na nov naslov DDRAM-a, ki smo ga vpisali.
Write data to CGRAM od DDRAM (vpiši podatek v CGRAM ali DDRAM)
To v bistvu ni ukaz, ampak pošiljanje podatka. Ko nastavimo trenutni DDRAM oz. CGRAM naslov s prejšnjima dvema ukazoma, lahko na ta način pišemo v CGRAM oz. DDRAM. V kateri RAM pišemo, je odvisno od zadnjega izvršenega ukaza: če je zadnji ukaz nastavitev CGRAM naslova, bomo pisali v CGRAM, če pa je nastavitev DDRAM naslova, bomo pisali v DDRAM. Pri vpisovanju več podatkov na sledeče si naslove ni potrebno vsakič posebej nastavljati novega naslova, saj se po vsakem vpisu v CGRAM ali DDRAM trenutni naslov poveča za 1 (če smo seveda tako nastavili LCD z ukazom »entry mode set«; LCD lahko nastavimo tudi tako, da se naslov avtomatsko manjša za 1). Ker pisanje na LCD ni poseben ukaz, tudi nima posebne kode. Vse, kar morate storiti, je, da postavite pin RS na 1 (tako omogočite podatkovni način) in pošljete podatek na LCD z že poznanim podprogramom LCD_pisi. Pin R/W mora biti vedno izključen (ker je tako LCD v vpisovalnem načinu).
Sedaj poznate skoraj vse ukaze. Zamolčal sem vam namreč še dva ukaza za branje naslovov in podatkov iz LCD-ja. Teh ukazov ne bomo potrebovali, zato nanje mirno pozabite.