RTV forum PL | NewsGroups PL

Jak wyświetlić liczby 0-255 na 3-cyfrowym wyświetlaczu LED z rejestru w AVR?

AVR - wyświetlanie liczby na 3-cyfrowym LED

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak wyświetlić liczby 0-255 na 3-cyfrowym wyświetlaczu LED z rejestru w AVR?

Paweł Paroń
Guest

Thu Nov 04, 2004 12:46 pm   



Potrzebuję jakiegoś ogólnego pomysłu jak wyświetlić liczbę z rejestru (czyli
0-255) na 3-cyfrowym wyświetlaczu LED. Chodzi o wyświetlacz tego typu:

http://www.tme.pl/arts2/pl/opto/gfx/opto131s.jpg

i chodzi mi głównie o sposób zamiany liczby binarnej na odpowiednie
kombinacje segmentów, a nie o samo sterowanie wyświetlaczem. Może są jakieś
dobrze znane sposoby albo nawet gotowe procedury w asemblerze i nie trzeba
tego wymyślać od nowa? Byłby użyty taki procesor, który ma odpowiednią
liczbę nóżek do sterowania segmentami, np. tiny26, bez żadnych dodatkowych
układów logicznych.

Paweł

--
Rowerem nie tylko na Północ: http://acn.waw.pl/pawelp/
Kanada, Góry Skaliste, Alaska, Szkocja, Islandia, Norwegia

Michal Baszynski
Guest

Thu Nov 04, 2004 1:13 pm   



On 4 Nov 2004 12:46:43 GMT, Paweł Paroń
<pawelpANTYSPAM@freeland.lublin.pl> wrote:

Quote:

Potrzebuję jakiegoś ogólnego pomysłu jak wyświetlić liczbę z rejestru (czyli
0-255) na 3-cyfrowym wyświetlaczu LED. Chodzi o wyświetlacz tego typu:

http://www.tme.pl/arts2/pl/opto/gfx/opto131s.jpg

i chodzi mi głównie o sposób zamiany liczby binarnej na odpowiednie
kombinacje segmentów, a nie o samo sterowanie wyświetlaczem.

rozbij to na dwa etapy: bin2bcd a potem chocby tablicowo bcd->7seg.

--
Pozdr
Michal

Dariusz Zolna
Guest

Thu Nov 04, 2004 1:15 pm   



Użytkownik "Paweł Paroń" <pawelpANTYSPAM@freeland.lublin.pl> napisał:
Quote:
dobrze znane sposoby albo nawet gotowe procedury w asemblerze i nie trzeba
tego wymyślać od nowa?

Po jednym tranzystorze na segment do sterowania anodami plus ULN2803 żeby
prądu nie brakło. Do wyświetlania cyfr robisz sobie lookup-table
zamieniającą cyfrę dziesiętną na odpowiednią kombinację bitów zależną od
tego jak sobie płytkę zaprojektujesz.

Darek Żołna

Krzysztof Rudnik
Guest

Thu Nov 04, 2004 9:05 pm   



Piotr Wyderski wrote:

Quote:
albo dwukrotnie dzielac wejsciowa liczbe przez 10. Reszta z dzielenia to
bedzie kolejna cyfra, liczac od najmniej znaczacej. Dzielenie nie musi
zostac wykonane doslownie, np. mozesz odejmowac w petli od danej
liczby najpierw 100, pozniej 10, a na koncu 1 i zliczac ile razy

^^^^^^^^^^
Zapomniales dac tutaj smileya Wink)))

Krzysiek Rudnik

Tomasz Gumny
Guest

Thu Nov 04, 2004 9:27 pm   



Quote:
Potrzebuję jakiegoś ogólnego pomysłu jak wyświetlić liczbę z rejestru
(czyli
0-255) na 3-cyfrowym wyświetlaczu LED. Chodzi o wyświetlacz tego typu:

http://www.tme.pl/arts2/pl/opto/gfx/opto131s.jpg

Przede wszystkim rozważ zmianę wyświetlacza na taki ze wspólną katodą -
odpadną drivery.

Quote:
i chodzi mi głównie o sposób zamiany liczby binarnej na odpowiednie
kombinacje segmentów, a nie o samo sterowanie wyświetlaczem. Może są
jakieś
dobrze znane sposoby albo nawet gotowe procedury w asemblerze i nie trzeba
tego wymyślać od nowa?

Zobacz taki kawałek:

