Forum: Mikrocontroller und Digitale Elektronik LCD E8504CZZ von Pollin und allgemein


von Christian W. (clupus)


Lesenswert?

Hallo an alle,

ich bin gerade bei der Suche nach Informationen bzgl. der Ansteuerung 
von LCDs.

Hier scheint es grundsätzlich verschiedene Ansätze zu geben: Zum einen 
die mit den Pins RS, R/W, E und den Datenbits (vgl. Tutorial). Zum 
anderen gibt es Displays mit /CS, CP, L, FLM & Datenbits (oder so 
ähnlich bezeichnet).
Wie ist die Ansteuerung des 2. Typs? Gibts da ein gutes HowTo? Ich habe 
nur welche für den 1. Typ gefunden.

Pollin hat derzeit ein Display im Angebot (Nr. 120 245) mit der 
Bezeichnung E8504CZZ. Im Netz hab ich nichts gefunden, was mir 
weitergeholfen hätte, das Display anzusteuern. Also weder zur Hard- noch 
zur Software.
Kann mir da jemand einen Tipp geben? (Kann sein, dass sich das mit der 
1. Frage von alleine erledigt)

Vielen Dank schonmal für eure Unterstützung
Christian

von Wigbert P. (wigbert) Benutzerseite


Angehängte Dateien:

Lesenswert?


von Wigbert P. (wigbert) Benutzerseite


Lesenswert?

PS.

Kontrastspannung ist bei dem Display aber positiv

Wigbert

von Ulrich 1. (picbastler)


Lesenswert?

Die mit RS, R/W und E sind welche mit HD44780 oder einem kompatiblen 
Controller. Dem schickst du z.b. zeichenweise eine Zeile Text, er hat 
einen Zeichengenerator stellt dir deinen Text dar. Fertig.

Dann gibt es welche mit z.B. T6963C (bei Pollin das "Solomon 
Grafikdisplay"), auch damit kann man als Einsteiger noch recht gut 
umgehen. Er hat einen Text-Modus, der im Prinzip so ähnlich arbeitet wie 
oben, und zusätzlich kann man pixelweise malen.

Dein schickes Grafik-Display aber hat überhaupt keinen Controller. Wenn 
ich es richtig verstanden habe, musst du hier die LCD-Punkte zeilenweise 
einzeln und immer wieder hineintakten, und das mit dem richtigen Timing 
und ein paar zusätzlichen Spezialitäten. D.h. du musst das gesamte Bild 
in einem Speicher selber aufbauen und auch deine Buchstaben mit eigenem 
Zeichengenerator selber erzeugen. Genau das macht Benedikts 
selbstgebauter Controller.

von Wigbert P. (wigbert) Benutzerseite


Lesenswert?

ja richtig,

das E8504CZZ ist ein Controllerloses Display das nur Pixel übergeben
bekommt.

HD44780 und seine "Verwandten":

RS wäre das Umschalten von Daten/ Kommandos
Daten wären im wesentlichen der ASCII Zeichensatz
Komando wäre zB. Initialisierung
RW wäre das Umschalten von Read/ Write Mode
E wäre Chip Enable Signal

anders bei einen controllerlosen Display:

in unseren Beispiel werden D3 D2 D1 D0 D3 D2 D1 D0....
von links nach rechts in eine Zeile geschrieben.
Wir haben nur 4 Datenleitungen
Wir haben 320 Bits(Pixel) in der Zeile und 240 Zeilen
untereinander auf dem Display
Mit:
Frame = FLM beginne mit Bildanfang (First Line Maker)
Load beginne neue Zeile
CP speichert die letzten übertragenen 4 Bits auf dem Display
und rückt in der Zeile weiter nach rechts

wird jetzt das Display voll geschrieben.
Wollen wir jetzt ein "H" irgendwo auf dem Display "malen"
muss das der Graphikkontroller oder Benedikts AVR
organisieren.

Wigbert

von fchk (Gast)


Lesenswert?

Ich versuche hier, dieses Display an einem Spartan 3 zum Laufen zu 
bekommen, aber bislang erfolglos. Daher die Frage, wie DU das gemacht 
hast.

Wie hoch ist Dein Pixeltakt?
Pixeltakt=CP Pin 18
Zeilentakt=LOAD Pin 19
First Line Marker=FLM Pin 20
Display On=Pin 14, immer logisch 1

80 Pixeltakte, danach ein Zeilentakt
Wann genau kommt bei Dir FLM?
Braucht das Teil irgendwelche Dummy-Zeilen?

Ich frage jetzt einfach mal ganz doof - das ist bestimmt nur eine 
Kleinigkeit. Das 640x480-Display von Pollin lief hier auf Anhieb.

Gruß fchk

von micha (Gast)


Lesenswert?

Hi! habe jezt endlich zeit mit LCDs zu spielen:)
brauche da einige Antworten:

