Forum: Mikrocontroller und Digitale Elektronik 3-Stellige BCD-Zahl nach Binär umwandeln


von V. B. (dr-robotnik)


Lesenswert?

Hallo zusammen!
Ich habe drei Kodier-Drehschalter, mit welchen ich jeweils Werte von 0 
bis 9 einstellen kann. Damit möchte ich Zahlen im Dezimalsystem von 0 
bis 999 eingeben.
Die einzelnen Kodierschalter haben eine Ausgabe im BCD-System.
D.h. ich bekomme insgesamt eine dreistellige BCD-Zahl.

Wie kann ich diese mit einfachen Mitteln, mit Standard-TTL bzw. CMOS 
Bausteinen in eine Binärzahl umwandln?
Grund dafür ist, dass ich einen Binärzähler jeweils bis zum 
eingestellten Wert hochzählen lassen will.
Ich kann mir vorstellen, dass es fertige BCD->Binärdekoder als Baustein 
gibt, aber ich habe gerade keinen da, dafür aber jede menge "TTL-Gräber" 
aus denen ich die meißten üblichen Bausteine rausholen kann.
Einen µController oder CPLD will ich aus Prinzip nicht, weil ich meine 
Schaltung zu Lernzwecken auf die "oldschool"-Art aufbauen will. Bitte 
nicht steinigen. ;-)
Danke und viele Grüße, Dr. Robotnik

von Matthias L. (Gast)


Lesenswert?

Warum nimmst du nicht HEX-Drehschalter? So kannst du die Zahl direkt 
binär eingeben und kannst noch das Jopf-Umrechnen dez-binär/hex üben

;-)

von V. B. (dr-robotnik)


Lesenswert?

Matthias Lipinsky wrote:
> Warum nimmst du nicht HEX-Drehschalter? So kannst du die Zahl direkt
> binär eingeben und kannst noch das Jopf-Umrechnen dez-binär/hex üben
>
> ;-)

Weil ich drei schöne robuste Kodierschalter für Frontplattenmontage 
gerade zur Hand habe und sie auch verwenden möchte. Und extra neue 
Bauteile bestellen will ich nicht, wollte eher das Zeug, was ich noch 
rumliegen habe recyclen.

von Matthias L. (Gast)


Lesenswert?

>gerade zur Hand habe ...

Das ist wieder mal typisch.
Irgendein Teil gefunden und damit große Sprünge machn wollen. Den 
Aufwand dabei nicht akzeptieren wollen und ein passenderes Teil ist auch 
nicht gut..

man man man....

von V. B. (dr-robotnik)


Lesenswert?

Matthias Lipinsky wrote:
>>gerade zur Hand habe ...
>
> Das ist wieder mal typisch.
> Irgendein Teil gefunden und damit große Sprünge machn wollen. Den
> Aufwand dabei nicht akzeptieren wollen und ein passenderes Teil ist auch
> nicht gut..
>
> man man man....

Hallo? Was soll das denn schon wieder?! Wenn Du keine Lösung hast wie 
man mit Logikgattern einen BCD nach Binär dekoder realisiert, dann halt 
dich doch bitte raus.
Ich habe nicht gesagt, dass ich einen bestimmten Aufwand nicht 
akzeptieren will!
Wenn es eine Lösung mit einer Hand voll Standard Logik ICs (von mir aus 
auch Register etc.)gibt, würde ich sie gerne anwenden.
Wenn nicht, dann halt nicht. Dann schmeiße ich die Kodierschalter raus 
und nehme einfache binäre kodier-schiebe-schalter. Aber dabei würde man 
ja nix lernen.

von Peter D. (peda)


Lesenswert?

V. Baumann wrote:

> Wie kann ich diese mit einfachen Mitteln, mit Standard-TTL bzw. CMOS
> Bausteinen in eine Binärzahl umwandln?
> Grund dafür ist, dass ich einen Binärzähler jeweils bis zum
> eingestellten Wert hochzählen lassen will.

Mit Gattern wird das sehr aufwendig.
Das einfachste ist, Du nimmst statt der Binärzähler 3 Dezimalzähler, 
z.B. 74HC192.
Dann mußt Du nichtmal mehr vergleichen, da diese Zähler setzbar sind.
Du setzt sie also auf den Schalterwert und zählst runter.


Peter

von Hannes L. (hannes)


Lesenswert?

V. Baumann wrote:
> Matthias Lipinsky wrote:
>>>gerade zur Hand habe ...
>>
>> Das ist wieder mal typisch.
>> Irgendein Teil gefunden und damit große Sprünge machn wollen. Den
>> Aufwand dabei nicht akzeptieren wollen und ein passenderes Teil ist auch
>> nicht gut..
>>
>> man man man....
>
> Hallo? Was soll das denn schon wieder?! Wenn Du keine Lösung hast wie
> man mit Logikgattern einen BCD nach Binär dekoder realisiert, dann halt
> dich doch bitte raus.

Du bist ganz schön dreist. Was Du vor hast, ist nämlich nicht ganz 
ohne...

