O grafičnih LCD-jih ne kaže izgubljati besed. Večina nas ve, da po grafičnih LCD-jih lahko po mili volji rišemo svoje znake, prikazujemo slike in podobno. Hkrati pa lahko na njih prikazujemo tudi besedilo, podobno kot na alfanumeričnih LCD-jih. O grafičnem LCD-ju smo v naši reviji prvič pisali daljnega leta 1999, leta 2000 pa je mag. Mitrović objavil serijo člankov o krmilniku grafičnega LCD-ja z malim AT89C2051. Vendar so bili takrat grafični LCD-ji težko dobavljivi in tudi cenovno neugodni, Bascom pa takrat še ni ponujal toliko orodij, kot smo jih deležni danes.
V Sloveniji v maloprodaji lahko kupimo LGM12864B2-NSW-BBS in ustrezno folijo, občutljivo na dotik. Grafični displej ima resolucijo 128 x 64 pik in je enobarven. Moja verzija displeja sveti modro, vendar so tudi rumeno-zeleni popolnoma primerni in funkcionalno popolnoma enaki. Za krmiljenje displeja in občutljive folije bomo uporabili Atmelov mikrokontroler ATMega16. Grafični displej ima 8 podatkovnih priključkov in še nekaj kontrolnih.
Folija, občutljiva na dotik, deluje na principu merjenja upornosti. Predstavljajte si 4 upore, vezane tako, kot vidite na sliki 1. Z mikrokontrolerjem analogne napetosti digitaliziramo in na podlagi te informacije točno vemo, na katerem delu zaslona smo pritisnili folijo.
Folija je samostojna in ima na spodnji strani že predvideno lepilo, s katerim jo nalepimo na LCD. Preden jo nalepimo, je potrebno temeljito očistiti LCD zaslon, pa tudi folijo. Za čiščenje ne uporabljajte alkohola ali drugih kemikalij, pač pa mehko krpico, ki jo rahlo navlažite z destilirano vodo. Folija se lepo prilega LCD-ju.
V uredništvu pripravljamo adapter za MiniPin, s katerim boste preprosto priključili LCD s folijo na razširitvene konektorje MiniPina.
Bascom program
Zdaj je pa zadeva že resna, saj bomo začeli s programiranjem. V kolikor ne boste uporabili adapterja za MiniPin, si dobro poglejte shemo vezave na sliki 1. Na spletu obstaja veliko vezav LCD-ja in veliko teh shem je pomanjkljivo narisanih. To sem ugotovil po mučnih trenutkih, ko displej ni in ni hotel prikazovati podatkov. Šele ko sem trimer za kontrast vezal tako, kot je prikazano na sliki 1, je displej na moje veliko olajšanje oživel! Pri foliji je potrebno dodati serijske upore, predvsem zaradi zaščite občutljive folije pred neželenimi kratkimi stiki. Izhod iz folije priključimo na A/D vhode mikrokontrolerja (PortA), podatkovne in kontrolne priključke grafičnega LCD-ja pa vežemo na PortB in PortC:
Celotno nastavitev displeja opravimo z eno vrstico Bascom programa:
Config Graphlcd = 128 * 64sed , Dataport = Portb ,
Controlport = Portc , Ce = 0 , Ce2 = 1 , Cd = 2 , Rd = 3 ,
Reset = 5 , Enable = 4 , Mode = 8
V tej vrstici Bascomu dopovemo, da gre za LCD s 128 x 64 pikami, nadalje definiramo izhode za podatke in kontrolo LCD-ja in to je vse. Imena priključkov na LCD-ju se sicer ne ujemajo z imeni v Bascomu, vendar naj nas to ne moti. Bascom pa nam nudi še več: v Bascomu je vgrajeno simpatično orodje, ki se imenuje Graphic Converter (najdemo ga v zavihku Tools). To orodje pretvori BMP datoteko, ki jo narišemo v slikarju (ali katerem drugem programu za risanje slik), v BFG datoteko. Sliko shranimo v BMP datoteko, nastavimo črno bele barve in velikost (jasno!) na 128 x 64. Z Bascomovim Graphic Converter orodjem sliko pretvorimo v BGF datoteko, ki jo pozneje vgradimo v Bascom program in jo kličemo podobno kot subrutino. Seveda lahko v program shranimo več slik in jih kličemo ter prikazujemo po potrebi.
Showpic 0 , 0 , Logose 'prikaži sliko z imenom Logose
....
....
Logose: 'definicija se nahaja tukaj
$bgf "logose.bgf"
Pri pretvorbi z Graphic Converter orodjem moramo paziti na dvoje: potrebno je nastaviti velikost displeja na 128 x 64 in odkljukati moramo SED series, kot prikazuje slika 2.
Dobro, zdaj znamo sliko iz BMP datoteke pretvoriti v BGF datoteko in jo vpisati v Bascom program. Kako pa prikazujemo besedilo? Zadeva je malce bolj komplicirana in se vedno ne izide z našimi željami. Velikost besedila je lahko najmanj 6 pik, drugače je besedilo težko berljivo ali celo neberljivo. Položaj besedila nastavimo z ukazom:
'Lcdat 4 , 70 , "TEXT" 'SAMO VELIKE ČRKE!!
Kot vidite iz komentarja, lahko s tem ukazom uporabljamo samo velike črke. Sintaksa ukaza je naslednja:
LCDAT y , x , var [ , inv]
kjer vidimo, da prva številka pomeni Y, druga pa X koordinato na displeju. INV v oklepaju pomeni, da se prikazuje karakter invertirano, v kolikor namesto »inv« napišemo število 1. Moram povedati, da številke za Y ne ustrezajo položaju na displeju, kot bi pričakovali. Pravzaprav je logično, da je tako, saj smo definirali velikost fonta 8 x 8 (pik). V resnici je vsak karakter visok 7 pik. Vsak font se torej začne v večkratniku števila 8. Ker imamo na voljo 64 pik, lahko na LCD zapišemo 8 vrstic fontov z enim presledkom med vrsticami.