mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zehnertastatur an PIC


Autor: Markus Jung (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe bei Pollin (voreilig) die Zifferntastatur SAMWELL 702772-8
bestellt ohne vorher das Datenblatt genau anzusehen. Aus dem Datenblatt
geht letztendlich auch die Beschaltung hervor und die finde ich ein
wenig komisch. Ich tue mich als µC-Anfänger ein wenig schwer diese
Tastatur über einen PIC16F946 einzulesen.

Jetzt hoffe ich auf euch: Hat jemand eine Idee wie man das mit
vertretbarem Aufwand an Hard- und Software (Assembler) bewerkstelligen
kann?

Viele Grüße
Markus

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich das richtig verstehe, muß man die als 2*7 Matrix auslesen, ne
3*4 Matrix hätte 2 Pins gespart.


Peter

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal dir mal eine Tabelle mit den 8 Pins (1,2,6-12) in X-Richtung und den
Tasten in Y-Richtung auf.
Oder so:
1 und 2 als Spalten und 6-12 als Zeilen, und in die Kreuzungspunkte
schreibst du die Zahlen/Werte der Tasten.
Man braucht nur einen Port, wovon 2 Pins als Ausgänge schaltbar sein
sollten und 6 als fest als Eingang geschaltet sind.

Autor: Markus Jung (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

@Rahul:
Ich nehme an Du meinst eine Tabelle wie folgende:

Pin  1   2
 6  [0] [1]
 7  [2] [3]
 8  [4] [5]
 9  [6] [7]
10  [8] [9]
11  [^]
12  [v]

Damit hätte man zwei Ausgänge und sieben Eingänge. Passt leider nicht
mehr auf einen Port. Aber das macht mir nicht so viel aus.
Mir ist jetzt nur schleierhaft wie ich z.B. an Pin 6 unterscheiden kann
ob die Taste 0 oder 1 gedrückt wurde.

Viele Grüße
Markus

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da hab ich mich wohl verzählt... (PeDa hatte Recht...)
Wenn du alle Pins ausser Pin 1 als Eingang (mit eingeschalteten
Pull-up-Widerstand) schaltest, und Pin 1 auf Low schaltest, kannst du
durch Abfrage deiner Eingänge feststellen, welche Taste gedrückt wurde.
Das Gleiche kannst du mit Pin 2 machen.
Pin 11 und 12 könnte man auch auf einen anderen Port legen...

Autor: Winfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du müsstest mal schauen, ob du Infos im Internet ergoogeln kannst, wie
man eine Tastaturmatrix scannt. In Kurzform eine Möglichkeit:
Zeilenleitungen sind Eingänge am Prozessor, die mit Pullup auf High
liegen. Spalten werden als Ausgänge betrieben und legen. Nacheinander
legst du eine Spalte auf Low und liest dann die Zeile ein. Dann nächste
Spalte auf 0 legen und Zeile einlesen. Auf 0 liegende Zeilenbits sind
gedrückte Tasten der aktuell auf Low gehaltenen Spalte.

Es bietet sich an, die ganze Tastenscannerei im Timerinterrrupt zu
erledigen. Z.B. 100-1000 mal pro Sekunde. Entprellen musst du auch
noch.

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der Codesammlung gibt es zum Suchwort "Matrix" eine Lösung von
Peter Dannegger; allerdings für 8051er.

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi zusammen,

ich weiss der Beitrag ist schon etwas älter... Ich stand vor dem selben
Problem wie Markus, allerdings habe ich eine Lösung gefunden wie man die
SAMWELL-Tastatur an einem 8-bit Port betreiben kann. Die Lösung ist
eigentlich ganz einfach. Man muss Pin 2 mit Pin 12 verbinden. Jetzt
wird sich der ein oder andere Fragen, wie das helfen soll? ;-)

Oben hat ja jemand gesagt die Tastatur ist als 2x7 angelegt. Das ist
natürlich nicht so ganz richtig. Genau genommen brauchen wir 1x7 und
1x5-Eingangspins.

Jemand meinte man könnte das Multiplexen. Stimmt!
Der Witz beim Multiplexen ist allerdings, dass man die
Ausgangsleitungen, wenn sie nicht aktiv sind durchaus auch als Eingang
benutzen kann! Damit kann man theoretisch 8x7 Kombinationen mit einem
Port darstellen, wenn man mal die Symmetrien ausser Acht lässt.
Das ganze bedeutet nun man nimmt sich zwei beliebige Port-Pins die
abwechselnd "aktiv" sind. Dabei bedeutet "aktiv", dass er als
Ausgang geschaltet und mit LOW-Level versehn wird. Die jeweils anderen
7 Pins des Ports werden als Eingang konfiguriert. (alle Port-Pins sind
noch mit Pullups auf HIGH gezogen) So, jetzt haben wir zwei Phasen bei
dem Multiplexen. Die Erste für die Zeichen 0,2,4,6,8, C hoch und C
runter und bei der zweiten Phase 1,3,5,7,9. (sie auch die Tabelle von
Markus!)

Nun zur Beschaltung:

RB0 <-  6. Pin
RB1 <-  7. Pin
RB2 <-  8. Pin
RB3 <-  9. Pin
RB4 <- 10. Pin
RB5 <- 11. Pin
RB6 <-> 2. Pin & 12. Pin
RB7 <-> 1. Pin

Und noch Pin 2 mit Pin 12 der Tastatur verbinden, damit lenken wir die
Ausgabe von Pin 12 auf Pin 2 um.
"<-" bedeutet der Portpin wird als Eingang benutzt und "<->"
bedeutet je nach Multiplex-Phase wird der Pin als ein oder Ausgang
benutzt. "->" wäre also ein Ausgang.

Damits etwas deutlicher wird, hier die beiden Phasen mal getrennt:

Multiplex Phase 1:

RB0 <-  Taste 0
RB1 <-  Taste 2
RB2 <-  Taste 4
RB3 <-  Taste 6
RB4 <-  Taste 8
RB5 <-  Cursor runter
RB6 <-  Cursor hoch
RB7  -> (LOW-Level)

Multiplex Phase 2:

RB0 <-  Taste 1
RB1 <-  Taste 3
RB2 <-  Taste 5
RB3 <-  Taste 7
RB4 <-  Taste 9
RB5 <-  (gibts nicht)
RB6  -> (LOW-Level)
RB7 <-  Cursor hoch

Also als Beispiel:
Wenn in Phase 2 an RB3 LOW anliegt wir die Taste 7 gedrückt,
und wenn man in Phase 1 an RB6 LOW hat, die Taste "Cursor hoch".

Für die Auswertung selbst reicht es RB0-5 auszuwerten, dass man in
Phase2 an RB7 den "Cursor hoch" sehen kann ist nur ein
Nebeneffekt...
Und weil wir gerade bei Nebeneffekten sind. Die "Cursor hoch"-Taste
darf nicht zusammen mit einer anderen Taste zusammen gedrückt werden,
sonst wäre das schlecht für das Ergebnis, wenn man "Cursor hoch"
drückt ist RB6&7 auf LOW und man kann da zB. die 0 nicht von der 1
unterscheiden...

Gruß,
Jens

PS: hoffentlich hat das jemand verstanden. hihi

Autor: Rolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jens, Du bist ein Genie! Danke für den Tip.

Rolf

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.