Forum: Mikrocontroller und Digitale Elektronik Binärzahl umwandeln


von Adrian (Gast)


Lesenswert?

Hallo,
ich muss eine 12bit Binärzahl als Dezimalzahl auf einer bzw. mehreren 
7-Segment-Anzeigen darstellen.
Wenn es nicht anders möglich ist, kann sie auch erst in BCD umgewandelt 
werden.
Habe mich schon ein wenig umgeguckt, aber nichts brauchbares gefunden.

Vielleicht kann mir ja jemand helfen.

Gruß Adrian

von Stulle (Gast)


Lesenswert?

In Ada,Pascal,Basic,C,C#,CC+,Assembler,Cobol usw..........??

mfg

von Harald W. (wilhelms)


Lesenswert?

Adrian schrieb:
> Hallo,
> ich muss eine 12bit Binärzahl als Dezimalzahl auf einer bzw. mehreren
> 7-Segment-Anzeigen darstellen.
> Wenn es nicht anders möglich ist, kann sie auch erst in BCD umgewandelt
> werden.

Nein, es ist nicht anders möglich. :-)
Gruss
Harald

von Stulle (Gast)


Lesenswert?

1
;***************************************************************************
2
; 8Bit binär in packed BCD  -  wert in aa - ergebnis in aa ! is so cool man !
3
bin2bcd:
4
    clr  temp    ;clear result msd
5
bBCD81:    subi  aa,10    ;input = input -10
6
    brcs  bBCD82    ;abort if carry set
7
    subi  temp,-$10  ;für packed bcd 
8
    rjmp  bBCD81
9
bBCD82:    subi  aa,-10
10
    add  aa,temp
11
    ret
12
;***************************************************************************

und danach über eine Tabelle in die entsprechenden segmente zerlegen und 
ausgeben möglichst gemultiplext oder gleich auf einen BCD-/seg. wandler 
(7447) ;-]

von Klaus W. (mfgkw)


Lesenswert?

> Nein, es ist nicht anders möglich. :-)

auch nicht in hex?

von Johannes G. (gutenberg)


Lesenswert?

Adrian schrieb:
> Habe mich schon ein wenig umgeguckt, aber nichts brauchbares gefunden.

Wo denn?

Man muss nicht mal diese Website verlassen um das zu finden.

http://www.mikrocontroller.net/articles/AVR_Arithmetik#Bin.C3.A4r_zu_BCD_-_Umwandlung

http://www.mikrocontroller.net/articles/AVR-Tutorial:_7-Segment-Anzeige

von Adrian (Gast)


Lesenswert?

Geht das auch ohne, dass ich etwas programmieren muss?

Ich versuche mal das Ganze zu beschreiben:
Ich habe eine Codierung, die aus 2 Dezimalzahlen und noch ein Paar 
anderen Sachen besteht.
Um die Codierung auszulesen habe ich einen 48pol. Stecker. Die anderen 
Sachen sind alle nur einzelne Bits, Die eine Zahl geht nur bis 6 (3bit), 
also mit einer Anzeige kein Problem für mich.
Die zweite Zahl ist etwas größer (12bit) und die muss ich auch 
umwandeln, möglichst ohne zu programmieren.

Ich hoffe das reicht, um mir zu helfen. ;)

von katombo (Gast)


Lesenswert?

Sehr aufschlussreiche Erklärung - jetzt ist sicher allen alles klar.

Man kann das (wenn man nicht programmieren will) auch in Hardware 
machen. Die 74HC... Reihe bietet da sicherlich das eine oder andere 
passende an

von STK500-Besitzer (Gast)


Lesenswert?

Adrian schrieb:
> Die eine Zahl geht nur bis 6 (3bit),
> also mit einer Anzeige kein Problem für mich.

Das sollte sich problemlos mit einem BCD-Siebensegment-Decorder 
erschlagen lassen.

Adrian schrieb:
> Die zweite Zahl ist etwas größer (12bit) und die muss ich auch
> umwandeln, möglichst ohne zu programmieren.

Wenn das eine 12bit-Binärzahl ist, dann wird das etwas schwieriger.
Das sollte sich aber auch mit ein paar Logik-Chips erschlagen lassen.

von Adrian (Gast)


Lesenswert?

Danke schonmal.

BCD-Decoder habe ich jetzt gefunden (7446), aber BIN in BCD habe ich 
noch nicht gefunden. Könntet ihr mir da noch mal etwas helfen?

von STK500-Besitzer (Gast)


Lesenswert?

Adrian schrieb:
> aber BIN in BCD habe ich
> noch nicht gefunden. Könntet ihr mir da noch mal etwas helfen

Gibt es in der Form so auch nicht.

von Klaus 2. (klaus2m5)


Lesenswert?

Mit einem 12-Bit DAC wandeln und per Voltmeter anzeigen?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ein 16-Bit-EPROM und BCD-zu-7-Segment-Decoder.

An die Adressleitungen des EPROMs werden die Binärdaten angelegt, das 
EPROM gibt auf den Datenleitungen vier Dezimalstellen aus, mit denen die 
BCD-zu-Siebensegment-Wandler angesteuert werden.

Das EPROM muss dann nur mit entsprechend sinnvollem Inhalt gefüllt 
werden.

Alternativ zwei EPROMs verwenden und direkt (bzw. über Treiberbausteine) 
die 7-Segment-Anzeige damit ansteuern.

Wenn die 7-Segment-Anzeige im Multiplex angesteuert wird, reicht auch 
ein 8-Bit-EPROM. An die Adressleitungen werden neben den Binärdaten auch 
noch der die Anzeigen steuernde Multiplexer angeschlossen.

Für die Multiplexersteuerung reicht hier ein 2-Bit-Binärzähler, der z.B. 
an einem freilaufenden RC-Oszillator angeschlossen werden kann.

Somit kann mit einem 27128 problemlos eine 12-Bit-Zahl auf einer 
vierstelligen Anzeige ausgegeben werden.

Natürlich ist auch hier das EPROM mit entsprechend sinnvollem Inhalt zu 
füllen.

von Harald W. (wilhelms)


Lesenswert?

Adrian schrieb:

> Die zweite Zahl ist etwas größer (12bit) und die muss ich auch
> umwandeln, möglichst ohne zu programmieren.

Nun, es gibt das 74185-IC für diesen Zweck, das ist aber wohl obsolet
und deshalb schwer erhältlich. Eine andere Methode wäre, diese 12-Bit-
Zahl in einen binären Abwärtszähler zu laden, bis auf 0 runterzuzählen,
und diese Impulse in einem dezimalen Zähler aufwärts zu zählen. Dann
kann man sie mit einem BCD/siebensegmentdekoder problemlos anzeigen.
Gruss
Harald

von Peter D. (peda)


Lesenswert?

Adrian schrieb:
> ich muss eine 12bit Binärzahl als Dezimalzahl auf einer bzw. mehreren
> 7-Segment-Anzeigen darstellen.

Eine reicht nicht, Du brauchst schon 4 Digits.
Die übliche Lösung ist, man nehme einen MC (ATmega164) und ein paar 
Zeilen C.


Peter

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.