Hallo Tobi,
habe auch ein LCD mit KS0073 und kenne diesen Fehler. Die Ursache
ist tatsächlich die Initialisierungssequenz, die du an den
Controller sendest. Je nach LCD-Typ, 2x16 bzw.2x20 Zeichen oder
4x20 Zeichen mußt du andere Kommandos benutzen und ganz wichtig die
Wartezeiten einhalten. Das Abfragen des Buzy-Flags funktioniert nämlich
erst, wenn das LCD initialisiert ist.
Schau am besten mal im Datenblatt nach. Das findest du bei
'www.lcd-module.de'.
Hier der Kernabschnitt meiner LCD-Initialisierung in C:
//-------------------------------------------------------------------
// Initialize Display at Startup
//-------------------------------------------------------------------
void DSP_Init(void)
{
// All port bits as output
DDR(LCD_DATA_PORT) = 0xFF;
// Wait 25ms or more after power-on
Wait_us(25000);
// Set 4-Bit I/O Mode and Extented Function Set
LCD_Write(CMD_FUNCTION_SET | FS_SET_EXT_FCT, 0);
Wait_us(43);
// Set 4 Lines Mode
LCD_Write(CMD_DISPLAY_CONTROL | DCE_4LINEMODE, 0);
Wait_us(43);
// Clear Extented Function Set
LCD_Write(CMD_FUNCTION_SET | FS_CLR_EXT_FCT, 0);
Wait_us(43);
// Set Display ON and Cursor ON and Blink ON
LCD_Write(CMD_DISPLAY_CONTROL | DC_DISPLAY_ON /*| DC_CURSOR_ON
| DC_BLINK_ON*/, 0);
}