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
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
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) ;-]
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
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. ;)
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
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.
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?
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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.