Herzlichen Dank - ich war auch schon am Verzweifeln, weil das Display irgentwie absolut nicht funzen wollte. Bis man mich vom RC-Line-Forum mal hierhin verwiesen hatte. Ich habe das jetzt gerade ausprobiert - und endlich läufts...
Ich habe das jetzt so gemacht: - Das Programm zählt in jedem Durchlauf eine Integervariable um 1 rauf beginnend bei -100 und gibt diese in einem Text auf den 4 Zeilen des Displays aus....
Code:
$regfile = "m16def.dat" 'Mega16
$crystal = 3686400
Declare Sub Lcdinit
Declare Sub Lcdwrite(byval Zeichen As Byte)
Config Lcdpin = Pin , Db4 = Porta.0 , Db5 = Porta.1 , Db6 = Porta.2 , Db7 = Porta.3 , E = Portd.5 , Rs = Portd.4
Config Lcd = 20 * 4a
Call Lcdinit
Dim H As Integer
H = -100
Cls
Do
Locate 1 , 1
Lcd "1H: " ; H ; "m"
Locate 2 , 1
Lcd "2H: " ; H ; "m"
Locate 3 , 1
Lcd "3H: " ; H ; "m"
Locate 4 , 1
Lcd "4H: " ; H ; "m"
Incr H
Loop
Sub Lcdinit
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
End Sub
Sub Lcdwrite(byval Zeichen As Byte)
' Höherwertiges Nibble setzen
If Zeichen.4 = 1 Then Porta.0 = 1 Else Porta.0 = 0
If Zeichen.5 = 1 Then Porta.1 = 1 Else Porta.1 = 0
If Zeichen.6 = 1 Then Porta.2 = 1 Else Porta.2 = 0
If Zeichen.7 = 1 Then Porta.3 = 1 Else Porta.3 = 0
' Höherwertiges Nibble übertragen
Portd.5 = 1 'E setzen
Waitms 1
Portd.5 = 0 'E rücksetzen
Waitms 1
' Niederwertiges Nibble setzen
If Zeichen.0 = 1 Then Porta.0 = 1 Else Porta.0 = 0
If Zeichen.1 = 1 Then Porta.1 = 1 Else Porta.1 = 0
If Zeichen.2 = 1 Then Porta.2 = 1 Else Porta.2 = 0
If Zeichen.3 = 1 Then Porta.3 = 1 Else Porta.3 = 0
' Niederwertiges Nibble übertragen
Portd.5 = 1 'E setzen
Waitms 1
Portd.5 = 0 'E rücksetzen
Waitms 1
End Sub
Wenn andere Pins benutzt werden, muß das dann natürlich angepaßt werden. Also Danke daß ich das jetzt auch ordentlich am laufen haben kann...
Lesezeichen