Forum: Mikrocontroller und Digitale Elektronik 8-Bitwert per 3 7-Segmentanzeigen dezimal anzeigen


von Thomas S (Gast)


Lesenswert?

Hallo Zusammen,

ich habe folgendes Problem ich lasse einen Port die erkannten Signale
zählen(Binär).
Nun wollte ich mir mit 3 7-Segmentanzeigen den Zählerstand dezimal
anzeigen lassen.Es gibt unzählige IC die einen 4-Bit Wert zur Anzeige
bringen.
Hat jemand eine Ahnung ob es auch einen IC für 8-Bit gibt?!?
Ich konnte leider beim gooooogeln nichts finden.

von crazy horse (Gast)


Lesenswert?

gibt es nicht.
Du hast einen MC, lass den doch bisschen was tun :-)
7-Segment-Ansteuerung würde hier schon mehrfach diskutiert.

von LüLü (Gast)


Lesenswert?

Hast du nciht evtl. noch genug µController Resourcen um das dein
Controller mit erledigen zu lassen?

Also ich würd sagen, 3 Siebensegmentanzeigen gemultiplext an ein Port
wäre am einfachsten und vor allem ganz ohne extra ICs zu realisieren.

von Jochen (Gast)


Lesenswert?

SAA1064 gibts bei reichelt 2 bzw.4x 7-seg über I2c desweiteren können
glaub ich 4 SAA1064 an einem I2c bus hängen
-> 16x 7seg

von Marius Schmidt (Gast)


Lesenswert?

LüLü dazu muss man erstmal wissen wie so eine multiplex schaltung
aussehen würde :)

von LüLü (Gast)


Lesenswert?

Oh...hab ich etwa zu viel Wissen vorrausgesetzt :-)

Hier (http://www.sprut.de/electronic/pic/programm/led.htm) ist z.B eine
Multiplexerschaltung beschrieben. Dort wird es mit einem PIC Controller
gemacht. Ich weiß ja nicht mit welchem Controller du arbeitest, aber
ich denke das Prinzip kann man auch so gut verstehen.

von Peter Dannegger (Gast)


Angehängte Dateien:

Lesenswert?

"dazu muss man erstmal wissen wie so eine multiplex schaltung
aussehen würde :)"


Kein Problem, siehe Anhang.


Peter

von Thomas S (Gast)


Lesenswert?

Wie eine Multiplex Schaltung grundlegend funktioniert kann ich mir jetzt
vorstellen.
Jedoch denke ich das diese Schaltung nicht das erfüllt was ich
brauche.
Ich zeige einen Wert(bin) an Port4 an --> 00001111 dann sollen die
Anzeigen 15 anzeigen wenn sich der Wert der Ports ändert soll sich der
Wert der 7 Segmentanzeigen auch ändern so dass der akuelle Wert des
Ports immer angezeigt wird.

Thomas

von LüLü (Gast)


Lesenswert?

Nun...ich behaupte jetzt einfach mal, so ein IC, dass die Anzeige
richtig ansteuert, gibt es nicht. Zumindest habe ich noch nie davon
gehört.

Wenn du die Ansteuerung der Anzeigen wirklich nicht den Controller
überlassen willst (oder kannst), hättest du grundsätzlich noch die
Möglichkeit, dir deinen eigenen CPLD zu programmieren, um die Zahlen
entsprechend anzeigen zu lassen. Ich denke aber mal, dass das völlig
übertriebener Aufwand wäre.

Ansonsten könntest du dir die Zahlen ja auch als Hex-Wert anzeigen
lassen. Das heißt, du würdest nur 2 Anzeigen verwenden und anstatt z.B.
15 würde deine Anzeige  0F anzeigen.

Ich würde dir allerdings wirklich ganz stark empfehlen, den Controller
die Ansteuerung der Anzeigen zu überlassen, sonst langweilt der sich
doch auch, wenn der sonst nur zählen muss g

