Hi Leute, komm mir ziemlich dämlich vor
ich hab das altbewährte DIP-204 LCD An meinen M16 gehängt und will für das laufende Projekt den Port A für die Steuerung verwenden.
4-Bit
a.2=RS
a.3=E
a.4=DB4
a.5=DB5
a.6=DB6
a.7=DB7
DB0-3 = GND
Hab mich schon von der Lib verabschiedet und versuch das Ding "von Hand" mit dem folgenden Code zu betreiben, aber funzt nit.
Ich tüftel da schon 2 Abende dran rum und seh vermutlich den Wald vor Bäumen nicht. Habt Ihr mal ne Minute Zeit mir n Fingerzeig zu geben?
Code:
$regfile = "m16def.dat"
$crystal = 8000000
$baud = 2400
'$lib "ea-dip-Zeit.lib"
'Initlcd
Declare Sub Lcdinit(byval Zeichen As Byte)
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2
Config Lcd = 20 * 4a
Initlcd
Config Pina.2 = Output
Config Pina.3 = Output
Config Pina.4 = Output
Config Pina.5 = Output
Config Pina.6 = Output
Config Pina.7 = Output
E Alias Porta.3
Rs Alias Porta.2
Call Lcdinit(&B00100100)
Waitms 5
Call Lcdinit(&B00001001)
Waitms 5
Call Lcdinit(&B00100000)
Waitms 5
Call Lcdinit(&B00000110)
Waitms 5
Call Lcdinit(&B00000001)
Waitms 5
Call Lcdinit(&B00001100)
Waitms 5
Cls
Dim Temp As Byte
Do
Waitms 500
' Hintergrundbeleuchtung aus
Portd.7 = 0
Incr Temp
Lcd Temp
Print Temp
Waitms 500
' Hintergrundbeleuchtung ein
Portd.7 = 1
Loop
'Schreibt die Initialisierungs - Bits zum LCD
Sub Lcdinit(byval Zeichen As Byte)
Print "init: ";
Print Zeichen
' Höherwertiges Nibble setzen
If Zeichen.4 = 1 Then Porta.4 = 1 Else Porta.4 = 0
If Zeichen.5 = 1 Then Porta.5 = 1 Else Porta.5 = 0
If Zeichen.6 = 1 Then Porta.6 = 1 Else Porta.6 = 0
If Zeichen.7 = 1 Then Porta.7 = 1 Else Porta.7 = 0
' Höherwertiges Nibble übertragen
E = 1
Waitms 1
E = 0
Waitms 1
' Niederwertiges Nibble setzen
If Zeichen.0 = 1 Then Porta.4 = 1 Else Porta.4 = 0
If Zeichen.1 = 1 Then Porta.5 = 1 Else Porta.5 = 0
If Zeichen.2 = 1 Then Porta.6 = 1 Else Porta.6 = 0
If Zeichen.3 = 1 Then Porta.7 = 1 Else Porta.7 = 0
' Niederwertiges Nibble übertragen
E = 1
Waitms 1
E = 0
Waitms 1
End Sub
Lesezeichen