Hallihallo...
Ich habe ein altes Nokia 5210 rumliegen gehabt, da dachte ich mir... das display passt gut in den PC zur Überwachung und Steuerung meiner WaKü.
Hab mir code aus Beispielen übernommen und es läuft auch irgendwie.
Nur scheinen die Kommandos nicht richtig zu funktionieren, wie z.b. RAM adresse auf NULL, oder invertieren des Displays.
ich benutze nen Mega16 an 5V, das Display LPH7366 (NOKIA 5210) mit integriertem Controller PCD8544 an 2,9V
Angesprochen wird das Display mit hard-SPI
Im Programm soll ersteinmal das LCD getestet werden und dann an erster Stelle ein Rechteck blinken.
Der Test klappt auch, aber das Rechteck wandert auf dem Bildschirm immer Zeichen für Zeichen weiter.
Hat jemand vielleicht eine Idee, woran das liegen könnte?
Hab noch nicht so die Erfahrung mit der Materie...
Code:
$regfile = "m16def.dat"
$crystal = 12000000
Config Portb = Output
Declare Sub Ukommando(byval Wert As Byte)
Declare Sub Udata(byval Wert As Byte)
Declare Sub Initialisierung
Declare Sub Lcdloeschen
Declare Sub Lcdtest
Declare Sub Invert
Dim Xx As Byte
Config Spi = Hard , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 4
Dc Alias Portb.0
Ce Alias Portb.2
Re Alias Portb.1
Re = 0 'Reset
Waitus 250
Re = 1
Spiinit
Weiter:
Initialisierung
Lcdloeschen
Lcdtest
'Initialisierung
Do
Lcdloeschen
Waitms 500
Udata &B11111111
Udata &B10000001
Udata &B10000001
Udata &B10000001
Udata &B11111111
Udata &B00000000
Waitms 500
Loop
Sub Invert
Ukommando &H21 'Erweiterter Kommando-Mode
Ukommando &HC8
Ukommando &H06
Ukommando &H13
Ukommando &H0D
Ukommando &H20 'Wieder in den normalen Kommando-Mode
Ukommando &H21
Ukommando &H0D
Ukommando &H20
End Sub
Sub Lcdtest
Lcdloeschen
For Xx = 1 To 84
Udata &B11111111
Udata &B11111111
Udata &B11111111
Udata &B11111111
Udata &B11111111
Udata &B11111111
Next
Waitms 500
Ukommando &H24
Waitms 500
Ukommando &H20
Invert
Waitms 500
Lcdloeschen
End Sub
Sub Initialisierung
Ukommando &H21 'Erweiterter Kommando-Mode
Ukommando &HC8
Ukommando &H06
Ukommando &H13
Ukommando &H20 'Wieder in den normalen Kommando-Mode
Ukommando &H0C
End Sub
Sub Lcdloeschen
Local I As Word
Ukommando &H0C 'Normaler Bildschirm
Ukommando &H80
Ukommando &H21 'Erweiterter Kommando-Mode
'Ukommando &H80 'Setze RAM-Adresse auf 0
Ukommando &H20 'Normaler Kommando-Mode
Ukommando &H0C 'Normaler Bildschirm
Ukommando &H80 'Setze RAM-Adresse auf 0
Dc = 1 'Sicherstellen, dass man im Daten-Mode ist
For I = 0 To 503
Udata &H00
Next
Ukommando &H0C 'Normaler Bildschirm
Ukommando &H80 'RAM auf adresse 0
End Sub
'------------------------------------------------------------------------------
Sub Ukommando(byval Wert As Byte)
Dc = 0 'in den Kommando-Mode
Spiout Wert , 1
Dc = 1 'zurück in den Daten-Mode
End Sub
Sub Udata(byval Wert As Byte)
Dc = 1 'um sicher zu gehen, dass man auch wirklich im Datenmode ist
Ce = 0
Spiout Wert , 1
Ce = 1
End Sub
Danke schonmal, wäre gut, wenn jemand nen Gedanken dazu hätte...
Stefan
Lesezeichen