von Thomas S (Gast)


Lesenswert?

Danke für die Antwort LüLü!

Ich habe mir das auch schon überlegt den Wert einfach Hex anzeigen zu
lassen.
Ich hatte nur gedacht, da es ja IC's fast für alle möglichen
Anwendungen gibt, dass es da auch einen IC gibt der 8 Bit Bin in Dez
Zahlen umwandeln kann.

Daher werde ich mir Anzeige in HEX machen ist das einzigste und
schnellste.

Danke nochmal an alle die sich hier beteiligt haben.
Finde ich echt supper!!!!!!!!!!!!!!

Thomas

von Santa Klaus (Gast)


Lesenswert?

>ich habe folgendes Problem ich lasse einen Port die erkannten Signale
>zählen(Binär).

Wenn Du etwas mehr zu Deinem Projekt sagen könntest (ist schwer, ich
weiß g), kann Dir noch viel besser geholfen werden.

>Jedoch denke ich das diese Schaltung nicht das erfüllt was ich
>brauche.

Mit welcher Begründung?  Ich halte es für sehr wahrscheinlich, daß Du
kein weiteres IC benötigst, und mit einer Multiplexschaltung sehr
glücklich werden könntest.

von Thomas S (Gast)


Lesenswert?

So wie ich die Multiplexschaltung verstehe funktioniert diese wie
folgt:

Am Eingang lege ich ein Signal an vom IC werden die Impulse gezählt und
dann auf den Anzeigen angezeigt.
Ich möchte aber zwei Dinge einmal den Port den ich hochzähle einfach in
Zahlen fassen und zum anderen einen weiteren Port der mir Messergebnisse
ausgibt z.B 186 in Bin diesen binärwert einfach anzeigen.

Also sollten die Ports im ganzen eingelesen werden um die
Segmentanzeigen anzusteuern.

Thomas

von LüLü (Gast)


Lesenswert?

Da hast du ein bischen was falsch verstanden :-)

Als Multiplexschaltung bezeichnet man nur die Art der Ansteuerung der
Anzeigen (die Ausgabe).

In deinem Fall bedeutet das, du zählst deine Impulse in deinem
Controller wie du dir gedacht hattest und mit dem gleichen Controller
steuerst du (quasi nebenbei) deine Anzeigen an.

Wenn du noch fragen hast frag einfach :-)

von dds5 (Gast)


Lesenswert?

Thomas, da hast Du was falsch verstanden.
Der Begriff Multiplex steht für eine bestimmte Art und Weise wie man
ein Display ansteuern kann.
Für eine 'statische' Ansteuerung verbindet man jedes Segment der
Anzeige mit einem Portpin des Prozessors. Dazu würde man bei 3 Stellen
Siebensegment 21 Anschlüsse benötigen (wenn man auf der Hunderstelle
die führende Null weglässt reichen 20).
Im Multiplexbetrieb sind alle gleichen Segmente der 3 Anzeigen
miteinander verbunden und an je einen Portpin angeschlossen - macht 7
Leitungen. Die gemeinsamen Anode (oder Katode) jeder Anzeige geht an
einen weitern Pin - 3 Stellen = 3 Pins + 7 Segmente ergibt zusammen 10
Leitungen.
Du siehst, man spart mindestens die Hälfte der Portleitungen am
Prozessor ein. Außerdem braucht man nur noch 7 statt 21 Widerstände zur
Begrenzung des Stromes durch die LEDs.
Die Ansteuerung erfolgt 'dynamisch', d.h. man gibt zum Beispiel als
Erstes die Segmentdaten für die Einerstelle aus. Sofort danach wird die
Anode (Katode) der Einerstelle eingeschaltet. Nach 1 bis 2 ms schaltet
man die Einerstelle wieder aus. Dann wird die Segmentinformation für
die Zehnerstelle ausgegeben. Jetzt wird Zehnerstelle einschalten,
warten und wieder ausschalten. Danach das Ganze nochmal für die
Hunderterstelle und wenn die abgearbeitet ist fängt man wieder von
vorne bei der Einerstelle an.
Das wichtigste dabei ist die möglichst genaue Einhaltung von immer
gleichen Einschaltzeiten (Stichwort 'Timer') für alle Stellen,
sonst sind sie unterschiedlich hell oder / oder flackern.
Und noch was Gutes hat die Sache: wenn man zwischen die einzelnen
Ausgaben variable Pausen (Display aus) einfügt, lässt sich eine prima
Dimmung realisieren.
Ich hoffe Du kannst diesem etwas langatmigen Beitrag einige brauchbare
Informationen entnehmen.

