Tastenmatrix mit Prioritätsencoder?

OP #3523485
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.
OP #3524002
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 ;)
Gast #3524054
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.
OP #3524231
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren