Hallo,
ich suche eine Möglichkeit ohne µC die Ausgabe eines 8 Bit Zählers
(1,2,4,8,16... hier der 74HC590) nach 3x BCD ausgeben zu können, damit
auf drei 7 Segment Anzeigen 0-255 angezeigt werden kann.
Ein reiner BCD Counter zu kaskadieren reicht mir nicht aus, weil ich ja
die reale Zählfolge der Ausgänge des 74HC590 zusätzlich brauche.
Wie könnte man das am einfachsten realsieren? Im Internet habe ich
leider nichts passendes dazu gefunden.
Momentan sehe ich selbst nur die Möglichkeit, parallel zum Takt des 8
Bit Zählers drei BCD Counter zu verschalten. Besser wäre natürlich, wenn
die Ausgänge des Zählers ausgewertet werden würden.
Simon schrieb:> Momentan sehe ich selbst nur die Möglichkeit, parallel zum Takt des 8> Bit Zählers drei BCD Counter zu verschalten
Dürfte die Variante mit der geringsten Bauteilanzahl sein, da es CD4026
7-Segment-Decoder mit Zähler gibt.
Oder die inzwischen raren Multiplex MM74C925.
3 EPROMs parallel: jedes kann direkt für den 8bit-Wert für die 7
Segmente einer Stelle das passende Segmentmuster hergeben.
Ein kleines Hilfsprogramm (Tabellenkalkulation?) erstellt den
Speicherinhalt der EPROMs...
Simon schrieb:> Wie könnte man das am einfachsten realsieren?
Ein CPLD> Im Internet habe ich leider nichts passendes dazu gefunden.
Je exotischer die Lösung, um so schwieriger wird es, den richtigen
Suchbegriff zu finden. Wenn man vor hat, einen Zählerstand auf eine
7-Segment Anzeige zu bringen, verwendet man eher einen Dezimalzähler.
createchniker schrieb:> 3 EPROMs parallel: jedes kann direkt für den 8bit-Wert für die 7> Segmente einer Stelle das passende Segmentmuster hergeben.
Oder Ein 16-Bit Eprom und 3 Stück 7-Segmentdecoder.
@TO
Du hast zwar geschrieben ohne uC, aber wie groß darf der Aufwand denn
werden?
Oben wurde KV-Tafeln erwähnt. Ist eine Lösung aus Standard 74er bzw.
4000er IC's denkbar?
Finn S. schrieb:> Oder man benutzt dem 74185. Drei Stück kaskadiert (Beispiele im> Datenblatt) wandeln dir 8 Bit in 3x BCD um.
Geil! :) ... für 6BCD Stellen hab ich mal ein Screenshot des Datenblatts
gemacht xD *edit*: Ah, das war BCD->Binary!
(auf den ersten Blick scheint man für 3 BCD Stellen auch mehr als 3 zu
benötigen^^)
*edit*: Ah, war ich zu schnell ... auf der nächsten Seite im Datenblatt
war ein Diagramm für 3 BCD-Stellen ... Da braucht man tatsächlich 3
Stück dafür.
Danke für die bisherigen Antworten!
createchniker schrieb:> 3 EPROMs parallel: jedes kann direkt für den 8bit-Wert für die 7> Segmente einer Stelle das passende Segmentmuster hergeben.> Ein kleines Hilfsprogramm (Tabellenkalkulation?) erstellt den> Speicherinhalt der EPROMs...
Dürfte sehr einfach sein, dennoch soll es ohne Programmierung aufgebaut
werden.
Finn S. schrieb:> Oder man benutzt dem 74185. Drei Stück kaskadiert (Beispiele im> Datenblatt) wandeln dir 8 Bit in 3x BCD um.
Perfekt, das scheint mir auch die einfachste Methode zu sein!
Die ICs sind jedoch von 1972, man findet sie im Internet kaum noch und
wenn dann kosten die ein Vermögen.
simone schrieb im Beitrag #5050334:
> KV-Tafeln
Wäre nicht unmöglich, aber das ist mir zu schwierig und man braucht
wahrscheinlich unmengen an Gattern.
Jörg R. schrieb:> @TO> Du hast zwar geschrieben ohne uC, aber wie groß darf der Aufwand denn> werden?>> Oben wurde KV-Tafeln erwähnt. Ist eine Lösung aus Standard 74er bzw.> 4000er IC's denkbar?
Wenn möglich ohne µC oder programmierbares.
Ja, jedes IC wäre denkbar. Nur sollten es halt keine 100 ICs sein um das
zu realisieren.
Peter D. schrieb:> Man könnte nen BCD-Zähler parallel schalten, z.B. CD4553:> http://www.sycelectronica.com.ar/semiconductores/CD4553.pdf
Wie ich schon in #2 schrieb wäre das die Notlösung, aber wenn z.B. eine
Einheit ein falsches Signal bekommen würde (bezüglich stoppen des Takts)
dann könnte es ja sein das der Zähler für die Anzeigen noch reagiert und
die Flanke für den 8 Bit Zähler nicht mehr ausreicht. Dann würden beides
nicht mehr übereinstimmen. Daher wäre es mir leiber den Ausgang des 8
Bit Zählers auszuwerten.
Simon schrieb:> createchniker schrieb:>> 3 EPROMs parallel: jedes kann direkt für den 8bit-Wert für die 7>> Segmente einer Stelle das passende Segmentmuster hergeben.>> Dürfte sehr einfach sein, dennoch soll es ohne Programmierung aufgebaut> werden.
Warum? Gibt es einen echten Grund oder ist das bloß wieder ein
bescheuertes "Rätsel"?
> Finn S. schrieb:>> Oder man benutzt dem 74185. Drei Stück kaskadiert (Beispiele im>> Datenblatt) wandeln dir 8 Bit in 3x BCD um.>> Perfekt, das scheint mir auch die einfachste Methode zu sein!
Ist es nicht. Die einfachste Lösung wäre ein passend programmierter µC.
Der dann möglicherweise gleich den Originalzähler mit ersetzt.
> Die ICs sind jedoch von 1972, man findet sie im Internet kaum noch und> wenn dann kosten die ein Vermögen.
Ja. Eben. Warum wurde gleich nochmal programmierbare Logik erfunden?
Kann es damit zu tun haben, daß das festverdrahtete Zeug zu unflexibel
war? Daß man viel zu viele IC für Spezialfunktionen brauchte, wo es doch
viel besser wäre nur einen Typ Hardware zu haben und die Funktion hinein
zu programmieren?
> Jörg R. schrieb:>> @TO>> Du hast zwar geschrieben ohne uC, aber wie groß darf der Aufwand denn>> werden?>>>> Oben wurde KV-Tafeln erwähnt. Ist eine Lösung aus Standard 74er bzw.>> 4000er IC's denkbar?>> Wenn möglich ohne µC oder programmierbares.>> Ja, jedes IC wäre denkbar. Nur sollten es halt keine 100 ICs sein um das> zu realisieren.
Tja. Einen Tod wirst du sterben müssen. Entweder ein Gattergrab bauen.
Oder ein paar Lookup-Tabellen programmieren (EPROM, GAL, PLD). Oder
einen µC. Oder einen Haufen Kohle für obsolete Oldtimer-IC hinblättern.
Aus didaktischer Sicht wäre die Variante mit Logik-Gattern sicher
lehrreich. Man muß sie nachher ja nicht bauen. Aber einfach mal den
Aufwand zu sehen, schärft den Blick dafür wieviel besser so ein µC
doch ist.
Aus praktischer Sicht ist eine programmierte Lösung die beste. Und
vielleicht müßtest du auch einfach mal einen Schritt zurück treten und
das gesamte Problem betrachten. Denn ziemlich wahrscheinlich steckst
du in einer Sackgasse und dein 8-Bit Binärzähler war schon eine
schlechte Wahl. Bspw. wird die Lösung mit Tabelle viel einfacher, wenn
du 12 (effektiv nur 10) Bit BCD in 8 Bit binär umwürfeln müßtest. Dafür
reichte dann schon ein 4KB (1KB) EPROM.
Simon schrieb:> Ein reiner BCD Counter zu kaskadieren reicht mir nicht aus,> weil ich ja die reale Zählfolge der Ausgänge des 74HC590> zusätzlich brauche.
Völlig falscher Ansatz.
Es ist mMn WESENTLICH einfacher, drei BCD-Stellen (0-255)
in eine 8bit-Binärzahl zu wandeln als umgekehrt.
Axel S. schrieb:> Bspw. wird die Lösung mit Tabelle viel einfacher,> wenn du 12 (effektiv nur 10) Bit BCD in 8 Bit binär> umwürfeln müßtest.
Das geht auch verdrahtet.
Wir mir gerade auffällt, kann man das als fest verdrahtetes
HORNER-Schema machen; je Dezimalstelle müssten das zwei
Addierer voller Länge (max. 12bit) werden.
Die Multiplikation mit 10 ist ja ((x SHL 3) + (x SHL 1)),
also geht das durch passende Verdrahtung am Addierer.
Der Wert der entsprechenden Stelle muss noch zum Zwischen-
ergebnis addiert werden; dafür geht der andere Addierer
drauf.
Da für die Hunderterstelle nicht addiert und für die
Einerstelle nicht multipliziert werden muss, sollten
es 4 Addierer mit 12 Bit Länge tun; macht also 12 mal
74HC283. Wahrscheinlich kann man noch etwas einsparen.
pegel schrieb:> BCD <-> binär in seriell gibt es hier:>> http://www.edn.com/design/systems-design/4369038/C...
Hmm ...
> The binary counter counts down while the BCD counter counts up, and> when the binary counter reaches zero, the BCD counter holds
Also quasi noch 2 zusätzliche Zähler, weil der TE keinen (einen)
zusätzlichen Zähler mochte :)
Und etwas programmieren will er auch nicht.
Ich kann die ganze Problematik so oder so nicht verstehen. Bei 8bit kann
man auch in hex ablesen und denken, würde ich sagen.
Beitrag "Re: 8-Bit als Dezimalzahlen"
einer der vielen Threads zum Thema (einfach 74185 suchen).
Ein Addierer in ausreichender Anzahl ist eher noch zu bekommen als der
74185.
Korrektur:
=========
Die vorherige Datei "170623_BCD1.hex" ist nur zweistelliger Decoder
BIN-->BCD.
Hier die richtige Hexdatei für den Beitrag
http://www.electro-tech-online.com/threads/8bit-binary-number-to-multiple-7seg-displays.145910/#post-1234541
Die exakte -versetzte- Beschaltung der 8 Ausgänge zum 7-Segment-Decoder
beachten!
Es sind nur 7 Adresseingänge, also 128 Bytes.
Alle höheren Adresse an Eproms (ab 2716, 2732 ...) sind auf Gnd zu
legen.
/CS und /OE ebenfalls auf Gnd.
Gruss
Bin ich hier in der Geisterbahn, oder ist das Ganze eine Hausaufgabe?
Rein technisch ist allein der Ansatz ein reiner Mumpitz. sowohl das
Zählen als auch das Auswerten macht man heutzutage je nach zu
erwartender Zählfrequenz per CPLD, FPGA und/oder µC
W.S.
W.S. schrieb:> Bin ich hier in der Geisterbahn, oder ist das Ganze eine> Hausaufgabe?
Weder noch. Ich suchte einfach die Möglichkeit das ohne programmierbare
Bausteine hinzubekommen.
Aber da es nun nicht mehr so einfach möglich ist...
> Rein technisch ist allein der Ansatz ein reiner Mumpitz. sowohl das> Zählen als auch das Auswerten macht man heutzutage je nach zu> erwartender Zählfrequenz per CPLD, FPGA und/oder µC>> W.S.
...werde ich jetzt diese Variante nutzen.
Aber vielen Dank für die Beiträge.
W.S. schrieb:> Rein technisch ist allein der Ansatz ein reiner Mumpitz. sowohl das> Zählen als auch das Auswerten macht man heutzutage je nach zu> erwartender Zählfrequenz per CPLD, FPGA und/oder µC
Ich hab mich mal über diese CPLD infomiert. Mit den Begriffen komme ich
noch nicht ganz klar (PAL, PLD, ...)
Jedoch hab ich schnell rausgefunden das diese nur (?) in SMD Bauform
verfügbar sind.
Ich bin jetzt bei Reichelt zufällig auf die ATF22V10 bzw. ATF16V8
gestoßen.
Diese sind in DIP Bauform verfügbar und preislich ok, denke ich
jedenfalls.
Ich denke mit denen könnte man was anfangen.
Im Datenblatt wird von verschiedenen Compiler gesprochen, unter anderm
auch der "Atmel-ABEL". Ich habe jetzt mal die Software angefordert.
Ich finde den Einstieg hierfür aber recht schwer, es gibt im Verhältnis
zu C, Arduino usw. wenig Infos. Ich dachte es gibt da einfache Chips, in
die man irgendwie eine Wahrheitstabelle reinschreibt.
Simon schrieb:> W.S. schrieb:>> Rein technisch ist allein der Ansatz ein reiner Mumpitz. sowohl das>> Zählen als auch das Auswerten macht man heutzutage je nach zu>> erwartender Zählfrequenz per CPLD, FPGA und/oder µC>> Ich hab mich mal über diese CPLD infomiert. Mit den Begriffen komme ich> noch nicht ganz klar (PAL, PLD, ...)
"PLD" ist eigentlich ein Gattungsbegriff: "programmable logic device".
Wenn man das wörtlich nimmt, ist ein µC auch ein PLD ...
Ansonsten klicke einfach im linken Seitenmenü auf "FPGA, CPLD & Co." und
lies. Bring (viel) Zeit mit.
> Jedoch hab ich schnell rausgefunden das diese nur (?) in SMD Bauform> verfügbar sind.
Blödsinn.
> Ich bin jetzt bei Reichelt zufällig auf die ATF22V10 bzw. ATF16V8> gestoßen. Diese sind in DIP Bauform verfügbar und preislich ok,> denke ich jedenfalls. Ich denke mit denen könnte man was anfangen.
Nicht wirklich. Das ist alles Alteisen. Dito ABEL oder CUPL oder gar
PALASM. Heute läuft das über VHDL oder Verilog. Darin willst du dich
aber nicht einarbeiten für so ein simples Problem.
> Ich finde den Einstieg hierfür aber recht schwer, es gibt im Verhältnis> zu C, Arduino usw. wenig Infos. Ich dachte es gibt da einfache Chips, in> die man irgendwie eine Wahrheitstabelle reinschreibt.
Das wäre dann ein E(E)PROM. Oder Flash-ROM. Wurde dir mehrfach
vorgeschlagen. Wolltest du nicht.
Am einfachsten und vermutlich auch preiswertesten wäre ein ganz simpler
µC. Sagen wir ein ATmega48. Der hat genug Pins, um 8 Bit Binärdaten
auszugeben und 3 Stück 7-Segment-Anzeigen im Multiplex anzusteuern. Und
für einen Zähler, der von einem Menschen abgelesen werden soll, ist er
auch (weit) mehr als schnell genug.
Von den 28 Pins (im DIP-Gehäuse) sind 6 speziell: 5x
Versorgungsspannung, 1x Reset. Dazu 8x Binärdaten und (7+3=10)x
Display-Steuerung. Bleiben 4 freie Pins, von denen du vermutlich 2
brauchst für Zähltakt und Reset. Deinen separaten 74xx590 Binärzähler
brauchst du dann nicht mehr.
Simon schrieb:> Jedoch hab ich schnell rausgefunden das diese nur (?) in SMD Bauform> verfügbar sind.
Freue dich - das spart viele Löcher auf der Platine.
Oder möchtest du die Schaltung vielleicht doch lieber mit Addierern auf
Basis der ECC83 aufbauen.
Ein ganz alternativer Vorschlag: eine Diodenmatrix mit 8 Eingängen und
12 Ausgängen.
Da kannst du eine Leiterplatte für 8 x 12 Dioden machen und allein durch
die Bestückung die logische Funktion bestimmen, nicht nur binär auf BCD.
Das ist gleichwertig einem gleich grossen PLD, aber ohne
Programmiersprache, nur mit Bleistift und Papier.
Georg
Tjaaaaaa wäre das Hex-System bereits eingeführt - wie unser bome im
Nachbarthread unbeirrt bewirbt - wäre diese Aufgabe überflüssig ;)
Spaß beiseite.
Ich würde an deiner Stelle einfach einen Arduino nehmen. Da findet man
unglaublich viele Infos im Netz und ein paar davon sind sogar brauchbar.
Zumal einen Programmer nur für das eine Projekt zu kaufen ohnehin
unsinnig ist. Denn den bräuchtest du auch für die meisten (wenn nicht
sogar alle?!) GALs, (C)PLDs und FPFAs und was nicht noch alles.
Simon schrieb:> W.S. schrieb:>> Bin ich hier in der Geisterbahn, oder ist das Ganze eine>> Hausaufgabe?>> Weder noch. Ich suchte einfach die Möglichkeit das ohne> programmierbare Bausteine hinzubekommen.>> Aber da es nun nicht mehr so einfach möglich ist...
Also, ich hätte da mal eine Frage. Mir ist das schon öfter
aufgefallen, aber ich verstehe den Hintergrund nicht: Wieso
interessiert sich NIEMAND -- und am allerwenigsten der
ursprüngliche Fragesteller -- für vorgeschlagene mögliche
Lösungen des Problems?
Aufgabenstellung ist ja, den Zählerstand eines Binärzahlers
(8 bit) in BCD (3 Stellen) zu wandeln.
Axel hat dankenswerterweise eine Äquivalenztransformation
vorgeschlagen: Es ist ja egal, ob man 8bit binär zählt und
das zusätzlich in BCD wandelt, oder ob man BCD zählt und
das zusätzlich ins Binäre wandelt. In beiden Fällen steht
der 8bit-Zählerstand in beiden Codes zur Verfügung.
Nun ist es so, dass die Umwandlung BCD-->Binär technisch
nicht so schwierig sein sollte; die Lösungsidee wurde oben
schon genannt: HORNER-Schema. Man muss nur mit 10 malnehmen
und addieren; beides geht mit 74HC283. Ein BCD-Zähler, dessen
Zählumfang auf 255 beschränkt wird, ist auch kein Hexenwerk.
Alles in allem sind das ungefähr 10 ICs.
Was passiert?
Die Reaktion ist genau....
... Null.
Einzige Reaktion des TO: "Da das nun nicht mehr so einfach
möglich ist..."
Warum denke ich über sein Problem nach, wenn ich nicht einmal
ein gutes Argument wert bin, warum mein Vorschlag nicht
funktioniert?
Possetitjel schrieb:> Warum denke ich über sein Problem nach, wenn ich nicht einmal> ein gutes Argument wert bin, warum mein Vorschlag nicht> funktioniert?
Der TO hatte beim Stellen seiner Frage vermutlich nicht den blassesten
Hauch einer Ahnung, was die Lösung seiner fixen Idee mit den von ihm
vorgegebenen Randbedingungen für Umstände bedeutet. Er wollte doch "nur
mal schnell" die 8-Bit Daten über eine Dezimalanzeige sichtbar machen,
weil er mit Hex-Darstellung nicht wirklich etwas anfangen kann. Und nun
ist er erschlagen und weiss gar nicht mehr, was er sagen soll. Man möge
mich berichtigen ...
Forist schrieb:> Der TO hatte beim Stellen seiner Frage vermutlich nicht den blassesten> Hauch einer Ahnung, was die Lösung seiner fixen Idee mit den von ihm> vorgegebenen Randbedingungen für Umstände bedeutet....
Meine Vermutung - es handelt sich doch um eine Hausaufgabe. Deswegen
soll auch kein uC verwendet werden. Das Problem soll stattdessen
konventionell gelöst werden.
Es wurden genug Ansätze geliefert.
Die Lösung über ein oder mehrere Eproms hätte, in diesem Fall, nichts
mit programmieren zu tun. Es wäre etwas Fleißarbeit die gewünschten
Ausgangsbitmuster zum jeweiligen Eingangsbitmuster zu generieren.
Insgesamt also nur 256 mögliche Kombinationen.
Ich würde ein 16-Bit Eprom verwenden und 3 Stück BCD zu 7-Segment
Decoder/Treiber.
Das ist sicherlich nur eine Möglichkeit, wie gesagt wurden auch genug
andere Ansätze geliefert.
@TO
Was nun? Ist noch nix für Dich dabei, oder wartest Du darauf das einer
die Lösung aus Standard-Gattern präsentiert?
Georg schrieb:> Ein ganz alternativer Vorschlag: eine Diodenmatrix mit 8 Eingängen und> 12 Ausgängen.>> Da kannst du eine Leiterplatte für 8 x 12 Dioden machen und allein durch> die Bestückung die logische Funktion bestimmen, nicht nur binär auf BCD.> Das ist gleichwertig einem gleich grossen PLD, aber ohne> Programmiersprache, nur mit Bleistift und Papier.>> Georg
Das funktioniert nicht.
Baldrian schrieb:> Georg schrieb:>> Ein ganz alternativer Vorschlag: eine Diodenmatrix mit 8 Eingängen und>> 12 Ausgängen.>> Das funktioniert nicht.
In der Tat. Das müßte eine Diodenmatrix 256 auf 12 sein. Bzw. wenn man
berücksichtigt, das das LSB direkt durchgeht und die beiden MSB auf der
BCD-Seite immer Null sind - eine Matrix 128 auf 9. Und man müßte die 7
höherwetigen Bits auf der Binärseite erstmal zu 128 Einzelsignalen
decodieren. Das wird bestimmt ein Spaß!
Simon schrieb:> Hallo,>> ich suche eine Möglichkeit ohne µC die Ausgabe eines 8 Bit Zählers> (1,2,4,8,16... hier der 74HC590) nach 3x BCD ausgeben zu können, damit> auf drei 7 Segment Anzeigen 0-255 angezeigt werden kann.>> Ein reiner BCD Counter zu kaskadieren reicht mir nicht aus, weil ich ja> die reale Zählfolge der Ausgänge des 74HC590 zusätzlich brauche.>> Wie könnte man das am einfachsten realsieren? Im Internet habe ich> leider nichts passendes dazu gefunden.
Die Preise für Teile sind z.Z. so, daß eine wirklich günstige und
platzsparende Lösung nur mit Programmieren möglich ist. Warum hast du
Angst?
ATMEGA88PA für 2 € und fertig!
Da BCD sowieso für Anzeigen ist, muß Umwandlung nicht unbedingt
besonders schnell sein. So kann man µC als voll selbständige Teil
eingebauen, ohne externe Details. Z.B. PORTD nimmt 8 bit, PORTB und
PORTC geben 3x4 Bit BCD aus. Man kann auch Pins so definieren, wie das
bequemer wird.
Hier ist ganz einfaches Programm für deine Aufgabe.
In main.h kannst du bestimmen, welche Pin für Ausgang und Eingang
stehen, so kannst du ganz bequem PCB machen. Die Umwandlung dauert ca.
20-25 us, für eine Anzeige mehr als genug schnell.
Du kannst µC am besten außerhalb der Platte programmieren, so kannst du
Chip einfach einlöten: RES an Vcc, dazu noch Vcc und GND, sonst Eingang
- Ausgang, keine externe Teile notwendig.
/**************/
Wenn du doch µC wirklich aus theologischen Gründen nicht magst, kannst
du folgendes ausprobieren:
zwei 74HC193 und drei 74HC192. 193 arbeiten für Decrement, 192 für
Increment. 193 laden 8-bit-Code ein, gleichzeitig werden 192 auf Null
gesetzt. Anhalten, wenn 193 bis zu Null kommen, dann haben 193 gerade
BCD.
Aber du brauchst dann 5 IC-Zähler und noch Logik dafür, auch Taktsignal.
D.h. mindestens 6 IC und viel mehr Platz... Schneller als mit µC wird
das auch nicht.