Wigbert Picht-dl1atw schrieb:
> Frame = FLM beginne mit Bildanfang (First Line Maker)
> Load beginne neue Zeile
> CP speichert die letzten übertragenen 4 Bits

Mit welchen LogikÜbergang steuert man dies?
mit "_/" oder mit "\_" ?
oder braucht man da exact eine log. "1" für paar takte ?

von Wigbert P. (wigbert) Benutzerseite


Lesenswert?

Frame mit "/" und mit "\" kurzes pos. Signal leitet den Bildanfang ein.

Wigbert

von micha (Gast)


Lesenswert?

Nach 3 Abende habe ich leider immer noch nicht LCD zum Laufen bringen 
können.

Da ich dies LCD in eigene Schaltung einbauen will, habe ich nicht die 
SW&HW von Benedikt genuzt. Nur MC34063 Teil übernommen. Und habe 
folgendes festgestellt:

Problemme mit kontrast: Kann nicht mit Poti Kontrast einstellen - 
Display wird komplett dunkel und verschwindet dann langsam innerhalb 
einigen 10x-sekunden.
Ich kann etwas aufs Display ausgeben, es "verschwindet" aber nach 
einigen sekunden (Zeilen "lösen sich auf").

Wegen diesen Kontrast-Problemms kann ich keine richtige Steuerung 
rausfinden (das Bild "löst sich" schnell auf). Ich vermute aber folgende 
Sequence:

1. FLM-Impuls
2. Load-impuls
3. dann D3..D0 stellen umd mit CP-Impuls aufs Display übertragen.

ich versuche noch ein-zwei Tage, aber vermutlich landen die LCDs in 
müll.
:(

von micha (Gast)


Lesenswert?

moooment mal ! :)

da dies Display Controllerlos ist, muss man alle pixels "refreshen" ?
macht die platine von Benedikt genau das?!

> Frame = FLM beginne mit Bildanfang (First Line Maker)
> Load beginne neue Zeile
> CP speichert die letzten übertragenen 4 Bits

dann habe ich weitere fragen:
wie hoch muss man CP takten (CP-freq) ?
daraus folgt logisch: ist "Load" dann = CP-freq * 320 ?
und schlisslich: FLM-freq = CP-freq  320  240 ?

von micha (Gast)


Lesenswert?

formatierung hat alles gefressen. noch mal:

wie hoch muss man CP takten (CP-freq) (maximum/minimum) ?
daraus folgt logisch: ist "Load" dann = CP-freq x 320 ?
und schlisslich: FLM-freq = CP-freq x 320 x 240 ?

von g457 (Gast)


Lesenswert?

> wie hoch muss man CP takten (CP-freq) (maximum/minimum) ?
> daraus folgt logisch: ist "Load" dann = CP-freq x 320 ?
> und schlisslich: FLM-freq = CP-freq x 320 x 240 ?

Aalso mal der Reihe nach:

CP/CP2/CL2/XCK/..   "pixel clock" aka "data shift"       - Pixeltakt
CP/CP1/CL1/LP/..    "data latch" aka "latch pulse"       - Zeilentakt
FLM                 "first line marker" aka "frame sync" - Frametakt

(Anmerkung: 'CP' ist doppelt, das wird zur allgemeinen Verwirrung gerne 
mal so und mal so verwendet.. dann muss man schauen, was 'der andere' 
Takt jeweils ist und so zurückschließen, wofür es gerade steht.. und 
'CP1' und 'CP2' wurde auch schon andersrum verwendet..)

FLM dient wie der Name schon sagt zur Markierung der ersten Zeile. 
Nehmen wir an man möchte 50fps erreichen, dann gibts 50 erste Zeilen pro 
Sekunde und damit kommt auch FLM 50 Mal pro Sekunde.

Auf LP hin werden die reingeschiffteten Daten einer ganzen Zeile [1] ins 
Latch übernommen, LP kommt also am Ende einer jeden Zeile. Hier sind das 
240 Zeilen pro Frame und 50 Frames pro Sekunde, also kommt LP etwa 240 
*50 == 1200 Mal pro Sekunde.

Jetzt muss man noch die Daten irgendwie ins Schiebereigster bekommen. 
Das geschieht per XCK. Abhängig von der Organisation kommt ein XCK z.B. 
auf 1, 4 oder auf 8 Pixel. Wenn ich das richtig sehe, dann ist obiges 
Display in Viererblöcken organisiert, d.h. es gibt 320 /4 == 80 XCKs pro 
Zeile entsprechend 80 *240 == 19200 XCKs pro Frame und 19200 *50 == 960k 
XCKs pro Sekunde.

Soviel zur Theorie. Die tatsächlichen Details, insbesondere z.B. wie 
schnell man die Daten schieben darf, stehen im Datenblatt :-) Für das 
E8504CZZ scheint es kein ebensolches ausführliches zu geben, aber man 
kann für eine grobe Abschätzung mal bei der Konkurrenz reinschauen, für 
das Interfacetiming z.B. die Tabelle 7 auf Seite 9 in [2], für ein paar 
schöne Timingdiagramme die beiden Seiten davor.

HTH und HF

P.S.: Falls Du jetzt Blut geleckt hast und es ganz genau wissen willst 
wie das in anderen Display spezifiziert ist: Schau mal ins Datenblatt 
[3] vom NT7702 (dieser Treiber ist im Wintek WD-H3224V [4] drin), etwa 
Seiten 19 bis 26, das ist schön ausführlich.. :-)

[1] ..oder zweier Zeilen bei Dual scan
[2] 
http://www.pollin.de/shop/dt/NjczOTc4OTk-/Bauelemente/Aktiv/Displays/LCD_Modul_SHARP_LM64K101.html
[3] 
http://www.datasheetarchive.com/pdf-datasheets/Datasheets-34/DSA-679430.html
[4] 
http://www.pollin.de/shop/dt/Mzk0OTc4OTk-/Bauelemente/Aktiv/Displays/LCD_Modul_WINTEK_WD_H3224V.html

von micha (Gast)


Lesenswert?

g457 (Gast), WOW!
Dann werde ich weiter mit dem LCD versuchen...

von micha (Gast)


Lesenswert?

so... jezt habe ich mehr-oder weniger Erfolg.

D0..D3 bleibt immer 0b1001
1
START_NEW_FRAME:
2
ldi lines,0xF0 ; 240 lines
3
4
; CLICK "FLM"
5
sbi PORTB,0
6
cbi PORTB,0
7
8
START_NEW_LINE:
9
ldi bytes,0x50 ; 80 4-bit bytes pro line
10
; CLICK "Load"
11
sbi PORTB,1
12
cbi PORTB,1
13
14
SHIFT_A_BYTE:
15
; CLICK "CP"
16
sbi PORTB,2
17
cbi PORTB,2
18
19
dec bytes
20
brne SHIFT_A_BYTE
21
22
dec lines
23
brne START_NEW_LINE
24
25
rjmp START_NEW_FRAME

LCD bleibt still.

Wenn ich aber vor dem "brne START_NEW_LINE" eine 0,1 sek Pause einbaue - 
flimmert das Display.
Was fehlt in der code noch ?

von g457 (Gast)


Lesenswert?

