Hallo, kann den Cursor nicht dahin setzen, wohin ich will. Wenn ich ihn z.B. in die 4.Zeile setzen will springt er an den Anfang der 2. Zeile. Ich weiß, daß die 4.Zeile eigentlich die 2.Zeile ist. Ich benutze diese Funktion dazu.: #define lcd_cursor(x) lcd_write(((x)&0x7F)|0x80) lcd_write() schaut so aus: void lcd_write(unsigned char c) { PORTB = (PORTB & 0xF0) | (c >> 4); LCD_STROBE; //#define LCD_STROBE LCD_EN=1; // DelayMs(2);LCD_EN=0; PORTB = (PORTB & 0xF0) | (c & 0x0F); LCD_STROBE; DelayUs(40); } Wenn ich aber den Viel Text schreibe wird auch die 4.Zeile benuzt. Weiß jemand woran das liegen könnte. Das LCD hab ich so initialisiert: void lcd_init(void) { LCD_RS = 0; // write control bytes DelayMs(15); // power on delay PORTB = 0x3; // attention! LCD_STROBE; DelayMs(5); LCD_STROBE; DelayUs(50); LCD_STROBE; DelayMs(5); PORTB = 0x2; // set 4 bit mode LCD_STROBE; DelayUs(40); lcd_write(0x28); // 4 bit mode, 1/16 duty, 5x8 font //lcd_write(0x08); // display off lcd_write(0x0F); // display on, blink curson on lcd_write(0x04); // entry mode lcd_write(0x01); // Display Löschen } MFG Holger
Ich hab ein 4x20 von Reichelt und da ist das komischerweise So: L1=0x80 L2=0xC0 L3=0x94 L4=0xD4 Kannste ja mal ausprobieren MfG P
Danke für den Tip. Jetzt funktionierts!!! Schaut jetzt so aus: #define lcd_cursor1(x) lcd_write(0x80+x-1) // L1 pos. x #define lcd_cursor2(x) lcd_write(0xC0+x-1) // L2 pos. x #define lcd_cursor3(x) lcd_write(0x94+x-1) // L3 pos. x #define lcd_cursor4(x) lcd_write(0xD4+x-1) // L4 pos. x MFG Holger
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.