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



zurück zur Beispiel-Übersicht