STM8: 4x4 Tastaturmatrix mit Mehrfachbelegung der Tasten

#5227850
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.
Angehängte Dateien:

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