const unsigned int
LEWA[12] = {
0x73fe,0x43f8,0x73dd,0x63fd,0x43fb,0x63f7,0x73f7,0x43fc,0x73ff,0x63ff,0x43c1
,0x73ff },
SROD[12] = {
0x7cee,0x4ce8,0x7ccd,0x6ced,0x4ceb,0x6ce7,0x7ce7,0x4cec,0x7cef,0x6cef,0x4cc1
,0x7cff },
PRAW[12] = {
0x7f2e,0x4f28,0x7f0d,0x6f2d,0x4f2b,0x6f27,0x7f27,0x4f2c,0x7f2f,0x6f2f,0x4f01
,0x7f3f };

void tim_ovf0(void)
{
TCNT0 = TBASE; /* przeladuj timer */

if( cyfra == 0 ) cyfra = 2; else cyfra--;
if( cyfra == 0 )
{
PORTD = HIGH( LEWA[setki] ); /* setki */
PORTB = LOW( LEWA[setki] );
}
if( cyfra == 1 )
{
PORTD = HIGH( SROD[dzies] ); /* dziesiec */
PORTB = LOW( SROD[dzies] );
}
if( cyfra == 2 )
{
PORTD = HIGH( PRAW[jedno] ); /* jednosci */
PORTB = LOW( PRAW[jedno] );
}

if( pauza == 0 )
{
pauza = LPOM;
time = czas / 100;
if( (time < TMIN) || (time > TMAX) )
{
jedno = KRESKA;
dzies = KRESKA;
setki = KRESKA;
}
else
{
jedno = time % 10; time /= 10;
dzies = time % 10; time /= 10;
setki = time % 10;
}
}
else pauza--;
}

Wiem, wiem - zero finezji...
Podłączenie wyświetlaczy jest na stronie:
http://teos.modelarstwo.org.pl/tester/sch.gif
TG

Marek Lewandowski
Guest

Thu Nov 04, 2004 11:14 pm   



Krzysztof Rudnik wrote:

Quote:
Piotr Wyderski wrote:

albo dwukrotnie dzielac wejsciowa liczbe przez 10. Reszta z dzielenia to
bedzie kolejna cyfra, liczac od najmniej znaczacej. Dzielenie nie musi
zostac wykonane doslownie, np. mozesz odejmowac w petli od danej
liczby najpierw 100, pozniej 10, a na koncu 1 i zliczac ile razy

^^^^^^^^^^
Zapomniales dac tutaj smileya Wink)))

a dlaczego? Razz
A dokladnie: dlaczego nie? Kazdy sposob dobry, nie wszystkie procki maja
uklad dzielenia...
--
Marek Lewandowski ICQ# 10139051/GG# 154441
locustXpoczta|onet|pl
http://www.stud.uni-karlsruhe.de/~uyh0
[! Odpowiadaj pod cytatem. Tnij cytaty. Podpisuj posty. !]

Dariusz Zolna
Guest

Thu Nov 04, 2004 11:32 pm   



Użytkownik "Marek Lewandowski" <nospamabuse@onet.pl> napisał:
Quote:
a dlaczego? Razz
A dokladnie: dlaczego nie? Kazdy sposob dobry, nie wszystkie procki maja
uklad dzielenia...

Hmm... a po co zliczać jednostki? Żeby w innej zmiennej zapisać? :-)

Darek Żołna

Piotr Wyderski
Guest

Thu Nov 04, 2004 11:41 pm   



Marek Lewandowski wrote:

Quote:
liczby najpierw 100, pozniej 10, a na koncu 1 i zliczac ile razy

^^^^^^^^^^
Zapomniales dac tutaj smileya Wink)))

a dlaczego? Razz
A dokladnie: dlaczego nie?

Tak, brakuje smileya. Przemysl _ostatni_ przypadek. Smile))
No to trzeba ~25 cykli, czyli konwersje robi sie juz blyskawicznie.

Pozdrawiam
Piotr Wyderski

jfk
Guest

Fri Nov 05, 2004 7:25 am   



Użytkownik "Paweł Paroń" <pawelpANTYSPAM@freeland.lublin.pl> napisał w
wiadomości news:slrncok95j.4fd.pawelpANTYSPAM@154-moo-7.acn.waw.pl...
Quote:

Potrzebuję jakiegoś ogólnego pomysłu jak wyświetlić liczbę z rejestru
(czyli
0-255) na 3-cyfrowym wyświetlaczu LED. Chodzi o wyświetlacz tego typu:

