Forum: Mikrocontroller und Digitale Elektronik Grafik-Display Ansteuerung


von E7C (Gast)


Lesenswert?

Hallo zusammen.

Ich habe mich nun durch die Grundlagen durchgearbeitet. Heisst:
- Blink-LED
- Taster-Abfrage
- serielle Datenübertragung
- Analogwertverarbeitung
- Temperaturanzeige
- Multiplexing 7-Seg-Anzeige
- LCD-Ansteuerung im Textmodus

Jetzt habe ich vor ein Grafik-Display anzusteuern. Doch bevor ich mir 
eins bestelle, wollte ich erst mal in Erfahrung bringen, wie sowas geht. 
Ich hab nun gehofft ich finde in den entsprechenden Datenblätter der 
Pollin-Displays etwas. Aber Fehlanzeige. Auch Google spuckt da nicht 
soviel aus.

Hat jemand von euch gute Links dazu?

Würde mich freuen

In diesem Sinne ein frohes Fest

von Karl H. (kbuchegg)


Lesenswert?

E7C schrieb:

> Jetzt habe ich vor ein Grafik-Display anzusteuern. Doch bevor ich mir
> eins bestelle, wollte ich erst mal in Erfahrung bringen, wie sowas geht.

Da gibts große Unterschiede.

Im einfachsten Fall kannst du nur am LCD einen Punkt setzen.
Das wars. Alles andere musst du selber in Software erledigen. Linien 
zeichnen, Bögen zeichnen, Flächen füllen, Text malen, etc.
Alles, in dem du die zu setzenden Punkte bestimmst und dem LCD den 
Auftrag gibst: Dieser und jene Punkte sind auf schwarz zu setzen

Am anderen Ende stehen Displays, die einen Prozessor mithaben, der auch 
mit graphischen Primitiva umgehen kann. So wie bei deinem Text-LCD. Dem 
hast du auch nicht gesagt "Pixel setzen" sondern 'A' hinmalen und der 
Prozessor am LCD hat gewusst wie das geht.

Beides hat Vor und Nachteile.
Auf der einen Seite hast du mit Einzelpixel setzen alles in der Hand. 
Jede Linie, jeder Buchstabe sieht exakt so aus, wie du dir das 
vorstellst.
Dafür musst du in deinem Programm allerdings Routinen dafür haben und 
die Übertragung zum Display dauert länger, weil es mehr Datenvolumen 
gibt

Auf der anderen Seite hast du mit einem intelligenten Display schnelle 
Erfolgserlebnisse, die Übertragung geht schnell, musst dafür aber mit 
dem zufrieden sein, was dir der Hersteller an Grundmitteln anbietet. 
Wenn das nicht reicht, landest du erst wieder beim Pixel setzen und hast 
Geld für ein Display ausgegeben, dessen Fähigkeiten du nicht nutzt.

von E7C (Gast)


Lesenswert?

Gibt es denn für beide Varianten kleine Tutorials, dass ich erstmal 
weiss, wie das ganze realisiert wird? Dann kann ich mich immernoch für 
ein Display entscheiden. Am besten ich kaufe direkt beide, und nimm das 
mit Prozessor für die schnellen Erfolgsergebnisse, um mich dann dem Kern 
weiter zu nähern

von Olaf (Gast)


Lesenswert?

> Ich habe mich nun durch die Grundlagen durchgearbeitet. Heisst:

Wohlgetan. :-)

> Ich hab nun gehofft ich finde in den entsprechenden Datenblätter
> der Pollin-Displays etwas. Aber Fehlanzeige.

Wirklich? Ich finde fuer einen Restpostenverhoekerladen liefert Pollin 
meist erstaunlich viel Unterlagen zu ihren LCDs. Also Datenblatt vom 
Display, Datenblatt zum TreiberIC und manchmal sogar noch ein 
Beispielprogramm.

> Doch bevor ich mir eins bestelle, wollte ich erst mal in Erfahrung
> bringen, wie sowas geht.

