Welcher Schaltplan ist besser für den Anschluss einer Tastatur an eine MCU?

Ich habe diese drei Tastenfeldverbindungsskizzen, die ich alle in verschiedenen Anwendungen gesehen habe, und einige habe ich auch verwendet, aber ich möchte wissen, ob es einen Vorteil gegenüber dem anderen gibt. Geben Sie hier die Bildbeschreibung einDie Tastatur wird direkt an die DIO-Pins eines PIC-Mikrocontrollers angeschlossen, PIN 1,2,3 als AUSGÄNGE und PIN A, B, C, D als Eingänge.

Die Tastatur wird nicht an Bord sein, sondern über Kabel mit der Platine verbunden sein, ich weiß nicht, ob dies einen Unterschied macht.

Antworten (3)

Nummer 1 kann für Ihren Controller destruktiv sein. Wenn Sie Push-Pull-Ausgänge für die Spalten und die Zeilen als Eingänge verwenden würden, wird durch Drücken von zwei Tasten in derselben Zeile die Stromversorgung durch die Ausgänge des Mikrocontrollers kurzgeschlossen. Wenn die Ausgänge des Mikrocontrollers als Open-Drain konfiguriert werden können, gibt es kein Problem, aber die Ausgänge müssen auch Pull-up-Widerstände haben. Dann haben Sie im Grunde Nummer 2, aber mit integrierten Klimmzügen.

Nummer 2. Dieselbe Geschichte, wenn Sie die Zeilen als Ausgaben verwenden würden. Die Verwendung der Spalten als Ausgänge ist sinnvoller, da R1-R3 einen Kurzschluss der Ausgänge vermeiden. Beachten Sie, dass ein niedriger Ausgangspegel den Serien-/Pull-up-Widerstand als Spannungsteiler betrachtet, sodass der Eingang 0,1 Vcc beträgt, obwohl dies normalerweise kein Problem darstellt.

Nummer 3 vermeidet den Teiler, aber die Widerstände an den Eingängen haben keine Funktion. Eine Variante ohne Vorwiderstand reicht aus.

Also 1) kann ein absolutes Nein-Nein sein. 3) ist etwas besser als 2) weil es den Spannungsteiler nicht hat, aber auf den Vorwiderstand verzichten kann.

Dachte, ich könnte meine genauso gut löschen, Gehirn übermüdet ... Ich habe es gelesen, da die Spalten Ausgaben sind, Zeilen jedoch Eingaben in dem Beispiel?
@Oli - In 1) macht es keinen Unterschied, und es gibt keine Pfeile, aber ich werde meine Antwort bearbeiten, um sie mit den anderen in Einklang zu bringen.
Für 2) sind die Klimmzüge in den Zeilen, die Eingaben sein werden, also denke ich, dass es in Ordnung ist, oder? aber Sie sagen, die Vorwiderstände an den Säulen sind nicht erforderlich? und ich habe Ihre Erklärung zu (3) nicht verstanden. Wollen Sie damit sagen, dass die Vorwiderstände in den Reihen allein entfernt werden können? denn wenn alle Vorwiderstände entfernt werden, wird es dasselbe wie (1)
@TiOLUWA - Ich habe nicht gesagt, dass die Widerstände der Ausgänge entfernt werden dürfen. Sie sind erforderlich, um Probleme Nummer eins zu vermeiden. Aber der Vorwiderstand für die Eingänge erfüllt keinen Zweck, da die Eingänge hochohmig sind.

Sie könnten dem ersten Schaltplan einfach Dioden hinzufügen, wenn Ihr Mikrocontroller über integrierte Pull-Ups oder Pull-Downs verfügt.

Keypad-Anschluss

Das gezeigte Beispiel geht davon aus, dass Sie Klimmzüge an Ihren Eingängen haben (um eine Spalte auszuwählen, müssen Sie sie niedrig fahren) und der Zustand der Taste ist invertiert.

Wenn Sie Pulldowns an Ihren Eingängen haben, kehren Sie die Polarität der Dioden um und um eine Spalte auszuwählen, müssen Sie sie hoch treiben. Sie müssen den gelesenen Wert nicht invertieren.

Das erste Schema ist in Ordnung, vorausgesetzt, Sie verwenden einen Zwei-Phasen-Scan-Ansatz. In Phase 1 werden die Zeilen-GPIO-Pins als Eingänge mit internal konfiguriertPull-up-Widerstände aktiviert und die Spalten-GPIO-Pins sind als auf GND gesetzte Ausgänge konfiguriert. In der zweiten Phase werden die Rollen vertauscht. In jedem Fall wird der gelesene 4-Bit- (oder 3-Bit-) Eingang abgespeichert, und die "Vereinigung" der beiden Phasen ergibt einen 8-Bit- (oder 7-Bit-) Wert, den Sie in "Taste X" decodieren können gedrückt." Natürlich gibt es Tastenkombinationen, die in diesem Schema mehrdeutig zu dekodieren sind (z. B. kolinear). Sie müssen auch eine kleine Verzögerung zwischen dem Ändern der Pin-Funktionen und dem Lesen der Eingänge vorsehen, damit sich die Pins aufladen können. Davon abgesehen ist es ein guter minimaler Hardware-Ansatz, und solange Sie die Regeln in der Software befolgen, besteht keine Gefahr für Ihren Controller.

Ich erkenne an, dass diese Scanmethode nicht das ist, was vom OP vorgeschlagen wurde, aber ich wollte den Softwarekontext erläutern, in dem der erste Schaltplan sinnvoll ist
Ich habe gesehen, wie diese Scanmethode in einer der Mikrochip-App-Notizen mit ihrem Port-Expander verwendet wurde. Hat es irgendwelche Vorteile gegenüber der regulären Methode, bei der Sie jeden COL nacheinander niedrig bringen?
@TiOLUWA: Spielen Sie vielleicht auf Microchip "AN1081: Interfacing a 4x4 Matrix Keypad with an 8-Bit GPIO Expander" an ?
@TiOLUWA Es ist eine Zwei-Phasen-Methode, sodass Sie die Matrix im Prinzip schneller scannen können, denke ich