Forum: Mikrocontroller und Digitale Elektronik Kaskadieren 7 Segment Display


von Gernot T. (gtimi)


Angehängte Dateien:

Lesenswert?

Hallo!

Also hier mein Erster Beitrag (Besser Frage)

Ich soll für meinen Cousin eine LED Tafel Bauen um den Score und die 
Zeit für ein Hokey Turnier Anzuzeigen

Die Tafel soll in etwa 1m x 1m groß sein.
Für die darstellung der zahlen will ich LED stripes verwenden, solche 
habe ich noch zu hause.
Die form soll so sein wie bei den 7 Segmentanzeigen.

Zählen Up/Down und Zeit will ich mit dem PC Steuern (ProfiLab) eine 
USB-PIO von bmcm für die Ansteuerung hab ich auch zu Haus liegen.
Die USB-PIO gibt mir 24 Digitale Schaltsignale (0V 5V, TTL Signal nennt 
man das denk ich)

Ein Schematisches beispiel wie ich die Anzeige machen will ist Anbei.
Die Gruppe vor dem "Seg7 Decoder" Soll am PC sein und der Rest auf der 
Anzeige. Hab mir gedacht nehm da soetwas in der Art eines 7447 (Ob ich 
einen LED Treiber brauche muss ich dann noch messen.

Mein Problem:

Um den Score 88:88 und die Zeit 88:88 darzustellen würde ich 32 Digitale 
Ausgänge benötigen, hab aber ja nur 24.
Bitte um ein Paar Tips.

Ah ja, LaptTop und Anzeig stehen natürlich in unmittelbarer Nähe.

Wenn Ihr das gelesen habt, ist es überflüssig. Aber ich sags halt 
trotzdem.
Bin Weder Elektroniker noch Elektriker, aber sehr Interresiert.

lg GTimi

: Verschoben durch Admin
von Stefan B. (stefan) Benutzerseite


Lesenswert?

Gernot T. schrieb:

> Um den Score 88:88 und die Zeit 88:88 darzustellen würde ich 32 Digitale
> Ausgänge benötigen, hab aber ja nur 24.

Es gibt viele Möglichkeiten Pins einzusparen. Im Extremfall brauchst du 
sogar nur einen Signalpin!

Pinsparen geht mit Multiplexing, Decodern, Schieberegistern, 
Portexpandern und µC-µC Verbindungen an intelligenten Displays über 
Bussysteme...

Eine Miniübersicht ist auf 
http://www.mikrocontroller.net/articles/Pollin_Funk-AVR-Evaluationsboard#Uhr_mit_7-Segment-Anzeige

Hätte ich das Projekt an der Backe, würde ich es nicht mit diskreten 
Logikbausteinen aufbauen, sondern mit Eigenintelligenz in Form eines 
(oder mehreren s.o.) µCs. Laptop wäre nicht nötig.

von Michael U. (amiga)


Lesenswert?

Hallo,

Gernot T. schrieb:
> Um den Score 88:88 und die Zeit 88:88 darzustellen würde ich 32 Digitale
> Ausgänge benötigen, hab aber ja nur 24.
> Bitte um ein Paar Tips.

Multiplex? 1 Decoder + Treiber für alle Segmente sind 4 Bit für die 
Ziffer. Dazu 8 Bit für die Auswahl der Stelle, die gerade angezeigt wird 
macht also 12 Leitungen.

Mit einem 3 zu 8 Decoder (74138 o.ä.) sind es noch 3 Leitungen für die 
Stellenauswahl, also 4 + 3 = 7 Bit.

Was machst Du mit den restlichen 17 Leitungen? ;)

Gruß aus Berlin
Michael

von einer (Gast)


Lesenswert?

Mit Siebensegment Decoder komm ich auf 16 Leitungen.
Oder steh ich auf selbiger?

von Karl H. (kbuchegg)


Lesenswert?

einer schrieb:
> Mit Siebensegment Decoder komm ich auf 16 Leitungen.

Wie kommst du drauf?
Ist ein Decoder vorhanden, fährst du mit 4 Bit in den Decoder rein
Dazu noch 8 Leitungen für die Stellenauswahl (obwohl man das auch mit 
einem 3 zu 8 Decoder machen könnte)

Obwohl: Den Decoder würd ich mir sparen.
Leitungen sind genug vorhanden und dann ist der Decoder eher hinderlich, 
wenn es darum geht, mit den 7_Segment auch mal 'einen auf Show zu 
machen'

von Karl H. (kbuchegg)


Lesenswert?