Das Prinzip ist einfach. Du musst ein Display kaufen und es an deinen 
Controller anschliessen. Es gibt Displays die haben einen parallelen Bus 
(8080 oder 68k) und welche mit einem seriellen Datenbus. (SPI oder gar 
I2C)
Manche Displays haben auch beide Busse und man kann sich aussuchen 
welchen man verwendet. Manchmal hat der Hersteller das aber schon 
festgelegt und du kannst das nicht mehr umstellen. Datenblatt genau 
lesen!

Fuer kleine Microcontroller ist der serielle Bus meistens besser weil 
man da weniger Pins braucht. Bei manchen LCDs kann man dann aber nur 
Daten zum LCD schicken und nicht zuruecklesen. Datenblatt genau lesen! 
Wenn man nicht lesen kann dann muss man im Controller ein Shadowram des 
LCDs verwalten. Sowas ist eigentlich immer klug weil es schneller ist 
als aus dem LCD zu lesen. Allerdings sollte der Controller dann genug 
internes Ram haben. Datenblatt genau lesen und Taschenrechner 
einschalten!

Danach kann man nun Kommandos ans LCD schicken. Es gibt Displays da 
kannst du nur Pixel ein oder ausschalten. Wenn du aber Linien malen 
willst oder Text ausgeben ist es deine Aufgabe dich darum zu kuemmern. 
Dann sollte dein Controller genug Flashram haben um einen Zeichensatz 
unterzubringen.
Es gibt auch Controller die haben soetwas eingebaut. Allerdings gibt es 
dann manchmal keine deutschen Sonderzeichen. Das prangern wir an. :-)

Mach dir auch klar das der Hersteller eines LCDs von irgendwoher ein IC 
kauft, dessen Datenblatt du lesen musst, und woanders ein Panel. Beides 
montiert der zusammen und nennt das LCD und schreibt dazu ebenfalls ein 
Datenblatt. Es ist wichtig zu verstehen das man es auch so programmieren 
kann das ein LCD nichts anzeigt oder gar kaputt geht. Das kommt davon 
wenn man das Datenblatt der LCD Hersteller nicht liesst und man glaubt 
im Internet alles abschreiben zu koennen.

Manche LCDs benoetigen noch eine Kontrastspannung. Die kann auch negativ 
sein. Und sie muss nicht auf GND bezogen sein, manche Hersteller geben 
diese Spannung relativ zur positiven Versorungsspannung an. Also genau 
alles im Datenblatt lesen.

viel Glueck

Olaf

von Olaf (Gast)


Lesenswert?

> Gibt es denn für beide Varianten kleine Tutorials, dass ich erstmal
> weiss, wie das ganze realisiert wird?

Die heissen Datenblaetter und werden vom Hersteller mitgeliefert. Es 
gibt keinen verbreiteten Standard wie bei den TextLCDs mit 
Hitachicontroller.
Jeder macht das seinen eigenen Kram.

Selbst wenn du zwei Displays mit demselben ControllerIC drauf von 
verschiedenen Herstellern hast so kann es dir passieren das die ihre 
Pixel an verschiedenen Stellen im Speicher abbilden. Auch die 
Initialisierung kann unterschiedlich sein.

Olaf

von Sebastian (Gast)


Lesenswert?

Hier könnte man eigentlich noch einen dritten Typ unterscheiden, weil 
von Pollin die Rede ist: Die controllerlosen Displays, deren Inhalt 
kontinuierlich aufgefrischt werden muß.

Also mal am Beispiel:
"Vollintelligente" Displays haben in den allermeisten Fällen einen 
Toshiba T6963C Controller. Dieser beinhaltet sogar einen 
Zeichengenerator, d.h. man kann auf das Display auch Text schreiben, 
ohne ihn sich aus Pixeln zusammenbauen muß. Umfangreicher Befehlssatz. 
Kann viel, kostet viel (vergleichsweise). Heute selten zu bekommen, hin 
und wieder bei Pollin. Übliche Auflösungen sind 128x64 oder 128x128. 
Leicht zu benutzen.