Dieter

von Thomas S (Gast)


Lesenswert?

Sorry falsche Wortwahl,

ich meinte natürlich Contoller und nicht IC sind aber alle schwarz.
Auf alle Fälle werden bei einer solchen Schaltung die Impulse gezählt
und zur Anzeige gebracht.
Wenn ich jedoch einen Wert z.B 168 anzeigen will müsste ich erst etwas
programmieren wo diese Impulse sendet damit ich den Wert zur Anzeige
bringen kann.
Ich denke mit einer Hex Zahl kann ich leben und es ist da einfachste
und schnellste.

Gruß

Thomas

von Marko B. (Gast)


Lesenswert?

4 Möglichkeiten:

1. Ein (Flash-)EPROM als Decoder verwenden. Dazu programmiert man
dieses mit einer Tabelle, die für die jeweiligen Eingangskombinationen
die entsprechenden Ausgangswerte direkt an die Anzeige ausgibt.
Sozusagen programmierbare Logik für Arme. Nachteil: benötigt 1 ROM pro
Anzeige.

2. Display mit eingebauter Logik verwenden. Z.B. das TIL311 gibt direkt
Hex-Werte aus. Sehr cool. Nachteil: schwer zu finden. Gibts neu zu
kaufen, aber sauteuer. Vgl.
http://home.wanadoo.nl/electro1/avr/til311.htm

3. Treiberbaustein benutzen, z.B. SAA1064 oder MAX7219. Einfach
anzusteuern; der Chip übernimmt die komplette Ansteuerung und das
Multiplexing. Helligkeit läßt sich per Software regeln. Serielle
Ansteuerung, benötigt daher die wenigsten Controllerpins. Nachteil: die
Teile sind relativ teuer. Der SAA ist deutlich billiger als der MAX,
wenn man <= 4 Stellen braucht.

4. Alles in Software machen. Nachteil: höherer Programmieraufwand;
benötigt Rechenzeit, Speicherplatz und Controllerpins.

von Santa Klaus (Gast)


Lesenswert?

Die Funktionsweise der Multiplexschaltung hast Du anscheinend völlig
mißverstanden.

Aus Deiner Beschreibung der beiden Dinge, die Du willst, werde ich beim
besten Willen nicht schlau. Tut mir leid.

von Santa Klaus (Gast)


Lesenswert?

>Wenn ich jedoch einen Wert z.B 168 anzeigen will müsste ich erst etwas
>programmieren wo diese Impulse sendet damit ich den Wert zur Anzeige
>bringen kann.

??????? Sorry, aber liegt es an mir, daß ich das nicht verstehe?

von peter dannegger (Gast)


Lesenswert?

Ich vermute mal, Du benutzt gar keinen MC sondern hast nur einen
8Bit-Zähler (z.B. 74HC393).

Ohne Programmierung eines MC oder EPROM ist da nichts mit dezimaler
Anzeige.

Du könntest höchstens gleich einen Dezimalzähler nehmen (74HC390) und
dann 7S-Decoder dahinter.


Da es hier aber hauptsächlich um MCs geht, denken gleich alle, Du
willst alles nur mit einem Chip machen (Zählen, Dezimal wandeln,
7S-dekodieren, Multiplexen), z.B. mit einem ATTiny2313 (zählt bis max
10MHz).

