Hallo,
ich hab jetzt das enable in eine extra Routine verpackt und das Busy wegelassen, dafür mehr delays.
Eigentlich müsste laut dem geposteten DB der Cursor blinken, und zwar an der Home-Position.Code:void init_lcd(void) { _delay_ms(20); LCD_RS_PORT &= ~(1<<LCD_RS_PIN); /* Steuerregister wird angesprochen */ write_data(0x3); /* 1.0x3 */ lcd_enable; _delay_ms(8); write_data(0x3); /* 2.0x3 */ lcd_enable; _delay_ms(1); write_data(0x3); /* 3.0x3 */ lcd_enable; _delay_ms(5); /*System-Set 4bit...*/ write_data(0x2); lcd_enable; _delay_ms(5); write_data(0x8); /* <-- Hier */ lcd_enable; _delay_ms(5); write_data(0x0); /*Display on/off, Display on, Unterstrich Cursor on, blinkender Cursor on*/ lcd_enable; _delay_ms(5); write_data(0xF); lcd_enable; _delay_ms(5); write_data(0x0); /* Cursor Home */ lcd_enable; _delay_ms(5); write_data(0x2); lcd_enable; _delay_ms(5); }
Mache ich vielleicht mit der Übertragung von oberem und unterem Nibble was falsch?
An der Stelle wo im Code "Hier" steht übertrage ich z.B., nachdem 4-Bit eingestellt wird, das untere Nibble von SystemSet.
Wenn man einmal vergisst, zB. ein unteres Nibble zu übertragen, ist dann ab dem Zeitpunkt alles so verschoben, dass das nächste obere Nibble als das vergessene untere Nibble gezählt wird?
Gruß
Martin







Zitieren

Lesezeichen