Hallo,
ich hab jetzt versucht das umzusetzten, aber es geht immer noch nicht:
Code:
void init_lcd(void)
{
 
 _delay_ms(20);
 LCD_E_PORT |= (1<<LCD_E_PIN);
 LCD_RS_PORT &= ~(1<<LCD_RS_PIN);  /* Steuerregister wird angesprochen */
 write_data(0x3);                  /* 1.0x3 */
 LCD_E_PORT &= ~(1<<LCD_E_PIN);
 
 _delay_ms(8);
 LCD_E_PORT |= (1<<LCD_E_PIN);
 write_data(0x3);                    /* 2.0x3 */
 LCD_E_PORT &= ~(1<<LCD_E_PIN);
 
 _delay_ms(1);
 LCD_E_PORT |= (1<<LCD_E_PIN);
 write_data(0x3);                      /* 3.0x3 */
 LCD_E_PORT &= ~(1<<LCD_E_PIN);
 
 LCD_RW_PORT |= (1<<LCD_RW_PIN);                /*Lesezugriff, warten bis RW 0 */
 DDRB = 0xfe;           /*PB0 als Eingang, um Busyflag einzulesen*/
 LCD_E_PORT |= (1<<LCD_E_PIN);
 while(LCD_DATA3_PORT & (1<<LCD_DATA3_PIN));   /*Warten bis Busy-Flag = 0 */
 LCD_RW_PORT &= ~(1<<LCD_RW_PIN);         /*Schreibzugriff einstellen*/
 DDRB = 0xff;
 LCD_E_PORT &= ~(1<<LCD_E_PIN);
 
 LCD_E_PORT |= (1<<LCD_E_PIN);     /*System-Set*/
 write_data(0x2);    
 LCD_E_PORT &= ~(1<<LCD_E_PIN);
 LCD_E_PORT |= (1<<LCD_E_PIN);
 write_data(0xC);    
 LCD_E_PORT &= ~(1<<LCD_E_PIN);
 

 LCD_E_PORT |= (1<<LCD_E_PIN);
 write_data(0x0);     /*Display on/off, Display on, Unterstrich Cursor on, blinkender Cursor on*/
 LCD_E_PORT &= ~(1<<LCD_E_PIN);
 LCD_E_PORT |= (1<<LCD_E_PIN);
 write_data(0xF);
 LCD_E_PORT &= ~(1<<LCD_E_PIN);
 
 LCD_E_PORT |= (1<<LCD_E_PIN);
 write_data(0x0);   /* Cursor Home */
 LCD_E_PORT &= ~(1<<LCD_E_PIN);
 LCD_E_PORT |= (1<<LCD_E_PIN);
 write_data(0x2);
 LCD_E_PORT &= ~(1<<LCD_E_PIN);
 
 LCD_RS_PORT |= (1<<LCD_RS_PIN);  /*Datenregister auswählen*/
 write_data(0x8);
 LCD_E_PORT &= ~(1<<LCD_E_PIN);
 
}
Das Display ist ein 4x27 mit 2 Controllern und es sind in der 1 und 3 Zeile die Balken zu sehen, was meiner Meinung nach darauf hindeutet, dass schon das System Set nicht funktioniert, da dort eigentlich mehr Zeilen eingestellt werden.