Forum: Mikrocontroller und Digitale Elektronik 8bit binär nach 7-Segment-Anzeige???


von Thomas O. (Gast)


Lesenswert?

Hallo,

wollte mal fragen wie das mit den BCD Umwandlern funktioniert.
Habe in einer ELV-Journal-Zeitschrift eine Schaltung mit so einem 
Wandler gefunden allerdings verstehe ichs nicht ganz. Dieser Baustein 
hat nur 16 Pins.
Man braucht doch um die Zahl 255 darzustellen mind. 8Eingänge und dann 
mind. 15 Ausgänge um die Ziffern 2, 5 u. 5 leuchten zu lassen.

Kann mir das jemand erklären?
Gibt es solche Bausteine auch als 10bit Version?
Hat jemand eine Bezeichnung?

von Günter König (Gast)


Lesenswert?

Wie heisst der Wandler, nenn den Namen.

Gruß,
Günter

von Thomas O. (Gast)


Lesenswert?

Hallo,

glaube das war ein 74LS145

oder haben die immer nur eine 7Segment Anzeige angesteuert und dan die 
nächste.

Ich suche auf jedenfall einen Wandler wo ich eine alle 8 Bits dranhänge 
und auf der anderen Seite 3x7Segmente also um 255 darstellen zu können. 
9 o. 10 Bit wäre noch besser.

von Günter König (Gast)


Angehängte Dateien:

Lesenswert?

Hi Thomas,
so direkt mit 8 oder mehr bit wüsste ich im Moment nichts, aber wenns 
denn auch seriell über das SPI geht ist der MAX7219 eine gute Wahl. Da 
kannst du bis 8 7Segmentanzeigen dranhängen.

Gruß,
Günter

von Thomas O. (Gast)


Lesenswert?

Hallo,

ich möchte das aus Geschwindigkeitsgründen auf gar keinen fall Seriel 
machen. Da ich in meinen Programm fast alles im Polling mache und es auf 
jeden Takt ankommt.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Falls du einen AVR verwendest, die meisten haben Hardware-SPI. Das heißt 
du musst nur ein Byte in ein Register kopieren, und die serielle 
Übertragung findet im Hintergrund statt während das Programm 
weiterläuft.

von Günter König (Gast)


Lesenswert?

Bitte nicht UART und SPI verwechseln!!!

Günter

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

? Wer hat jetzt was verwechselt ?

von Retro (Gast)


Lesenswert?

Wie währe es mit programmierbarer Logik? Nen GAL oder so... damit 
kannste dir deine Zahlen ganz schnell selbst entschlüssen.

von Thomas O. (Gast)


Lesenswert?

Hallo,

also das mit der Hardware-Verarbeitung der Seriellen Übertragung wäre 
auch o.k.

Was müsste ich aber für einen Binär Dezimal Converter benutzten wenns 
ich doch parallel machen will.

von Günter König (Gast)


Lesenswert?

Hi Andreas,
dachte, er verwechselt den UART mit dem SPI. Der UART ist ja nun 
wirklich langsamer als das SPI.

Schönen Sonntag noch,
Günter

von wolli_r (Gast)


Lesenswert?

Hi,
habe vor einiger Zeit mit dem 2313 zwei MAX7219 (die sind ziemlich 
teuer) emuliert:
12 stellige 7 Segment Anzeige gemultiplext.
Das Ganze braucht 12 Leitungen, 4 Transistoren,
3 574'er und ein paar Widerstandsnetzwerke.

Hab gerade noch mal meine Aufzeichnungen angesehen und man könnte für 
eine 3 stellige Anzeige das Ganze auf 9 Portleitungen, 1 574'er, 4 
Transistoren und 8 Widerstände reduzieren. Von den 9 Portleitungen 
müssen 5 für die Anzeige exclusiv
zur Verfügung stehen. Die anderen 4 sind für andere Zwecke nutzbar.
Ca jede 500µs wird ein Interrupt ausgelöst und entsprechend 
gemultiplext. Die IRQ Latenzzeit ist sehr kurz, da man
1. nur den 574'er latchen muß.
2. nur den Port schalten muß.
Das Timing hierfür liegt im ns Bereich.

Besteht Interesse?

mfg wolli_r

von Holger (Gast)


Lesenswert?

Es besteht sogar brennendes Interesse!
Gruß: Holger

von wolli_r (Gast)


Lesenswert?

Hallo Thomas,
Der 74HC574 ist ein 8 fach Speicherregister.
An die Eingänge der Register legst Du kurz die Daten an und speicherst 
diese im Register mit einer "clock Flanke". Die Ausgänge werden über 
Widerstände ca 68..100Ohm an die Segmente gelegt. Infos ergeben sich aus 
den Datenblättern-->suchen mit google.de.
Deine Binärzahl kannst Du ganz einfach nach Dezimal aufsplitten:
Als erstes brauchst Du 3 leere Bytes für die Dezimalstellen. 
Fortgeschrittene arbeiten mit "packed BCD" in Nibbles. das kostet nur 1 
1/2 Bytes.
1. Prüfe Deine Binärzahl ob Sie größer als 99 ist.

2. Wenn ja -> incrementiere die 100er Stelle.

3. Dann Subtrahiere 100 und springe wieder zu 1

4. Wenn nein-> bei "0"->11, ansonsten weiter mit 5

5. Prüfe Deine Binärzahl ob Sie größer als 9 ist.

6. Wenn ja -> incrementiere die 10er Stelle

7. Subtrahiere 10 und springe wieder zu 5.

8. Wenn nein->weiter zu 9

9. bei "0" -> 11 ansonsten weiter mit 10

10. Subtrahiere 1 und incrementiere die 1er Stelle.

10. Springe zu 9

11. beenden

Die Dezimalstellen mußt Du jetzt in Segmentcode umwandeln. Dies geht am 
einfachsten mit einer Tabelle, auf die ein Zeiger gesetzt wird. Der 
Zeiger erhält einen Offset mit dem jeweiligen Dezimal-Wert.
Nach der Umwandlung gibst Du den 7-Segmentcode auf den Port und Latchst 
das Ganze ins 574er Register. Nachdem die Daten vom Latch übernommen 
wurden, schaltest Du den Transistor ein,
der für die gerade ausgegebene Stelle die gemeinsame Kathode der 
entsprechenden Anzeige auf GND zieht.
Das ist im wesentlichen schon alles gewesen.

mfg wolli_r

von Thomas O. (Gast)


Lesenswert?

Hallo,

danke für die ausführliche Erklärung.

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.