Keresés: 
 Bejelentkezés
Nick:
 
Jelszó:
 
 
 
   
» Elfelejtettem a jelszavamat :'(
» Regisztráció
 Fórum témák
» Több téma
 Frissek
RSS hírforrások
  Hírek.rss
  Fórum.rss
  2012. Máj, 27. Vas
2:02:02
  Jelenleg 100 fő olvassa az oldalt
Kapcsolások » 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: 8038
Oszd meg másokkal is ezt a Facebook-on!
Tartalom: 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.
 
A sorozat többi része: I

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!

 
Folytatás: 1/4    

Értékeld az írást:
Szavazatok: 31 db, Átlag: 5
 HEStore.hu
 Hirdetés
TrainModules.hu