Ich muss die Adresse der gedrückten Tasten herausfinden. Angenommen, ich benötige etwa 300 Eingangsports, die für einzelne Tasten reserviert sind. Dann würde ich 300 E / A-Pins benötigen, um die Adresse einer gedrückten Taste zu lesen, was für einen Mikrocontroller ohne die Verwendung einer integrierten Schaltung nicht möglich ist.
Meine Frage ist, gibt es einen IC, der eine individuelle Adresse für die Drucktaste zuweisen würde, sodass er mir immer dann eine Adresse wie 0xA senden/geben würde, wenn ich eine Taste drücke? Oder gibt es Abhilfe?
Wenn 256 Tasten ausreichen, können Sie zwei verwenden MCP23017
(16-Port-I2C-GPIO): die erste als 16 Ausgänge, die zweite als 16 Eingänge, natürlich mit einer 16x16-Tastenmatrix. Wenn dies nicht ausreicht, können Sie drei davon verwenden oder zusätzliche drei Zeilen von der MCU "ausleihen" (so werden 16x19 = 304 Tasten möglich).
Wie @jonk erwähnt hat, müssen Sie, wenn Sie mehrere gleichzeitig gedrückte Tasten erkennen möchten, Dioden ( 1N4148
, 1N914
) zu jeder Taste hinzufügen, wie unten:
Wenn Sie nicht mit mehreren gedrückten Tasten umgehen müssen, müssen Sie nur die Ausgangsleitungen durch Dioden schützen, wie unten:
MCP23017
ist recht günstig und funktioniert sehr gut.
Ich würde für diese Rolle auch Multiplexing oder Charlieplexing wählen.
Wenn Sie darauf bestehen, dedizierte I/O-Leitungen für jede einzelne Taste zu verwenden, könnten auch eine Handvoll Schieberegister die Arbeit erledigen, zB SN74HC166/SN74HC165. Sie können die beiden auch kombinieren, 595er verwenden, um ein Muster herauszuschieben, und 166er, um die Schaltflächenzustände einzugeben. Es ist einfach, diese Chips mit der SPI-Schnittstelle eines Mikrocontrollers zu verwenden, und sie sind sehr billig, wenn Sie mehrere davon gleichzeitig kaufen.
Ja. Die einfachste Lösung heißt Schieberegister. Sie können sie sowohl für die Eingabe als auch für die Ausgabe verwenden – obwohl im Allgemeinen jeder Chip dem einen oder anderen zugeordnet ist. Nun, das heißt, sie sind entweder "seriell zu parallel" oder "parallel zu seriell".
Angenommen, Sie haben ein 8-Bit-Parallel-zu-Seriell-Schieberegister, es hat 8 parallele Eingangsleitungen, und wenn Sie die serielle Leitung lesen, gibt es Ihnen den Wert jedes seiner 8 parallelen Eingangspins nacheinander. Oder für die Ausgabe umgekehrt (das Schreiben von 8 Bits in eine Zeile setzt die Ausgabe auf alle 8 parallelen Ausgangspins). Normalerweise können Sie sie miteinander verketten, sodass das Lesen / Schreiben über diese 8 Bit hinaus die Werte des nächsten angeschlossenen Registers verschiebt.
Aber wenn Sie viele Eingänge haben, wie z. B. den Einbau einer Tastatur, dann ist es sinnvoll, die von anderen erwähnte Multiplexing-Anordnung zu verwenden. Auf diese Weise können Sie mit N GPIOs N 2 Eingänge lesen . Zusätzlich zu den Ratschlägen hier sollten Sie viele Tutorials online finden, da DIY-Tastaturen eine Sache sind.
Da Schieberegister so billig sind (ich habe sie bei 50 für 1 $ gesehen), geht es manchmal nur darum, die Komplexität so zu verwalten, wie es für Sie zu diesem Zeitpunkt am sinnvollsten ist.
jonk
Versklavter Sterblicher
Tony Stewart EE75
Ron Beyer
jonk
Alter Furz
David Schwarz
Andi aka
Elliot Alderson
Bobflux
Eric Johnson
Solomon Ucko
Eichenholz