Forum: Mikrocontroller und Digitale Elektronik 8 Tasten, aber nur 3 Pins


von Marco S. (hochfrequenz)


Lesenswert?

Hallo,

ich möchte 8 Tasten abfragen. Gleichzeitiges Drücken mehrere Tasten muß 
möglich sein. Es stehen nur 3 Ports eines uC zur Verfügung.

Ansatz: Die Taster an eine 8 Bit Schiebregister anschließen. Irgendwie 
dann nacheinander die Taster ansteuern und zeitgleich einlesen, ob der 
asugegeben Pegel durch einen gedrückten taster überschreiben wird.

Da gibt es doch bestimmt eine "Standardlösung" dafür? Wird allerdings 
eng mit nur 3 Pins, oder?

Über Anregungen und Tips freue ich mich
Marco

von Falk (Gast)


Lesenswert?

@Marco Schramm

>ich möchte 8 Tasten abfragen. Gleichzeitiges Drücken mehrere Tasten muß
>möglich sein. Es stehen nur 3 Ports eines uC zur Verfügung.

>Da gibt es doch bestimmt eine "Standardlösung" dafür? Wird allerdings
>eng mit nur 3 Pins, oder?

Nein.

http://www.mikrocontroller.net/articles/Porterweiterung_mit_SPI

MFG
Falk

von Peter D. (peda)


Lesenswert?

Marco Schramm wrote:

> Da gibt es doch bestimmt eine "Standardlösung" dafür?

Ja, 74HC165.

> Wird allerdings
> eng mit nur 3 Pins, oder?

Nein, 3 reichen.


Peter

von Frank Huber (Gast)


Angehängte Dateien:

Lesenswert?

mal auf die Schnelle aufgemalt:

1. SRG mit 0x00 initialisieren.
2. Bei Tastendruck wird Interrupt ausgelöst.
3. SRG mit 0x3F initialisieren und 8 mal schieben (jeweils den 
Interrupt-Pin abfragen.)

von Peter D. (peda)


Lesenswert?

Frank Huber wrote:
> mal auf die Schnelle aufgemalt:

Warum der Aufwand mit den Dioden ?

Einfach nen 74HC165 nehmen und gut is.

Zum Entprellen braucht man eh den Timerinterrupt. Man hat also durch den 
externen Interrupt keinerlei Nutzen.

Auch will er ja Tasten gleichzeitig erkennen, der externe Interrupt 
triggert aber nur auf die erste.


Peter

von Wiesi (Gast)


Lesenswert?

Ich würd mal sagen, es kommt darauf an, welche 3 Ports frei sind. Wenn 
zumindest 2 von denen ADC Ports sind, dann kann man die Taster als R2R 
DAC verschalten und mit dem ADC dann das ganze wieder Retour wandeln. 
Mit mehr als 4 bis 6 Taster würde ich das aber wegen dem Störabstand 
nicht machen. Natürlich kann man dann auch mehrere gleichzeitig 
gedrückte Tasten auswerten.

   Wiesi

von Christoph Kessler (db1uq) (Gast)


Lesenswert?

Für 7 Tasten täte es auch ein Prioritätsencoder 74HC147 oder 148, ab 8 
sind es 4 Leitungen

von Wiesi (Gast)


Lesenswert?

@Christoph Kessler

"Gleichzeitiges Drücken mehrere Tasten muß möglich sein."

Wiesi

von Stefan W. (wswbln)


Lesenswert?

...oder 'nen I2C Porterweiterungschip (PCA95xx) an 2 Pins mit 'ner 
Soft-I2C anknoten. Vorteil: erweiterbar (falls Dir neben den Tasten noch 
was fehlt z.B. LCD - die sind eh' so lahm, dass man die ohne 
Performance-Verlust so anknoten kann).

von Roland R. (roland) Benutzerseite


Lesenswert?

Ich habe sowas auch mal mit einem Spannungsteiler am AD-Wandler-Pin 
gemacht. Einer der Widerstände besteht aus mehreren Teilwiderständen, 
die jeweils von einem Taster kurzgeschlossen werden. Anhand einer 
Wertetabelle kann man dann dem Spannungswert die gedrückten Taster 
zuordnen. Eine Entprellung ist danach genauso wie beim herkömmlichen 
Anschluss der Taster möglich.

Gruß,
Roland

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.