Hallo nochmal,
bin zwar nicht direkt zum Ausprobieren der Tipps gekommen, habe nun aber die Lösung mithilfe der Tips gefunden.
Den Code habe ich mal beigefügt:
Code:
'Pins des LCD-Modules setzen ggf. an eigene Anschlüsse anpassen
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.1
Initlcd
'Config Lcd = 20 * 4 ' wird nicht benötigt daher auskommentiert
'Config Lcdbus = 4 ' oder weglassen :-)
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
'...
' hier LCD - Ausgaben und Hauptprogramm
'...
'Schreibt die Initialisierungs - Bits zum LCD
Sub Lcdwrite(byval Zeichen As Byte)
' Höherwertiges Nibble setzen
If Zeichen.4 = 1 Then Portc.4 = 1 Else Portc.4 = 0
If Zeichen.5 = 1 Then Portc.5 = 1 Else Portc.5 = 0
If Zeichen.6 = 1 Then Portc.6 = 1 Else Portc.6 = 0
If Zeichen.7 = 1 Then Portc.7 = 1 Else Portc.7 = 0
' Höherwertiges Nibble übertragen
Portc.3 = 1
Waitms 1
Portc.3 = 0
Waitms 1
' Niederwertiges Nibble setzen
If Zeichen.0 = 1 Then Portc.4 = 1 Else Portc.4 = 0
If Zeichen.1 = 1 Then Portc.5 = 1 Else Portc.5 = 0
If Zeichen.2 = 1 Then Portc.6 = 1 Else Portc.6 = 0
If Zeichen.3 = 1 Then Portc.7 = 1 Else Portc.7 = 0
' Niederwertiges Nibble übertragen
Portc.3 = 1
Waitms 1
Portc.3 = 0
Waitms 1
End Sub
Das kann man zwar bestimmt noch besser machen, aber es funktioniert.
Ich habe jetzt "nur" noch das Problem, dass das LCD mit den Bascom-Befehlen
- Lowerline die dritte Zeile und mit
- Thirdline die Zweite Zeile anspricht.
Das ist zwar nicht schön aber kein Problem, da ich das ja im Code berücksichtigen kann. (Nur für die Dokumentation ist es etwas verwirrend.)
Wenn hier noch jemand einen Tipp für mich hat, ist der gerne willkommen, ansonsten lasse ich es so wie es jetzt ist.
Danke nochmal für die Hilfe.
Gruß, Jörg
Lesezeichen