Karl heinz Buchegger schrieb:
> einer schrieb:
>> Mit Siebensegment Decoder komm ich auf 16 Leitungen.
>
> Wie kommst du drauf?
> Ist ein Decoder vorhanden, fährst du mit 4 Bit in den Decoder rein
> Dazu noch 8 Leitungen für die Stellenauswahl (obwohl man das auch mit
> einem 3 zu 8 Decoder machen könnte)

9 wären besser. Dann kann man eine nichtverdrahtete 'Stelle' zum 
Dunkeltasten benutzen, während die 7-Seg Info umgeschaltet wird.

von Falk B. (falk)


Lesenswert?

Wenn man das WIRKLICH direk mit dem PC und nur dieser USB-IO machen 
will, würde ich mir Multiplexing ala LED-Matrix verkneifen. Ein 
Softwarehänger (weil jemand einen neuen USB-Stick in den Laptop steckt) 
und die Anzeigen sind Toast.
Ich würde das old school mit Schieberegistern machen, entweder klassisch 
74HC595 + ULN 2803 oder TPIC16B595.

AVR-Tutorial: Schieberegister

Der Aufwand ist überschaubar, und vor allem ist es kaskadierbar, wie der 
OP wollte ;-)

MFG
Falk

von Peter D. (peda)


Lesenswert?

Kaskadieren geht am einfachsten mit 74HC595 bzw. deren 
Leistungsausführungen TPIC6B595 (50V/150mA).

Braucht insgesamt 3 IO-Leitungen, egal wieviel Digits.


Peter

von hans (Gast)


Lesenswert?

Es sind doch genug Pins da, also:

Jede Ziffer mit Latch, z.B. 74HC573, und Treiber, z.B. 2803.

Über PC Daten auf einen Port (8 Bit) und dann LE 1..8 über
einen anderen Port schalten.

Keine Timingprobleme und einfaches Programm. Anzeigen
sind gleiche Funktionsblöcke.

Gruß Hans

von Gernot T. (gtimi)


Lesenswert?

Hallo Forum!

Zuerst ein großes DANKE für die zahlreichen Post´s! Damit hatte ich 
gar nicht gerechnet.
Werde jetzt mal die Beiträge durchforsten, jede menge Datenblätter 
Studieren (wohl eher versuchen Funktionsweise zu verstehen) und dann den 
für mich in Frage kommenden Lösungsweg versuchen zu verwirklichen.

Melde mich wieder wenn es um die Umsetzung geht.

THX GTimi

von Gernot T. (gtimi)


Angehängte Dateien:

Lesenswert?

Hallo Forum!

Ich habe mich nun für diese Variante entschieden. Alles andere währe
wohl für mich zuweit ausgeholt.
Hier sehe ich auch mit dem Ätzen der Print am wenigsten Probleme, da ich
nur einen Eigenbau zum belichten und Ätzen habe, kommen mir hier die
Leiterplatten Breiten und Abstände wohl am besten Entgegen.

Habe diese Schaltung mal auf dem Steckboart verwirklicht
http://www.aaroncake.net/circuits/counter.asp
Auch die Stückliste: 74LS90 + 74LS47
Ist auch ein kleines Bild Anbei :)

Problem bzw. Frage:
Nach Studieren des Datenblattes habe ich herausgefunden das beim 74LS90
das lösen der Verbindung von Pin 2+3 zur Masse den MR (MasterReset)
bewirkt.
Was ich jedoch nicht rausfinden konnte ist Wie ich Abwärts Zählen kann?
Es könnte ja mal vorkommen das man sich Verdrückt und den Stand
korrigieren muss ohne von 0 zu beginnen.

Problem Zwei:
Es hat sich schnell rausgestellt das der Taster eine art "Prellen" hat.
Also 1x Tasten und es werden manches mal 2-3 Impulse gezählt.
Wie kann ich dem Entgegen wirken?

THX4help lg gtimi

von Falk B. (falk)


Lesenswert?

@Gernot T. (gtimi)

>Ich habe mich nun für diese Variante entschieden. Alles andere währe
>wohl für mich zuweit ausgeholt.

>Auch die Stückliste: 74LS90 + 74LS47
>Ist auch ein kleines Bild Anbei :)

Schlechte Wahl. Damit bist du auf das Vorwärtszählen festgelegt.
Tu dir einen Gefallen und mach anders. Schieberegister oder Latch.
Damit bist du flexibel und der Schwierigkeitsgrad ist auch OK.

MFG
Falk

von Karl H. (kbuchegg)


Lesenswert?

Gernot T. schrieb:

> Was ich jedoch nicht rausfinden konnte ist Wie ich Abwärts Zählen kann?

