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.