Frage:
Binär codierte Dezimal-ICs
hisker
2011-02-19 16:07:03 UTC
view on stackexchange narkive permalink

Gibt es einen IC, mit dem 9-Bit-Binärcode in eine Sieben-Segment-Anzeige konvertiert werden kann? EX: 100101100-> 300 Ich möchte 300 in einer Sieben-Segment-Anzeige anzeigen, wenn 100101100-Binärcode auf die Eingabe angewendet wird. Ich möchte dies tun Verwenden Sie nur ICs, keine Mikrocontroller.

Warum möchten Sie keinen Mikrocontroller verwenden? Das wäre wahrscheinlich die beste und billigste Option.
Ein Mikrocontroller ist die offensichtliche Wahl.Da Sie keine Begründung dafür gegeben haben, warum Sie keine verwenden möchten, können wir nur davon ausgehen, dass dies aus dummen religiösen Gründen geschieht, und diese Spezifikation daher ignorieren.
100101100 ist nicht BCD für 300, 001100000000 ist
100101100 ist nur binär ... nicht binär codiert dezimal.und das gesuchte ic wird als Mikrocontroller bezeichnet, insbesondere da Sie dividieren (oder mit 1/10 multiplizieren) müssen, wenn Sie eine Dezimalzahl wünschen.
Sieben antworten:
W5VO
2011-02-20 03:09:54 UTC
view on stackexchange narkive permalink

Ich kann mir drei Möglichkeiten vorstellen, dies zu tun. Ich beginne mit dem teuersten und kompliziertesten und arbeite mich nach unten.

  1. Alle Logik-ICs: Verwenden Sie einen 9-Bit-Auf / Ab-Binärzähler mit parallelem Ladevorgang (z. B. 3x 74hc190) und ein 3-stelliger rücksetzbarer BCD-Zähler (3x 74hc163). Laden Sie den Binärzähler mit Ihrer 9-Bit-Nummer und löschen Sie den BCD-Zähler auf 0. Takten Sie beide Zähler, bis der Binärzähler Null erreicht. Laden Sie den Ausgang des BCD-Zählers in einen Latch und führen Sie ihn dann einem BCD-7seg-Decoder zu. Wiederholen.
    • Vorteile:
      • Erfüllt die Anforderung, nur Standardlogik-ICs zu verwenden.
      • Erfordert keine Programmierung.
    • Nachteile :
      • Teuer (Die Zählerchips kosten jeweils ca. 1 bis 2 US-Dollar)
      • Anfällig für Verdrahtungsfehler
      • Erfordert ein Taktsignal von 31 kHz für eine 60-Hz-Aktualisierung
      • Benötigt 8-12 Logik-ICs (ich werde später einen Schaltplan zeichnen)

    • ROM-Look- Up Table: Verwenden Sie einen kleinen parallelen asynchronen FLASH-Speicher (z. B. this), um alle Dateneingaben als Adresse zu verwenden, und programmieren Sie dann das ROM, um BCD-Ausgaben für zwei Ziffern zu generieren. Führen Sie das Ergebnis in einen BCD-zu-7seg-Decoder ein. Verwenden Sie alternativ ein ROM, um eine einzelne Dezimalstelle zu generieren, die in 7-Segment-Pins decodiert ist.
        • Pros:
        • Ziemlich günstiger Preis pro Ziffer
        • Skaliert besser
        • Schnell (aber Geschwindigkeit spielt keine Rolle)
        • Einfach zu verdrahten / zu entwerfen
    • Nachteile:
      • Jedes ROM erfordert eine andere Programmierung
      • Sie müssen ein viel größeres ROM als kaufen Erforderliche
      • Programmierung erfordert Computerautomatisierung.

  2. Mikrocontroller: Ein einfacher Mikrocontroller mit genügend Eingaben und Ausgänge können die Binärzahl in BCD umwandeln und sie dann in 7-Segment-Steuersignale codieren. Die billigste Lösung (Meine Digikey-Suche hat diesen PIC ausgewählt) multipliziert die Ausgangsziffern. Möglicherweise benötigen Sie Transistoren, um die gemeinsame Anode / Kathode Ihrer 7-Segment-Displays anzusteuern. Dies können jedoch billige Transistoren sein.
    • Vorteile:
      • Die billigste Lösung für 1,50 bis 2,00 US-Dollar insgesamt
      • Einfache Verkabelung
      • Einfache Implementierung des Binär-> BCD-Algorithmus in Software
      • Einfaches Hinzufügen weiterer Funktionen
      • Das kostengünstigste System zum Ansteuern des Displays
    • Nachteile:
      • Ein Chip-Programmierer ist erforderlich
      • Sie benötigen Schreiben von Software (nicht nur ein Hardwareproblem)
      • Die billigste Lösung erfordert das Ziffernmultiplexen, das komplizierter ist als das Direktlaufwerk.
  3. ol>

    Ich werde später einige Schaltpläne erstellen

