Fórum témák

» Több friss téma
Cikkek » LED kijelzők vezérlése akár már 5 vezetéken
LED kijelzők vezérlése akár már 5 vezetéken
Szerző: whalaky, idő: Jan 10, 2012, Olvasva: 45363, Oldal olvasási idő: kb. 2 perc
Lapozás: OK   4 / 4

Ahhoz, hogy a kijelzőnk működjön, szükség van egy egyszerű kijelző meghajtó programra. Én a PIC-ekhez a CCS-C fordítót preferálom - lehet vitatkozni rajta, én szeretem, mert egyszerű és kényelmes a használata. A program egyszerűsége miatt pillanatok alatt portolható bármilyen fordítóra.

tpic6c595_20.c

A program használatához tulajdonképpen nem sok tennivaló van, mindössze be kell állítani néhány konstans értéket, vagyis az aktuális kapcsolásnál használt kimeneteket kell azonosítani, és megadni a használni kívánt digitek számát.

  • _SER_IN_    a soros adatkimenet
  • _CLR_         a törlés kimenet
  • _G_            a PWM vezérlés kimenet
  • _SRCK_       a soros beírás órajel
  • _RCK_         a kijelző kiírás kimenet
  • _DIGIT_COUNT_  a használt digitek száma a kijelzőn

Ezek után csak annyi dolgunk van, hogy a főprogram indításakor töröljük a kijelzőt az esetleges szemetektől egy törléssel (én igen nagy előszeretettel használom a #ZERO_RAM direktívát, sok meglepetéstől megkímél). Esetleg hosszabb program indítási folyamatoknál, legalább 5 digites kijelzők esetén, kiküldhetünk egy üdvözlő üzenetet a DISP_Hello() függvénnyel, amíg érdemi információ nem kerül a kijelzőre.

A kijelző csak egy buffert használ, és nem minden esetben írjuk végig az összes digitet. Vannak esetek, amikor a kijelzett érték hossza nem megjósolható - pl. hőmérők - a program egy többlépcsős buffer beírási procedúrát biztosít.

Vegyünk például egy 6 digites kijelzőt (óra és hőmérő). Mivel nem tudjuk megjósolni, hogy a hőmérséklet 2 vagy 4 digites lesz (6.7 vagy -13.2) részletekben kell beírni a pufferbe az adatokat. 
A kijelzőre írásra a C standard printf() függvényét használhatjuk, azaz a printf(DISP_DispBuffer, "f%3.1f", therm) utasítással beírjuk a kijelző pufferbe a mért hőmérséklet értéket. Ez 4 digiten biztosan el fog férni, mivel -40 és +125 fok tartományban mér a hőmérő, egy tizedes pontossággal, így a 4 digit a teljes mérési tartományban elegendő.

A °C kiírás mindig az utolsó két digitre kerül, függetlenül attól hogy előtte hány karakter volt. Ezt úgy oldhatjuk meg, hogy a DISP_Set_Cursor(-2); utasítással az utolsó előtti (hátulról a második) pozícióra állítjuk a kurzort, így a következő printf( DISP_DispBuffer( "°C" ) a kijelző utolsó két digitjére fog írni.

A DISP_Set_Cursor függvény paramétere egy előjeles egész szám, ami pozitív szám esetében a kijelző írandó digitjének indexe (a kijelzők 0-tól vannak indexelve!), negatív számok esetében a kijelző utolsótól számított n-edik digitjét jelöli, azaz -2 esetében az utolsó előtti digitet (értelemszerűen 6 digit esetében a 4 és a -2 ugyan azt jelenti, hogy ki melyiket használja az csak szokás és ízlés kérdése).

Amint a puffer fel van töltve, nincs más dolgunk, csak meghívjuk a DISP_DisplayData() függvényt a beírt adatok megjelenítéséért.

hőmérséklet kijelzés 6 digiten 35mm-es kijelzőkön

Ezzel a néhány függvénnyel már elég jól el lehet boldogulni, bár ügyelni kell rá, hogy a kijelzőkön meg nem jeleníthető karakter ne kerüljön bele.

Gondolom feltűnt, hogy a képeken lévő kijelző modulon kicsivel több alkatrész van, mint az itt tárgyaltak. A következő részben továbbfejlesztjük a kijelzőnket, ellátjuk az óra megjelenítéséhez szükséges kettőspontokkal, és némi optikai tuningot végzünk rajta, ami akár funkcionális is lehet. Ha nem óraként használod a kijelzőt, vagy le tudsz mondani a kettőspontokról akkor már foghatsz is hozzá a tervezéshez, a dolog biztosan működni fog, annyira egyszerű, hogy nincs mit elrontani rajta.

Következő: »»   4 / 4
Értékeléshez bejelentkezés szükséges!
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem