Hallo Ich arbeite gerade das gcc tutorial für AVR durch, und bin jetzt beim LCD gelandet. Es funktioniert ganz gut, aber nicht perfekt, und ich verstehe nicht warum das so ist. Ich habe die lcd-routines.c und lcd-routines.h aus dem tutorial übernommen, nur die pins entsprechend an meinen setup angepasst. also, die ersten beiden zeilen des LCD scheinen ordnungsgemäss zu funktionieren. Wenn ich schreibe: lcd_setcursor( 0, 2 ); lcd_string("Hello World!"); funst es ganz normal, ich bekomme die ausgabe wie im oberen teil des bildes. Wenn ich aber schreibe lcd_setcursor( 0, 3 ); lcd_string("Hello World!"); bekomme ich einen seltsamen zeilenumbruch, wie gezeigt beim unteren teil des bildes. Wenn ich wirklich in die 3te zeile schreiben will, muss ich schreiben: lcd_setcursor( 4, 3 ); genau das selbe problem habe ich bei der 4ten zeile. jemand eine idee wo das problem liegen könnte? liebe grüsse jimmy
Hast du auch diese Zeilen an dein Display angepasst? //////////////////////////////////////////////////////////////////////// //////// // Zeilendefinitionen des verwendeten LCD // Die Einträge hier sollten für ein LCD mit einer Zeilenlänge von 16 Zeichen passen // Bei anderen Zeilenlängen müssen diese Einträge angepasst werden #define LCD_DDADR_LINE1 0x00 #define LCD_DDADR_LINE2 0x40 #define LCD_DDADR_LINE3 0x10 #define LCD_DDADR_LINE4 0x50
Hi
>jemand eine idee wo das problem liegen könnte?
Welches Problem? Dein Displaycontroller kann ein- oder zweizeilig
initialisiert werden. In dem Fall zweizeilig. Und diese zwei Zeilen
werden auf die vier Displayzeilen verteilt. Also Zeile 1 auf
Displayzeile 1 und 3 und Zeile 2 auf Displayzeile 2 und 4.
MfG Spess
jimmy H schrieb: > jemand eine idee wo das problem liegen könnte? Sieht für mich so aus, als ob ein 4*16 Display angesteuert werden soll aber ein 4*20 Display angeschlossen ist ;-) Grüsse
Hi >Sieht für mich so aus, als ob ein 4*16 Display angesteuert werden soll >aber ein 4*20 Display angeschlossen ist ;-) Nein. Eine übliche Adresszuordnung bei 4x20 Displays sieht so aus: First line (H) 00 01 .... 12 13 Second line (H) 40 41 .... 52 53 Third line (H) 14 15 .... 26 27 Fourth line (H) 54 55 .... 66 67 Die erste Zeile hört bei 0x13 auf und die dritte fängt bei 0x14 an. Dadurch landet der Text, der über das zwanzigste Zeichen der ersten Zeile hinausgeht, zwangsläufig in der dritten Zeile. MfG Spess
hoi ich habe jetzt die adresszuordnung von spess53 übernommen. Das ursprüngliche problem hab ich nicht mehr. Gibt es noch einen weg, dass der Zeilenumbruch von 1 auf 2 stattfindet statt von 1 auf 3? grüsse jimmy
jimmy H schrieb: > Gibt es noch einen weg, dass der Zeilenumbruch von 1 auf 2 stattfindet > statt von 1 auf 3? Ja - Software, die aufpaßt, was zum Display geschickt wird.
Hallo, Peter Dannegger (peda) hat das realisiert: Beitrag "Re: LCD Ansteuerung 4 bit-mode unter "C"_Anfänger" jimmy H schrieb: > hoi > ich habe jetzt die adresszuordnung von spess53 übernommen. Das > ursprüngliche problem hab ich nicht mehr. Gibt es noch einen weg, dass > der Zeilenumbruch von 1 auf 2 stattfindet statt von 1 auf 3? > > grüsse jimmy
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.