Forum: Projekte & Code STM8: 4x4 Tastaturmatrix mit Mehrfachbelegung der Tasten


von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

4 x 4 Tastaturmatrix einlesen mit einem STM8S103F3P6. Die Tastatur hat 
folgendes Layout und orientiert sich an Handytastaturen die NICHT smart 
sind.

Verwendetes Betriebssystem: Linux
Benötigter Compiler:        SDCC 3.6
Uploadtool                  stm8flash oder stm8_bootflash

So gibt bspw. eine kurz hintereinander 3-fach gedrückte Taste "7" den 
Buchstaben "q" zurück (eben wie das auf Handytastaturen auch der Fall 
ist).

Das Tastaturlayout:
1
          +-------+  +-------+  +-------+  +-------+
2
          |   1   |  |   2   |  |   3   |  |  ESC  |
3
          |   @   |  |  abc  |  |  def  |  |       |
4
          +-------+  +-------+  +-------+  +-------+
5
          +-------+  +-------+  +-------+  +-------+
6
          |   4   |  |   5   |  |   6   |  |  DEL  |
7
          |  ghi  |  |  jkl  |  |  mno  |  |       |
8
          +-------+  +-------+  +-------+  +-------+
9
          +-------+  +-------+  +-------+  +-------+
10
          |   7   |  |   8   |  |   9   |  | SHIFT |
11
          | pqrs  |  |  tuv  |  | wxyz  |  | LOCK  |
12
          +-------+  +-------+  +-------+  +-------+
13
          +-------+  +-------+  +-------+  +-------+
14
          |   .   |  |   0   |  |   =   |  |  RET  |
15
          | * /+- |  | SPACE |  | (){}  |  |       |
16
          +-------+  +-------+  +-------+  +-------+

Das Layout ist jedoch sehr leicht änderbar. Die Tastaturlesefunktion 
wurde für 2 Versionen realisiert:

Das Lesen der Tastatur erfolgt mittels Interrupt des Timers 2. Für den 
Umgang mit der Tastatur existieren 2 Funktionen:
1
char t4x4_ischar(void)
2
----------------------
3
4
  stellt fest, ob eine Taste gedrückt wurde, liest diese aber nicht.
5
6
char t4x4_getchar(void)
7
-----------------------
8
9
  liest ein Zeichen ein. Die gelesenen Zeichen sind ASCII-Zeichen, ein
10
  Drücken der Taste 0 liefert den Zahlenwert 48 (das ist der Ascii-Wert für 
11
  das Zeichen 0) zurück.

t4x4_matrix_01.zip
------------------
Die Tastatur wird direkt an die GPIO-Pins des Controllers angebunden. 
Pinbelegung ist im Quelltext vorhanden.

t4x4_matrix_02.zip
------------------
Die Tastatur wird mittels I2C I/O Expander PCF8574 angebunden. Der 
Expander wird mittels Software I2C angesteuert.

In beiden Zip-Dateien sind alle Dateien enthalten, die zum Übersetzen 
erforderlich sind:
1
- stm8s .......... Registeradressen
2
- stm8_init ...... Initialisierung des Controllers
3
- stm8_gpio ...... Makros zum Ansteuern der GPIO-Pins
4
- my_printf ...... rudimentäres, abgespecktes printf
5
- uart ........... rudimentäre Funktionen zum Ansprechen der 
6
                   seriellen Schnittstelle
7
- sw_i2c ......... I2C Softwareimplementierung

Übersetzt werden kann die Software mittels Make.
Optionen von Make sind:

- all ...... übersetzt alles (inklusive Softwaremodule) und linkt das 
Projekt

- compile .. übersetzt nur das Hauptprogramm (kein linken)

- clean .... löscht übersetzte Quellcodes

- flash .... upload einer übersetzten Datei in den Controller mittels 
stlinkv2 (das Programm stm8flash muß installiert sein). Ein Upload kann 
auch mittels des Bootloaders von hier:

Beitrag "Serial Bootloader für STM8S103F3P6 (Linux)"

erfolgen. Hierzu muß im Makefile der Variable "FLASHERPROG" der Wert 1 
oder 2 zugewiesen werden.

- complete . Übersetzte Dateien werden gelöscht, neu übersetzt. Dateien 
werden gelinkt und anschließend wird der Controller geflasht.

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.