Mit dem 7490?
Gar nicht. Der kann nur aufwärts zählen.

Wenn du sowieso einen PC daneben stehen hast (haben musst), dann ist es 
sinnlos, da jetzt ein Logikgrab aus 74xx Bausteinen aufzubauen. Die 
Logik kann der PC locker nebenher machen. Einzig bei der Ansteuerung der 
LED muss man ihm ein wenig mit dem Strom unter die Arme greifen und 
Anschlüsse für die LED gibt es auch nicht genug. Diese beiden Punkte 
sind aber beherrschbar.

von gtf (Gast)


Angehängte Dateien:

Lesenswert?

7490 und abwärts zählen geht nicht.
Da bist du mit einem 74191 besser bedient. Ist auch ein Dezimalzähler.

Das Prellen tritt nur bei rumspielen mit Tasten auf.
Dein USB-IO wird nicht Prellen.

von Gernot T. (gtimi)


Lesenswert?

Hallo . . . :(

Hmmm ja habe die Beiträge mit Schieberbitregistern und Latch auch 
gelesen, hab auch im WWW und Datenblätter bis am morgen studiert.
Aber ganz ehrlich, das übersteigt meine Fähigkeiten wohl bei weitem. 
Theoretisch kann ich es schon verstehen aber das dann Aufstecken so das 
es Funktioniert wir wohl nix werden.

> Autor: gtf (Gast)

> Da bist du mit einem 74191 besser bedient. Ist auch ein Dezimalzähler.

Ist das im Prinzip so zu verstehen das ich mit Qa - Qd vom 74191 in die 
A - D vom 74LS47 rein gehen kann?

lg gtimi

von Karl H. (kbuchegg)


Lesenswert?

Gernot T. schrieb:
> Hallo . . . :(
>
> Hmmm ja habe die Beiträge mit Schieberbitregistern und Latch auch
> gelesen, hab auch im WWW und Datenblätter bis am morgen studiert.
> Aber ganz ehrlich, das übersteigt meine Fähigkeiten wohl bei weitem.

Wenn du den 7490 samt 7447 zum Laufen gebracht hast, dann kriegst du das 
auch hin. Das sieht nur am Anfang kompliziert aus. Aber im Grunde geht 
es nur darum:
In welcher Reihenfolge muss ich 8 Gepäckstücke auf ein Förderband legen 
und das Förderband dabei um jeweils 1 Positionen weiterschieben, damit 
beim Kippen des Förderbandes jedes Gepäckstück auf der richtigen von 8 
Rutschen landet.
(Hinweis: Das Gepäckstück, das auf die am weitesten entfernet Rutsche 
muss, muss zuerst aufgelegt werden)

Und das ist im Grunde schon alles, was man bei Schieberegistern beachten 
muss :-) Ansonsten heißt es ganz einfach: 0 oder 1 anlegen, je nach 
gewünschtem Wert, und am Clock Eingang einmal 0-1-0 (also einen Puls) 
erzeugen. Ist alles in Position, gibt es einen 2.ten Eingang, der dafür 
sorgt, dass das Förderband kippt, äh, die eingespeicherten 0en oder 1en 
auf den Ausgängen erscheinen.

> Theoretisch kann ich es schon verstehen aber das dann Aufstecken so das
> es Funktioniert wir wohl nix werden.

Das ist der leichteste Teil der Übung :-)
Du hast ja wesentlich weniger Drähte.

von Gernot T. (gtimi)


Lesenswert?

hans schrieb:
> Es sind doch genug Pins da, also:
>
> Jede Ziffer mit Latch, z.B. 74HC573, und Treiber, z.B. 2803.
>
> Über PC Daten auf einen Port (8 Bit) und dann LE 1..8 über
> einen anderen Port schalten.
>
> Keine Timingprobleme und einfaches Programm. Anzeigen
> sind gleiche Funktionsblöcke.
>
> Gruß Hans

Hallo!

Da mir der Kopf schon raucht, nur um es zu verstehen.
Der hier vorgeschlagene weg, ist besser als der meinige?

Mit der PIO kann ich aber nur 0 oder +5V darstellen, jetzt versteh ich 
das mit dem Port (8 Bit) und LE 1...8 nicht ganz.

Benötige ich den 7 Segment Display Decoder dann auch noch?
Wie viele Leitungen währen dann wirklich notwendig wenn ich
1
(Team A 88) : (Team B 88)
2
(Time 88:88)
Darstellen will. (Natürlich nur die Zahlen)

Hat jemand vielleicht einen link in der Schublade wo ich mir vielleicht 
einen Ähnlichen Schaltplan anschauen kann, um es besser zu verstehen?