Reihenfolge/Timing falsch. FLM ist normalerweise(tm) (mindestens [1]) 
beim 'data load' gesetzt, LOAD selbst ist während eines Pixeltaktes 
gesetzt. Für die erste Zeile sieht das also etwa so aus:
  - 79 4-Pixel-Blöcke reintakten per
    - Pixeldaten setzen
    - XCK setzen
    - XCK löschen
  - 80. 4-Pixel-Block setzen
  - FLM setzen
    - LOAD setzen
      - XCK setzen
      - XCK löschen
    - LOAD löschen
  - FLM löschen

Schau Dir mal die oben verlinkten Timingdiagramme an, da steht das 
genauer drin.

Und wenn Du schon dabei bist: Tu Dir einen Gefallen und benenne die Bits 
in den IO-Ports mit aussagekräftigen Namen - das gibt sonst irgendwann 
gewiss ein Chaos :-)

HTH

[1] manche Displays möchten FLM gerne während der ganzen erste Zeile 
gesetzt haben, dann wandert das 'FLM setzen' einfach(tm) ganz an den 
Anfang

von Wigbert P. (wigbert) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

ich häng mal das NANYA DBL an. Benedikts Code basiert ja auf dem
GLCD. Mein E8504EZZ funktionert damit tadellos. Die Bits(CP) werden
bei fallender Flanke auf dem Display gespeichert. Rest sollte
das DBL aussagen

Wigbert

von micha (Gast)


Lesenswert?

DANKE an wigbert und "57 (Gast)" !

Display lebt ! :)

sowie ich verstanden habe, hängt Contrast des Bildes von der 
FRAME-Frequenc (oder Line-Freq).

jezt fehlt noch die richtige CPLD und SRAM dazu :)

von Wigbert P. (wigbert) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hm,

Kontrast wird eigentlich mit VEE eingestellt.
Oder Du meinst mehrere Graustufen, dann müssen die Bits geschickt
ausgelassen werden.

Wigbert

von g457 (Gast)


Lesenswert?

micha schrub:
> sowie ich verstanden habe, hängt Contrast des Bildes von der
> FRAME-Frequenc (oder Line-Freq).

wigbert schrub:
>Kontrast wird eigentlich mit VEE eingestellt.

Letztenendes beides korrekt :-) Endanwendertauglich regelt man es 
normalerweise(tm) per VEE. Dass es mit der Bildfrequenz (genauer: mit 
der Zeilenfrequenz) auch zusammenhängt ist eher technisch bedingt ein 
Nebeneffekt.

von Mike (Gast)


Lesenswert?

Hallo,

ich bin bei der Suche nach einem günstigen (und möglichst flachen) 
QVGA-LCD (320x240) auf das oben genannte E8504CZZ von Pollin gestossen. 
Allerdings möchte ich es an einem PIC24FJ betreiben, der aber nur 3.3V 
Ausgangsspannung liefert. Aus dem Datenblatt von Pollin werde ich nicht 
ganz schlau, kann man das Display auch mit 3.3V Logikpegel ansteuern?

Gruss
Mike

von Michael F. (nestandart)


Lesenswert?

Ähnlich wie E8504CZZ ist wohl auch "Displaytech S240320DL" aufgebaut.
Datasheet: http://displaytech-us.com/pdf/FullSpecs/S240320DL-v11.pdf

von Tom Z. (tom_z)


Lesenswert?

Hallo,
ich hätte noch eine Frage:
kann man das Display mit Benedikts Code ansteuern?

Danke
mfg Tom

von Wigbert P. (wigbert) Benutzerseite


Lesenswert?

>kann man das Display mit Benedikts Code ansteuern?

Ja.

Beitrag "E8504CZZ, GLCD von Pollin im Textmodus"

Wigbert

von Tom Z. (tom_z)


Lesenswert?

Wigbert Picht-dl1atw schrieb:
> Ja.
>
> Beitrag "E8504CZZ, GLCD von Pollin im Textmodus"
>
> Wigbert

Danke.

mfg Tom

von Brumay (Gast)


Lesenswert?

Hallo Wigbert,

schaust du hin und wieder auch noch einmal in deinen Thread

 "E8504CZZ, GLCD von Pollin im Textmodus"

Gruß
Bruno

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.