http://www.tme.pl/arts2/pl/opto/gfx/opto131s.jpg

i chodzi mi głównie o sposób zamiany liczby binarnej na odpowiednie
kombinacje segmentów, a nie o samo sterowanie wyświetlaczem. Może są
jakieś
dobrze znane sposoby albo nawet gotowe procedury w asemblerze i nie trzeba
tego wymyślać od nowa? Byłby użyty taki procesor, który ma odpowiednią
liczbę nóżek do sterowania segmentami, np. tiny26, bez żadnych dodatkowych
układów logicznych.


A moze prosciej wyswietlac liczbe jako hex ? wystarcza wtedy 2 cyfry i nie
trzeba zadnego dzielenia, bo każda połówka bajta to jedna cyfra hex .

pozdr.
jfk

Marek Lewandowski
Guest

Fri Nov 05, 2004 8:17 am   



Piotr Wyderski wrote:

Quote:
Marek Lewandowski wrote:

liczby najpierw 100, pozniej 10, a na koncu 1 i zliczac ile razy

^^^^^^^^^^
Zapomniales dac tutaj smileya Wink)))

a dlaczego? Razz
A dokladnie: dlaczego nie?

Tak, brakuje smileya. Przemysl _ostatni_ przypadek. Smile))

Rotfl, ślepy chyba jestem :PPPP
Masz rację i Darek też... Trza mi było spać iść Smile)))))))))))))
--
Marek Lewandowski ICQ# 10139051/GG# 154441
locustXpoczta|onet|pl
http://www.stud.uni-karlsruhe.de/~uyh0
[! Odpowiadaj pod cytatem. Tnij cytaty. Podpisuj posty. !]

Paweł Paroń
Guest

Sat Nov 06, 2004 1:25 pm   



In article <cme6ro$6rk$1@atlantis.news.tpi.pl>, Tomasz Gumny wrote:
Quote:
Potrzebuję jakiegoś ogólnego pomysłu jak wyświetlić liczbę z rejestru
(czyli
0-255) na 3-cyfrowym wyświetlaczu LED. Chodzi o wyświetlacz tego typu:

http://www.tme.pl/arts2/pl/opto/gfx/opto131s.jpg

Przede wszystkim rozważ zmianę wyświetlacza na taki ze wspólną katodą -
odpadną drivery.

Dlaczego? Nie pamiętam jaka jest obciążalność wyjść AVR-a, ale chyba za
mała, żeby pociągnąć wszystkie segmenty, niezależnie czy to będzie katoda
czy anoda?

Dzięki za ten programik.

Paweł

Piotr Wyderski
Guest

Sat Nov 06, 2004 2:59 pm   



Paweł Paroń wrote:

Quote:
Nie pamiętam jaka jest obciążalność wyjść AVR-a, ale chyba za
mała, żeby pociągnąć wszystkie segmenty, niezależnie czy to będzie katoda
czy anoda?

Wystarczajaca, o czym mowi:

a) dokumentacja, ktorej widac nie przeczytales;
b) empiryczne potwierdzenie powyzszego zapisu
w kilku moich ukladach z wyswietlaczem LED.

Pozdrawiam
Piotr Wyderski

Tomasz Gumny
Guest

Sat Nov 06, 2004 8:50 pm   



Quote:
Przede wszystkim rozważ zmianę wyświetlacza na taki ze wspólną katodą -
odpadną drivery.

Dlaczego? Nie pamiętam jaka jest obciążalność wyjść AVR-a, ale chyba za
mała, żeby pociągnąć wszystkie segmenty, niezależnie czy to będzie katoda
czy anoda?

W stanie wysokim prądu wystarczy spokojnie na segment.
W stanie niskim wyjście przyjmie całkiem spory prąd,
a zawsze można połączyć kilka wyjść równolegle...
TG

Rafal Baranowski
Guest

Sun Nov 07, 2004 10:16 pm   



Quote:
W stanie wysokim prądu wystarczy spokojnie na segment.
W stanie niskim wyjście przyjmie całkiem spory prąd,

Nowsze układy AVR mają już wyjścia symetryczne - w obie strony 20mA przy 5V
zasilania powoduje zmianę o maksymalnie 0,7V. Każą nie przekraczać 40 mA /
pin.

Raf.

elektroda NewsGroups Forum Index - Elektronika Polska - Jak wyświetlić liczby 0-255 na 3-cyfrowym wyświetlaczu LED z rejestru w AVR?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map