"Halbintelligente" Displays haben einen Grafikspeicher, der meist 
byteweise beschrieben wird. Dieser Speicher wird 1:1 auf das Display 
abgebildet. Es ist empfehlenswert, Typen zu benutzen, in denen dieser 
Speicher nicht segmentiert ist, dies macht die Ansteuerung einfacher.
Ein typischer Vertreter ist dieses Exemplar hier: 
http://www.pollin.de/shop/dt/NDU2OTc4OTk-/Bauelemente/Aktive_Bauelemente/Displays/LCD_Modul_SHARP_M078CKA_A3QKLA0057.html
Ebenso zählen die EA DOGM Grafikdisplays zu dieser Klasse: 
http://www.reichelt.de/?;ACTION=28;LA=3;ARTICLE=101652;GROUPID=3007;GROUP=A5213;SID=28G34rYawQARwAAFIi8CQ5839615382a8c379debba458d0152474
Man findet häufig auch Examplare mit Seiko Epson Controller.
Etwas anspruchsvoller zu benutzen, dafür aber billig und leicht 
erhältlich.

"Unintelligente", controllerlose Displays wie dieses: 
http://www.pollin.de/shop/dt/NDU3OTc4OTk-/Bauelemente/Aktive_Bauelemente/Displays/LCD_Modul_E8504CZZ.html 
müssen kontiniuerlich mit Daten versorgt werden, um ein Bild 
darzustellen. Es gibt hier im Forum ein Projekt auf AVR-Basis dazu (der 
ist aber gut beschäftigt und kann dann nichts anderes mehr tun), oder 
man kann so etwas wie den S1D13705 benutzen, der hier unter "Markt" 
angeboten wird. Dann hat man einen Controller, der sich um das Display 
kümmert. Ziemlich komplex, bietet aber größere Auflösungen als die 
beiden oben beschriebenen Typen.

von Pete K. (pete77)


Lesenswert?

Kauf am besten ein LCD mit Controller. Alles andere ist nur was für 
Benedikt :-)

von Kostia G. (Gast)


Lesenswert?

http://www.techtoys.com.hk/index.html

hier gibt es display mit beispielcode

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

Zu den Controllern,

Die KS0107 / KS0108 sind wahrscheinlich am verbreitetsten, gibt viel 
viel Code dazu. Sind meist die günstigsten und hat nahezu jeder 
Elektronikversender mit Displays im Programm. Sehr oft gibt es die in 
128x64 und 128x128

Die T6963 haben, wie schon gesagt, ein wenig eigenen Grips, aber im 
Grunde immer noch anzusteuern wie die KS0108 / 7. Die T6963 sind 
meistens grösser als die KS0108. Habe eines von Pollin mit 256x64 für ca 
15 Euro, aber schon seit gut 2 Jahren. Nicht mehr im Programm...

Dann gibts noch die, welche sie per UART, SPI, I2C, ... ganz intelligent 
ansprechen lassen. Meistens von EA (Electronics Assembly), oft schon 
TFT, 65k Farben, touch usw. Allerdings kosten die wirklich viel. Die 
haben dafür aber einen richtig guten Befehlssatz (ziehe Line von x1,y1 
nach x2,y2, Kreise, Bars, Text, Bitmaps, ...).

OLEDs sind solangsam auch recht günstig zu bekommen, allerdings nicht in 
riesengrößen. Es gibt auch haufenweise Code dazu. Soweit ich mich 
erinnere gibts bei Watterott welche mit Beispielcode. Schau auch mal bei 
steitec vorbei, da gibts coole ARM-Stamps mit farb-Tocuhscreendisplays 
für unter 50 Euro.

Ich würde dir ein T6963 empfehlen, haste schonmal die ganze Textk**ke 
nicht am Hals und du kannst dich um Grafik kümmern. Auch wenn die etwas 
teurer sind als andere, kostet sie trotzdem nicht die Welt. Guck mal auf 
ebay usw. Da bekommste 128x128 aufwärts für ca 20 Euro.

Wenn du per USB an Rechner willst, schau dir mal die SP14Q002 von 
Wallbraun Elektronics an, da hab ich zwei, finde ich total genial :)
320x240 S/W mit Touchscreen. Allerdings nich ganz so Kontrastreich, im 
Sonnenlicht kannste die nicht lesen und der Winkel ist auch nich so 
100%ig. Aber wenns kein Fernseher werden soll, wirds schon reichen ;)

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.