Hallo
In LCD_WriteRegister() sollte die Verzögerung nach dem Schreiben des zweiten Nipples sein (delay100us(50);), sonst scheint mir das richtig zu sein.
Kannst du nun mehr als eine Zeile erkennen (mit max. Kontrast)?
In LCD_WriteZeichen() scheint mir noch ein Fehler zu sein:
Code:
...
x = zeichen & 0xf0;
// LCD_RW = 0; // LCD im Schreiben-Mode
LCD_RS = 1; // LCD im Befehl-Mode
PORTLCD = x; //höherwertiges nibbel
...
Nach &0xf0 sind die Bits 0-3 in x gelöscht, RS ist aber bit2 und wird mit PORTLCD = x; wieder gelöscht. Richtig wäre wohl entweder eine andere Reihenfolge:
PORTLCD = x; //höherwertiges nibbel
LCD_RS = 1; // LCD im Befehl-Mode
oder eine andere Formulierung:
PORTLCD = x | 4; //höherwertiges nibbel und Datenmode setzen
Ich bin aber leider auch kein LCD-Profi, wir tasten uns ran ;)
Gruß
mic
Lesezeichen