Wie kann ich 8 LEDs mit einer Zeitverzögerung mit nur einem in Assembly geschriebenen Mikrocontroller (PIC12) steuern?

Ich kann 5 I/O-Pins aktiviert haben. Ich bin nur verwirrt darüber, wie ich sie einzeln steuern kann.

Es ist einfacher, wenn Sie ein 8-Bit-Schieberegister wie 74HC164 oder 74HC595 hinzufügen. Es sind nur 3 Pins erforderlich, um eine beliebige Anzahl von LEDs mit dem 74HC164 zu steuern, sobald Sie mehr Register verketten

Antworten (2)

Sie haben nicht genug E / A, um jeden direkt vom Mikrocontroller anzusteuern. Es gibt zwei Möglichkeiten, dies zu umgehen.

1) Sie benötigen einen externen 3 bis 8 (oder 4 bis 16) Decoder, der Ihre n I/O-Leitungen in 2^n I/O-Leitungen umwandelt. 74154 oder 74238 reichen aus. Nachteil: Es ist zusätzliche Hardware, aber der Vorteil ist, dass es sehr, sehr einfach zu fahren ist. Eine weitere Option ist 74595, bei denen es sich um Seriell-zu-Parallel-Schieberegister handelt, die für effektiv unendliche E/A verkettet werden können.

2) Sie können zwei Bänke mit 3 LEDs mit 2 Steuerleitungen und 3 Datenleitungen scannen. Die Steuerleitungen sind mit den negativen Enden der LEDs verbunden, während die Datenleitungen mit dem Plus verbunden sind. Es sieht aus wie ein Gitter, bei dem sich Ihre Steuerlinie auf der X-Achse, Daten auf der Y-Achse und LEDs befinden, wo sich die beiden Linien schneiden. Sie schalten die LEDs 1 bis 3 ein, indem Sie Control 1 auf Low ziehen, damit eine Potentialdifferenz zwischen ihnen auftreten kann, und Control 2 auf High, damit die LEDs 4-6 ausgeschaltet bleiben. Welche LEDs Sie auch immer wollen, Sie schalten auf der Datenleitung hoch. Sie nehmen dann Steuerung 2 niedrig und Steuerung 1 hoch und stellen Ihre Datenleitungen so ein, dass sie die LEDs 4-6 einschalten, während die LEDs 1-3 ausgeschaltet werden. Da Sie nur 5 wollten, geben Sie einfach kein 6. in die zweite Bank ein. Sie wechseln so schnell, dass es für das Auge nicht wahrnehmbar ist. Dies erfordert nichts Externes, aber es ist schwieriger, dies in der Software zu tun.

Stellen Sie sicher, dass Sie Strombegrenzungswiderstände haben!

Also muss ich einen anderen Logikchip verwenden, da führt kein Weg dran vorbei?
Nicht, wenn Sie bereit sind, über zwei Zeilen zu scannen. Wenn Sie alle 5 gleichzeitig fahren möchten, benötigen Sie mehr Hardware

Wenn Sie alle 5 E / A-Pins verwenden können, sollten nur 8 LEDs angesteuert werden können. Der Weg, dies zu tun, ist dem sehr ähnlich, was Bamako mit 2 Steuerleitungen und 3 Datenleitungen beschreibt. Der Trick besteht darin, nur 1 Steuerleitung und 4 Datenleitungen zu verwenden. Damit dies funktioniert, müssen Sie jedoch die LEDs der beiden "Bänke" in entgegengesetzter Richtung montieren: Eine Bank hat ihre Anoden mit den Datenleitungen verbunden, die andere hat ihre Kathoden mit den Datenleitungen verbunden. Die restlichen Pins der LEDs werden dann mit der 'Steuer'-Leitung verbunden. Wenn Sie die Steuerleitung hoch setzen, können Sie dann einen Satz LEDs steuern (setzen Sie die Datenleitungen für die LEDs, die Sie einschalten möchten, auf niedrig). Wenn Sie die Steuerleitung niedrig einstellen, können Sie den anderen LED-Satz steuern (setzen Sie die Datenleitungen hoch, damit sie aufleuchten).

Aus irgendeinem Grund lädt der eingebaute Schaltplaneditor bei mir nicht, deshalb hier ein externes Bild. (Bitte ignorieren Sie, dass dies normale Dioden und keine LEDs sind - das Prinzip ist natürlich dasselbe.) Natürlich möchten Sie auch Strombegrenzungswiderstände auf diesen Leitungen.

Geben Sie hier die Bildbeschreibung ein

Oh wow, das ist eine wirklich gute Idee. Einfach und elegant
Mit Charlieplexing können Sie noch mehr fahren.