lg gtimi

von gtf (Gast)


Lesenswert?

Gernot T. schrieb:
> Ist das im Prinzip so zu verstehen das ich mit Qa - Qd vom 74191 in die
> A - D vom 74LS47 rein gehen kann?

Du hast es richtig verstanden. Der Zählstand kann auch Resettet werden. 
Siehe load Funktion.

von Gernot T. (gtimi)


Lesenswert?

Gernot T. schrieb:

>
> Habe diese Schaltung mal auf dem Steckboart verwirklicht
> http://www.aaroncake.net/circuits/counter.asp
> Auch die Stückliste: 74LS90 + 74LS47
> Ist auch ein kleines Bild Anbei :)

Hallo bin nun doch dabei geblieben.
Reset und Zählen aufwärts reichen.
Prellen ist mit der PIO verschwunden.

? Gibt es ein gegenstück vom z.B. ULN2001 ?
Ich kann das - Signal vom 7447 ja nicht in den ULN Speißen, der benötigt 
ja ein Plus Signal?

Für das erste Spiel muss es so reichen, natürlich werde ich dann für V2 
;) eine bessere Lösung umsetzen

THX
lg gtimi

von gtf (Gast)


Angehängte Dateien:

Lesenswert?

Was spricht gegen invertieren?
So würde auch gehen.

von Gernot T. (gtimi)


Lesenswert?

Hallo!

> Da bist du mit einem 74191 besser bedient. Ist auch ein Dezimalzähler.

Habe das jetzt mal mit dem 74191 umgesetzt.
Leider tritt hier folgendes Problem auf. Der Zähler zählt 0123456789 und 
danach noch einige nicht definierbare Zeichen. Scheint als würde er zu 
weit zählen?

Ich bin im web auf folgendes gestoßen
74191 – 4-Bit Binary Counter
74190 – BCD Counter
da ich ja den 74LS47 BCD to 7 Segment Driver benutze, kann es da sein 
das der 74191 der falsche ist und ich den 74190 benötigt hätte?

lg gtimi

von Paul Baumann (Gast)


Lesenswert?

Der 74191 zählt von Natur aus von 0 bis 15. Du mußt dann dafür sorgen,
daß er nur bis 10 zählt. Dazu mußt Du einen Widerstand von 4,7K zwischen
Reset und +Ub schalten. Dann kommen 3 Dioden (z.B.1N4148) mit ihren
Kathoden an QA,QB und QD. Deren Anoden kommen dann zusammen an den 
Reset-
anschluß.
Am Besten wäre ein 74192 für Dich. Der kann auf- und niederzählen und
das von 0 bis 9.

MfG Paul

von Gernot T. (gtimi)


Lesenswert?

Hallo,

könnte ich die Kombination 74192 + 7447 dann auch Kaskatieren?

lg gtimi

von Paul Baumann (Gast)


Lesenswert?

Na freilich. Es gibt die Ausgänge "Übertrag vorwärts" und "Übertrag
rückwärts". Die werden mit den Eingängen "Zählen vorwärts" bzw.
"Zählen rückwärts" des nächsten 192 verbunden. Jeder 192 kriegt seinen
eigenen Dekoder hintendran und fertig ist die Laube.

Denk aber dran, daß die Kollegen jeweils so 80-100mA aufnehmen. Das
wird dann ein anständiges Netzteil dafür werden.

MfG Paul

von Alex M. (Gast)


Angehängte Dateien:

Lesenswert?

Gernot T. schrieb:
> Habe das jetzt mal mit dem 74191 umgesetzt.
> Leider tritt hier folgendes Problem auf. Der Zähler zählt 0123456789 und
> danach noch einige nicht definierbare Zeichen. Scheint als würde er zu
> weit zählen?

Hast ja so was von Recht. Die komischen Zeichen sind Pseudotetraden.

Ja da ist der 74190 die richtige Wahl. Tut mir Leid für den falschen 
Hinweis.
Und er lässt sich genauso wie der 74191 Kaskadieren.


