Grundsätzlich ist dein Programm falsch aufgebaut. Du schreibst alles in die Headerdatei. Normalerweise hat man aber 2 Dateien, einer h-und einer c-Datei (abgesehen von der C-Datei mit der main). In die Headerdatei schreibt man die defines,... und in die c-Datei die einzelnen Funktionen.
Was mir aufgefallen das du immer nur 2ms als Pausen hast. Hier findest du mehr http://www.mikrocontroller.net/artic...-Tutorial:_LCD
Etwas genaueres zum Thema Init findest du hier: http://www.mikrocontroller.net/artic...g_des_Displays
Das ist meine Init-Routine
Code:
void LCD_Init(void)
{
DDRC |= 0x0F; //PC0 - PC3 als Ausgang
DDRB |= (1<<PB6) | (1<<PB7); //RS und EN als Ausgang
_delay_ms(15);
LCD_Ctrl (0x28);
_delay_ms(5);
LCD_Ctrl (0x28);
_delay_ms(1);
LCD_Ctrl (0x28);
/* 0b00001DCB
0 1
D: Display
aus ein
C: Cursor
aus ein
B: Blinken
aus ein
0x0F: Display ein, Cursor sichtbar, Blinken ein
0x0E: Display ein, Cursor sichtbar, Blinken aus
0x0C: Display ein, Cursor unsichtbar, Blinken aus
*/
_delay_ms(1);
LCD_Ctrl (0x0C);
_delay_ms(1);
LCD_Ctrl (0x01);
_delay_ms(1);
LCD_Ctrl (0x02);
_delay_ms(5);
}
Ich hoffe das ich dir helfen konnte.
MfG Hannes
Lesezeichen