hi ho...

falls dein LCD immer noch net will ist hier mal ein ausschnitt aus meinem quelltext. das display wird über einen 4 bit bus betrieben.

die sendefunktionen:

Code:
void sendb(unsigned char datenh, unsigned char datenl) // Befehle senden
{
 PORTC = datenh;   // High - Nibble
 PORTB |= 1 << E;  // Enable 1
 _delay_us(40);
 PORTB &= ~1 << E; // Enable 0

 PORTC = datenl;   // Low - Nibble
 PORTB |= 1 << E;  // Enable 1
 _delay_us(40);
 PORTB &= ~1 << E; // Enable 0
}

void sendd(unsigned char datenh, unsigned char datenl) // Daten senden
{
 PORTC = datenh + 16; // High - Nibble
 PORTB |= 1 << E;     // Enable 1
 _delay_us(40);
 PORTB &= ~1 << E;    // Enable 0

 PORTC = datenl + 16; // Low - Nibble
 PORTB |= 1 << E;     // Enable 1
 _delay_us(40);
 PORTB &= ~1 << E;    // Enable 0
}
initialisierung des displays:

Code:
 PORT C:

 7  6  5  4  3  2  1  0 
 -  -  RW RS D7 D6 D5 D4 */

 // 4 bit 2 zeilen 5x7 dots -> 00101000

 sendb(0b0010, 0b1000);

 // display on, cursor off, blink off -> 00001100

 sendb(0b0000, 0b1100);

 // Clear Display & Cursor Home

 sendb(0b0000, 0b0001);
das "+ 16" beim daten senden bedeutet, daß die RS leitung auf "high" gezogen wird. (daten -> RS=1, befehle -> RS=0)

mfg