erstellt  17.03.2009
Tastatur am Atmega
Um an einem Mikroprozessor ( in diesem Fall ein Atmega 8 ) eine Tastatur anzuschließen, gibt es mehrere Möglichkeiten. Hier wird eine alte PC Tastatur verwendet, weil man die meist noch irgendwo rumliegen hat oder man sich für ein paar Euro billig eine zulegen kann.
Somit ist es meist billiger eine PC Tastatur zu nehmen als sich selber eine aus mehrere Tasten zusammen zu stellen, oder einen Speziellen Tastaturblock zu kaufen .
Außerdem benötigt eine PC Tastatur nur zwei Anschluss-Pin's  am Prozessor, während wenn man eine Tastaturmatrix benutzt, man in den meisten Fällen vier bis sogar 8 Pins benötigt.
Möglich ist die Zwei Pin Benutzung bei einer PC Tastatur, weil sich in so einer Tastatur schon ein Prozessor befindet der die Tastendrücke schon verarbeitet.

Die AT-Tastatur basiert auf einem Matrix-Tastenfeld  welches durch einen Einchipcomputer, häufig ein Intel MC8051 Mikrocontroller abgefragt wird.
Erkennt dieser Controller dass eine Taste gedrückt wurde, so gibt er auf die Seriell arbeitende Anschlussleitung der Tastatur einen Tastendruckcode aus, den man ScanCode nennt. Ein solcher Scan- oder AbtastCode wird ebenfalls erzeugt wenn die betreffende Taste wieder losgelassen wird. Dies gilt für alle Tasten, mit Ausnahme der [Break] oder [Pause]-Taste.
Diese sendet nur dann einen ScanCode, wenn sie gedrückt wird.
Dieser Scancode wird beim Anschluss an einem PC von dessen Bios ausgewertet , und in ein Asci Zeichen konvertiert, welches dann auf dem Bildschirm ausgegeben wird. Beim Anschluss der Tastatur an einem Atmega haben wir ja kein Bios zu Verfügung, deshalb muss die Auswertung Software seitig ausgeführt werden

DIN Tastaturstecker 5 pol, auf Stifte gesehen
DIN-5 war früher der Standard für Tastaturanschlüsse bei AT-Rechnern, anschließend setzten sich die PS2 Stecker durch, und mittlerweile gibt es fast nur noch USB.



DIN 5 pol


Die Anchlussadern sind zwar Farblich gekennzeichnet, aber unterliegen keiner Norm. So das man die farbliche Kennzeichnung besser außer acht lässt.
Bei meiner Sherry Tastatur waren folgende Farbkennzeichnung der Anschlussdrähte vorhanden:

Pin Aderfarbe Funktion Anschluss am Atmega
1 Nicht belegt    
2 Weiß Data nicht festgelegter Pin
3 Gelb Takt nicht festgelegter Pin
4 Grün + 5 Volt Plus 5 Volt
5 Schwarz GND GND

Die gemessene Stromaufnahme der Tastatur beträgt 83 mA, sollte man evtl beachten um die Gesamtschaltung nicht zu sehr zu belasten .
Hier ein kleines Programm zum Testen der Tastatur.

'******************* AT Tastatur an Atmega 8 *********************************
' Display an folgenden Ports
' Enable = Port B.5
' RS = Port B.4
' DB7 = Port B.3
' DB6 = Port B.2
' DB5 = Port B.1
' DB4 = Port B.0
' Taster an Port D.2
' Taster an Port D.3
' Led an Gelb
' Led an Port D.5 Rot
' Led an Port D.7 Blau
'-----------------------Configuration -----------------------------------------

$baud = 9600
$regfile"m8def.dat" 'Definiert den Atmega als Atmega 8
$crystal = 3686400 'Gibt die Quarzfrequenz an in Herz
Config Lcd = 16 * 2 'definiert das LCD Display in Art und Größe
Config Keyboard = Pinc.3 , Data = Pinc.2 , Keydata = Keydata
Dim Key As Byte
'----------------------- Tastaturabfrage -------------------------------------
Print "Testeingabe von einer AT Tastatur"
Lcd "Test von AT-Tasten"
Do
Key = Getatkbd()
If Key <> 0 Then
Print "Taste" ; Chr(key)
Cls
Lcd "Taste"
Locate 2 , 1
Lcd Chr(key)
End If
Loop
End
'--Scan Code Übersetzungstabelle----------------------------------------------
Keydata:
'Tasten normal
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &H5E , 0
Data 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 , 115 , 97 , 119 , 50 , 0
Data 0 , 99 , 120 , 100 , 101 , 52 , 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0
Data 0 , 110 , 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 , 56 , 0
Data 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 , 108 , 48 , 112 , 43 , 0
Data 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0 , 0 , 13 , 0 , 0 , 92 , 0 , 0
Data 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0
Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0

'Shift und Taste
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
Data 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 90 , 83 , 65 , 87 , 34 , 0
Data 0 , 67 , 88 , 68 , 69 , 0 , 35 , 0 , 0 , 32 , 86 , 70 , 84 , 82 , 37 , 0
Data 0 , 78 , 66 , 72 , 71 , 89 , 38 , 0 , 0 , 76 , 77 , 74 , 85 , 47 , 40 , 0
Data 0 , 59 , 75 , 73 , 79 , 61 , 41 , 0 , 0 , 58 , 95 , 76 , 48 , 80 , 63 , 0
Data 0 , 0 , 0 , 0 , 0 , 96 , 0 , 0 , 0 , 0 , 13 , 94 , 0 , 42 , 0 , 0
Data 0 , 62 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 0
Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0

Reset der Tastatur

Nach dem Anschluss der Tastatur an die +5V Versorgungsgleichpannung führt diese einen Reset durch. Die Zeit für diesen Reset beträgt 150ms bis zu 2s. Hierbei werden der ROM und der RAM des Controllers getestet und alle drei LED's ein und wieder ausgeschaltet. Nach der erfolgreichen Durchführung des Tests sendet die Tastatur den Code AAh. Die Voreinstellung für das ScanCode-Set ist der AT-Modus. Alternativ kann mit Befehlen des Host-Computers auf den PC/XT oder AT/PS -Modus umgeschaltet werden.

Aktualisiert 12.03.2014
Copyright by Ms 2009