BarsMonster
2011-02-19 16:14:45 UTC
view on stackexchange narkive permalink

Ich fürchte, es gibt keine solchen Standardchips. Obwohl es BCD- bis 7-Segment-Chips gibt, ist es schwierig, einzelne Ziffern zu extrahieren, da dies das Teilen durch 10-Chips erfordern würde.

Auch CPLDs sind für Sie da.

Wenn Sie anstelle einer einzelnen 9-Bit-Nummer separate Ziffern generieren können, können Sie Standardchips verwenden.

+1 für den Hinweis, dass die Quelldaten binär und nicht binär codiert sind, was logikbasierte Konvertierungen kompliziert macht. Aber jede Art von ROM-Chip für eine Nachschlagetabelle ist eine einfache Lösung.
Jaroslav Cmunt
2011-02-19 17:29:04 UTC
view on stackexchange narkive permalink

Am einfachsten wäre es vielleicht, eine Konvertierungstabelle zu erstellen und sie mit mindestens 9 Adressen und 12 Datenleitungen in ein EPROM oder FLASH zu stellen. Andernfalls CPLD oder kleines FPGA ( opencores.org hat etwas HDL dafür).

Wenn Sie dies wirklich mit diskreten ICs tun wollten, müssten Sie eine State-Machine-Implementierung erstellen der Algorithmus, der die komplexeste Lösung wäre und sich nicht wirklich vom Mikrocontroller unterscheidet, außer bei erhöhtem Preis, größerer Größe und höherer Komplexität.

Eine ROM-basierte Nachschlagetabelle ist die traditionelle Lösung. Sie verwendet die programmierbare ROM-Technologie, die für Sie am billigsten und am einfachsten zu handhaben ist. Obwohl es wahrscheinlich teurer sein wird und mehr Arbeit erfordert, um einen Geräteprogrammierer zu bauen als moderne Mikrocontroller. Mehrstellige Anzeigen werden häufig gemultiplext - einfach mit einem Mikro, obwohl Sie mit einem ROM einen Zwei-Bit-Adresseneingang mit "Ziffern" haben könnten, der von einem Oszillator und einem Zähler angesteuert wird, und damit abwechselnd eine der drei Ziffern während des Umschaltens nachschlagen können angezeigt werden. Andernfalls benötigen Sie ein ziemlich breites ROM.
JustJeff
2011-02-20 07:25:50 UTC
view on stackexchange narkive permalink

Ihre Beispieleingabe 100101100 ist eine rohe Binärdatei für 300 und keine binär codierte Dezimalzahl. BCD für 300 wäre 0011 0000 0000. Wenn Sie Zahlen anzeigen möchten, die tatsächlich BCD sind, ist dies relativ einfach. Wenn Ihre Eingaben jedoch wirklich binär sind, ist dies ein komplexeres Problem.

Um von rohen binären zu dezimalen Gruppierungen zu gelangen, die für die Steuerung der Anzeige erforderlich sind, müssen Sie effektiv eine Basiskonvertierung durchführen, was eine Ausführung erfordert eine ganzzahlige Division. Während Sie dies mit logischen ICs erreichen können, wird eine Bootsladung von ihnen benötigt, um dies zu tun, was eine Menge Verkabelung impliziert, was viele Möglichkeiten zum Debuggen bedeutet.

Sofern es keinen zwingenden Grund gibt, Logik-ICs zu verwenden, wäre dies eine ideale Aufgabe für einen 8-Bit-Mikrocontroller.

Hans
2011-02-19 23:12:01 UTC
view on stackexchange narkive permalink

