Fórum témák
» Több friss téma |
Cikkek » Tényleg nincs királyi út? I. rész Tényleg nincs királyi út? I. rész
Szerző: icserny, idő: Jún 22, 2013, Olvasva: 26937, Oldal olvasási idő: kb. 6 perc
LCD kijelzők vezérléseFolyadékkristályos kijelzőkkel (LCD = Liquid Crystal Display) a mindennapi életben számos területén találkozunk, hiszen elterjedten alkalmazzák különféle készülékek (pl. zsebszámológépek, lézernyomtatók, digitális mérlegek, digitális karórák, kenyérsütők, telefonok, italautomaták, digitális lázmérők stb.) kijelzőjeként Alfanumerikus modul használataElsőként egy - ma már ipari szabványnak tekinthető - kétsoros alfanumerikus kijelző modult fogunk vezérelni. A "modul" kifejezés itt arra utal, hogy mi nem közvetlenül az LCD kijelző szegmenseit vezéreljük, hanem olyan LCD-t használunk, ami egybe van építve egy HD44780, vagy azzal kompatibilis IC-re épülő vezérlő áramkörrel is, ami az LCD kijelzőhöz erősített nyomtatott áramköri lapon helyezkedik el. Az "alfanumerikus" jelző pedig arra utal, hogy ezek a modulok saját karaktergenerátorral rendelkeznek (ezen kívül legfeljebb 8 db karaktert mi is definiálhatunk), így a megjelenítendő karakter kódját kell kiküldenünk neki. Ettől eltérően viselkednek a hétszegmenses, vagy a grafikus kijelzők. Az alfanumerikus kijelzőkről egy korábbi cikkemben már részletesen ismertettem, ezért a részletekre most nem térek ki. Annál is inkább, mert az Energia beépített LiquidCrystal könyvtári modulja jótékonyan elfedi a fölösleges részleteket előlünk. Hardver követelmények:
A Launchpad kártyát az alábbi ábra szerint huzalozzuk össze az LCD modullal.
6_1. ábra: Az MSP430 Launchpad kártya és az LCD modul összekötésének vázlata A fenti ábra azt a tipikus esetet mutatja be, amikor 5 V-os modult kötünk az egyébként 3,5 V-os tápfeszültségű Launchpad kártyához. Az LCD modul egyébként 3,5 V-on is működne, de a VEE lábra akkor negatív feszültséget kellene kötni a normális kontraszt biztosítására. Emiatt egyszerűbb az a megoldás, hogy az USB csatlakozó melletti TP1 pontról veszünk 5 V-os feszültséget a kijelző számára, ahogy az ábrán is látható. Ebben az esetben a VEE kontrasztvezérlő lábat földre is köthetjük (szebb lesz a kép, ha nem közvetlenül, hanem egy 200 Ω - 1 kΩ közötti értékű ellenálláson keresztül kötjük földre. Az R/W lábat kössük földre, mert nem szabad olvasás módba kapcsolni (az MSP430 mikrovezérlő bemenetei nem tolerálnák az LCD modul 5 V-os jelszintjét). Emiatt a foglaltság figyelésére nincs lehetőségünk, a karakterek kiírása után fix idejű késleltetéseket kell beiktatnunk, hogy a modulnak legyen ideje feldolgozni a kapott adatokat vagy parancsokat. A háttérvilágítás két kivezetése többnyire nincs elkülönítve, hanem a többi kivezetés mellett kapnak helyet, folytatólagosan. A LED anódja a 15., a katódja pedig a 16. kivezetés. "Van másik!"Néha sikerül 3,3 V-os tápfeszültségű LCD modult beszerezni (pl. az E-bay kínálatában). Ezeket arról lehet felismerni, hogy a modul hátoldalán az U3-as jelű IC is be van építve (ez állítja elő a kontraszt beállításához szükséges feszültséget). 6_2. ábra: Egy 3,3 V-os LCD modul hátulnézete (vegyük észre: U3 be van építve) A fenti ábrán látható HJ1602A 3,3 V-os modul esetén a bekötés annyiban módosult a 6_1. ábrához képest, hogy a tápfeszülséget a Launchpad valamelyik VCC jelzésű kivezetéséről vesszük (3,5 V-os tápfeszültség), a VEE lábat pedig nem kötjük be.
6_3. ábra: A HJ1602 3,3 V-os LCD modul és a Launchpad kártya összekapcsolása Első próbálkozásunkhoz az Energia hardware\msp430\libraries\LiquidCrystal\examples\ mappájában található mintapéldák közül a Hello World programot választottam ki, de a látványosabb megjelenés kedvéért egy kicsit cifrázni fogunk rajta: 6_1. lista: Az LCD_16x2 program listája
Az LCD modul használatához be kell csatolni a LiquidCrystal.h fejléc állományt, és példányosítani kell a LiquidCrystal objektumosztályt. Ekkor, vagyis a példányosításkor kell megadnunk azt is, hogy a kijelző kivezetéseit a mikrovezérlő melyik lábához rendeljük hozzá. Amint a fenti listán látható, a kivezetések felsorolásánál a sorrend a következő: RS láb, E láb, D4, D5, D6 és D7 lábak. A setup() függvény elején inicializálnunk kell az LCD modult. Az alábbi utasításban
az első paraméter a soronkénti karakterek száma (tipikusan 8, 16, 20, 24), a második pedig a sorok száma (1, 2 vagy 4). Az LCD képernyőre az lcd.print() metódussal írathatunk ki. A kiírás helyét (a kurzort) az lcd.setCursor() metódussal állíthatjuk be. Ennek első paramétere az oszlopszámot, a második pedig a sorszámot adja meg. Ügyeljünk rá, hogy mindkettő számozása 0-tól kezdődik! A for ciklust csak azért szerveztük, hogy a 0 ... F hexadecimális karakterek kiíratása "összevissza" sorrendben történjen. Egyébként a kurzot beállítjuk a második sor k-adik oszlopába, s kiíratjuk a k számot hexadecimálisan. Némi várakozás után az lcd.clear() metódussal töröljük a képernyőt. A loop() végtelen ciklusban a második sorba kiíratjuk a legutóbbi újraindítás óta eltelt időt. A millis() függvényhívás eredméyne milliszekundumokban adja meg ezt az értéket. Az 1000-el történő osztással ezt másodpercekké alakítjuk. A programfutás eredménye az alábbi képen látható. 6_4. ábra: Az LCD_16x2 program futtatása
Nokia 5110 grafikus kijelző vezérléseA hajdani Nokia 5110 telefonokhoz kifejlesztett monokróm grafikus kijelző kis panelre szerelve ma is kapható (pl. a Sparkfun, E-bay és Adafruit kínálatában). SPI (szinkron soros) kommunikációval vezérelhető. Az Energia IDE gyárilag nem tartalmaz hozzá meghajtó szoftvert (egyelőre), mi most a Rei Vilo által közzétett LCD_5110_SPI könyvtárat fogjuk hozzá használni, amelyet az Energia által a felhasználó Dokumentumok/Energia mappában egy libraries nevű almappában helyezünk el. Ez a program az MSP430G2553 USCI_B modult használja, hardveres támogatású SPI kommunikáció megvalósításához. 6_5. ábra: Nokia 5110 kijelző, kísérleti panelre szerelve Hardver követelmények:
A Launchpad kártyát az alábbi ábra szerint huzalozzuk össze az LCD modullal. Ügyeljünk a kivezetések sorrendjére, mert ezeket a kijelzőket többféle lábkiosztási sorrenddel készítik! 6_6. ábra: Az MSP430 Launchpad kártya és a Nokia 5110 modul összekötésének vázlata A 6_6. ábrán a Sparkfun által forgalmazott kijelző modul lábkiosztását követtük, amelyen a lábak sorrendje balról jobbra így néz ki:
A program működéséhez be kell csatolnunk az SPI.h és az LCD_5110_SPI.h fejléc állományokat. Előbbi a "gyári" könyvtárak között található, utóbbit nekünk kell a felhasználói könyvtárunkban az Energia/libraries könyvtárban elhelyezni. Rei Vilo programja úgy van megírva, hogy az MSP430 Launchpad kártyán kívül a Stellaris Launchpad kártyával is működjön. A program ezért meg van tűzdelve feltételes fordítási direktívákkal. Most csak azok a programsorok fordulnak be a programunkba, amelyek vagy nincsenek feltételhez kötve, vagy pedig az __MSP430G2553__ szimbólum definiáltságához vannak kötve. A setup() függvényben előbb az SPI soros kommunikációs egységet kell beállítani, ezt követően pedig az LCD modult inicializáljuk. Az SPI modul órajelének sebességét úgy kell beállítani, hogy az 5 MHz-et ne haladja meg, mert ennyit bír a Nokia 5110 modul PCD8544 típusú vezérlője. A háttérvilágítást kezdetben bekapcsoljuk (a későbbiek során pedig a Launchpad kártya felhasználói nyomógombjával ki-be kapcsolgathatjuk). A képernyő bal felső sarkában kiírjuk a "Hello!" üzenetet. Egy másodperc elteltével töröljük a képernyőt, majd a bal alsó sarokba kiírjuk a "Light off" üzenetet. (A mobiltelefonokhoz hasonlóan mindig a gombbal indítható műveletet írjuk ki, azaz a következő gombnyomás lekapcsolja a háttérvilágítást.) A végtelen ciklusban figyeljük a nyomógombot (lenyomás esetén átváltjuk a háttérvilágítás állapotát), majd nagyobb méretű betűkel felváltva az MSP430, illetve az LM4F feliratokat írjuk ki. Ezt követően kisebb karaktermérettel egy csillagot (vagy szorzásjelet) szánkáztatunk a képernyőn balról jobbra. A program kétféle méretű fonttal rajzol ki karaktereket. A fontokat a könyvtárhoz mellékelt Terminal6.h és Terminal12.h. Tehát bár ebben a programban csak karaktereket/szöveget íratunk ki, a kiírás kicsit komplikáltabb, mint az előző pontban, hiszen most nekünk kell megadni a karakterek alakját is - nincs beépített karakter generátor. 6_2. lista: Az LCD_5110_SPI_main program listája (szerző: Rei Vilo, forrás: GitHub)
A program futási eredménye az alábbi fényképen látható. 6_7. ábra: Az LCD_5110_SPI_main program futtatása A cikk még nem ért véget, lapozz! Értékeléshez bejelentkezés szükséges! |
Bejelentkezés
Hirdetés |