AVR + LED matrix

Papp Zoltán zombi at c2.hu
Wed Nov 15 23:02:14 CET 2006


2006.11.15. 18:53:43 dátumon Pal Lukacs <ekegep at yahoo.com> írta:

> Pal Lukacs <ekegep at yahoo.com> wrote: Sziasztok.
> AVR-el szeretnek meghajtani (egyelore) 5 db 5X7 ledmatrixot.
>  Elmeleti segitsegre lenne szuksegem .
>  Gondoltam hogy a sorokat latchel hajtanam meg,az oszlopok kozott  
> multiplexelek.KIjelzem adott szoveg egy karakterenek egy reszletet a  
> kivant matrixon,aztan a kov. karakter egy reszletet a kov. matrixon  
> ..stb..
>  Nem tudom ez mennyire jo megoldas?

Hali!

Én csináltam így 2x16 karakteres 5x7 pixeles (összesen 80x14 pixeles)  
kijelzőt. A 80 oszlop volt multiplexelve 1:80 időarányban egy 80-as  
demultiplexerrel és a 14 sor lett hajtva direktben. Teljesen jól működött.  
Úgyhogy ez is fog. A lényeg, hogy valahogy be tud lőni egy ellenállással,  
hogy mekkora árammal lövöd a pixeleket.

> Amiben meg segitseg kellene az a karakterek leirasa C -ben,ezek  
> megjelenitesere valami elv,nem haj az az emlitettel parhuzamos:)
>  Na meg nem tudom hogy sor -es oszlopra is kell vegfok + aramkorlatozo  
> ellenallas ha 5V -rol akarom uzemeltetni a dolgot..
> Segitsegeteket elore is koszonom.

Én annó oszlopokra csak meghajtó tranyókat tettem(ULNxxxx, vagy UDNxxxx?  
-> 8 tranyó DIP1x? tokban). Ezt én egy 1/80-as demultiplexerrel oldottam  
meg: 5db 1/16, amit 1db 1/8 5db lába hajtott, de most már inkább  
8-oszlponként egy 74HC595-öt tennék be, ezt lehet később akár bővíteni is.  
A sorokra kerül 14db ellenállás. Elméletileg AVR el tud hajtani 25mA-t  
lábanként, kérdés, hogy az össz. 14x25=350mA-t bírja-e. Bár ez akkor lép  
fel, ha minden pixelt "égetni" akarsz. Ha biztosra akarsz menni, tegyél  
ide is egy-egy tranyót.


Hát ezt itt most lent nem nézem meg, a lényeg, hogy minden oszlop-váltás  
előtt kapcsold ki a sor-meghajtókat, és oszlopváltás után kapcsold újra be  
őket, különben szellem-képed lesz.

A többi már csak szoftver kérdése, igényeknek megfelelően, mennyire akarod  
grafikusan is használni, nem csak karakter-generátorral.


>  Udv.
> Szoftnak valami hasonlot kepzeltem el: (ez csak pseudo feleseg)
> #define MAX_CHARS
> //5X7 matrixnal egy karakter 5 allapota:
> struct chars_state{
>   unsigned char states[5];
>  };
> struct chars_states chars[MAX_CHARS] PROGMEM= {
>  {0x01,0x05,0x0a,0xA1,0xB2},
>  //{},
>  //.........
>  };
> #define pgm_rbn(addr) pgm_read_byte_near(addr)
>  #define DATABUS
>  #define ADDRBUS
>  #define LATCHEN
> struct chars_states* decode_char(unsigned char ch){
>    struct chars_states *retV;
>    switch(ch){
>     case 'a': retV = &chars_states[2]; break;// <--- pl.
>    //........
>    }
>    return retV;
>  }
> //main loop: in thread:
>  //......
> struct chars_state ch_s;
> unsigned char i;
>  unsigned char dot_address = 1 ;
>  unsigned char latchs_addr = 1;
>  unsigned char n = 0;
> //idoosztas
>  //......
> if(cnt1 == CNT1_THREESHOLD)
>  {
>     ch_s = pgm_rbn(decode_char(str[n])); // n = max: ahany matrix van!
>     BATABUS = ch_s.states[i];//egy karakter allapotai: i-dik allapota.
>     LATCHEN = latchs_addr; latchs_addr *= 2; //kapcsoljuk a kovetkezo  
> matrixot
>     n++;//lepkedunk a karakterek kozott,kov. karakter reszlete a kov.  
> matrixra
>     if(n == 4){ //ha az 5 char hosszu karaktersorozat elso reszlete  
> kikerult a matrixokra:
>     flag = 1;//jelzunk
>     }
>  }
>   if(flag){
>     latchs_addr = 1; //vissza az elso latchhez:-)
>     n = 0; //vissza a karaktertomb elejere
>     ADDRBUS = dot_address; dot_address *= 2;//cimezzuk a  
> matrixot:kov.oszlop;
>     i++; //adott karakter kovetkezo reszletenek indexe
>     flag = 0;
>    }
> //}
> Pl. a szoveggorditest nem tudom egyelore elkepzelni.Hogy az egyik  
> matrixbol kilepo adat atkeruljon a masikra.Kellen egy atfogo elmeleti  
> kep az egeszrol:)
> HELP PLEASE!
>
> ---------------------------------
> Sponsored Link
>
> Mortgage rates near 39yr lows. $420,000 Mortgage for $1,399/mo -  
> Calculate new house payment
> -----------------------------------------
>           elektro[-flame|-etc]


Üdv
-- 
Papp Zoltán
OneWay Electronics



More information about the Elektro mailing list