Hallo zusammen,
zu später Stunde wollte ich mich ein wenig mit einem Grafik LCD
auseinander setzen welches ich vor kurzem auch hier im Forum internen
Markt gekauft hab.
Es handelt sich um ein 320 * 240 Display. Die Bezeichnung lautet:
WG320240BX.
Das ist nun das erste mal, dass ich mich mit Grafik LCDs beschäftige,
habe allerdings schon Erfahrung mit LCDs mit HD44780 Controller gemacht.
Bevor ich etwas auf dem Display ausgeben kann will ich aber erst mal ein
wenig die Ansteuerung verstehen, nicht unbedingt eine Library kopieren
und einfügen.
Also nun konkret zu meinen Fragen:
1. Laut Datenblatt des Displays (siehe Anhang) lässt sich das Display
mit einem 6800 und 8080 Interface ansprechen. Ein wenig habe ich nun
gegooglet und festgestellt, dass dies nur unterschiedliche Controller
sind. Allerdings wird unterschiedlich bei der Ansteuerung verfahren. Ist
es grundsätzlich egal mit welchem Interface ich verfahre? Weiterhin ist
in der Spalte "Level" nichts dazu angegeben. Es steht lediglich 1:68,
0:80 in der Zeile Beschreibung. Soll das nun bedeuten bei einer 1 ist
das 6800 Interface zu benutzen und bei einer 0 das 8080 Interface? Ist
es egal wann dieser Zustand vor dem senden von Befehlen erreicht wird?
2. Pin 15 steht für Chip select. Dieser ist bei 0 Aktiv.
Allerdings ist nur ein s1d13700 verbaut. Heißt das, ich kann den Pin
dauerhaft auf 0 lassen, da ich keinen anderen Chip ansprechen will?
3. Im Datenblatt des s1d13700 ist von "System Address pins 1 - 15" die
Rede. Diese werden im Datenblatt des Displays selber nicht erwähnt. Auf
der Platine selber sind diese auch mit Vss verbunden. Das bedeutet nun,
es ist "nur" eine indirekte Adressierung möglich richtig?
Wie funktioniert diese Adressierung nun? Was sind die unterscheide zur
direkten?
Kann ich einfach, ähnlich wie bei dem HD44780 Controller einen Pin (hier
A0) auf den Zustand für Befehle setzen, einen Befehl durch die
Anschlüsse "Data bus line" schicken und mit "Enable" ist die Sache dann
soweit gegessen? (würde dem 6800 Interface entsprechen richtig?)
4. Um ein LCD mit dem HD44780 Controller zu Initialisieren braucht es ja
einige Unterschiedliche Bytes als Ausgabe. Im Datenblatt des s1d13700
Controllers steht nun nur: "SYSTEM SET - Initializes device and display
- Control Byte Value (40h) - No. of Bytes (8)"
Was soll nun ausgegeben werden um das Display zu Initialisieren? Was ist
40h für eine Schreibweise und wofür steht es? Und was hat die Anzahl der
Bytes damit zu tun? Leider kann ich hier gerade nicht besonders viel
rein interpretieren.
5. Kurze Frage zum Schluss: Am Anfang des Datenblattes steht" Version: B
- Page 6 - Modify Vdd-Vss 5V". Ich nehme mal an die gesamte Logik kann
nun mi 5V betrieben werden richtig? Ich möchte ja nicht direkt das
schöne Display grillen.
MfG
Ganz spontan, allgemein und unkonkret:
1. Im 8080-Modus sind die Steuerleitungen "Read" und "Write", im
6800-Modus sind sie "Direction" und "Enable". Wenn du die Ansteuerung
per Hand machst, ist es egal, ansonsten solltest du das auswählen, was
zu deinem verwendeten Controller passt - und dann den Modus-Auswahlpin
entsprechend mit Vcc oder GND fest verdrahten.
2. Ja, du kannst Chip-Select dauerhaft aktivieren. Sinnvoller ist es
aber, diesen Pin anzusteuern. Damit verhinderst du, dass der Baustein
sich irgendwelche Störungen einfängt, wenn irgendwelche Pins gerade
floaten oder so.
3. Ja, scheint als ob die Adresspins (außer A0) nicht rausgeführt sind.
Wie man das indirekte Interface benutzt, steht in den Kapiteln 11 und 14
der Epson-Dokumentation.
4. Die Darstellung 40h ist dasselbe wie 0x40 und du sollst, wenn du
dieses Register mit indirekter Adressierung beschreibst, die acht Bytes
für Register 0x00 bis 0x07 gleich als Parameter mitschicken.
Zitat: "The SYSTEM SET command is used to configure the S1D13700F01 for
the display used and to exit power save mode when indirect addressing is
used. The values from REG[00h] through REG[07h] are passed as parameters
when the SYSTEM SET command is issued."
5. Ich würde Kapitel 5 (Electrical Characteristics) beachten, ehe ich da
doof rumrate. Da steht, dass du 5V für die Logik benutzen sollst, und
23.8V für das Display.
Hallo. Danke euch soweit.
Ich habe mir einen kleinen Adapter gebastelt und das ganze mal
angeschlossen. Soweit funkrioniert die Hintergrundbeleuchtung. Außerdem
bekomme ich auch die Kontrastspannung von -23.8V.
Zu Punkt 4 hätte ich aber noch Fragen.
Auf der Seite 70 steht wie man das LCD initialisiert. Allerdings
verstehe ich die Tabelle nicht ganz.
So wie ich das verstehe muss ich 9 Bytes ausgeben. Die Bytes selber
werde auf Seite 103 erklärt.
Auf seite 69 steht, dass das Register 8 Bytes besitzt. Diese sind
irgendwie durch nummeriert. Von C bis P8.
Sind C bis P8 nun Register womit ich parameter für die Initialisierung
setzte? Wie kann ich ein bestimmtes Register (C bis P8) ansprechen?
Oder bin ich auf dem Holzweg?
MfG
Ronny S. schrieb:> K. M. schrieb:>> Zu Punkt 4 hätte ich aber noch Fragen.>> Auf der Seite 70 steht wie man das LCD initialisiert. Allerdings>> verstehe ich die Tabelle nicht ganz.>> Hallo,>> lade Dir das mal und schaue es Dir an sollte alles drin sein was Du> brauchst.>> http://www.winstar.com.tw/service.php?lang=de&EID=...>> http://www.winstar.com.tw/download.php?DID=12>> Gruß Ronny
Ah es gibt also doch Beispiel Code. Danke für den Hinweis!
Leider ist der Code für 8051 Controller.
Zum Glück Aber in Assembler, sollte also halbwegs gut
für AVR Controller übernommen/umgeschrieben werden können.
Also ich habe mal heute versucht auf dem Display was auszugeben. Das
funktioniert leider nicht. Also prinzipiell habe ich ab Seite 103
des Datenblattes die Tabelle bis zu der Ausgabe von "E" und "P" versucht
in Code umzusetzen. Leider bekomme ich weder E oder P noch Cursor
angezeigt.
Ich habe die Pins 7-14 mit den Pins 0 - 7 von PORTD verbunden.
Die Leitungen Enable, A0 etc. liegen auf PORTB. (siehe code)
Kann mir jemand sagen ob ich irgendwelche offensichtlichen Fehler drin
habe?
Das Kontrast Poti ist mit dem wiper auf V0, die anderen Seiten sind auf
+5V und -23,8V.
Ronny S. schrieb:> Sorry wollte das eigentlich noch ändern und den Code anhägen.> Eventuell könnte das bitte mal ein Mod machen, Danke.> Gruß Ronny
Leider nicht ganz für jemanden der kaum C kann.
Kannst du mir evtl. sagen an welche Pins die Datenleitungen
angeschlossen werden? Irgendwie finde ich die Info nirgends.
Bei meinem Assembler Code habe ich noch den Stackpointer richtig
gesetzt, da sonst das Programm gar nichts gemacht hat. Allerdings
bekomme ich immer noch nichts angezeigt.
Ich bin leider nicht wirklich fit in C deshalb verstehe ich den Code nur
teilweise. Außerdem wollte ich erst nur ein oder zwei Zeichen ausgeben.
Kann mir evtl sagen wieso mein ASM Code nicht funktioniert?
Ich habe am Anfang noch den Stackpointer gesetzt und einen kleinen Delay
eingefügt. Etwa 500µs.
Mir ist außerdem aufgefallen, dass der Pegel am SEL Pin auf wenige mV
abfällt wenn dieser mit dem Display verbunden ist? Kann das so stimmen?
Es fließen 77mA!
MfG