LCD-Display 16 x 2 am Atmega8
Gerade der Umgang mit LCD-Displays ist beim Atmega8 besonders einfach.
Der Atmega hat schon eine fertige Routine enthalten , welche sich um alle wesentlichen Befehle kümmert, so das der User
quasi mit 2 simplen Befehlen auskommt.
Zunächst einmal der Schaltplan :

Wir nutzen hier ein LCD-Display im sogenannten 4Bit Modus.
Das heißt das die Anschlüsse D0 - D3 auf Masse gezogen werden
und die Anschlüsse D4 - D7 die eigentlichen Datenleitungen sind.
In der Praxis hat sich der PORTD bei mir am Atmega8 bewehrt.
Auch hier brauchen wir die Pins für das Display am Atmega8 nicht mit config als Ein- oder Ausgang definieren , denn dazu gibt
es einen speziellen Befehl:
Config Lcdpin = pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Mit diesem Befehl haben wir beim Atmega8 alle benötigten Pins den
jeweiligen Anschlüssen des Displays zugewiesen und der
Atmega8 weiß jetzt automatisch wie die Initialisierung sein muß.
Jetzt müssen wir noch noch sagen was für ein Display wir nutzen :
Config Lcd = 16x2
Wenn man nun einen Text anzeigen lassen möchte , muß man diesen ja vorher sagen an welcher Stelle.
Dazu gibt es den Befehl :
Locate 1,1
Locate 2,1
Die erste Zahl besagt in welcher Reihe
der Text angezeigt werden soll , während die zweite Zahl die
Position von links nach rechts
angibt.
Hier mal ein Beispielcode :
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 32
$framesize = 32
Config Lcdpin = pin , D4 = Portd.4 , D5 = Portd.5 , D6 = Portd.6 , D7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcd = 16x2
cls
DO
Locate 1,1
LCD " Hallo Welt "
Locate 2,1
Lcd "Ich bin ein 16x2"
waitms 2000
Locate 1,1
Lcd "Hier ist Zeile 1"
Locate 2,1
Lcd "und hier Zeile 2"
waitms 2000
Loop