Hi,
habe das gleiche Display auch. Hab hier im Forum mal einen Code zum Korrekten initialisieren gefunden gehabt, und mir daraus eine Vorlage gemacht. Ist zwar gerade für den Mega 16 aber das kann man ja ändern...
Die Pinbelegung des Displays bitte nur in den Alias-Zeilen anpassen!
Code:
' *** Vorlage für LCD-DIP 204-6 (20*4a) ***
$regfile = "m16def.dat" 'Mega16
$crystal = 8000000 '8Mhz interner Takt
Declare Sub Lcdinit
Declare Sub Lcdwrite(byval Zeichen As Byte)
'*** in diesen 6 Zeilen an eigene Pinbelegung anpassen.
_d4 Alias Porta.0
_d5 Alias Porta.1
_d6 Alias Porta.2
_d7 Alias Porta.3
_e Alias Portd.5
_rs Alias Portd.4
Config Lcdpin = Pin , Db4 = _d4 , Db5 = _d5 , Db6 = _d6 , Db7 = _d7 , E = _e , Rs = _rs
Config Lcd = 20 * 4a
Call Lcdinit
'***Hier kommt nun dein Programm rein***
' *** LCD-Routinen am Ende des Programmes***
Sub Lcdinit
Call Lcdwrite(&B00101100)
Call Lcdwrite(&B00001001)
Call Lcdwrite(&B00101000)
Call Lcdwrite(&B00000110)
Call Lcdwrite(&B00001100)
End Sub
Sub Lcdwrite(byval Zeichen As Byte)
' Höherwertiges Nibble setzen
If Zeichen.4 = 1 Then _d4 = 1 Else _d4 = 0
If Zeichen.5 = 1 Then _d5 = 1 Else _d5 = 0
If Zeichen.6 = 1 Then _d6 = 1 Else _d6 = 0
If Zeichen.7 = 1 Then _d7 = 1 Else _d7 = 0
' Höherwertiges Nibble übertragen
_e = 1
Waitms 1
_e = 0
Waitms 1
' Niederwertiges Nibble setzen
If Zeichen.0 = 1 Then _d4 = 1 Else _d4 = 0
If Zeichen.1 = 1 Then _d5 = 1 Else _d5 = 0
If Zeichen.2 = 1 Then _d6 = 1 Else _d6 = 0
If Zeichen.3 = 1 Then _d7 = 1 Else _d7 = 0
' Niederwertiges Nibble übertragen
_e = 1
Waitms 1
_e = 0
Waitms 1
End Sub
Lesezeichen