Fórum témák

» Több friss téma
Cikkek » LED kijelzők vezérlése 2. rész
LED kijelzők vezérlése 2. rész
Szerző: whalaky, sysy, idő: Jan 11, 2012, Olvasva: 18074, Oldal olvasási idő: kb. 2 perc
Lapozás: OK   1 / 4
A skálázható kijelző továbbfejlesztése. Kiegészítjük a kijelzőt az órákhoz szükséges kettősponttal, és látványossá tesszük.

Ha már van egy olyan kijelzőnk, ami alig használ kimenetet, ideje elhasználni a multiplex vezérlés kidobásával felszabadult lábak egy részét.

A hobbisták körében a legkedveltebb készülék az óra és hőmérő. Ha már óra, illik az óra és perc, valamint a perc és másodperc közé kettőspontokat tenni. Az első részben ez még nem volt, de most pótoljuk ezt a hiányosságot. Erre is több megoldás kínálkozik.

Gondolom ez a rettenetesen bonyolult kapcsolás semmiféle magyarázatra nem szorul, nézzük inkább a vezérlési lehetőségeit.

A legkézenfekvőbb megoldás, hogy "beáldozunk" egy szabad kimenetet és azon vezéreljük a kettőspontokat.
Ennek a megoldásnak az az előnye, ha a kettőspontot "villogtatni" akarjuk, nem igényel  semmi extra módosítást a programban, egyszerűen a kimenetet vagy magasra állítjuk vagy alacsonyra. Így a kijelző modulok sorba fűzési lehetősége is megmarad, nem csak az utolsó modulnál - ld. később. Én a legtöbb esetben ezt a megoldást használom. Ha a készülék csak óra - hőmérő - légnyomásmérő, biztos hogy lesz egy szabad kimenet, amit fel lehet használni erre a célra.

A másik megoldás, hogy az utolsó shiftregiszter SER_OUT kimenetét használjuk a kettőspont vezérlésére. Ez azzal jár, hogy elveszíti a kijelző modulok felfűzhetőségét, és csak a sorban az utolsó modulra érvényesíthető, mivel ott fog megjelenni a + bit. 
A változás a vezérlésben annyi lesz, hogy az idő számjegyeinek kiírása előtt, ha szükség van a kettőspontra, akkor a soros adatkimenetre kiírunk egy 1-est. A shiftregiszter működéséből adódóan a többi adat beírása után ez a bit az utolsó meghajtó IC SER_OUT kimenetén fog megjelenni, ez nekünk teljesen megfelel.
A megoldás másik "hátránya", ha azt szeretnénk elérni, hogy a kettőspont villogjon, másodpercenként kétszer kell újraírni a kijelzőt, bár ebbe azért nem fog megszakadni a kontroller .
Ilyenkor az idő kiírása erre módosul:

printf( DISP_Buffer, "f" ); 
output_bit( _SER_DATA_, bit_doubledot );
DataClock();
printf( DISP_Buffer, "%02d.%02d.%02d", Hours, Minutes, Seconds ); 
DISP_WriteToDisplay();

Röviden: töröljük a kijelző puffert, kiírunk egy bitet a kettőspontnak (később ez lesz az átvitel bit, azaz az utolsó kijelzőmeghajtó átvitel kimenete), beírjuk a kijelzendő idő számjegyeit, majd megjelenítjük a kijelzőn.

Ha a másodpercen belül csak a kettőspontot akarjuk ki/be kapcsolni (500ms villogás) a helyzet még egyszerűbb, mivel az időadat már a program kijelző pufferében van, azzal már nem kell foglalkoznunk, csak a kettőspont bitjét kell beállítani, és újra kiküldeni a puffer tartalmát. A puffert nem kell újratölteni, mivel a kijelzés nem változik, csak a kettőspont.

output_bit( _SER_DATA_, bit_Doubledot );
DataClock();
DISP_DisplayData();
DISP_WriteToDisplay();

Így már van kettőspontunk, és a villogtatása is megoldott, de a dolognak van egy apró szépséghibája: ha a külön kimenetről vezéreljük, a kettőspontok állandó fényerővel fognak világítani, mit sem törődve a PWM vezérléssel. Erre is van megoldás!


A cikk még nem ért véget, lapozz!
Következő: »»   1 / 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