Frage:
7 Segment binär zu hex
Goswin von Brederlow
2018-01-23 18:29:28 UTC
view on stackexchange narkive permalink

Ich versuche, eine 4-Bit-Binärzahl auf einer 7-Segment-LED als Hexadezimalzahl (0-F) anzuzeigen. Ich habe eine Auswahl an ICs der Serie 7400, einschließlich der 7447. Diese funktioniert jedoch nur für BCD (0-9). Die 7400-Serie scheint keinen Hex-7-Segment-Decoder zu haben, und ich habe keinen zur Hand.

Also denke ich, ich müsste meine eigenen bauen. Das Datenblatt für eine 7447 enthält die interne Schaltung, aber ich konnte keine ähnliche Schaltung für Hex-7-Segmente finden. Ich habe K-Diagramme für jedes LED-Segment von Hand erstellt, aber die Begriffe sind ziemlich groß, viel größer als für BCD.

Hat jemand eine fertige Schaltung dafür, anhand derer ich meine Arbeit überprüfen kann?

Hat jemand eine optimierte Schaltung dafür, die gemeinsame Subterme nutzt? Es gibt nicht viele doppelte Begriffe (wie A0 & ~ A1 & A2), aber möglicherweise würde die Verwendung von (A0 & A2) & ~ A1 das Teilen des Subterms (A0 & A2) und insgesamt das Reduzieren der Gate-Anzahl ermöglichen.

Oder vielleicht einige Tricks, um NAND-, NOR- oder XOR-Gatter für einige Teile zu verwenden?

Unterschiedliche Pfadlängen oder Rennen in der Rennstrecke interessieren mich nicht, da sie nur LEDs ansteuern und viel zu schnell sein sollten, um irgendetwas davon zu sehen.

