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
und wo ist das Problem? Nehm Benedikts Code Beitrag "Einfacher Low Cost LCD Controller für 320x240 LCD im Textmodus" Beitrag "Grafikfähiger LCD Controller für 320x240 LCD mit 4 Graustufen" Wigbert
PS. Kontrastspannung ist bei dem Display aber positiv Wigbert
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.
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
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
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 ?
Frame mit "/" und mit "\" kurzes pos. Signal leitet den Bildanfang ein. Wigbert
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. :(
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 ?
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 ?
> 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
g457 (Gast), WOW! Dann werde ich weiter mit dem LCD versuchen...
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 ?
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
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
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 :)
Hm, Kontrast wird eigentlich mit VEE eingestellt. Oder Du meinst mehrere Graustufen, dann müssen die Bits geschickt ausgelassen werden. Wigbert
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.
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
Ähnlich wie E8504CZZ ist wohl auch "Displaytech S240320DL" aufgebaut. Datasheet: http://displaytech-us.com/pdf/FullSpecs/S240320DL-v11.pdf
Hallo, ich hätte noch eine Frage: kann man das Display mit Benedikts Code ansteuern? Danke mfg Tom
>kann man das Display mit Benedikts Code ansteuern? Ja. Beitrag "E8504CZZ, GLCD von Pollin im Textmodus" Wigbert
Wigbert Picht-dl1atw schrieb: > Ja. > > Beitrag "E8504CZZ, GLCD von Pollin im Textmodus" > > Wigbert Danke. mfg Tom
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.