Moin Leute, mir ist ein Grafikdisplay mit 240x64 Pixeln in die Hände
gefallen, ähnlich diesem hier bei Pollin (Grafik-LCD POWERTIP PG-24064G)
http://www.pollin.de/shop/detail.php?pg=NQ==&a=NTM1OTc4OTk= mit einem
LC7942 und drei LC7940 in die Hönde gefallen. Das Teil hat zwölf
Anschlüsse, von denen zwei für die nicht vorhandene
Hintergrundbeleuchtung sind. Bleiben also noch zehn Pins. Die
Beschaltung ist fast wie bei dem Pollin (Datenblatt ist dort auch zu
finden), hab sie gestern soweit es geht ausgeklingelt, kann sie heute
Abend posten (hab das Display leider gerade nicht hier und kann euch
somit auch nicht die genaue Bezeichnung sagen, hab allerdings eh nichts
gefunden im Netz).
Das Ding wird seriell geladen, hat zwei (drei) Clock-Eingänge (einmal
füe die Zeilen, einmal für die Spalten).
Hat jemand sowas schonmal am PC-Port betrieben oder mittels MC
programmiert? Wie muß ich mir die Programmierung vorstellen? Erst die
3x80 BITs für die Spaltentreiber (LC7940) und dann 80 mal die 64 BITs
des Zeilentreibers, der dann 80 mal schneller laufen muß als die
Spaltentreiber?
MfG BC
Per PC kannst du die Ansteuerung vergessen.
Per uC geht das schon eher, aber ist auch sehr Timing kritisch:
Du musst für jede Zeile 240Bits laden (die Pixeldaten für eine Zeile),
diese mit einem Latch Impuls speichern, die nächste Zeile laden, mit
einem Latchimpuls speichern usw. Das ganze 64x, macht also
15360Bits/Bild.
Wenn das Bild fertig ist, wird der Firstlinemarker gesetzt und das Bild
beginnt wieder von oben.
Das ganze muss mal etwa 60-80x pro Sekunde machen. Das ergibt eine
Datenrate von etwa 1MBit/s. Falls du das ganze noch schneller
hinbekommst (die theoretische Grenze liegt bei etwa 3,5MBit/s, dann
kannst du auch noch Graustufen erzeugen indem man nur jedes zweite,
dritte, vierte, usw. Bild anzeigst.
Aha, also 240 BIT reinlöffeln, dan latch-Impuls (Welcher ist das ?) .
Speichert er die Daten oder werden die dann mit den ankommenden Daten
der nächsten Zeile gelöscht, sprich wir das Bild Zeilenweise aufgebaut
und die Zeilen sind weiterhin zu sehen oder wird immer wenn eine
geschrieben wird die vorhergehende gelöscht?
MfG BC
Die datenblätter hab ich hier. Mit AVRs siehts ein wenig mau aus bei
mir, hab hier noch diverse 8051 und Derivate.
Also muß der Pixeltakt 80 mal schneller sein als der Zeilentakt, bzw.
80x64 mal schneller als der Bildwechseltakt.
MfG BC
Es ist immer nur eine Zeile aktiv, daher muss das Bild kontinuierlich
geschrieben werden um ein sauberes Bild zu erhalten.
CP1 ist der Latch Puls, CP2 der Takt für die Pixeldaten und FLM zeigt
den Beginn einer neuen Zeile an. Hier ist die Beschreibung im Datenblatt
falsch.
Das M Signal muss bei jedem Impuls an FLM den Pegel wechseln.
Hallo!
Ich hab auch so ein Display hier liegen...
Ich hab auch noch einen LC7980 dazu - 64pin QFP64-A Gehäuse - der is ein
etwas intelligenterer parallel programmierbarer gLCD controller mit SRAM
Anbindung.
Ich hab schon versucht direkt mit einem µC das Display anzusteuern -
funktionierte auch, hab aber leider noch keinen mit 2k SRAM... (schon
bestellt)
Ich hab dir mal die Datenblätter angehängt, die ich hab...
Ich wär interessiert an einem Projekt um einen µC als high level
Displaycontroller zu verwenden - dachte da an einen mega64 oder mega128
da man ja noch etwas SRAM übrig hat und trotzdem die 2k für den
Displaycontent voll reinbringt...
Grüße aus Österreich
Markus
Ja, ich mache gerne alles per Software. Ich löte sogar von fertigen LCDs
die Controller aus und schließe einen mega8 oder 8515 an, nur um
Graustufen auf dem LCD darstellen zu können. Bei dem 240x64 LCD sollten
mit einem mega8515@16MHz und SRAM etwa 8 Graustufen möglich sein.
Ich hätte sogar eine fertige Software (in C + Assemblerroutinen) um
solche LCDs mit bis zu 256 Graustufen anzusteuern (vorausgesetzt der uC
ist schnell genug), aber leider darf ich diese nich veröffentlichen,
denn damit verdiene ich etwas Geld.
Ich könnte aber die Software soweit downgraden, dass diese die LCDs nur
in Schwarzweis ansteuert...
So, jetzt hier, das Display ist ein WD-G2406G-1GNNa.
Die Pinbelegung (soweit ausgeklingelt):
PIN1:LC (7940's, PIN77, SDI)
PIN2:DIO(7942)
PIN3:NC (bzw. Drahtbrücke nicht eingelötet, geht sonst an 7940's, PIN73,
M)
PIN4:CP (7942)
PIN5:CP (7940's, PIN100, CP)
PIN6:VEE
PIN7: VDD/DispOFF/V1 (7942, alle drei gebrückt)
PIN8: VSS/AS/LS (7942, alle gebrückt)
PIN9: Transistor VEE (Basis)
PIN10:Transistor VEE (Kollektor oder Emitter)
PIN11/PIN12 Beleuchtung (nich vorhanden)
PIN9 und 10 sind anscheinend für die Kontrasteinstellung zuständig.
Zum testen würd ich ne reine Softwarelösung erstmal bevorzugen, ich
würds auch am LPT probieren, auch wenn mehr als 2 oder 3 FPS bestimmt
nicht drin sind, zum testen reichts erstmal.
MfG BC
@Benedikt: SW wär ja schon mal ein ganz guter Anfang!!!
wär nett wenn du das machen könntest!
@Browncoat: Ja, Pin9/10 sind für die Kontrasteinstellung - An Pin 10
solltest du (wenn du Glück hast) eine negative Spannung haben, die du
über ein Poti gegen GND in Pin 9 einspeisen kannst und damit den
Kontrast einstellen. Wenn nicht, dann brauchst du irgendeine neg.
Spannungsquelle (-12V). Wenn du so ca. -8V (gegen GND) am Pin 9
einspeist hast du einen "neutralen" Kontrast.
Meine Belegung ist wie folgt:
Pin | Funktion
-------+-------------------------------------------
1 | D
2 | FLM
3 | M
4 | CL1
5 | CL2
6 | N/C
7 | VDD - +5V
8 | VSS - GND
9 | VEE - Kontrast (~ -8V)
10 | N/C
Grüße
Markus
Da dises Thema irgendwie eingeschlafen is, versuch ich mal es wieder
etwas zu beleben...
Hab mir schon Gedanken gemacht, selbst eine Lösung zu finden...
Mein Fazit:
- mega8535@14,7456MHz als (G)MPU
- SRAM dran - 11 Bit Adressleitungen (LC3564BM-70)
- Datenfütterung per USART
Programmieren werde ich das ganze in ASM über eine INT-Routine und SPI.
Ich bin gerade dabei, das zu coden.
Wenn ich meinen Brerchnugen trauen kann, sollte ich ein Bild mit 60Hz
bekommen wenn ich den SPI prescaler auf 16 stelle (theoretisch).
Bei Prescaler = 4 solten sich sogar 240Hz ausgehen (Graustufen)
Grüße
Markus
Nimm besser den mega8515, der hat ein passenden Interface für den SRAM,
was den Speicherzugriff vereinfacht und schneller macht. Dann könnte es
sogar was werden mit den 4 Graustufen.
Im Anhang ein einfacher LCD Controller für alle möglichen LCDs die 1bit
Daten benötigen.
Die Software ist in C geschrieben, sollte daher verständlich sein.
Man kann einiges noch optimieren, aber ich denke es ist ein gutes
Beispiel um die prinzipielle Ansteuerung zu verstehen.
In der LCD.h muss man den Port, die Pins und die LCD Auflösung
einstellen.
Da hast Recht, ich werds aber mal fürs Erste mit dem 8535er probieren,
Zeitmäßig geht sichs aus auch das SRAM per Hand anzusprechen - bin laut
Berechnungen bei ca. 45% Auslastung.
Ich werds heute Abend mal testen, ob das so geht wie ich mir das
vorstelle.
Danke für den Code!!
Ich werd mir das auch heute Abend noch anschaun.