Forum: Mikrocontroller und Digitale Elektronik Tastenmatrix mit Prioritätsencoder?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Herb G. (donar)


Bewertung
0 lesenswert
nicht lesenswert
Guten Tag,

mein Tastenfeld wird 8 Spalten x 12 Zeilen gross. Es soll immer nur eine 
Taste erkannt werden (auch wenn der Betätiger mehrere gleichzeitig 
drückt).

Ich brauch am Schluss eine Tastennummer (zeilenweise 1...8, ..., 
89...96; 0 = keine Taste).

Nun hatte ich die Idee, einen 74 148 für die Spalten und 2 davon für die 
Zeilen zu nehmen (von denen ich nur 8+4 Datenpins benötige). (Oder 
gibt's auch einen 74xx der 16 zu 4 macht? In dem Artikel zu den 74ern 
ist jedenfalls keiner aufgeführt.)

Dann geben mir die 3 + (3+2) Bit doch gleich die gewünschte Tastennummer 
(nach +1), richtig? (Gut, GS oder E0 muss ich für jeden IC auch noch 
auswerten, weil der 148 ja sowohl für 0x7F als auch für 0xFF jeweils 
0b111 zurückgibt).

8+3 freie Ports hab ich.

Spricht etwas gegen den Einsatz von Prioritätsencodern?

Gruss,
H.

von Helmut L. (helmi1)


Bewertung
0 lesenswert
nicht lesenswert
Herb G. schrieb:
> Spricht etwas gegen den Einsatz von Prioritätsencodern?

Ja, das Alter. Nimm einen kleinen uC. Damit macht man das Heute.
Damit kann man dann auch noch andere Sachen machen. (Keyboard FIFO, 
Tastenentprellung,Repeatfunktion etc.)

von Reinhard Kern (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Herb G. schrieb:
> Nun hatte ich die Idee, einen 74 148 für die Spalten und 2 davon für die
> Zeilen zu nehmen

Das hat bestimmt seit 30 Jahren keiner mehr so gemacht.

Gruss Reinhard

von Herb G. (donar)


Bewertung
0 lesenswert
nicht lesenswert
Helmut Lenzen schrieb:
> Herb G. schrieb:
>> Spricht etwas gegen den Einsatz von Prioritätsencodern?
>
> Ja, das Alter. Nimm einen kleinen uC. Damit macht man das Heute.
> Damit kann man dann auch noch andere Sachen machen. (Keyboard FIFO,
> Tastenentprellung,Repeatfunktion etc.)

Danke. Nun ja, so klein kann der dann ja nicht sein, bei 8 + 12 
Eingangspins und 2 oder 7 Ausgangspins. (Ausser ich mach's so - mit in 
meinem Fall 10 Eingangspins: 
http://www.sprut.de/electronic/pic/grund/tasten/56tast.gif 
[sprut.de]...)

Modular, tjaja. Danke für den Hinweis! Werd ich wohl so machen, die 
Vorteile sind klar. Nur den entprellten Input anlegen, passt schon. Halt 
mehrere verschiedene uC programmieren, aber ok.



Reinhard Kern schrieb:
> Das hat bestimmt seit 30 Jahren keiner mehr so gemacht.

Danke für den Beitrag. Wow, was bin ich modern ;)

: Bearbeitet durch User
von rava (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Oder mit ADC(s) und Widerstandsnetzwerk, wenn die pins knapp sind?
Prioritäten sind dann per Hardware vorgegeben

von Helmut L. (helmi1)


Bewertung
0 lesenswert
nicht lesenswert
Herb G. schrieb:
> Nun ja, so klein kann der dann ja nicht sein, bei 8 + 12
> Eingangspins

Man kommt mit 11 Eingangspins aus, wenn man die Matrix etwas anders 
anordnet und dabei bedenkt das man die Eingangspins auch als 
Ausgangspins brauchen kann.

von Herb G. (donar)


Bewertung
0 lesenswert
nicht lesenswert
Helmut Lenzen schrieb:
> Man kommt mit 11 Eingangspins aus, wenn man die Matrix etwas anders
> anordnet und dabei bedenkt das man die Eingangspins auch als
> Ausgangspins brauchen kann.

Danke. Aber: Schrieb ich doch, mit Link (Wobei, ich schrieb 10, das ist 
inkorrekt, 11 natürlich! 11 x 10 >= 96, 10 x 9 < 96 ) :)

von MaWin (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Herb G. schrieb:
> Dann geben mir die 3 + (3+2) Bit doch gleich die gewünschte Tastennummer
> (nach +1), richtig?

Nein,.

Du bräuchtest Taster mit 2 Kontakten.

Hast du aber vermutlich nicht. Also musst du die 16 Zeilen der Reihe 
nach durchgehen, und dann von der Zeile meinetwegen die höchstwertige 
gedrückte Taste zusammen mit der aktuellen Zeilennummer liefern.

Das macht ein Microcontroller in Form von einem Bauteil, es ist also 
eher akademisch daraus nun eine ganze Platine voller kleiner ICs zu 
basteln.

Man bräuchte einen Oszillator (1/4 74HC132), einen 7 bit Zähler 
(74HC393) einen Decoder der 1 von 12 Leitungen auf Masse schaltet (2 x 
74HC139), einen Decoder der 1 aus 8 Leitungen auswählt (74HC151) und an 
dessen Eingängen je ein 10k Widerstand nach +5V hängt, und wenn dessen 
Ausgang nach Masse geht dient das als Impuls "gedrückte Taste 
erkannt"(die Zählerbits sind die Tastennummer) und gleichzeitig hält er 
den Zähler an (ein Eingang des 74HC132, daher ein NAND als Oszillator). 
Wesentlich weniger Bauteile werden es ohne Spezial-.ICs wohl nicht. 
Einen 74HC148 braucht man nicht (oder nan bräuchte 13 Sück davon).

Wahlweise auch ein fertiger Tastaturcontroller einer ausrangierten PC 
Tastatur. Die liefert die Daten gleich seriell ab.

von Herb G. (donar)


Bewertung
0 lesenswert
nicht lesenswert
MaWin schrieb:
> Nein.

Gut. Ich konnte das meiste davon in der knappen Stunde nachvollziehen; 
ich bin beeindruckt, und ich danke. (Und das meine ich.)

Also, ein Slave-uC der als Keyboard-Controller agiert und dem Master 
sagt, wann ein KB-"Click" anliegt, so läuft das "heutzutage", richtig, 
also 2 x uC programmieren. Erinnert mich an Windows, aber das krieg ich 
vielleicht hin.

(Doch bevor ich mich aus dem Fenster schmeiss, meld ich mich dann noch 
mal. - Iss eh ned hoch bis GND.)


Edit: Typo.

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.