Forum: Mikrocontroller und Digitale Elektronik Grafikdisplay mit LC7942 / LC7940 Controller


von Browncoat (Gast)


Lesenswert?

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

von Benedikt K. (benedikt)


Lesenswert?

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.

von Browncoat (Gast)


Lesenswert?

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

von Christoph Kessler (db1uq) (Gast)


Lesenswert?

Ein AVR mit internem SRAM von mindestens 2kByte kann das Display über 
seinen synchronen seriellen Port bedienen.
Daztenblätter zu den LC... hier
http://pdf1.alldatasheet.com/datasheet-pdf/view/41024/SANYO/LC7942.html
http://pdf1.alldatasheet.com/datasheet-pdf/view/41022/SANYO/LC7940ND.html
der Zeilenübernahmeimpuls im 7940 heisst LOAD, der Pixeltakt CP, der 
Bildwechselimpuls geht auf den 7942

von Browncoat (Gast)


Lesenswert?

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

von Benedikt K. (benedikt)


Lesenswert?

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.

von Markus (Gast)


Angehängte Dateien:

Lesenswert?

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

von Christoph Kessler (db1uq) (Gast)


Lesenswert?

Oder externer Speicher wie Benedikts oder meine Schaltung  Ich benutze 
einen LCD-Controller S1D13704, Benedikt macht alles per Software.
http://www.mikrocontroller.net/forum/read-4-160854.html#new
http://www.mikrocontroller.net/forum/read-1-334077.html#new

von Benedikt K. (benedikt)


Lesenswert?

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...

von Browncoat (Gast)


Lesenswert?

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

von Markus (Gast)


Lesenswert?

@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

von Markus L. (lucky79)


Lesenswert?

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

von Benedikt K. (benedikt)


Lesenswert?

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.

von Benedikt K. (benedikt)


Angehängte Dateien:

Lesenswert?

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.

von Markus L. (lucky79)


Lesenswert?

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.

von Matthias Asselborn (Gast)


Lesenswert?

Hallo habe das selbe Display hast du es bis nun geschafft es 
anzusteuern?

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.