Ich weiß, dass es nicht die richtige Lösung ist, nach der Sie suchen, aber ich würde empfehlen, ein EEPROM wie AT28C16 oder ähnliches zu verwenden, um die Binärdatei in Hex umzuwandeln.Sie müssen nur die ersten 16 Bytes programmieren.Verbinden Sie die vier in das Hex umzuwandelnden Binärzahlen mit den ersten 4 Adressleitungen und die Datenleitungen mit den 7-Seg-Pins.Programmieren Sie jedes Byte der ersten 16 Bytes so, dass für die Adresse 0000 0 auf der 7-Seg-Anzeige leuchtet, für die Adresse 0001 1 auf der 7-Seg-Anzeige und ....Wiederholen Sie diesen Vorgang, bis Sie alle ersten 16 Bytes programmiert haben.Dies kann auch mit einem uC erfolgen.
@dirac16, Würden Sie nicht die letzten 16 Bytes programmieren und die nicht verwendeten Adresszeilen aufrufen?
@jameslarge Ja, das kannst du.Aber ich würde die ersten 16 Bytes programmieren und die anderen nicht verwendeten Adressleitungen herunterziehen.
Ich gestehe, mein Denken ist immer noch von der TTL-Ära geprägt, als alle nicht verwendeten Eingaben hochgezogen wurden.
Kurze Frage: Wie wollen Sie auf einer 7-Segment-Anzeige den Unterschied zwischen "8, B" und "0, D" erkennen?Die Displays, die ich gesehen habe und die hexadezimal gedacht waren, haben alle mehr als nur 7 Segmente verwendet ...
@Baldrickk Hexadezimal auf einer 7-Segment-Anzeige verwendet Kleinbuchstaben für "b" und "d".Sie haben dann ein Problem damit, dass "b" und "6" ähnlich sind, aber "6" hat das obere Segment ausgefüllt und "b" nicht.(Basierend auf dem Casio FX-100D-Rechner, der sich gerade vor mir auf meinem Schreibtisch befindet.)
[Verwandte] (https://codegolf.stackexchange.com/questions/37648/drive-a-hexadecimal-7-segment-display-using-nand-logic-gates)
Ich stimme dieser Frage zu, denn obwohl mir die Diskussion gefällt, geht es hauptsächlich um generisches Logikdesign, einschließlich CPLDs, Mikrocontrollern und PLAs.Und selbst meine Antwort, die ich löschen möchte, besteht darin, nur eine Internetsuche ("Hex 7-Segment") durchzuführen, was meine (unbewusste?) Meinung impliziert, dass OP mehr hätte tun können.
Tatsächlich erinnere ich mich, dass ich in einer meiner Klassen * vor 30 Jahren * ein solches Hex-Display zum Programmieren eines Motorola 6800-Trainingsboards hatte, so dass Stand der Technik existiert, auch wenn das Internet fehlte.
Zehn antworten:
Olin Lathrop
2018-01-23 19:09:06 UTC
view on stackexchange narkive permalink

Finden Sie heraus, in welchem Museum die 74xx-Logik-ICs fehlen, und geben Sie sie zurück.Dann besorgen Sie sich einen kleinen Mikrocontroller und erledigen Sie dies alles in einem einzigen Chip.Als Bonus sind Sie bereit für andere fortgeschrittene Projekte ab den späten 1980er Jahren und darüber hinaus.

Bis heute verlangt meine alte Universität von Studenten, dass sie LS74-ICs verwenden.Ich denke, es hilft uns in unseren Grundlagen?
Ich könnte meinen At-Mega- und E-Paper-Hut benutzen.Aber darum habe ich nicht gebeten.
Richard the Spacecat
2018-01-23 19:14:11 UTC
view on stackexchange narkive permalink

Wenn Sie sich besonders abenteuerlustig fühlen, können Sie vielleicht sogar ein Dioden-ROM mit vielleicht zwei 74'138 3-zu-8-Line-Decodern verwenden, um das Zeug zu decodieren / anzusteuern.:)

A crude schematic Hier ist ein grobes Schema der gesamten Erfindung;Wenn Sie zufällig hocheffiziente LED-Anzeigen verwenden, können Sie möglicherweise sogar eine gemeinsame Anode direkt ansteuern.

Der '! EN'-Pin kann einer der Gate-Pins des' 138 sein.Sie können auch beide anderen Gate-Pins miteinander verbinden und so den Display-Ausgang nach Belieben ein- oder ausschalten.

Dies hat auch den Vorteil gegenüber der vorgeschlagenen ROM-Lösung, dass es kostengünstig zu bauen / zu prototypisieren ist, wenn Sie die Teile zur Hand haben oder sich nicht besonders darum kümmern müssen, ROMs zu programmieren.

Außerdem könnte man das sogar als Spaß bezeichnen :)

Ein 22V10 kostet ungefähr 2 US-Dollar und kann dies in einem Chip tun, aber ich bewundere Ihre Unerschrockenheit.
Wenn Sie noch abenteuerlustiger sind, kann es Spaß machen, einen "wirtschaftlicheren" Ansatz zu entwickeln, wenn Sie bereit sind, zwei Dioden in Reihe zu schalten.Wenn man beispielsweise zwei Dioden für jede "Ecke" verwendet, um ein oberes oder unteres Segment zusammen mit der angrenzenden Kante (acht Dioden) zu beleuchten, würde dies zwei Dioden von jeweils 0, 2, 3, 5, 8, eins sparenvon 7 und eins oder zwei von 6 und 9 (abhängig von der Schriftart).Ein einfaches Dioden-ROM-Layout ist wahrscheinlich einfacher zu erstellen, aber eine billigere Lösung zu finden, könnte ein schönes Rätsel sein.
Der hier zu verwendende Trick besteht darin, die dunklen Segmente zu programmieren, da es weniger davon gibt.Verwenden Sie auch den '154 4-Zeilen- bis 16-Zeilen-Decoder.:) :)
1n4148 Dioden kosten in Farnell 40 UK Pence pro Hundert.Ich erinnere mich, dass ich genau diese Schaltung gemacht habe.Im Jahr 1975.
Ich mag das.Ich würde wahrscheinlich die Ausgänge des "ROM" mit NICHT-Gattern verbinden, um die LEDs tatsächlich anzusteuern.Andernfalls müssen Sie für 8 alle 7 Segmente mit einem einzigen Ausgangspin eines 74138 ansteuern. Das wären 4 ICs + viele Dioden.
@GoswinvonBrederlow Ja, die Verwendung von NOT-Gates ist im Grunde die traditionelle Art, LEDs mit TTL anzusteuern.Schließen Sie sich dem Vorschlag von Lurker Larry an, und Sie können loslegen.:) :)
Spehro Pefhany
2018-01-23 20:45:41 UTC
view on stackexchange narkive permalink

