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
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
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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.