mikrocontroller.net

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


Autor: Ralph S. (jjflash)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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   |  |   3   |  |  ESC  |
          |   @   |  |  abc  |  |  def  |  |       |
          +-------+  +-------+  +-------+  +-------+
          +-------+  +-------+  +-------+  +-------+
          |   4   |  |   5   |  |   6   |  |  DEL  |
          |  ghi  |  |  jkl  |  |  mno  |  |       |
          +-------+  +-------+  +-------+  +-------+
          +-------+  +-------+  +-------+  +-------+
          |   7   |  |   8   |  |   9   |  | SHIFT |
          | pqrs  |  |  tuv  |  | wxyz  |  | LOCK  |
          +-------+  +-------+  +-------+  +-------+
          +-------+  +-------+  +-------+  +-------+
          |   .   |  |   0   |  |   =   |  |  RET  |
          | * /+- |  | SPACE |  | (){}  |  |       |
          +-------+  +-------+  +-------+  +-------+


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:
char t4x4_ischar(void)
----------------------

  stellt fest, ob eine Taste gedrückt wurde, liest diese aber nicht.

char t4x4_getchar(void)
-----------------------

  liest ein Zeichen ein. Die gelesenen Zeichen sind ASCII-Zeichen, ein
  Drücken der Taste 0 liefert den Zahlenwert 48 (das ist der Ascii-Wert für 
  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:
- stm8s .......... Registeradressen
- stm8_init ...... Initialisierung des Controllers
- stm8_gpio ...... Makros zum Ansteuern der GPIO-Pins
- my_printf ...... rudimentäres, abgespecktes printf
- uart ........... rudimentäre Funktionen zum Ansprechen der 
                   seriellen Schnittstelle
- 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.

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.