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







Zitieren

Lesezeichen