> Ich habe nicht gesagt, dass ich einen bestimmten Aufwand nicht
> akzeptieren will!

Dann treibe doch den Aufwand, selbst zu recherchieren, anstatt hier 
andere Leute um fertige Lösungen zu bitten und dabei noch schräg 
anzumachen.

> Wenn es eine Lösung mit einer Hand voll Standard Logik ICs (von mir aus
> auch Register etc.)gibt, würde ich sie gerne anwenden.

Mit Logik-Gattern fällt mir auf die Schnelle nix ein.

Mit einem MC (z.B. AVR) ist das lächerlich einfach.

Du kannst es aber auch mit einem EPROM realisieren, oder besser mit 
Zweien. Die Adressen hängst Du an die Codierschalter (mit PullUps), aus 
den Daten kommen die Zählerstände. Das EPROM muss natürlich entsprechend 
programmiert werden.

> Wenn nicht, dann halt nicht. Dann schmeiße ich die Kodierschalter raus
> und nehme einfache binäre kodier-schiebe-schalter.

Das würde den Aufwand drastisch reduzieren.

> Aber dabei würde man
> ja nix lernen.

Du lernst auch nix, wenn Du andere Leute ausfragst, anstatt Dich Schritt 
für Schritt einzuarbeiten. Es bringt nichts, den zweiten Schritt vor dem 
ersten machen zu wollen.

...

von Gast (Gast)


Lesenswert?

Ist doch ganz einfach:

3 x Dezimalzähler und 3 x 4-Bit Komparatoren zusammenschalten und einen 
externen Takt anlegen, der die Zähler hochzählen läßt.
Parallel zu den Dezimalzählern wird ein 10-Bit Binärzähler mit 
nachgeschaltetem (oder internem) Register mit gleichem Takt hochgezählt.

Die Komparatoren liefern bei Gleichheit von Dezimalzählern und 
Dezimalschaltern einen Impuls, welcher den Zustand des Binärzählers ins 
(Ergebnis)register schreibt und die Zähler auf '0' zurücksetzt.

Fertig ;-)
Bei Risiken udn Nebenwirkungen einen AVR einsetzen.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

74185:

http://www.datasheetcatalog.com/datasheets_pdf/D/M/7/4/DM74185A.shtml

Kaskadierung der BCD-Decoder siehe Datenblatt

von Wolf (Gast)


Lesenswert?

Ei dann schlage z.B. Kapitel 9 ab Seite 142 im "Integrated Circuits 
Catalogue" von TI auf und baue den Decoder 74184, 74185 o.Ä. mit 
NAND-Gattern und Invertern nach. Dabei übst Du auch wieder 
Wahrheitstabellen.

von yalu (Gast)


Lesenswert?

Wenn es unbedingt Standardlogik sein muss: Fünf 4-Bit-Binäraddierer,
davon mindestens einer mit Carry-Out, (z.B. 7483 oder 4008) sollten
genügen. Die passen auch noch gut in eine Hand :)

Ansonsten ein geeignet programmiertes 4Kx16-Bit-PROM, EPROM oder
NOR-Flash oder zwei 4Kx8 oder ein 4Kx8 und zwei 4Kx1.

Oder ein PAL oder GAL oder ein Mikrocontroller mit nichtflüchtigem
Programmspeicher.

Oder eben ziemlich viele 7400.

von V. B. (dr-robotnik)


Lesenswert?

Gast wrote:
> Ist doch ganz einfach:
>
> 3 x Dezimalzähler und 3 x 4-Bit Komparatoren zusammenschalten und einen
> externen Takt anlegen, der die Zähler hochzählen läßt.
> Parallel zu den Dezimalzählern wird ein 10-Bit Binärzähler mit
> nachgeschaltetem (oder internem) Register mit gleichem Takt hochgezählt.
>
> Die Komparatoren liefern bei Gleichheit von Dezimalzählern und
> Dezimalschaltern einen Impuls, welcher den Zustand des Binärzählers ins
> (Ergebnis)register schreibt und die Zähler auf '0' zurücksetzt.
>
> Fertig ;-)
> Bei Risiken udn Nebenwirkungen einen AVR einsetzen.

Ja so habe ich mir das auch gedacht, einfach anstatt einem 8 bit 
binärzähler plus komparator, für jede dekade einen extra zähler plus 
komparator zu nehmen, aber ich habe nur einen komparator!

Das Datenblatt für den '184er habe ich auch schon durchgesehen und da 
muss man ja 6 Stück kaskadieren um eine dreistellige BCD Zahl 
umzuwandeln!

Ich dachte echt das wäre ein triviales Problem, hätte nicht gedacht dass 
es doch so kompliziert ist. Ich denke ich werde den Ansatz mit den 3 
zählern und drei komparatoren weiterverfolgen. ich muss nur noch zwei 
komparatoren auftreiben.

von Wolf (Gast)


Lesenswert?

Damals...ja damals hab ich das Innenleben mancher ICs diskret 
nachgebaut. Da kosteten einfachste Gatter noch 30DM mit Fan Out 6 bei 
DIMEG.

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.