Wenn Sie mit Gates herumspielen möchten, können Sie auch ein kleines FPGA oder eine CPLD verwenden.Sie können mit einem Flash-basierten FPGA für ein paar zehn Dollar loslegen.

Programmieren Sie es so oft wie nötig neu, um es richtig zu machen, und Sie erhalten im Allgemeinen viele E / A-Pins pro Dollar.

Beispiel-VHDL-Code hier

Zum Beispiel (wackelig und keine vollständige Schleife, aber Sie haben die Idee):

enter image description here

Anonymous
2018-01-23 19:15:35 UTC
view on stackexchange narkive permalink

Aber das funktioniert nur für BCD (0-9).

Tatsächlich kann 7447 Hex-Werte von A-F physisch akzeptieren, aber sie zeigen falsche Bilder für sie an, siehe hier Seite 3.

Meiner Meinung nach ist die Herstellung eines Hex-zu-Sieben-Segment-Decoders zwar eine gute Möglichkeit, die Funktionsweise der digitalen Elektronik zu erläutern und zu visualisieren, aber aus praktischer Sicht ist dies eine wirklich schlechte Idee - sie ist unnötig komplex und verbraucht viel Strom im Vergleich zu anderen Lösungen.

Ich erinnere mich, dass ich 1995 eine PC-Diagnosekarte hatte, auf der Fehler- / Statuscodes hexadezimal angezeigt wurden (so etwas wie this), und diese Karte verwendete GAL-Chips - Vorgänger der CPLD.

Wenn Sie über das Internet nach der Lösung gesucht haben, haben Sie möglicherweise viele ähnliche Projekte mit programmierbarer Logik oder MCU-basierten Geräten wie Arduino gesehen.

@ dirac16 schlug einen anderen Weg vor - unter Verwendung eines parallelen ROM-Chips, einer Art Nachschlagetabelle mit Bytes, die Segmente darstellt, die für die jeweilige Adresse (Eingabewert) ein- / ausgeschaltet sind.

Es soll nicht praktisch, sondern lehrreich sein.
Janka
2018-01-23 20:45:18 UTC
view on stackexchange narkive permalink
MC14495, DM8880 / 9368, V40511, D345, D346, 4311, 4368 oder 74C915

All dies ist heutzutage schwer zu bekommen.

