Fahren eines 3-stelligen Siebensegments mit Arduino Uno R3 und einem Demux

Ich muss 3-stellige 7-Segment-Anzeigen mit Arduino Uno R3 beleuchten. Ich habe mir 3 BCD-zu-7-Segment-Display-Decoder zugelegt. Ich dachte, ich brauche einen 4-zu-16-Decoder, also kaufte ich einen und es stellte sich heraus, dass es eigentlich ein 4-zu-16-"Zeilen"-Decoder oder genauer gesagt ein 4-zu-16-Demux ist. Der Demux hat eine Ausgabe, bei der jeweils nur einer HIGH ist ... was ich mit den BCD-zu-7-Segmentanzeige-Decodern nicht verwenden kann (einige Kombinationen von Eingaben in sie können nicht erstellt werden).

Gibt es hierfür eine Problemumgehung?


der Schaltplan. Wenn Sie Zeit haben, klären Sie, ob diese Konfiguration korrekt ist? Danke

Geben Sie hier die Bildbeschreibung ein

Antworten (1)

Ich glaube du stellst dein Problem etwas zu kompliziert dar. Sie benötigen den 4-16-Decoder überhaupt nicht.

Liefern Sie einfach vier Ausgangsleitungen von der MCU-Platine an alle drei Zifferneingangspins des BCD-Sieben-Segment-Decoders gemeinsam. Verdrahten Sie dann drei weitere Signale von der MCU, wobei eines zum Aktivierungsstift an jedem der BCD-Sieben-Segment-Decoder geht. Die Software, die Sie mit dieser Art von Display-Anschluss erstellen müssen, gibt nacheinander den Vier-Bit-Code für jede Display-Ziffer aus, während nur eines der drei Decoder-Aktivierungssignale aktiviert wird, das der gerade angezeigten Ziffer entspricht.

Wenn die von Ihnen ausgewählten Anzeigedecoder vom Typ ohne Datenlatch sind, müssen Sie diesen Anzeigealgorithmus in einer sich schnell wiederholenden Schleife ausführen. In der resultierenden Anzeige ist jede Ziffer nur zu 33 % der Zeit tatsächlich eingeschaltet, aber wenn Sie das Update schnell genug ausführen, scheinen alle drei Ziffern dauerhaft eingeschaltet zu sein.

Wenn die von Ihnen verwendeten Display-Decoder über einen internen Latch zum Halten der Zifferndaten verfügen, müssen die drei Leitungen, die zu jedem Decoder führen, mit den Pins verbunden werden, die bewirken, dass die Zifferneingangsdaten im Latch erfasst werden. Alle zusätzlichen Aktivierungsstifte auf den Display-Decoder-Chips können einfach nach Bedarf nach oben oder unten gezogen werden, um den Decoder die ganze Zeit über aktiv zu halten. Bei diesem Schema würde die Software ihren Ausgabeprozess nur dreimal durchführen, wenn es notwendig wäre, den Anzeigeinhalt zu ändern.

Mit diesen Schemata haben Sie insgesamt 4 + 3 für insgesamt 7 E/A-Leitungen verbraucht, um Ihr Display zu betreiben. Die Verwendung des 4-16-Decoder-Chips könnte ins Spiel kommen, wenn Sie versuchen würden, ein Display mit mehr Ziffern zu bauen. Angenommen, Sie haben ein 16-stelliges Display erstellt, die gleichen vierstelligen Datenpins würden für alle 16 Display-Decoder verwendet, aber anstelle von 16 separaten Decoder-Aktivierungssignalen von der MCU könnte der Decoder verwendet werden, um einen separaten 4-Bit-Code zu akzeptieren, der einen auswählt die 16 Stellen, die zu einem bestimmten Zeitpunkt aktualisiert werden sollen. Sie könnten dieses Schema auch für Ihre dreistellige Anzeige verwenden und nur drei Ausgänge des 4-16-Decoders verwenden. Auf diese Weise würden zwei der 4 Eingänge des 4-16-Decoders mit GND verbunden und die anderen beiden Eingänge würden von der MCU kommen. Dies würde Ihre gesamte E/A-Nutzung von der MCU auf 4 + 2 = 6 Leitungen reduzieren.

Wenn der Dekodierausgang des 4-16-Dekodierers die falsche Polarität hat, um richtig mit den Aktivierungs- oder Latch-Steuereingängen der BCD-Dekodierer verbunden zu werden, dann wäre es notwendig, Inverter zwischen den 4-16-Dekodierern und den BCD-Dekodierern zu verdrahten. Der mögliche Bedarf an Wechselrichtern ist ein weiterer Grund, warum ich vorgeschlagen habe, die 4-16-Decoder nicht einmal für Ihre dreistellige Anzeige zu verwenden. Ihre Software kann sich um die korrekte Aktivierungs-/Latch-Polarität für die BCD-Decoder kümmern, ohne zusätzliche Chips hinzufügen zu müssen.

Ich gehe mit der 2. Methode vor - mit 3 der Demux-Ausgabe für jeden der BCD-Decoder-aktivierten Pins. Also habe ich 2 der Demux-Eingänge auf Masse und die anderen beiden auf die MCU gelegt. Jetzt werde ich versuchen, damit und mit der Methode "ON 33% of the Time" (was meiner Meinung nach der übliche Weg ist), es zum Laufen zu bringen. Ihre Antwort, Sir, wird sehr geschätzt. :)