Aber wie gesagt, ohne Programmieren lernen geht das nicht.


Peter

von Thomas S (Gast)


Lesenswert?

Also nochmal

Multiplexschaltung habe ich so verstanden. Es werden die Impulse am
Eingang gezählt und dann über die drei Anzeigen angezeigt oder habe ich
das falsch verstanden?!?!?!?!?!?!?!?!?
Wenn ich ich aber einen Wert direkt am Port anzeigen lasse
(P4=164;)dann kann diese Zahl ja nicht direkt über die
Multiplexschaltung angezeigt werden auser wenn ich über ein MC Routine
auf einen Ausgang 164 Impulse schicke.Oder habe ich da was
Missverstanden.
Wenn ja kann mich mal jemand vom Prinzip her aufklären wie die
Multiplexschaltung auf den angezeigten Wert kommt.
Ich benutze schon einen MC zwar einen alten 80C517A aber zum
programmieren reicht mir dieser bis jetzt.

von luchs2a (Gast)


Lesenswert?

moin

hmm nochmal anders

du hast 3 anzeigen.
alle segmente der 3 anzeigen sind parallel geschaltet.  die katohden /
anoden  sind einzeln steuerbar.

t1: nur anziege 1 angeschaltet   zahl für anzeige 1 ausgeben
t2: nur anzeige 2 angeschaltet  zahl für anz2 ausgeben
t3:nur anziege 3 angeschaltet   zahl für anzeige 3 ausgeben
--> wieder mit 1 anfangen. das ganze schnell genug so das es nicht
flimmert also min 25x pro sekunde.

so wie du auf die zahlen kommst:

du liest deinen zähler/port aus.  machst   modulo 10 speicherst das auf
die variable für anzeige 3
divison  mit 10

wieder modulo --> wird zahl für anziege 2

divison

modulo--> anziege 1

ja  und dann  nach dem du die zahlen hast kannst diese dann umrechnen
in den ausgabe wert damit diese zahl wirklich erscheint zB über einen
switch konstruckt

zb für ne 1 brauchst du  die 2 rechten segmente also müsstets du 0x03
ausgeben wenn auf  pin 1 und pin 2  die entsprechenden segmente
angeschlossen sind

MISCH

ps: noch fragen dann bitte
pss: fals der post zu spät kommt  ich habe rechtzeitig angefangen war
aber zwischenzeitlich essen

von Philipp Sªsse (Gast)


Lesenswert?

> dann kann diese Zahl ja nicht direkt über die
> Multiplexschaltung angezeigt werden auser wenn ich über
> ein MC Routine auf einen Ausgang 164 Impulse schicke.

Ich glaube, ich hab das Mißverständnis begriffen! Du nimmst an, die
7-Segmentanzeige hätte irgendeine Logik? Hat sie nicht. Der µC kann
jedes Segment einzeln ansteuern, ob es gesetzt sein soll oder nicht.

Also drei Schritte:

1. Umwandlung des Bytes in drei Dezimalwerte für die drei Stellen (das
hat Luchs2a gerade beschrieben)

2. Umwandlung der Dezimalwerte in Segmentmuster; das geschieht mit
einem einfachen 10-Byte-LookupTable

3. Diese Bytemuster auf die drei Anzeigen multiplexen. Das hast Du
mittlerweile wohl begriffen, wie das geht


Ja, dazu mußt Du ein wenig programmieren, aber für solche Dinge sind µC
irgendwie gedacht ...

von luchs2a (Gast)


Lesenswert?

vorhin die mail adrr vergessen. bin übers we nicht da. möchte einfach
nur wissen wie es ausgeht.
ach ja ung gaaaaanz wichtig MISCHA heist es ;-)

von luchs2a (Gast)


Lesenswert?

will man glauben oder nicht haken vergessen  Tschuldigung

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.