Hallo!
Ich habe das gleiche Problem! (Scheint ne Krankheit zu sein)
Wie oben in dem Link beschrieben habe ich das mal versucht. Geht auch eigentlich optisch echt gut.
Mein problem ist aber dass das ganze wohl ziemlich langsam ist.
ich stell mal den Code dazu den ich benutze.
Code:
'ATMega8
'11059200 Hz
'BascomAVR 1.11.7.9
$crystal = 11059200
Declare Sub Lcdwrite(byval Zeichen As Byte)
'Pins des LCD-Modules setzen ggf. an eigene Anschlüsse anpassen
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
Initlcd
Config Lcd = 20 * 4a ' 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
Cls
Dim N As Byte
Do
For N = 1 To 255
Locate 3 , 12
Lcd N
Waitms 500
Cls
Next
Loop
End
Sub Lcdwrite(byval Zeichen As Byte)
' Höherwertiges Nibble setzen
If Zeichen.4 = 1 Then Portc.3 = 1 Else Portc.3 = 0
If Zeichen.5 = 1 Then Portc.2 = 1 Else Portc.2 = 0
If Zeichen.6 = 1 Then Portc.1 = 1 Else Portc.1 = 0
If Zeichen.7 = 1 Then Portc.0 = 1 Else Portc.0 = 0
' Höherwertiges Nibble übertragen
Portc.4 = 1
Waitms 1
Portc.4 = 0
Waitms 1
' Niederwertiges Nibble setzen
If Zeichen.0 = 1 Then Portc.3 = 1 Else Portc.3 = 0
If Zeichen.1 = 1 Then Portc.2 = 1 Else Portc.2 = 0
If Zeichen.2 = 1 Then Portc.1 = 1 Else Portc.1 = 0
If Zeichen.3 = 1 Then Portc.0 = 1 Else Portc.0 = 0
' Niederwertiges Nibble übertragen
Portc.4 = 1
Waitms 1
Portc.4 = 0
Waitms 1
End Sub
Bis jetzt zum nächsten Wert hochgezählt wird, dauert es ganze 4! Sekunden.
Kann mir jemand sagen warum?
Ausserdem: Wenn man das LCD nicht säubert hat man 2 so komische KLammerreihen, woher kommen die?
Danke schonmal für die Hilfe
Marten83
Lesezeichen