Hallo,

ik wil 8 bits laten zien op 3 zeven segment displays, hoe moet ik dit doen? (getal 0 tot 255)

Welke controller, welke programmeertaal?
Misschien wel helemaal geen controller....

Op 5 april 2008 17:08:06 schreef Zonnepaneeltje:
Welke controller, welke programmeertaal?
Misschien wel helemaal geen controller....

neen helemaal geen controller, ik wil gewoon de 8 bitjes laten zien op 3 displays. Bijvoorbeeld 00001010 geeft 10 op de 7-seg display.

Zoek eens op "BCD to 7-segment decoder". In CMOS bijvoorbeeld HEF4511, in TTL bijvoorbeeld de 7445.

ik heb op dit moment nog geen BCD-code, deze moet ik waarschijnlijk eerst ook nog verkrijgen, ik vertrek gewoon van een binair getal van 8 bits.

BCD = binair = je ingangs bitjes

[Bericht gewijzigd door ElektronThomas op (45%)]

BCD is geen binair, maar Binary Coded Decimal. TS heeft echt binair als input.
Zoals gezegd, zoek in de TTL en CMOS reeksen voor binair naar BCD en 7-segm decoders.

De CD4026 is een decade counter met ingebouwde displaysturing...

Ik zou zeggen zet daar 3 kleine (ep)rommetjes/pal's tussen en vul deze met de juiste omzetting van binair naar segment decoding. Eventueel nog aangevuld met wat uln2003 om de segmenten van stroom te voorzien.

Van binair naar BCD zou ik normaal moeten doen met 3x 74185's en dan nog eens naar 3x 7447's, gaat dit niet eenvoudiger?

Het kan eenvoudiger, als je een EPROM kan programmeren. Dat hoeven er geen 3 te zijn, zoals driessens_nl suggereert, al blijft dat evengoed een bruikbare optie.
Je kan immers enkele van de adressen gebruiken om te multiplexen, waarbij je uiteraard een tellertje nodig hebt.

ok bedankt, ik denk dat ik dat dan zal moeten doen, hoewel ik daar niet zo goed in ben.

Waar komt je binaire code vandaan. Is ook wel interressant om te weten. Mschien kan je daar iets aanpassen.

Als dit een bv een AD converters kan je beter gelijk een digitale voltmeter chip eraan hangen.

Van binair naar BCD zou ik normaal moeten doen met 3x 74185's en dan nog eens naar 3x 7447's

In dat geval zou ik ook voor een (1) EPROM opteren.

Ik heb daar nog eens over nagedacht. Met enkel 1 EPROM kom je er niet. Je hebt een uitgangsbuffer nodig, omdat de doorsnee-EPROM nu eenmaal onvoldoende stroom kan leveren om er LED-segmenten mee aan te sturen. Daarnaast heb je ook een teller nodig voor het multiplexen, en 3 torren om de gemeenschappelijke aansluiting v/d LED-displays te sturen. En de nodige serieweerstanden, uiteraard.

Met 1 ATmega8 lukt het net zo goed.

@peterthijs: als je niet vertrouwd bent met microcontrollers, wat info:

Hardware:
1 ATmega8
3 stuks BS170
7 weerstanden
En uiteraard een gestabiliseerde 5V-voeding en 3 LED-displays

Voor het programmeren v/d AVR:
Een printerkabel
4 weerstanden

Software:
avrdude of iets gelijkaardigs
Een hex-file (dat met plezier even voor je aangemaakt wordt)

mocht je de voorgestelde tor van pros (BS170) niet hebben liggen volstaat een gewoon BC547B transistor ;)
@pros: dit lijkt me namelijk geen torretje dat je standaard in je arsenaal hebt zitten of wel? (ik niet teminsen ;))

deze hebben een doorlaatstroom (CE-stroom) van 200mA
aangezien je 8 leds hebt van ieders 20mA kom ik op 160mA uit en moet deze dus ook volstaan :)

[Bericht gewijzigd door Red-E op (19%)]

@pros: dit lijkt me namelijk geen torretje dat je standaard in je arsenaal hebt zitten of wel?

Hier is dat standaard aanwezig. Bij Voti heb je ze voor 0.15 euro, da's amper meer dan hetgeen ik bij de locale elektronicaboer voor een BC547 betaal. Daar komt bij, dat je geen basisweerstand nodig hebt, dat de BS170 veel sneller schakelt dan de BC547, en dat hij meer stroom kan schakelen.
Ideaal voor een dergelijke toepassing, dus.

Bij mijn weten gaat ook een BC547B een max. collectorstroom van 100mA leuk vinden.

@pros: zou je mij uitkunnen leggen waarom deze BS170 geen basisweerstand nodig heeft?

@chuckie: het boek hier voor mijn neus zegt iets anders ;) 200mA

[Bericht gewijzigd door Red-E op (52%)]

Hmm, vreemd, ik heb het nog eens nagezocht, maar ook mijn compendium en datasheet.com geven 100mA als max. Ic.
Het verschil tussen A,B en C zit em als het goed is in de versterking.

Maar goed, wellicht dat ie het ook aankan, het ene boek is het andere niet.
Ik heb de nare gewoonte om ruim binnen de specs te blijven ;)

Op 6 april 2008 12:13:38 schreef Red-E:
@pros: zou je mij uitkunnen leggen waarom deze BS170 geen basisweerstand nodig heeft?

De BS170 is een FET, die prima aan te sturen is met digitale logica.

Vanmiddag wil ik overigens mijn klok voor mijn belichter gaan maken, daarbij gebruik ik de 74HC190 synchrone BCD counters i.c.m. 4543 voor de 7-segments display's.
Zou ook moeten werken (hoop ik toch)...

is er iemand die me kan helpen met het programmeren van een controller om er een BCD-code uit te krijgen. Stel bijvoorbeeld ik geef het getal decimaal 82 in en ik wil op mijn uitgang van de controller 10000010 krijgen, hoe moet ik dit programmeren?

In C kan je dat zo doen (met 82 als voorbeeld):


unsigned char dec2bcd(unsigned char dec)
{
    unsigned char tmp;

    tmp = dec / 10;	// 82 / 10 = 8
    dec -= (tmp * 10);	// 82 - (8 * 10) = 2
    tmp = tmp << 4;	// 00001000 << 4 = 10000000
    tmp |= dec;	   	// 10000000 | 00000010 = 10000010
    return (tmp);
}

Als je echter getallen hoger dan 99 wil weergeven, past het niet meer in een byte; je hebt dan 12 bits nodig. Dit is een mogelijke aanpak:


// Voorbeeld: 234
unsigned int dec2bcd(unsigned char dec)
{
    unsigned char digit1, digit2, digit3;

    digit1 = dec / 100;			// 234 / 100 = 2
    dec -= (digit1 * 100);		// 234 - (2 * 100) = 34
    digit2 = dec / 10;			// 34 / 10 = 3
    digit3 = dec - (digit2 * 10);	// 34 - (3 * 10) = 4
    return ((digit1 << 8) | (digit2 << 4) | digit3);
}

[Bericht gewijzigd door pros op (43%)]