Matrixtastatur am AVR

Gast #8133
Lesenswert?

Hi,

wäre es nicht sinnvoller, den 8-Tastencode, den man ja mit 16Tasten 
nicht voll ausnutzt in einen 4bit-Code umzuwandeln, der ja mit 16 
Zuständen genau hinkommt? Nagut, man müßte auf eine Taste verzichten, 
damit Zustand 0000 als "kein Tastendruck" erkannt werden kann.
Dann könnte man einen Port für zwei Sachen nutzen. oder sehe ich da was 
falsch?
Wäre doch schö, wenn man mite der einen Port-Hälfte die Tasten einließt, 
und mit der andern ein Display im 4-bit-Modus ansteuern könnte.
Leider hab ich dafür noch keine fertige Lösung entdeckt. Es gibt 
sogenannte 10 -> BCD-Codierer, oder auch Prioritäten-Codierer genannt, 
man müßte es echt selber mit Gattern oder Dioden aufbauen.

Gruß Jörg
Gast #8134
Lesenswert?

Hi !
@Jörg
ich hab mich das mit dem 16:4 Encoder auch schon gefragt...
hab aber auch nichts (irgendeinen billigen IC) gefunden.

Wenn wer so einen (in D erhältlichen) Baustein (max 2 EUR
sonst machts ein AVR auch) kennt, würde ich mich dafür interessieren,
um Ports zu sparen.

Die Steuerung wie sie Atmel in o.g. Dokument beschreibt funktioniert
bei mir ansonsten wirklich einwandfrei, aber 4 statt 8 Ports belegen,
wäre mir lieber...

Jurek
Gast #8135
Lesenswert?

Der Orginal beitrag und die Antworten darauf sind zwar schon etwas
"alt" aber Andreas hat recht. Wenn immer nur die abgefragte Spalte
(oder Zeile) aktiv und der Rest Tristate also als Eingang geschaltet
ist kann man auf die Dioden verzichten.

Was einen billigen 16:4 Encoder anbetrifft, den gibt es zum 1. nicht
und zweitens würde der zuviel Platz auf der Platine einnehmen. Dann
lieber eine Prozessor, der ein paar I/O´s mehr hat.

Steffen

PS: Der 16:4 Encoder hat mindestens 22 Pins (jede Taste einzeln) oder
14 Pins (Tastatur als Matrix). Bei der MC-Lösung brauche ich aber so
oder so nur 8 Pins.
#1273799
Lesenswert?

Andreas Schwarz schrieb:
> Du kannst auch alle Tasten gleichzeitig drücken, ich sehe nicht wo es da
> Probleme geben sollte.

Naja, stell Dir mal eine Matrix mit 2 Zeilen A und B, sowie 3 Spalten X, 
Y und Z vor.

Du hast da jetzt 4 Tasten:
123
456
1 verbindet A und X
2 verbindet A und Y
3 verbindet A und Z
4 verbindet B und X
5 verbindet B und Y
6 verbindet B und Z

Jetzt drücken wir mal 1 und 4. Somit ist A und X, sowie B und X 
verbunden. Jetzt drückst Du gleichzeitig die Taste 3 und verbindest A 
und Z.

Ohne Dioden sind jetzt durch die Tasten 1 4 die Leitungen A und B 
miteinander verbunden. Es ist nun nicht mehr möglich die Taste 3 von der 
Taste 6 zu unterscheiden.
Beitrag #6135125 wurde von einem Moderator gelöscht.
Beitrag #6135127 wurde von einem Moderator gelöscht.
Beitrag #6135129 wurde von einem Moderator gelöscht.
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.