Gast
#34177
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