A grafikus vákuum flouresszensz kijelző modulok. Bozó Balázs
A felhasználás szempontjából természetesen a legnagyobb szabadságot a grafikus modulok jelentik. Sajnos áruk miatt nem annyira ismertek, pedig vannak olcsóbb típusok is anélkül, hogy le kellene mondanunk az inteligens modulok előnyéről. Egy ilyet próbálunk ki jelen esetben, a gyártó hirdetése szerint karakteres modul áráért grafikust. Régebben a grafikus modulok egyszerű vezérléssel voltak ellátva. Leginkább közvetlenül cpu buszra ültethető interfésszel memóriába ágyazott eléréssel rendszerint memória nélküli megjelenítő eszközök voltak. Memória nélküliként arra gondolok, hogy természetesen a felbontásának megfelelő RAM-al rendelkezett, hogy a kijelzőt frissíthesse, de azon kívűl más funkciót nem látott el, rendszerint kiolvasni sem lehetett csak írni a kijelző memóriát. A mai kijelző modulok ezt már túlhaladták. A rengeteg lábszámú kijelzőt meghajtó áramköröket már inteligens mikrokontrollerek vezérlik sokszor igen jelentős órajellel és megfelelő méretű memóriával, sok funkciós kijelzési lehetőségekkel esetenként saját operációs környezettel és utasításokkal. A gyártói vonal kétfelé ágazott ugyanis. Az egyik ág a hagyományosnak mondható memóriába ágyazott módszert használva jeleníti meg képeit, persze ma már minimum 2 kijelzőnyi memóriával, hogy ameddig az egyik kép a kijelzőn, addig a másik kép már töltődhessen a memóriába. A másik vonal a saját utasításokat használó megoldás. Ez azonban nem zárja ki természetesen, hogy egy adott terméken belül is lehet a két hozzáférési mód között átjárni, választani.
Az Itron 7000-es sorozata egy ilyen karakteres árú grafikus modulja, ami az utóbbi szerinti utasítás alapú vezérlést igényli. Kicsit összefoglalava ezt olyan kép tárul elénk, hogy a 800-as sorozat az elsőnek említett közvetlen memóriába ágyazot elérési móddal, a 7000-es sorozat az utasításokkal elérhető és van egy csúcs sorozat a 3000-es sorozat, melynek tagjai nem csak, hogy utasításokkal is és közvetlen memória hozzáféréssel is elérhető, de mindkettő igen nagy sebességgel is - teret adva ezzel az animációs lehetőségeknek is. Az utasítások igen szerteágazóak, melyek segítségével egy kisteljesítményű vezérlésből is látványos kijelzés nyerhető. A teljesség érdekében megemlíthető még a 8000-es sorozat is, amely a 800-as tovább fejlesztett változata, amely így már nagysebességűvé válik. Ha az elektronikai interfész szempontjából közelítjük meg a sorozatot akkor megállapíthatjuk, itt is az érvényes, hogy bármit lehessen a modulhoz illeszteni. Ezek alapján a 7000-es sorozat alapesetben i80-as párhuzamos és RS232C szinteket is tűrő soros interfésszel ellátottak. A 7002-es sorozat szintén i80-as buszhoz és szinkron, illetve aszinkron soros busszal rendelkezik. A 7003-as sorozatúak csak a már említett aszinkron, szinkron soros interfésszel rendelkeznek, míg a 7006-os sorozatban a párhuzamos interfész M68 sorozatú processzorokhoz illeszkedő. A sorozat százas helyiértékű számai a fontkészletre utalnak. Sőt a kor kihívásaira válaszolva létezik már 7032 sorozat is, ahol a tizesek helyén megjelenő 3-as a 3.3-voltos busz-ra utal. A magyarországi forgalamzótól bemutatásra egy GU140X32F-7000-es modult kaptam. Ez a modul tehát egy i80-nak megfelelő párhuzamos interfésszel ellátott, illetve egy RS232C-t tűrő soros interfésszel is rendelkezik. A párhuzamos interfész a CN1 nevezetű egysoros 14 kivezetéses csatlakozón keresztűl érhető el, míg a soros egy (CN2) hatcsatlakozóson közlekedik. A párhuzamos csatlakozó jelei: (1) GND - a tápfeszültség közös pontja, (2) Vcc - a tápfeszültség + pontja (+5V/400mA), (3) Nem használt,(4) RS - regiszter választó, (5) _WR - írás jel, (6) _RD - olvasás jel, (7) D0, (8) D1, (9) D2, (10) D3, (11) D4, (12) D5, (13) D6, (14) D7/PBUSY. A (3)-as csatlakozó funkciója Jumperekkel választható, alapesetben nem használt. A soros csatlakozó bekötése; (1) Vcc - a tápegység pozitív pólusa (+5V), (2) SIN - soros adatvonal, (3) GND - a tápegység közös pontja, (4) SBUSY - foglaltság jelző, (5) nem bekötött, (6) _Reset - alaphelyzetbe állító jel.A modulon található ezen kívűl még egy Jumper terület is, ahol a szükséges konfigurációkat el lehet végezni. A gyári alap beállítás szerint mind nyitott. Átállításkor vegyük figyelembe, hogy a modul csak egyszer, a tápfeszültség bekapcsolása után értékeli ki a jumperek állapotát! Az összesen négy darab jumper jelentése a következő: a J0 és J1 a soros kommunikációt ütemező Baudrate kiválasztását szolgálja. Alapesetben ez 38400bps (mindkettő nyitott). A maximális sebesség 115200bps ha mindkettő zárt, és a leglassabb 9600bps a J0 nyitott és a J1 zárt állapotában érhető el. A soros kommunikációnak nagy előnye, hogy a vezérléskor használt mikrokontroller lábaiból csak egyet kell felhasználni, igaz némi sebesség csökkenés árán. Visszatérnék még egy pár mondatig a 14-es csatlakozó sor (3)-as lábára, mert a CN2 közelében található egy JB nevezetű jumper is amellyel ennek a (3)-as lábnak adhatunk funkciót. Ez a funkció lehet _Reset (C-R zárt) vagy kivezethetjük vele a PBUSY (C-B zárt) jelet. Az érdekesség miatt megemlítendő, hogy a modul kezelésében nem kap szerepet az RS regiszter választó jel, ami az utasítás és adat között tenne különbséget. Mivel az utasítások úgy lettek kitalálva, hogy az adatok beágyazottak, így ennek a jelnek nincs szerepe.
A CIG (Chip-in-Glass) flouresszensz kijelzők BD sorozata.
| A modul gyártási technológiában is újdonságnak számít, mert BD technológiával készül. Ez a technológia azt jelenti, hogy az anódokat és a rácsokat meghajtó teljes elektronikát maga a kijelző tartalmazza. Ez több szempontból is előnyős. Mivel a kijelző tartalmazza a meghajtó áramköröket, szinteltoló áramköröket, tárolókat, illetve a léptető regisztereket is, a panelen ezeknek nem kell rajta lenniük, és magának a kijelzőnek a lábszámai is jeletősen csökkenhettek. Ezek a jelek tulajdonképpen már csak a tápfeszültségek, fűtés, tárolókat vezérlő jel és a vezérlést szolgáló soros adat, valamint a hozzátartozó órajelre korlátozódik. Mint a képen is látható maga az egész meghajtó elektronika a fűtést tartó fémlemezke alá került. | További előnye a technológiának, hogy a magas integrálási foknak köszönhetően lehetővé válik, még a grafikus modulok nagy bonyolultsága mellett is, a statikus meghajtás. Ez azt jelenti, hogy tíz voltos nagyságrendű anód és rács feszültség mellett (tipikusan 15V) üzemelhessen, kiváló fényerővel és hosszabb élettartammal. Az anód és a rácsfeszültséget immár elő lehet állítani egyszerűen DC-DC átalakítóval is, elmaradhat az eddig megszokott nagyfeszűltségű tápegység és trafó. Ebből következő előny továbbá a sokkal kevesebb elektromos zaj. (Így talán már nem kell kikapcsolni majd a kijelzőt zene hallgatás közben) |
A kijelző modul képességeit és a vele való fejlesztés megkönnyítésére a gyártó oldaláról letőlthető egy nagyszerű program, mellyel minden funkciója elérhető. Ez a program a ModuleMaster nevezetű, az Itron által készített fejlesztői környezet. Mindenki számára letölthető, használható, regisztrálás után a mentési funkció is üzemképes. A kijelző modul a számítógéphez a soros porton keresztűl kapcsolható a legegyszerűbben. Letöltésnél válasszuk a teljes csomag letöltését (elsőre) majd töltsük le az utasítás filet (Product Command), valamint az intrót (Example User List) is. A program elindítása után először is tölsük be az utasítás file-t, amiből is a program tudni fogja milyen kijelző modulhoz kívánjuk használni. A program képernyője három részre bontott. A bal szélén az adott modul elérhető utasításai, illetve a ModMasternek szóló vezérlési utasítások. Középen az általunk íródó utasítás lista (User List). Valamint a jobb szélen a megjegyzéseket tartalmazó hasáb. Mielőtt hozzákezdenénk ezt a megjegyzési oszlopot nézzük át, mert a kijelzőnek számítógépünkhöz való csatlakozását is ismerteti. Ha nem emlékeznénk fejből a PC soros portjának bekötésére akkor a Help menüben a PC Serial Comms-ra kattintva, megjelenik a PC sorosportjának leírása. Ezek alapján már gyerekjáték elkészíteni a modul illesztő kábelét. Az Itron modulokon található biztosíték (FUSE) Többféle kábel is készíthető, én a legegyszerűbbet szoktam használni amikor is a kijelző modul CN2-csatlakozójára 3 vezetékkel illesztem a gépet. Az (1) pontra a számítógépből kivezetett tápcsatlakozóról a +5V-os (piros) vezetéket, majd ugyanerről a csatlakozóról a közöspontot (fekete) a kijelző (3) pontjához vezetem. A CN2-es csatlakozó (2)-es lábát pedig a gép soros portjának (3) Tx nevű jeléhez. Persze aki nem akarja a gépből kivezetni a tápfeszültséget az gondoskodhat más külső áramforrásról is ekkor persze a tápegység és a kijelző közös pontjait (GND - Soros port (5), kijelző CN2 (3)) közösíteni kell. A kijelző modul rendelkezik biztosítékkal (lásd a képen. - ellenben az előző cikk Samsung moduljával) így az esetleges fordított táp nem feltétlenül okoz maradandó károsodást.
Az Itron fejlesztői környezete a ModuleMaster
A három vezetékes kommunikációs KIT Az általam készített 3 vezetékes kábel nem használ hardveres kézfogásos protokolt és erről a programot is tájékoztatni kell, mert különben a szerencsétlen vár a kézfogásra, de azt a vezetéket be sem kötöttük. Ezt (mint a képen is látszik) a Set Comms Port utasítás paraméterei között állíthatjuk be. Ha megnézzük a demo listát láthatjuk, hogy két helyen is használja a Set Comms Port utasítást, ami miatt természetesen mindkét helyen be is kell állítani, hogy a demo lefuthasson és eredményében gyönyörködhessünk kijelzőnkön. (Ha szeretnénk, hogy a gépünk lássa, ha a kijelző foglalt kössük be a kézfogásos vezetéket is. Én eddig nem tapasztaltam olyat, hogy a kijelzőre várni kellett volna és ezért elcsúszott volna a végrahajtás, de előfordulhat - esetleg nagyobb sebeségű port használata esetén. Ekkor a modul (4) SBUSY lábát kössük össze a soros port valamelyik kézfogás lábával, ami lehet a CTS (8) vagy a DSR (6) láb is. Természetesen erről a ModuleMastert is tájékoztassuk. Alapesetben a CTS-t értelmezi, így azt külön állítani nem kell.)
Az Itron Module Master intrója a VFD modulon | Az Itron Module Master intrója a VFD modulon | Az Itron Module Master intrója a VFD modulon |
A kijelző modult legjobban egy konkrét felhasználáson keresztül célszerű bemutatni. Ez a felhasználás legyen mondjuk egy előerősítő kijelzőjeként. A fejlesztés alapvető szempontja közé tartozik az, hogy eldöntsük milyen formában kezeljük a modult. Sokkal nagyobb szabadságot biztosít megjelenítés szempontjából az ha grafikusan jelenítünk meg mindent, a kijelzőt csak passzívan használjuk. Bár a kijelző modulnak nincs olyan DMA közvetlen adat beviteli lehetősége, mint a 800-as, vagy a 3900-as sorozatúaknak, azért ügyes utasítás használattal, és mivel a modul elég gyors megoldható lenne. Ezt jelen esetben elvettem, mert itt első sorban az utasításokat ismertetem, és ez gyakorlatilag egy utasítással megoldható lenne, másik szempont az, hogy általános felhasználásnál a modult egy mikrokontroller vezérli, aminek erőforrásait nem kifejezetten a kijelzésre szeretnénk pocsékolni. Olyannyira nem, hogy gyakorlatilag a gyors párhuzamos vezérlésről is lemondunk esetenként, hiszen a gyakorlatban ritkán szükséges a másodpercenkénti 10-nél gyorsabb frissítés. Ezért bátran használhatjuk pusztán 1db vezetéken soros eléréssel is. Azt szeretnénk ha a felhasználót grafikus ábrákkal tájékoztatná a történtekről illetve a lehetőségekről. A ModuleMaster azért nagyszerű, mert a fejlesztési időt jelentősen lerövidíti alkalmazása és a kész listát exportálhatjuk rögtön a kijelző vezérlését adó kontroller fejleszői környezetébe. Ott már nem kell bajlódni a kijelző utasításaival, vagy emlékezni minden paraméterre, és ha mégsem sikerült emlékezni, napokig kereshetjük a hibát. Itt előre mindent megcsinálhatunk majd a kívánt formában kinyerve azt csak beillesztjük és már használható is. A program remekül használható arra is, hogy a kijelző utasításait megnézhessük anélkül, hogy a gyári leírást hosszasan bogarásznánk, hiszen minden utasításhoz tartozik leírás is. Azért pár alap dologgal érdemes tisztában lenni, nevezetesen modulunk alapvető adotsságaival. Mégpedi azzal, hogy 140x32 pixeles felbontása van. Van egy beépített karakterkészlete, mely 5x7 pontmátrix karaktereket tartalmaz. Ezekből viszont igen jeletős mennyiséget összesen 10 félét. Megtalálható benne a ciril betűktől a Win1250-es is, ami magyar ékezetes kiosztást jelent, mint amilyet a windows is használ. Ez azért jó, mert nem kell fejlesztés közben a karakter táblákkal bíbelődni, egyszerűen a Module Masterbe beírt kódokat kell küldeni, amit a kijelző az elvárt módon jelenít meg. Ez az 5x7-es pontmátrix betűtípus ezen a kijelzőn 4 sorban jeleníthető meg. Ha definiálunk neki karaktereket lehetőségünk van nagyobb 7x8 betűkészlet használatára is. Hogy ne legyen egyhangú a kijelzés egy betű növelőt is használhatunk (Specify Font Size Magnification) így lehetőségünk lesz horizontálisan (4x) is és/vagy vertikálisan (2x) is megnövelni betűinket. Használhatjuk a fixpontos kiírást vagy a proporcionális kiíratást is. Ez utóbbi azt jelenti, hogy ha pl. egy a betű és egy i betű kerül egymás mellé akkor az i betű nem foglal a betű (5 pixeles) méretű helyet így több betű fér ki egy sorban, mint a fix pontos megjelenítés esetében. A fix pontos megjelenítés viszont változó hosszúságú adatok kiírásakor jól használható mert kiszámítható a hossz és így nem borul fel a kijelzési kép.
A UserList ablak funkciói; bár nagyon egyértelmű azért egy rövid leírásban ismertetem a funkciókat, ami Demo screept, vagy a saját magunk által írt utasításlistát megjeleníteni segíti. Az ablak bal oldali részében magát a listát láthatjuk sorszámozva. Ez a sorszám majd például a Jump utasításnál megadható, így az utasítás által végrehajtott ugrás ide történhet. Ha a sorra kattintunk egerünk bal gombjával a Parameters ablakban az utasítás paramétereit láthatjuk, az ablak fejlécében a modul végrehajtási idejét láthatjuk, de visszatérve a UserList ablakra és az utasítások sorára azon a jobb egérgombot megnyomva a szokásos szerkesztési funkciókkal találkozunk (Cut, Copy, Paste, Delete) és még pár érdekességgel. A ViewHex természetesen az utasítás kódját teszi láthatóvá Hex-ában a Help ablakban a fejlécében a hossza byte-ban. A Checksum természetesen a kód ellenőrző kódját számítja ki és adja meg a választásunknak megfelelően Xor illetve Sum módszerek alkalmazásával. Az Edit Description segítségével átnevezhetjük az utasítást számunkra beszédesebb formára is, vagy akár magyarosíthatjuk is. Az Enable illetve a Dissable funkció a Lista végrehajtásakor be, illetve kikapcsolja ezt az utasítást a végrehajtásból. A RunLine természetesen arra szolgál, hogy a sort a többitől függetlenül végrehajtsa a kijlező, amit egyébként az utasítás sorára kétszer kattintva is megtehetünk.
Az elektroncso.hu logója a VFD modulon De kezdjük is el a fejlesztést. Elsőnek kezdhetnénk azzal, hogy a gyártói logonkat megjelenítjük a felhasználónak. Ezt majd csak egyszer látja, amikor áram alá helyezi készülékét és az inicializálás fut. A feladat egyszerű egy logot jelenítsünk meg majd némi szöveggel vegyük körül. A logot bármilyen egyszerű pixel orientált rajzoló programmal elkövethetjük (pl. Paint). Kétszínűnek kell lennie. A 0-ás paletta színű lesz a kijelzőn fekete, míg az 1-es paletta szín fog világítani. A rajzolt kép mérete egyezzen meg a megjelenítendő ábrával. Én ebben az esetben 32x32-es ikonokat használok majd, így egyöntetűvé teszem a megjelenítést. De természetesen olyat használunk amilyet akarunk. A kijelzőnk memóriája valójában 256x32, így ekkora kép betölthető, de ebből csak 140x32 jelenik meg a kijelzőn is. A scrollozással aztán elővarázsolható a még hiányzó 116 pixelnyi kép. A betöltendő képnek tehát BMP formátumúnak kell lenie, ezt tudja a ModMaster használni.
Ennyi információ után már készen állunk első valódi fejlesztésünkre ami a már említett előerősítő kijelzés lenne. Hozzá is kezdhetünk saját UserList-ánk írásához. A bal oldali ablakban rá kattintva a megfelelő utasításra az megjelenik a középső [UserList] ablakában. Ha szükséges neki további paraméter megadása azt mindig a Parameters ablakban tehetjük meg. Első utasításnak adjuk ki a ModMasternek, hogy miképpen érheti el a kijelző modult. Ezt a (már fentebb tárgyaltuk) Set Comms Port [1:] utasítással tehetjük meg. A ModMaster-nek szóló utasítások piros színnel jelöltek. Ezek tulajdon képpen olyan utasítások amik segítik és lehetővé teszik a fejlesztést a valódi működést. Mivel a fentebbi részben már említettem miképpen kell konfigurálni, így itt most eltekintek tőle. A forrás következő részében Initialize Display [2:] utasítás következik mely fekete színével is jelzi, hogy immár a kijelzőhöz szól és annak inicializálását végzi el. Figyelem a kijelző modul (DIP kapcsolók állása) konfigurációját nem olvassa újra! Ez az utasítás törli is a kijelzőt és alapállapotba is állítja. Sokszor gyorsabb a használata – és a biztosan tudott alap állapot, mint nyomon követni, hogy hol – mi is történik.
A következő utasításunk Send Bitmap Image to Display [3:] utasítás az ami tulajdonképen kirakja a grafikus ikont a kijelzőre. Mint már említettem az ikont egyszerűen bmp formában várja. A paramétereinél meg kell adni az ikon nagyságát. A vízszintes (X) irányú kiterjedését, ami nálunk 32 pixel, illetve a függőleges nagyságát, ami szintén 32 pixel, de a VFD modul sajátosságainak megfelelően ezt byte-ban kell megadnunk az az ide 4-et írunk. Ezután a Display Positon-t kell megadnunk, ami példánkban 0,0. Ezután természetesen magát a bmp file elérési útvonalát. Ha nem megfelelő lenne az ikon vagy a megadott paraméterek, azt jelzi a program, futtatáskor. A Left X illetve Top Y vagy a Right X, Bottom Y paraméterek segítségével egy nagyobb képből illetve a kép bizony részeit is meg tudjuk jeleníteni. Ez a funkció különösen scrollozásnál hasznos. (Ne feledjük a Bottom Y-nál 1 el kevesebbet kell megadni, mert 0-s oszlop is beleszámít a képbe.) A következő paraméter a Bit/Byte orientation ami a kijelző belső szervezésére utal. A mi esetünkben az alapbeállítás használatos (V Write / V Byte / D7 Top).
A következő utasítással CursorSet [4:] a kiírandó karakterek pozícióját állíthatjuk be, vagyis a kurzor helyzetét ahonnan a kiírás majd kezdődik. Az előző utasítás logikájára az X poziciót pixelben az Y-ét byteban adjuk meg. 40,1 így majdnem középre kerül. Ezután már csak a Write Text [5:] utasítást kell kiadnunk, paramétereként természetesen a kiírandó szöveggel ami esetemben az elektroncso.hu szöveg lesz.
Ha idáig eljutottunk akár meg is nézhetjük mit csinál az első screeptünk. A UserList ablak jobb oldalán található gombok segítségével elindíthatjuk (Run List) megállíthatjuk (Stop) vagy menet közben felfüggeszthetjük a futtatást (Pause) segítségével, míg a Single Step gombbal lépésenként tudjuk végrehajtatni a Listát. A Show opciókkal további információkat is megjeleníthetünk illetve tilthatunk. A Parameters alapesetben engedélyezett ez teszi lehetővé, hogy az utasítások paramétereit a paraméter ablakban láthassuk, szerkeszthessük. A Note segítségével a jobb oldali ablakban jelennek meg a megjegyzések a program használatával kapcsolatban pl. a soros port és a modul bekötése. A Transmit és a Receive egy ablakot nyit a jobb oldali oszlopban amin keresztül nyomon követhetjük a modul és a gép közötti kommunikációt. A TX és az RX led-ek a kimenő jelnek megfelelően villognak. A gyakorlatban és ha a kézfogást nem kapcsoltuk be csak a Tx LED-et láthatjuk majd dolgozni. Az alattuk lévő Clear Tx illetve Clear Rx gombok a bekapcsolt Transmit illetve a Receive ablakok tartalmát törlik megnyomásukkor. Visszatérve az utolsó opcióhoz a Show kapcsolói közé a HexOnly kapcsoló hatására az információk csak Hex-ában jelennek majd meg, mert egyébként aminek van értelmes karaktere az megpróbálja olyan formában megjeleníteni. (Bár a hexa kijelzés további előnye, hogy regisztrációs kód nélkül is kinyerhetjük a kész kódot a programból mert az kijelölhető és így Cut/Copy-z ható.)
Az alap beállításokhoz tartozik, hogy kiválasszuk a használni kívánt karakter és kód táblákat. Ezt Font Set Select [6:] (Latin Amerika) illetve a Specify Character Code Type [7:] (PC852 Latin2)-vel tehetjük meg. Azért ezt választottam, mert a WPC1252 ugyan a Windows-nak megfelelő helyen tartja ékezetes betűit, de hosszú ékezetek helyett gyakran „kalapos” betűket használ, holott a kijelző modul karakterei között megtalálhatóak az általunk használtak is. Így ugyan kiíráskor kicsit trükközni kell, de ezt egyrészt a felhasználó – az előfok használója nem látja, és nem is érdekli – másrészt a tervezhető karaktereket elhasználhatjuk másra. Arról tájékoztatást, hogy mit hol találunk a karakter táblákban a gu7000intfon leírásból nyerhetünk. Beállítjuk még az Over-Write Módot [8:], hogy a kiírásaink egymás tetejére kerüljenek megoldva ezzel a kijelző törlését is.
A következő sorba beiktatok egy Detect key/input sort, amelynek hatására szimuláljuk a majdani előfok inicializálási idejét. Jelen esetben egy billentyű megnyomására vár. A paraméterei között megadjuk, hogy a billentyűzetről várjuk a változást (Detect From Keyboard) és a Key/Code sorban adhatjuk meg, hogy milyen kódra vagy karakterre várjon. Én most csak a szóköz billentyű lenyomásával egy szóköz várására vettem rá. Az Actionnál állítsuk be a Wait-next line opciót, így a szóköz leütésével a következő sorra lép.
Ezután kikapcsoljuk (Screen Saver: Mode – Power Off [10:]) a kijelzőt. Vagyis a majdani előfok készenléti üzemmódban kerül. Bekapcsolni a saját bekapcsoló gombjával lehet majd, illetve távvezérlőről. Mivel az előfok természetesen elektroncsöves felépítésű ezért a bekapcsolás első fázisában a csövek fűtését kapcsolja be és a kijelzőn ennek visszajelzése látható.
Első lépésben az imént már megismert Detect key/input-sorral ismét szimuláljuk a távvezérlő, illetve a bekapcsoló gomb funkcióját és várunk arra, hogy a felhasználó aktivizálja a rendszert. Ezután a kijelző modult a Screen Saver álltal előidézett energiatakarékos kikapcsolt állapotból fel kell ébreszteni az újból kiadott ScreenSaver Mode:Power On [12:] utasítással. Ezután beállítjuk a kijelző fényerejét (Display Brightness 25% [13:]), amit majd az előfokon beállíthatunk, mint felhasználó. Letöröljük a kijelzőt [14:] és megjelenítjük a Send Bitmap Image to Display [15:] utasítással a bekapcsolást jelző logót. A fűtés kiírásához pozícionáljuk a kurzort a megfelelő helyre (58,0) és kiírjuk a „Fűtés” szöveget, ami kicsi trükkel tökéletesen megjeleníthető anélkül, hogy az ű-t és az é-t meg kellene rajzolnunk. Ezért a szöveget úgy írjuk be, hogy a fentebb már beállított karakter táblának megfelelő legyen. Mivel a szövegbe bármikor használhatunk hexa vagy decimális kódot is írjuk így: F!ebt!82s, ami azt eredményezi, hogy az ű-t a hex eb-n lévő karakter jeleníti meg, míg az é-t a hexa 82. A használt Latin2 táblában itt található a miénkre leginkább hasonlító ű és é betű. A ModMasternek a !jel jelzi a hexa formát, vagy a # decimális formát.
Egy progress bar-t jelenítünk meg A következő lépésben kiteszünk a kijelzőre a progress bar-t vagyis a csak fűtési idő letelésének jelzését szolgáló csíkot. Mivel az esztétikai érzékünk igen fejlett ezért erre alkalmas karakter nem található a kijelzőnk karakterei között, és nem is akarjuk grafikaként átvinni, tehát megtervezzük. A kijelző modul egyszerre 16db ilyen általunk készített karakterrel birkózik meg. Ebbe természetesen nem férünk el, tehát alkalmazzuk a röptében (on the fly) átdefiniálást is. Az ábrázolandó csíkban nem lehet a két karakter között szabad hely még 1 pixelnyi sem, hiszen grafikus kijelzőnk van, hogy nézne az ki. Ezért rögtön 7x8 pixeles karaktereket tervezünk, és nem 5x7-est, mint azt mondjuk egy karakteres modulnál megszokhattuk. Bár erre van itt is lehetőség, az említett okok miatt a 7x8-ra van szükségünk. Create & Download a 7x8 Character [18-32:] utasítással végezhetjük el a munkát. Paramétereként a karakter kódját kell megadni (176-tól !b0), majd a megfelelő helyre berajzoljuk a kívánt ábrát. Amikor mind a 16-al végeztünk a következő lépésként aktivizálnunk kell, hogy használni is tudjuk. Ezt az Enable/Disable Download Characters [33:] utasítás Enable opciójával tesszük meg. Ettől kezdve a 176-os karakterként hivatkozott karakter az általunk 176-osként megadott karakterként jelenik meg, mind addig ameddig a kijelző modul tápfeszültsége jelen van, illetve ameddig az Enable/Disable Download Characters utasítással nem tiltjuk a használatát. Az utasítás hatására nem törlődnek a definiált karakterek, de a táp elvesztése azok feledésével is jár. Tehát a továbbiakban ismét megadunk egy kurzor pozíciót, ahová kirajzoljuk a csíkot (30,2). A csíkot majd a Write Text rajzolja ki, úgy hogy a csíkunknak megfelelő karaktersort íratjuk ki ami a „!b0!b1!b1!b1!b1!b1!b1!b1!b1!b1!b1!b1!b1!b1!b2” karakter lánc lett. Ez még persze csak egy üres keret amiben majd a csíkunk futni fog. Ezután majd sorban – ahogyan nő a csík hossza – kiírjuk a neki megfelelő karaktersort a Write Text segítségével (A [34-324:] sorokig. A RunDelay segítségével kicsi szünetet iktatunk be két kiírás közé, amivel így a valóságnak megfelelő lassú csík növekedéshez jutunk). Amint elérünk arra a pontra, hogy elfogytak karaktereink definiáljuk még azt a párat amelyre szükségünk van. Mivel az előzők karakter számait használjuk vigyázni kell arra, hogy a kijelzőn – mivel ott a réginek is és az újnak is láthatónak kell lennie egyszerre – ne írjuk felül a régit az újjal. Ezt jelen esetben azzal oldjuk meg, hogy a Cursor Set (128,2) [324:] segítségével csak a szükséges pozícióba íratunk a Write Text-el [325:], de ekkor már elegendő csak a kérdéses karakter kiíratása. (!b0, !b1, !b2, !b3) Ha esetleg építettünk az előfokba egy érzékelőt, ami a fűtés meglétét érzékeli most beolvashatjuk állapotát és annak megfelelően a csíkot letörölve kiírhatjuk a Rendben, vagy a Hiba szavakat értesítve a felhasználót erősítője állapotáról, de megtehetjük azt is, hogy ha minden rendben rögtön bekapcsoljuk az anód feszültségeket is. Az anód feszültségeket természetesen több lépcsőben, de minimum kettőben kapcsoljuk be és erről a felhasználót is tájékoztatjuk a kijelzőn keresztül. Mivel ez kijelzési szempontból teljesen ugyanaz mint a fűtés csak kétszerezve, de fele idő alatt ezért nem is térnék ki rá. Sokkal érdekesebb ami ezután következik, vagyis az előerősítőnk bemenetére kapcsolódik a kiválasztott műsor forrás jele, és lassan a beállított hangerőre hangosodik erősítőnk.
Kétféle betűméret és grafika megjelenítése Tulajdonképen ez az a kép, ami az előerősítőnket majd meghatározza. A baloldalra diszkréten jelenítsük meg ikonba a kiválasztott műsorforrást (CD) majd a menetközben is állítható hangerőt jelezzük ki. Ennek megvalósítása nem okozhat gondot az eddigiek alapján. A Clear Display [342:] utasítással töröljük le a kijelzőt. A Cursor Set-el állítsuk vissza a kurzort a kezdő (0,0) pozícióba majd jelenítsük meg a kiválasztott ikont a Send Bitmap Image to Display-el [342:]. A Cursor Set-el [344:] ismét állítsuk be a kívánt pozíciót (60,0) majd a Write Text-el írassuk ki a „Hangerő!8a” (Hangerő!8a ) feliratot. Ezután írjuk ki alá az aktuális hangerőt, de nagyobb méretben, hogy a fotelból is jól látszon. Ezt a Write Text elé beírt Specify Font Size Magnification [347:] utasítással érhetjük el. Mivel szép arányosan írjuk ki elegendő paraméternek a Select Width és a Select Height paraméternek a 2, azaz duplázzuk meg mind hosszban mind szélességben és csak ezután következzen a Write Text-el a kiírás. (A példában a –99dB-t írtam ki ami teljes némaságot jelent, de hosszban ennél nagyobbra nem számítunk) Ezután iktassunk be egy várakozást billentyű megnyomásra és ha van kedvünk szimuláljuk le azt az esetet amikor a felhasználó megnyomja a Némítás gombot.
Kijelző villogtatás (beépített utasítással) Ekkor letöröljük a kijelzőt majd a 54,0-s pozícióba küldjük a kurzort és kirakjuk az ennek megfelelő ikont. Amikor ez megvan a kijelzőt villogóra állítjuk, hogy a felhasználó lássa, hogy nem az erősítő romlott el, hanem csak némította és ezért nem szól. Ezt a Display Blink [353:] utasítás teszi meg nekük. Paraméterként a villogás ütemét adhatjuk meg külön a világos (Normal) és külön a sötét (Blink) idejével. A villogás fajtáját is kiválaszthatjuk Blink On/Off, illetve Invers formában. A Blink On/Off a teljes kijelző törlése és újra kijelzése között váltakozik, míg az Invers esetében a kijelzett kép világos és sötét részei cserélődnek fel egymással. A normál állás hatására vissza áll minden eredeti, vagyis nem villogó üzemmódba. Ezzel kész is vagyunk.
Természetesen a kijelzőnek ezen kívül számtalan, itt ebben a példában fel nem használt lehetősége van. Ilyen például a definiálható ablak, a scrollozás és hasonló funkciók. Ezeket a terjedelmük miatt nem mutatom itt be, hagyok az olvasónak is felfedezni valót. Remélem sikerült kedvet csinálni az intelligens grafikus kijelzőknek. A ModuleMaster gyors és egyszerű lehetőséget nyújt olyan felhasználáshoz is mint az aktív tájékoztató táblák létesítése, hiszen nem kell saját programot írnunk, egyszerűen megszerkeszthetjük a tájékoztató tábla funkcióit a ModuleMaster segítségével. Aztán amikor készen van és a kezelő elől el kell fedni a működtető szoftvert a ModuleMasterből kimásolt kész screeptet akár egy sima copy >ser: kijelzore.txt formában is működővé tehetjük.
|