Ich habe einen Verweis auf den MC14493 gesehen, der Hex zu 7-Segment macht, aber ich war frustriert, als ich nach einem Datenblatt gesucht habe.Es war aber für 8,75 EUR in Einzelmengen erhältlich.Ich habe Angst, dass es nur bcd ist, also würde ich dieses Datenblatt zuerst finden.
74C915 ist ein 7-Segment-BCD-Wandler.Also falsch und nur BCD nicht hex.Seltsamer Chip zu machen.
Ah ja, du hast recht.Aber ich kenne einen Anwendungsfall für einen solchen Chip: gestempelte Waagen.Sie erfordern, dass der Kunde das richtige Gewicht sieht. Daher müssen Sie laut Gesetz möglicherweise die sichtbare Ausgabe wieder in BCD konvertieren, wenn Sie jemals einen Drucker anschließen wollten.
@LurkerLarry MC14495 ist weiterhin bei eBay für 1,50 USD erhältlich. Hier finden Sie das [Datenblatt] (http://www.riana.com/electronics/docs/MC14495.pdf).Ich habe vor kurzem ein paar gekauft, kein Problem erlebt.
Goswin von Brederlow
2018-04-21 00:25:28 UTC
view on stackexchange narkive permalink

Ich glaube, ich habe es jetzt geschafft, die optimale Lösung (eine davon) zu finden.Es werden alle 24 Gates von 6 ICs verwendet:

  • 2x 7486 (Quad XOR)
  • 1x 7408 (Quad AND)
  • 2x 7402 (Quad NOR)
  • 1x 7432 (Quad OR)

Ich habe es geschafft, mit nur 23 Gates, aber mehr ICs verschiedene Lösungen zu finden.Ich habe das Gefühl, dass es mit nur 5 ICs keine Lösung gibt.

Hinweis: Die Schaltung gibt LOW aus, wenn die LED leuchten soll, da meine 7-Segment-LED eine gemeinsame VCC hat.

schematic

simulieren diese Schaltung - Schema erstellt mit CircuitLab sup>

D3-D0 sind die Eingänge, wobei D3 das MSB ist.A-G sind die Ausgänge, wobei A die obere LED ist, sich dann im Uhrzeigersinn dreht und das letzte G die mittlere LED ist.

Haben Sie etwas wie den 74HC157 [2-Kanal 4: 1 Multiplexer] oder möglicherweise eine invertierende Variante davon in Betracht gezogen?Es wäre vielleicht schöner gewesen, wenn es eine Variante gegeben hätte, bei der die Freigabeausgänge gegen separate Links / Rechts-Auswahleingänge ausgetauscht wurden, aber solche Chips können manchmal sehr praktisch sein.
Nur als Alternative zu einem Dioden-Rom, aber Sie brauchen zu viele davon.Sie könnten sie als programmierbare Gatter verwenden, aber jeder Multiplexer müsste 2 Gatter ersetzen, um gleichmäßig zu zeichnen.
Dmitry Grigoryev
2018-01-23 20:14:10 UTC
view on stackexchange narkive permalink

Wenn Sie die Funktionen von Hand entwerfen und auf Richtigkeit prüfen möchten, bevor Sie sie (oder anstatt) in Hardware implementieren, können Sie einen Online-Rechner wie diesen verwenden.

Es gibt auch Tools, mit denen mehrere Logikfunktionen minimiert werden können, die gemeinsame Eingaben verwenden.Eines ist expresso, das kostenlose Implementierungen unter Windows und Linux bietet.

Das klingt wirklich nach einem Kommentar, der unterstützende Ratschläge gibt, nicht nach einer Antwort.
@ChrisStratton Ehrlich gesagt sehe ich keinen Vorteil darin, die tatsächlichen Lösungen hier zu veröffentlichen.
Dieser Rechner löst jeweils nur eine Ausgabe und zeigt nur eine Lösung an, selbst wenn mehrere vorhanden sind.Dies bedeutet, dass Lösungen mit weniger Begriffen zwischen den Ausgängen bereitgestellt werden können.Das heißt,Verwenden Sie mehr Tore als nötig.
@GoswinvonBrederlow Guter Punkt, aber es ist eine Frage der Suche, einen Logikoptimierer zu finden, der das tut, was Sie wollen.
@DmitryGrigoryev Ich habe schon einmal gesucht und noch nie einen freien Logikoptimierer gefunden, der mehr als nur den POS oder die SOP transformiert, um verschiedene Gate-Typen zu verwenden.Nichts, was tatsächlich optimiert.Ich glaube, es ist ein schwieriges NP-Problem, und es dauert schnell zu lange, um die optimale Lösung zu finden.Die Leute versuchen es also nicht.Es wird schnell einfacher, ein Rom als Nachschlagetabelle zu verwenden (wie oben vorgeschlagen).
Laut Manpage optimiert Espresso zwar, verwendet jedoch Heuristiken, um die Aufgabe zu vereinfachen.
Ich habe zuvor Logic Friday (eines der Tools, bei denen Espresso verwendet wird) ausprobiert und es wurde nicht für die verfügbaren Tore optimiert.Es scheint eine minimale Form mit Espresso zu finden und konvertiert / drückt diese minimale Form dann mit den von Ihnen ausgewählten Toren aus.Das ist in Ordnung, wenn Sie nur NAND oder AND + OR wollen.Wenn Sie jedoch AND + NAND + OR + NOR + XOR haben, müssen Sie nichts transformieren und verwenden Sie die zusätzlichen Gate-Typen nicht, um ein optimaleres Ergebnis zu erzielen.
Ronan Paixão
2018-01-23 23:46:56 UTC
view on stackexchange narkive permalink

Es wurde gesagt Sie können den ICM7218 oder einige andere Chips ausprobieren.

Sie können auch versuchen, eine eigene Kombinationsschaltung zu erstellen. Dies ist ein großartiges Video-Tutorial, wie es und seine Mechanik gemacht werden.Wenn Sie es optimieren möchten, gibt es einige Datenblätter ( 1, 2) mit dem BCD-Teil (0-9).

Als Follow-up machte dieser Typ auch ein Follow-up-Video darüber, wie man dasselbe mit einem EEPROM macht.Zugegeben, Sie müssen es noch programmieren, aber es kann sich lohnen.

Und wenn Sie über Programmierung sprechen, können Sie alles auch mit einem Mikrocontroller erledigen.Es ist normalerweise einfacher zu programmieren als eine CPLD (, die Sie auch verwenden können), und es gibt sowohl Code als auch tabellarische Implementierungen.Ich würde diese Option verwenden, da ich mit Mikrocontrollern vertraut bin (Sie sind nicht auf das Arduino beschränkt) und nur für den Chip möglicherweise sogar Ihre billigste Option ist.

Lurker Larry
2018-01-24 11:51:36 UTC
view on stackexchange narkive permalink

Verwenden Sie Google, um "Hex 7-Segment" -Elemente zu finden, einschließlich http://en.wikipedia.org/wiki/Seven-segment_display Das hat eine Hex-Wahrheitstabelle (in Hex!).Weitere Elemente sind Diagramme und Videodemonstrationen.

Ich habe tatsächlich nach vierstelligen Sieben-Segment-Displays gesucht, die die Hex-Dekodierung für Sie durchführen, aber sie gelten als "alt" (Sniff), und moderne verwenden i2c anstelle von parallelen Schnittstellen.

Und 95% der Ergebnisse sprechen tatsächlich von BCD zu 7 Segmenten, 4% haben keine Schaltung, sondern nur Wahrheitstabellen und so und 1% sind Videos, in denen man nicht erkennen kann, was ein und Tor oder ein Tor sein soll.
Vielleicht hätte ich dann einfach diesen Link https://youtu.be/7zffjsXqATg posten sollen und sagen sollen, dass die von Ihnen angeforderte Schaltung 12 Minuten später ist und seine TTL-Implementierung 30 Sekunden später angezeigt wird.Seine Teileliste ist in der Beschreibung.Ich entschuldige mich aufrichtig dafür, dass ich nicht berücksichtigt habe, dass Suchmaschinenergebnisse nicht vorhersehbar sind.
Ja, das sind die 1% in der Suche, die tatsächlich zutreffen, die "Videos, in denen man nicht erkennen kann, was ein und Tor oder ein Tor sein soll".Ich habe mir die Schaltung noch einmal angesehen und sie verwendet 49 UND- und ODER-Gatter.https://codegolf.stackexchange.com/questions/37648/drive-a-hexadecimal-7-segment-display-using-nand-logic-gates hat dagegen eine Lösung mit 37 NAND-Gates.Bisher ist das der Gewinner.
WooShell
2018-01-24 18:43:57 UTC
view on stackexchange narkive permalink

Ich benutze den DM9368N seit Jahren für diesen Zweck und es ist ziemlich einfach zu bekommen (15 $ für ein 10er-Pack bei ebay oder Aliexpress).

Dieses Gerät hat genau die Logik, die für den Job benötigt wird, aber achten Sie auf den Versorgungsstrom!
@henros Natürlich ist dieser Chip für die direkte Ansteuerung einer LED-Anzeige ausgelegt. Sie können ihn nicht nur als Decoder verwenden, um in die weitere Logik weiterzuleiten.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...