Hallo,
für mich ist das eine typische Schaltung fürs Multiplexing und geb mal meine Gedanken dazu ab.
Der Schaltung nach würde ich in einer Spalte alle LEDs, die leuchten sollen, über den Controllerport mit high einschalten. Die Minus kommt für die EINE Spalte von den 4094 Schieberegistern. Entprechender Schieberegisterausgang muß also auf low liegen, alle anderen auf high. Damit wird jeder µC Pin zu einer Zeit nur mit einer LED belastet.
Programmablauf in etwa:
Code:
Ein FF byte in die Schieberegister. Mit einem Strobe (high Impuls auf STR) die Daten zu den Ausgängen durchschalten.
LABEL1:
Alle Zeilen µC Pins auf low
Nix leuchtet
EIN low bit in die Schieberegister und mit strobe durchschalten.
µC Pins bei denen die LEDs der ersten Spalte leuchten sollen, auf high.
LEDs der ersten Spalte leuchten.
LABEL2:
Alle Zeilen µC Pins auf low
EIN high bit in die Schieberegister nachschieben und mit Strobe durchschalten. Das erste low ist nun in nächster Spalte.
Zeilen µC Pins für diese Spalten LEDs auf high.
LEDs der nächsten Spalte leuchten.
Weiter bei LABEL2 solange bis alle Spalten durch sind, dann nach LABEL1
SPI könnte ich hier nicht sinnvoll verwenden, da hier die Spalten und Zeilen synchronisiert sein müssen. SPI schiebt ja immer, soweit ich weis, mindestens ein Byte raus. Bei oben beschriebenen Ablauf muß gezielt immer ein Bit raus.
Gruß
Searcher
Lesezeichen