Gast
#1156937
Hallo, ich versuche gerade das LCD 161 A zu initialisieren und bin dabei der Anleitung aus dem Tutorial gefolgt. Nur ist meine Pinbelegung etwas anders: RS: PD0 E: PD1 DB4: PD4 DB5: PD5 DB6: PD6 DB7: PD7 und habe die LCD Routine entsprechend abgeändert (s. u.). Nun sende ich das Programm an den µC und die vormals 8 dunklen Kästchen verschwinden und das gesamte Display füllt sich mit helleren Kästchen. Zwar ist das Forum voll mit Beiträgen zu dieser Art Fehler, auch bei gleichem Display, aber leider hat mir keiner der Beiträge helfen können. Ich nehme mal an, dass ich beim Umschreiben irgendetwas vertauscht habe. Ich kann aber leider nicht finden was, obwohl ich schon einige Male das Programm durchgelesen habe. Im Datenblatt finde ich leider nichts zur 4bit Initialisierung, die Anweisung auf S. 6 ( http://www.microcontroller-online.de/microcontroller/datenbl%E4tter/PDF/LCD161A.pdf ) scheinen nur für den 8bit Modus zu gelten. Hier ist das Test-Programm, die LCD Routine ist im Anhang: .include "m8def.inc" .def tmp1 = r16 .def tmp2 = r17 .def tmp3 = r18 ldi tmp1, LOW(RAMEND) ; LOW-Byte der obersten RAM-Adresse out SPL, tmp1 ldi tmp1, HIGH(RAMEND) ; HIGH-Byte der obersten RAM-Adresse out SPH, tmp1 ldi tmp1, 0xFF ; Port D = Ausgang out DDRD, tmp1 rcall lcd_init ; Display initialisieren rcall lcd_clear ; Display löschen ldi tmp1, 'T' ; Zeichen anzeigen rcall lcd_data ldi tmp1, 'e' ; Zeichen anzeigen rcall lcd_data ldi tmp1, 's' ; Zeichen anzeigen rcall lcd_data ldi tmp1, 't' ; Zeichen anzeigen rcall lcd_data loop: rjmp loop .include "LCD_routines.asm" ; LCD-Routinen werden hier eingefügt