Als Wiedergutmachung habe ich dir die Beschreibung von 74190 auf Deutsch 
besorgt.
;----------------------------------------------------------------------- 
--------------------------
Beschreibung:
Beim normalen Zählbetrieb liegt /LOAD und /CE auf LOW. Der Zählerstand 
steht an den Ausgängen Q0 bis Q3 im BCD-Code zur Verfügung. Der Eingang 
(UP  DOWN) steuert die Zählrichtung. Liegt er auf LOW, so arbeitet der 
Zähler als Vorwärtszähler, liegt er auf HIGH, so ist die Zählrichtung 
rückwärts. Zur Programmierung wird die gewünschte Zahl im BCD-Code an 
die Eingänge P0 bis P3 gelegt und /LOAD kurzzeitig auf LOW gebracht. 
Dieses programmieren erfolgt asynchron. Mit einem LOW an /CE kann der 
Zähler gesperrt werden. Zur Vermeidung von Fehlimpulsen darf der Pegel 
an /CE nur verändert werden, wenn der Takt HIGH ist. Der Zähler besitzt 
keinen Rücksetzeingang. Er wird durch Laden des Wertes Null 
zurückgesetzt.
Der Pin 12 geht auf HIGH, solange der Zähler auf 9 beim Vorwärtszählen 
bzw. 0 beim Rückwärtszählen steht. Sonst liegt dieser Pin auf LOW. Der 
Ausgang /RC (RIPPLE CLOCK) geht mit der nächsten negativen Taktflanke 
von HIGH nach LOW, wenn Pin 12 auf HIGH ist und zugleich /CE auf LOW 
liegt (Zählung freigegeben). Er geht danach mit der nächsten positiven 
Taktflanke auf HIGH zurück. Damit können mehrstellige synchrone Zähler 
realisiert werden, indem man /RC mit /CE der jeweils nächsten Stufe 
verbindet und alle Stufen gemeinsam taktet.

Gruß gtf

von Gernot T. (gtimi)


Lesenswert?

Hallo!

Also muss es nochmal sagen, DANKE für die nette unterstützung hier!

Gibt es einen ersatz Typen für den 7404 Inverter? Leider habe ich 
gestern die letzten beiden 7404 bei meinem Elektronik Krämer ;) gekauft 
und er hat sogar gemeint rs sei gar nicht sicher ob er noch welche 
nachbekommt. Vielleicht sogar einen mit mehr Kontakten. Also ich mein 
mehr als 6 invertern, bei einem 7 Segment Display ist das gerade blöd 
so.

lg gtimi

von Peter D. (peda)


Lesenswert?

Wenn hier die Rede von 7404 ist, meint natürlich niemand mehr die 
uralten TTL-Stromfresser, sondern CMOS (74HC04, 74HCT04, 74AC04 usw.).
Und auch 74HC190.


Peter

von gtf (Gast)


Angehängte Dateien:

Lesenswert?

Für 6-Segmente einen IC(7404)nehmen. Für's letzte Segment kann man auch 
einen diskreten inverter aufbauen.

von Gernot T. (gtimi)


Lesenswert?

gtf schrieb:
> Für 6-Segmente einen IC(7404)nehmen. Für's letzte Segment kann man auch
> einen diskreten inverter aufbauen.

Also hierzu auch ein Dankeschön!

So mein Elektronik Krämerladen hatte leider den vorgeschlagenen Typen 
74190 nicht, habe aber einen MM54C90 bekommen, er meinte würde auch 
funktionieren.

Die Pins 5 Vcc, 10 GND, Qa - Qd sind mir soweit klar.
Des weitern hab ich im Datenblatt gefunden "Output Qa -> B for BCD 
Count" also pin 12 mit pin 1 verbunden.
Nur weiter weis ich jetzt nicht mehr? Kann mir da bitte jemand unter die 
Arme greifen?

lg gtimi

von Gernot T. (gtimi)


Lesenswert?

Hallo :)

Soweit mal alles so gut. Nach einigen Tagen der Steckerrei an meinem 
BreadBoard Funktioniert alles soweit.

Spielstand Anzeige mach ich mit 7490 + 7447 (brauch hier ja nur Aufwärts 
Zählen oder 0 Setzen)

Die Anzeige für die Zeit hab ich gerade aufgesteckt, mit 74190 und 7447.
Vorgabe Zeit in den 74190 mit Codierung Laden (12:00) funktioniert auch.

Jetzt kommt was vielleicht einige von euch eh schon geahnt haben. Die 
Minute hat natürlich 60 sec. und nicht 99 sec.

Gibt es da eine Möglichkeit die Sekunden anzeige immer von 60 - 0 laufen 
zu lassen?

lg GTimi

von Falk B. (falk)


Lesenswert?

@  Gernot T. (gtimi)

>Gibt es da eine Möglichkeit die Sekunden anzeige immer von 60 - 0 laufen
>zu lassen?

Dann hat sie ja 61 Sekunden ;-)

Man kann ja einfach nach 59 Sekunden einen asynchronen Reset machen, 
statt einem Zählpuls.

MfG
Falk

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.