Ich glaube nicht, dass Sie dies mit 1 IC einfach lösen können. Sie könnten sich die MAX7231-Chips ansehen, aber sie scheinen alt und sehr teuer zu sein. Vielleicht können Sie den HEF4511 (oder DS8669) verwenden, wenn Sie einen 10-Bit-<> BCD-Encoder finden. Außerdem fällt es Ihnen schwer, es so zu erstellen.

Möglicherweise können Sie auch die Booleschen Formeln für den 10-Bit-Code auf das 3-fache einer BCD-Ausgabe aufschreiben. Ich würde nicht erwarten, dass dies sehr einfach ist, da 10 Eingänge zu 3x4 Ausgängen eine Menge Arbeit zu sein scheinen.

Ich nehme an, Sie tun dies "nur zum Spaß", dies in der technischen Welt nicht sehr kostengünstig. Sie benötigen wahrscheinlich ein 7-Segment-Signal + 3 Anzeigen und einen 10-Bit-Eingang. Dies sind ungefähr 20 E / A. Ein einfacher PIC oder AVR mit 24 oder 28 Pins kann damit umgehen (oder ein CLPD, wenn Sie eine schnellere Verarbeitung benötigen - die Anzeigen sind jedoch für das menschliche Auge bestimmt, sodass sie nicht ultraschnell sein müssen).

supercat
2011-03-05 02:11:47 UTC
view on stackexchange narkive permalink

Es ist nicht schwer, eine CPLD oder ein FPGA einzurichten, um binärdatenverschobene MSB-first in Dezimaldaten umzuwandeln. Der Kernbaustein ist ein Modul mit Takt-, Daten- und Löscheingängen, vier Latches D0-D3 und einem kombinatorischen Next-Carry-Ausgang. Kaskadieren Sie die Blöcke wie ein Schieberegister. Nachdem der Binärwert verschoben wurde, enthalten die Register das Äquivalent in BCD.

; Tragen Sie if> = 5NextCarry = D3 | D2 & D1 | D2 & D0; Wird 8 oder 9 sein, wenn der Eingang 4 oder 9D3 war: =! D3 & D2 &! D1 &! D0 | D3 & D0; Wird 4-7 sein, wenn der Eingang 2-3 oder 7-8D2 war: =! D3 &! D2 & D1 | ! D3 & D2 & D1 & D0 | D3 &! D0; Wird 2-3 oder 6-7 sein, wenn der Eingang 1, 3, 6 oder 8D1 war: =! D3 &! D2 & D0 | ! D3 & D2 & D1 &! D0 | D3 &! D0; Wird ungerade sein, wenn der Übertrag auf setD0 gesetzt ist: = CarryIn 

Beachten Sie, dass das Register vor jeder Verwendung gelöscht werden muss. Das Verschieben in Nullen reicht NICHT aus. Die Löschschaltung wird nicht angezeigt, sollte jedoch offensichtlich sein.

WhatRoughBeast
2017-05-09 20:20:31 UTC
view on stackexchange narkive permalink

Zufällig gibt es eine Schaltung, die genau das tut, was Sie wollen - vorausgesetzt, Sie verwenden TTL-Logikpegel und 4 DIP-ICs entsprechen Ihren Anforderungen an "jeden IC".Diese Schaltung ist die 74185, und die genaue Konfiguration finden Sie in Abbildung 6 auf Seite 7. Natürlich gibt es einige Nachteile.Zunächst einmal ist der 74185 30 Jahre alt und definitiv veraltet.Sie können sie jedoch bei eBay erwerben.Zweitens benötigen Sie 4 davon, und das bringt Ihnen mehr als 20 Dollar.Drittens beträgt die erforderliche Gesamtleistung 5 Volt bei 300 bis 400 mA

Aber ansonsten ist es ziemlich einfach.Und für das, was es wert ist, entspricht es tatsächlich dem Geist einiger anderer Antworten.Wie im Datenblatt angegeben, ist der IC tatsächlich ein 32 x 8-PROM.

Andernfalls haben Sie für Single-Chip-Speicher kein Glück.Obwohl der lsb keine Transformation erfordert, benötigt ein Ausgang von 300 9 IC-Ausgänge, und Sie werden einfach keine (E) (E) PROMS mit mehr als 8 Ausgängen finden.



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 2.0-Lizenz, unter der er vertrieben wird.
Loading...