Es klappt leider nicht, ich weis nicht warum. Irgendwas muss an der Initialisierung noch nicht stimmen. Es wird kein einziges Zeichen auf dem LCD angezeigt, nur die Kontrastbeleuchtung ist zu sehen.

Das ist mein momentaner Code, er wurde leicht modifiziert - Ich habe vorhin auch noch vergessen die Pins des LCDs als Ausgänge zu setzen. Trotz dieser Änderung tut sich aber nichts. Auch habe ich dem LCD 100ms Sekunden zum initialisieren gegeben - Auch das änderte nichts.

Code:
'*****LCD*****
'PB3 - E
'PB4 - RS

'PD2 - PIN11 - D4
'PD3 - PIN12 - D5
'PD4 - PIN13 - D6
'PD5 - PIN14 - D7
'**************

$regfile = "m32def.dat"                                     'ATmega32
$crystal = 11059200                                         'Quarz: 11059200 Hz

Declare Sub Lcdwrite(byval Zeichen As Byte)



Ddrb = &B00011000
Ddrd = &B00111100


   'Pins des LCD-Modules

   Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portb.3 , Rs = Portb.4
   Waitms 100                                               'Zeit damit das LCD initialisieren kann
   Initlcd
   Cls                                                            'LCD löschen

   Config Lcd = 20 * 4a
   'Config Lcdbus = 4


   Call Lcdwrite(&B00101100)
   Waitms 5

   Call Lcdwrite(&B00001001)
   Waitms 5

   Call Lcdwrite(&B00101000)
   Waitms 5

   Call Lcdwrite(&B00000110)
   Waitms 5

   Call Lcdwrite(&B00001100)
   Waitms 5


Do


   Locate 1 , 1                                             'Spalte 1 und Zeile 1 des Displays
   Waitms 50
   Lcd "Hallo"                                              'Displayausgabe



Loop

   'Schreibt die Initialisierungs - Bits zum LCD
   Sub Lcdwrite(byval Zeichen As Byte)

     ' Höherwertiges Nibble setzen
     If Zeichen.4 = 1 Then Portd.2 = 1 Else Portd.2 = 0
     If Zeichen.5 = 1 Then Portd.3 = 1 Else Portd.3 = 0
     If Zeichen.6 = 1 Then Portd.4 = 1 Else Portd.4 = 0
     If Zeichen.7 = 1 Then Portd.5 = 1 Else Portd.5 = 0
     ' Höherwertiges Nibble übertragen
     Portb.3 = 1
     Waitms 1
     Portb.3 = 0
     Waitms 1

     ' Niederwertiges Nibble setzen
     If Zeichen.0 = 1 Then Portd.2 = 1 Else Portd.2 = 0
     If Zeichen.1 = 1 Then Portd.3 = 1 Else Portd.3 = 0
     If Zeichen.2 = 1 Then Portd.4 = 1 Else Portd.4 = 0
     If Zeichen.3 = 1 Then Portd.5 = 1 Else Portd.5 = 0
     ' Niederwertiges Nibble übertragen
     Portb.3 = 1
     Waitms 1
     Portb.3 = 0
     Waitms 1

   End Sub

End