Nokia 3310 Display am s2313 oder Mega8
Hallo,
dank ebay bin ich Besitzer von ein paar Nokia 3310 Displays. Die möchte ich gerne per AVR und Bascom ansteuern, cool wäre wenn es mit nem s2313 oder wenigsten mit einem Mega8 ginge. Hat jemand Erfahrung bzw. ne Schaltung und/oder Beispielcode. Ich komm z.B. mit den Anschluss-Bezeichnungen nicht ganz zurecht. Gesucht habe ich im Forum schon, habe aber leider nichts für mich gefunden.
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
Nokia-Display 3310 sind ausläufer. Dafür wird kein Programm mehr geschrieben.
Mach nicht den gleichen Fehler wie S.C. und sag niemals nie :D
@Stevensen
suchen macht schlau.
Ich hab in ner knappen Minute gleich Zwei Beispiele für Bascom gefunden.
(Fast-AVR hat ja schon support für das 3310) :wink:
Liste der Anhänge anzeigen (Anzahl: 1)
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
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
das Thema ist zwar schon etwas älter aber vielleicht haben ja noch andere ein Problem bei der Inbetriebnahme?
Ich habe mein Display an einen Mega 8 angeschlossen und das Programm on http://www.mkprojekt.de/index.php/content/view/2/2/ aufgespielt.
Code:
$regfile = "m8def.dat"
$crystal = 4000000
Config Portc = Output
Declare Sub Ukommando(byval Wert As Byte)
Declare Sub Udata(byval Wert As Byte)
Declare Sub Initialisierung
Declare Sub Lcdloeschen
Config Spi = Hard , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 4
Dc Alias Portc.0
Ce Alias Portc.5
Re Alias Portc.2
Re = 0 'Reset
Waitus 250
Re = 1
Spiinit 'Initialisierung der SPI-Schnittstelle
Do
Portc.4 = 1
Initialisierung
Lcdloeschen
Udata &H7F
Udata &H02
Udata &H04
Udata &H02
Udata &H7F
Udata &H00
Portc.4 = 0
Wait 2
Loop
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 &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
'------------------------------------------------------------------------------
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
Das Display zuckt kurz wenn ich Spannung anlege oder wegnehme. Ich bin mir bei den Widerständen etwas unsicher da zu diesen keine Werte ngegeben waren.
Hat jemand ne Idee wie es richtig sein muss?
Tobias