Welche Schieberegister-ICs suche ich?

Ich entwerfe ein Projekt, das weitaus mehr I/O erfordert, als ein typischer Mikrocontroller bietet. Kein Problem, richtig, benutze einfach Schieberegister und so. Warte nein, warum habe ich Probleme?

Ich plane, 24 Ausgänge mit einer seriellen Datenleitung, einer Uhr und einer Chipauswahl anzusteuern. 16 der Ausgänge sind mit LEDs verbunden und die restlichen 8 sind mit einem HD44780 LCD-Display verbunden. Was ich also für die 16 LEDs dachte, war, sie mit zwei 8-Bit-Zählern zu verbinden, die das serielle Datenbit an die spezifische LED weiterleiten und dann beim Takten zum nächsten fortlaufenden Ausgang wechseln - wie ein Demultiplexer, aber seriell. Für das LCD muss ich die Daten tatsächlich speichern und sie alle auf einmal senden, also brauche ich ein 8-Bit-Seriell-Parallel-Register und warte, bis 8 Takte vergehen, um es zu aktivieren.

Einen IC zu finden, der Letzteres tut, ist einfach - 74HC595 scheint es zu tun -, aber für die LEDs kann ich anscheinend keinen Chip der 7400-Serie finden, der das tut, was ich will. Alle, die ich finden kann, halten an vorherigen Werten fest und verschieben sie einfach, und die Decoder, die ich gefunden habe, 1) haben keine Datenleitung - sie sind immer wahr, wenn sie ausgewählt sind, und 2) erfordern ein Binärwort, kein a Uhr. Wenn es nicht schon klar ist, möchte ich etwas, das das tut, was auf der linken Seite steht:

Ich schwöre, ich habe einen Chip verwendet, der beim Ansteuern einer LED-Matrix das tut, woran ich denke, aber ich kann mich nicht an seine Nummer erinnern. Jede Hilfe wäre willkommen.

Antworten (3)

Ich verstehe nicht, warum Sie den 74HC595 nicht für die LEDs verwenden können.

Verschieben Sie Ihre Daten und lassen Sie dann die Uhr für das Speicherregister blinken, um diesen 8-Bit-Wert zu halten. Solange Sie die Speicherregisteruhr nicht pulsieren, können Sie den ganzen Tag über Bits verschieben, ohne die endgültigen Ausgangsbits zu beeinflussen.

Sie können dieselbe serielle Datenleitung für alle Ihre Ausgänge verwenden und nur selektiv "gattern", welches Schieberegister einrastet.

Bitte hinterlassen Sie einen Kommentar, wenn ich falsch verstanden habe, was Sie tun. Ich werde meine Antwort weiter ausführen.

Ich möchte eine direkte Verbindung zur LED aufrechterhalten. Wenn ich es an ein Schieberegister anschließe, muss ich mehrmals takten und den Chip für jede nachfolgende Ausgabe immer wieder zurücksetzen. Wenn ich eine direkte Verbindung habe, dann ist das, was die LED anzeigen soll, genau das, was ich durch serielle Daten schicke - und ich takte es einfach, um beim nächsten zu tun, was ich will.

Das Element auf der linken Seite ist überhaupt kein Schieberegister; Es ist als "adressierbares Latch" bekannt. 74xx259 ist ein Beispiel.

Mir sind jedoch keine handelsüblichen Komponenten bekannt, die einen internen Zähler haben. Sie alle erwarten, dass Sie die 3-Bit-Binäradresse für das zu aktualisierende Latch angeben.

Es wäre einfach, ein solches Gerät mit einem PAL oder CPLD zu erstellen.

Wenn Sie einen SPI- oder I2C-Bus auf Ihrem Controller haben (oder bereit sind, einen auf GPIO zu bitbangen), gibt es viele Arten von I/O-Expander-Chips für diese Busse. Ein Beispiel, das ich verwendet habe, ist der Microchip MCP23S17 (SPI) / MCP23017 (I2C). Jeder Chip gibt Ihnen 16 weitere GPIO-Leitungen.

Ich verstehe nicht, warum Sie den 74HC595 nicht verwenden können. Hier sind alle Möglichkeiten, die ich sehe.

74HC299, universelles 8-Bit-Schieberegister; 3-State, wenn Sie Ihre Ausgänge während des Schaltens in einen Tri-State versetzen können.

74HC594 Serial-In-Schieberegister mit Ausgangsregistern

74HC595 Serial-In-Schieberegister mit Ausgangslatches

74HC596 Serial-In-Schieberegister mit Ausgangsregistern und Open-Collector-Ausgängen

74673 16-Bit-Serial-In-Serial-Out-Schieberegister mit Ausgangsspeicherregistern, Ausgängen mit drei Zuständen, wenn Sie 16 Bit benötigen.

Es brauchte zwei Leute, um es zu sagen, aber mir wurde schließlich klar, dass es wirklich keinen Grund gibt, warum ich den 595 nicht einfach benutzen kann, da ich schnell genug takte, dass eine direkte Verbindung sowieso keine Rolle spielt.