Wasi
19.12.2005, 16:42
Hi,
bin gerade dabei daten an das display Nokia 3310 zu senden,
das funktioniert auch teilweise.
Wenn eine taste gedrückt wird, wird was Übertragen und am Display ausgegeben.
Wird noch mal gedrückt wird es dann in einer anderen Position Ausgegeben.
Wie kann ich es anstellen, das nach Tastendruck die Ausgabe immer an der
selben stelle erscheint?
Unterprogramme:
Declare Sub Ukommando(byval Wert As Byte)
Declare Sub Udata(byval Wert As Byte)
Declare Sub Initialisierung
Declare Sub Lcdloeschen
Declare Sub Keypressed
Declare Sub Menueuhr
Declare Sub Menuetrip1
Declare Sub Menuetrip2
Declare Sub Menuekm
Tastendruck:
Do
Debounce Pind.0 , 0 , Keypressed , Sub
Loop
Nach dem Tastendruck (menü):
Sub Keypressed
Select Case Menue
Case Menueuhr : Menuetrip1
Case Menuetrip1 : Menuetrip2
Case Menuetrip2 : Menuekm
Case Else : Menueuhr
End Select
End Sub
Unterprogramm:
' ----------------Uhr des Menüs----------------------------------------------
Sub Menueuhr
Lcdloeschen
Udata &H3F
Udata &H40
Udata &H40
Udata &H40
Udata &H3F
Udata &H00
Udata &H7F
Udata &H08
Udata &H08
Udata &H08
Udata &H7F
Udata &H00
Udata &H7F
Udata &H09
Udata &H19
Udata &H29
Udata &H46
Menue = Menueuhr
End Sub
' ----------------Trip1 des Menüs----------------------------------------------
Sub Menuetrip1
Lcdloeschen
Udata &H01
Udata &H01
Udata &H7F
Udata &H01
Udata &H01
Udata &H00
Udata &H7F
Udata &H09
Udata &H19
Udata &H29
Udata &H46
Udata &H00
Udata &H00
Udata &H41
Udata &H7F
Udata &H41
Udata &H00
Udata &H00
Udata &H7F
Udata &H09
Udata &H09
Udata &H09
Udata &H06
Udata &H00
Udata &H00
Udata &H42
Udata &H7F
Udata &H40
Udata &H00
Menue = Menuetrip1
End Sub
Initialisierung:
' ----------------Initialisierung----------------------------------------------
Sub Initialisierung
Ukommando &H21 'Erweiterter Kommando-Mode
Ukommando &H13 'Bias (Kontrast) Einstellung Original Nokia = &H13
Ukommando &HA8 'Kontrasteinstellung Original Nokia = &HC8
Ukommando &H06
Ukommando &H0C
Ukommando &H20 'Wieder in den normalen Kommando-Mode
End Sub
Display Löschen:
' ----------------Display Löschen----------------------------------------------
Sub Lcdloeschen
Local I As Word
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
End Sub
Kommando & Daten senden:
'------------Kommando Senden---------------------------------------------------
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
'------------Daten Senden------------------------------------------------------
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
Das Datenblatt vom Nokia hab ich mir schon angesehen, komm jedoch damit nicht klar.
http://www.mikrocontroller.net/attachment.php/99082/pcd8544.pdf
Da steht das man in der X Richtung das z.B. so machen kann:
"&B10000100"
Jetzt sollte es im Achten Pixel beginnen, macht er aber nicht.
Ich hoffe da kann mir einer weiterhelfen!
bin gerade dabei daten an das display Nokia 3310 zu senden,
das funktioniert auch teilweise.
Wenn eine taste gedrückt wird, wird was Übertragen und am Display ausgegeben.
Wird noch mal gedrückt wird es dann in einer anderen Position Ausgegeben.
Wie kann ich es anstellen, das nach Tastendruck die Ausgabe immer an der
selben stelle erscheint?
Unterprogramme:
Declare Sub Ukommando(byval Wert As Byte)
Declare Sub Udata(byval Wert As Byte)
Declare Sub Initialisierung
Declare Sub Lcdloeschen
Declare Sub Keypressed
Declare Sub Menueuhr
Declare Sub Menuetrip1
Declare Sub Menuetrip2
Declare Sub Menuekm
Tastendruck:
Do
Debounce Pind.0 , 0 , Keypressed , Sub
Loop
Nach dem Tastendruck (menü):
Sub Keypressed
Select Case Menue
Case Menueuhr : Menuetrip1
Case Menuetrip1 : Menuetrip2
Case Menuetrip2 : Menuekm
Case Else : Menueuhr
End Select
End Sub
Unterprogramm:
' ----------------Uhr des Menüs----------------------------------------------
Sub Menueuhr
Lcdloeschen
Udata &H3F
Udata &H40
Udata &H40
Udata &H40
Udata &H3F
Udata &H00
Udata &H7F
Udata &H08
Udata &H08
Udata &H08
Udata &H7F
Udata &H00
Udata &H7F
Udata &H09
Udata &H19
Udata &H29
Udata &H46
Menue = Menueuhr
End Sub
' ----------------Trip1 des Menüs----------------------------------------------
Sub Menuetrip1
Lcdloeschen
Udata &H01
Udata &H01
Udata &H7F
Udata &H01
Udata &H01
Udata &H00
Udata &H7F
Udata &H09
Udata &H19
Udata &H29
Udata &H46
Udata &H00
Udata &H00
Udata &H41
Udata &H7F
Udata &H41
Udata &H00
Udata &H00
Udata &H7F
Udata &H09
Udata &H09
Udata &H09
Udata &H06
Udata &H00
Udata &H00
Udata &H42
Udata &H7F
Udata &H40
Udata &H00
Menue = Menuetrip1
End Sub
Initialisierung:
' ----------------Initialisierung----------------------------------------------
Sub Initialisierung
Ukommando &H21 'Erweiterter Kommando-Mode
Ukommando &H13 'Bias (Kontrast) Einstellung Original Nokia = &H13
Ukommando &HA8 'Kontrasteinstellung Original Nokia = &HC8
Ukommando &H06
Ukommando &H0C
Ukommando &H20 'Wieder in den normalen Kommando-Mode
End Sub
Display Löschen:
' ----------------Display Löschen----------------------------------------------
Sub Lcdloeschen
Local I As Word
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
End Sub
Kommando & Daten senden:
'------------Kommando Senden---------------------------------------------------
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
'------------Daten Senden------------------------------------------------------
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
Das Datenblatt vom Nokia hab ich mir schon angesehen, komm jedoch damit nicht klar.
http://www.mikrocontroller.net/attachment.php/99082/pcd8544.pdf
Da steht das man in der X Richtung das z.B. so machen kann:
"&B10000100"
Jetzt sollte es im Achten Pixel beginnen, macht er aber nicht.
Ich hoffe da kann mir einer weiterhelfen!