LCD

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Aufbau

Liquid Crystal Displays, kurz LCDs, bestehen aus einer großen Fläche von Flüssigkristallen, die unter Einwirkung eines elektrischen Feldes die Polarisationsebene des Lichts drehen. Wird ein solches Display von bereits polarisiertem Licht durchleuchtet, dann erscheinen diese Kristalle mehr oder weniger hell oder dunkel. Die angelegte Spannung ist sehr gering, es muss sich aber um eine Wechselspannung handeln, da eine Gleichspannung die Kristalle zersetzt.

Beleuchtung

Die Beleuchtung eines LCDs kann durch verschiedene Möglichkeiten erfolgen. Kleine Displays (<25cm bzw. 10" Diagonale) werden mittlerweile fast ausschließlich mit LEDs beleuchtet. Größere haben oft noch CCFL-Röhren, wobei auch hier leistungsstarke LEDs auf dem Vormarsch sind, da die Röhren hohe Spannungen benötigen und diese den Aufbau verkomplizieren (Röhrendicke, Inverter, HF-Felder, ...)

Manchmal findet man auch EL(Elektrolumineszenz)-Folien, die aufgrund ihrer vergleichsweise geringen Lichtausbeute (bei weißer Leuchtfarbe) fast nur bei monochromen Displays anzutreffen sind.

Schnittstellen

Grundsätzlich gibt es LCD mit oder ohne Controller. Solche ohne Controller gibt es mit einer Rückelektrode oder mit mehreren Rücklelektroden. Letztere sollten nur von Mikrocontrollern mit eingebautem LCD-Controller angesteuert werden, weil dieser für die verschiedenen Spannungspegel und den Multiplexbetrieb ausgerüstet ist. Das ist kaum für den Gelegenheitsbastler, sondern für hohe Stückzahlen. Der Einsatzgrund controllerloser gemultiplexter LCD ist der geringe Stromverbrauch; allerdings ist dieser ein wenig höher als beim folgenden Typ. Typisch für Wetterstationen sowie Anzeigen mit mehr als ≈ 50 Segmenten.

LCD mit einer Rückelektrode sind grundsätzlich vom Typ Siebensegment und erkennbar an sehr vielen Anschlussbeinchen: Ein typisches LCD mit 4 Stellen hat 40 Beinchen. Für die Ansteuerung aller 4 Stellen und 3 Dezimalpunkte werden sage und schreibe 32 Ausgangspins benötigt! Kein Multiplexing wie bei LEDs. Für jedes weitere Symbol (Doppelpunkt, LoBat, AC, °C …) ein weiteres. Das schreit nach Portexpandern vom Typ 74HC595. Trotzdem haben diese LCD zwei unschlagbare Vorteile:

  • Minimaler Stromverbrauch: Beinahe vernachlässigbar.
  • Keine (termperaturabhängige) Kontrastspannung, dadurch riesiger Einsatztemperaturbereich.

In einfachen Digitalmultimetern und 80er-Jahre-Armbanduhren ist stets dieser Typ verbaut. Nicht vergessen: Controllerlose LCD stets mit Wechselspannung (50..100 Hz) ansteuern!

Im folgenden geht es nur um LCD mit Controller.

Die gängigen Schnittstellen zu einem LCD-Controller sind ein 8bit, 4bit oder serielles Interface.

Bei vielen „8bit“-LCDs ist es möglich, bei der Konfiguration festzulegen, dass auf 4bit Datenleitungen jeweils 2 nibble hintereinander gesendet werden. Dies spart Anschlüsse auf der Datensteuerungseinheit (PC, µC, etc). Bei 4-Bit-Ansteuerung darauf achten, dass die Datenpins 4-7 und nicht die Datenpins 0-3 des Displays an den µC angeschlossen werden müssen!

Die typische Stromaufnahme solcher LCD liegt bei 2 mA, die Hintergrundbeleuchtung kommt obendrauf. Daher sind diese für permanenten Batteriebetrieb wenig geeignet.

Touchscreen

Ein Touchscreen-LCD oder Monitor existiert als vorgefertigte Einzeleinheit nicht. Wird das unter dem Marketingwort Touchscreen erworbene Produkt zerlegt, bleibt die Eingabeeinheit Touchpanel und die Ausgabeeinheit LCD-Screen übrig.

Jeder Touchscreen besteht aus einem Monitor, der mit einer transparenten Matrix überzogen wurde, die Berührungen an einen Controller weitergibt, der sie in Koordinaten übersetzt und das Anzeigegerät so zum Eingabegerät macht.

Die aus zwei (sich bei Berührung elektrisch veränderndernden) Matrixflächen bestehende Kunststofffläche wird von Systemarchitekten und Mikrocontroller.net-Besuchern beim Einbau des LCD's in das Endprodukt über die anstelle einer Maus mit Berührungen durch Gegenstände oder eines Fingers zu bedienenden Fläche platziert.

Das Internet gibt Aufschluss über die für die geplante Anwendung geeignete Touchpanel-Technologie und den für die benötigte Schnittstelle zu verwendenden Controller.

Ein Selbstbauvorschlag und Links zu einigen kommerziellen Lösungen findet sich hier.

Hacks

Eine bei Handybastlern bekannte Spielerei ist das Abziehen der Polarisationsfolie vom LCD und dem um 90° gedrehten Aufkleben der alten oder einer neuen Folie. Dies führt zu einem hardwaremäßigen Invertieren der LCD Anzeige.

Übliche Text-LCD-Module sind für den Betrieb an 5V vorgesehen. Will man sie an einen Mikrocontroller mit 3V IO-Pegel anschließen, wäre eigentlich ein Pegelwandler nötig. Es gibt jedoch einen Trick, um das LCD direkt an 3V betreiben zu können. Dazu muss man wissen, dass das Problem nicht die Versorgung des Controllers auf dem LCD-Modul (der HD44780 ist ab 2,7V spezifiziert), sondern die Erzeugung der Kontrastspannung für die Anzeige ist. Selbst wenn man den Kontrastpin auf Masse legt, ist unterhalb von etwa 4V nichts mehr zu erkennen. Dies führt zu folgender Lösung: die Spannung muss noch kleiner werden, also negativ! Man legt also eine Spannung im Bereich von -1 bis -2V am Kontrastpin an. Mit dieser Methode funktionieren manche LCDs schon ab etwa 2V.

Ansteuerroutinen Handy LCDs

Es gibt noch eine bei Bastlern vergleichsweise beliebte Alternative zu den "normal" gekauften LCDs. Hier werden Ersatz-LCDs bestimmter Handytypen hergenommen und per µC angesteuert. Dadurch hat man einige Vorteile: Die Controller sind oft (eigentlich immer) bereits integriert, die Größe des gesamten Systems ist meist minimal und die LCDs sind teilweise unverschämt günstig im Vergleich zu KSS0066er oder HD44780er LCDs. Als Beispiel: Ein 132x176 Pixel LCD mit 60k Farben (!) für das Siemens S65 Handy kostet inzwischen bei Ebay um die 10 Euro zzgl. Versand und die benötigte Ansteuerung dazu hat einen Materialwert von maximal nochmal 10 Euro. Das kann man mit gekauften LCDs oder TFTs bei Reichelt & Co. nicht mehr vergleichen. Allerdings erkauft man sich auch ein paar Nachteile: Es gibt teilweise (noch) keine sauberen Companionboards. Das resultiert vor Allem dann in Arbeit, wenn die LCDs mehrere Spannungen zum Laufen benötigen (oft +10V und +3,3V) oder spezielle Anschlüsse von Nöten sind (SMD-Adapter bspw.) und man somit um eine eigens entwickelte Platine schwer herumkommt. Allerdings beschäftigen sich viele Leute damit, von daher wird man oft etwas kopieren können. Als eine Auswahl an beliebten Handy-LCDs hier eine Auflistung von Displays, mit denen oft gearbeitet wird (daher findet man hier auch massenhaft Infos im Forum).


Vorlage Display

resolution   : pixel
display area : 
colours      : 
Controller   :
backlight    : 
adj contrast : 
Link         : 
Datei        : 

NOKIA 1100

resolution   : 96 x 65 pixel
display area : 
colours      : 1
Controller   :PCF8814
backlight    : 
adj contrast : instruction
Link         : Nokia 1100 LCD Pic interface
Datei        :

NOKIA 7110

resolution   : 96 x 65 pixel
display area : 
colours      : 1
Controller   : SED1565
backlight    : 
adj contrast : 
Link         : http://module.ro/nokia_7110.html
Datei        : Media: Nokia7110 Lcd library (SED1565).pdf
Library      :                            Datum:
Pinout       : Media: Nokia 7110 LCD pin outputs.JPG

NOKIA 3310

resolution   : 84 x 48 pixel
display area : 30 x 22 mm2
colours      : 1
controller   : Philips PCD8544
backlight    : extern
adj contrast : extern (VLCD1)
Link         : Lcd Ansteuerung in "C" von http://www.jtronics.de - sehr gut
Link         : Nokia 3310
Link         : NOKIA 3310 LCD in BAS
Link         : http://tinkerish.com/blog/?tag=nokia-3310-lcd
Link         : http://www.lcdinterfacing.info/Nokia-3310-LCD-Interface.php
Link         : Nokia 3310 Lcd Thermometer Using DS18B20

NOKIA 3510i

resolution   : 97x65 pixel
display area : 
colours      : 256, 4096
controller   : S1D15G14
backlight    :
adj contrast : 
Datei        : Nokia 3510i LCD.pdf

NOKIA 6100

resolution   : 130x130 pixel
display area : 27 x 27 mm
colours      : 256, 4096   (4096 colours supported since v 1.97.8)
controller   : Epson S1D15G10 (meist grüner connector) oder Philips 
               (PCF8833 oder LDS176 meist brauner connector)
backlight    : yes
adj contrast : yes
Link         : Nokia 6100 Ansteuerung in C
Link         : Nokia 6100 Grafiklibrary die Zweite
Link         : http://www.sparkfun.com/ NOKIA 6100 PHILLIPS & EPSON
Link         : NOKIA 6100 EPSON
Link         : http://serdisplib.sourceforge.net/Epson
Pinout       : Nokia 5100, 6100, 6610, 6800, 7210, 7250, 8910i LCD Pins.JPG
Library      : HAGEN - Nokia 6100 Grafiklibrary 2.2 - 16.09.2004.zip

Nokia 6100 & kompatible: 132x132 Pixel mit 4096 Farben und ebenfalls SPI. Ein sehr beliebtes Display, mit dem sich ebenfalls sehr viele beschäftigen. Einziges Hauptproblem: Es gibt zwei unterschiedliche Controller (Epson S1D15G10 und Philips PCF8833) für dasselbe Display, die allerdings nicht kompatibel angesteuert werden! Von daher ist Vorsicht geboten. Zu kaufen gibt es die Displays ab etwa 15€. Man benötigt unter Umständen noch einen SMD-Adapter, den es für etwa 4€ gibt (je nach gekaufter Anzahl). Infos gibts hier: serdisp6100 sparkfun ThomasPfeifer und (wie sollte es anders sein) natürlich direkt vor Ort: Forumsbeitrag

UPDATE 17.10.2007: Neuerdings ist ein zusätzlicher (und damit dritter) Controllerchip recht beliebt geworden: Epson S1D15G17 (also G17 statt G10). Das Tolle hierbei: Dieser ist zu keinem der anderen Controller voll kompatibel, sondern teilt sich nur einige Befehle. Und zudem gibts bisher noch sehr wenig Infos zu diesem Controller. Also noch mehr aufpassen beim Kauf bzw. dem Ansteuern!

NOKIA N95

resolution   : 240 x 320 pixel
display area : 40 x 55 mm
colours      : 16.7 Mio.
controller   :
backlight    : 
adj contrast : 
Link         : NOKIA N95 Display
Datei        :

SIEMENS S65

resolution   : 132 x 176 pixel
display area : 
colours      : 65.536
controller   :
backlight    : 
adj contrast : 
Link         : The Siemens S65 132x176, 65536 color display with AVR
Link         : http://www.superkranz.de/christian/S65_Display
Datei        : 
Info         : Es kann sein, dass die oben verlinkte Library beim kompilieren mit dem Fehler
               "glcd_init.asm:91: Error: number must be positive and less than 32" abbricht.
               Eine Lösung wird in diesem Forenbeitrag gegeben: [1]

Siemens S65 & kompatible: 132x176 Pixel mit 60k Farben und wiederum SPI. Ein vergleichsweise neues LCD, das erst seit etwa ein/zwei Jahren erfolgreich angesteuert wird, obwohl man nicht einmal den verbauten Controller kennt! Re-Engineering sei Dank! Dieses Display gibt es momentan noch unverschämt günstig für etwa 10€, nur die benötigten Spannungen machen Kopfweh (10V für die HG-Beleuchtung und 2,8V für den LCD-Controller). Das Display ist wirklich vergleichsweise groß (das Größte aller hier vorgestellten) und auch noch aus einer größeren Entfernung wunderbar zu lesen/sehen. Einziges Problem: Da pro Pixel zwei volle Bytes gesendet werden müssen, benötigt ein komplett zu beschriftender Bildschirm mit 8 MHz SPI etwa 50 ms für einen Refresh. Das sieht man bspw. bei einem Übergang von schwarz auf weiß schon relativ deutlich.

LS020
Datei        : 

SIEMENS M55

resolution   : 101 x 80 pixel
display area : 
colours      : 4096
controller   :
backlight    : yes
adj contrast :  
Link         : Siemens M55 Display Datenblatt Ansteuerung
               www.drzasiek.cba.pl/m55.rar (von hier stammt Dateilink)
Datei        : m55.rar - drzasiek.cba.pl

Sonstige Displays

Pinout       : Nokia 3410 LCD Pinouts.JPG
Pinout       : Nokia 6310 lcd pinouts.JPG
Pinout       : Nokia 8310 LCD Pinouts.JPG

Eine andere Strategie, an meist recht gute TFT-Displays zu kommen: Kleine Digitale Bilderrahmen ("DPF") als Schlüsselanhänger. Diese liefern normalerweise Displays mit 128x128 Auflösung, es gibt aber auch grössere Varianten für den Schreibtisch im 320x240-Format. Die Bezugsquellen ändern sich allerdings laufend, einigermassen aktuelle Information findet sich unter dem Spriteserver DPF wiki.

Die meisten dieser Displays sind per Parallel-Interface (uC-Interface) ansprechbar, d.h. 8 bit Daten bidirektional, weitere Steuerleitungen: R/W, A0, #CS. Falls das Display aus dem DPF nicht ausgebaut, sondern einfach nur ein USB-fähiges LCD-Display gewünscht ist, lässt sich die Firmware auch modifizieren. Dazu gibt es unter obigem Link weitere Informationen.

Ansteuerung

Direkt hinter der Dot-Matrix sitzen nur ein paar Treiber, die auch die Leitungen bündeln. Das Interface daran bietet keine "Intelligenz", es werden Signale für Vertical Sync / Horizontal Sync (also Spalten/Zeilenumbruch) sowie ein Clock Signal benötigt. Es werden nacheinander alle Pixel gescant und über eine Signalleitung an/aus mitgeteilt. Da deshalb ein konstanter (hoher) Datenfluss und ein nicht geringer Speicher (Framebuffer) benötigt wird, ist es für Mikrocontroller eher weniger geeignet.

Zur Ansteuerung von LCDs gibt es spezielle LCD Controller, fertige Module mit Controller und einige Prozessoren mit integrierter Ansteuerung (z. B. aus der MSP430-Serie, oder AVR wie der ATmega169 ). LCD-Module mit eingebautem Controller lassen sich meist einfach mit einem Mikrocontroller ansteuern.

Text (character) LCDs verwenden meistens den HD44780 oder einen kompatiblen Controller (z.B KS0066). Das KS0066 Timing und die Init-Sequenz weichen stark vom Timing des HD44780 ab! Es gibt gute Application Notes zu Displays (mit KS0066) von Hitachi. 1x16 LCDs werden oft wie 2x8 betrieben! D.h. es ist ein 'Zeilenwechsel' an Position (z. B. 0x40) nötig. Bei manchen Text-LCDs ist mit selbstdefinierten Zeichen eine Pseudo-Graphische LCD-Ansteuerung möglich.

Grafik (graphic) LCDs verwenden z. B. den T6963, den SED1330 oder den KS0108 Controller.

Bei LCDs ohne eigenen Controller (Laptop-LCDs z. B.) ist die direkte Ansteuerung sehr schwierig (weil zeitkritisch), allerdings lässt sich in manchen Fällen ein Standard-Controller nachrüsten.

Wenn die Ansteuerung des Displays gemeistert wurde, muss als nächstes die höheren Grafikfunktionen (Pixel an/aus, Linie, Rechteck, Kreis,...) gemeistert werden. Die entsprechenden Funktionen zum Rastern sind für µC recht resourcenfressend. Auch das abspeichern kompletter Bitmaps im ROM ist bei größeren Displays nicht wirklich praktikabel so das die Anbindung an ein größeren Speicher meistens Not tut.

Display Controller Datenblätter

Datasheet    : Datasheet_LDS176.pdf‎
Datasheet    : Datasheet_S1D15G00_REV1_0.pdf
Datasheet    : Datasheet_S1D15G14E.pdf
Datasheet    : Datasheet_Epson_S1D13305.pdf
Datasheet    : Datasheet_HM628128D.pdf
Datasheet    : Media:Datasheet_SED1330F-1335F-1336F.pdf

Projekte

Projekte mit Text-LCD

--- LCD Treiber]

Projekte mit Grafik-LCD

Weblinks

FAQ

Wie kann ich etwas auf einem LCD ausgeben?

Gute Frage! Eine Methode ist sich als Einzelkämpfer durchzubeißen. Dabei helfen Datenblätter und Handbücher sowie die Suche nach Tutorials, Forenbeiträgen und ähnlichen Projekten. Oder man fragt in einem Forum. Dabei steigen die Erfolgsaussichten auf eine hilfreiche Antwort enorm, wenn man seine Hausaufgaben gemacht hat. Also Links zu Datenblättern angeben! Schaltplan beilegen! Vorhandenen Sourcecode beilegen! ...

Wie kann ich Zahlen auf LCD/UART ausgeben?

Siehe die Artikel zur allgemeinen FAQ und zur Festkommaarithmetik.

Egal was ich mache auf dem Display erscheinen keine Zeichen! Was ist los?

Möglicherweise ist einfach nur der Kontrast unpassend eingestellt.

Es gibt auch LCDs (s. unten), die eine negative Kontrastspannung benötigen (Forenbeitrag von Thorsten); näheres kann das Datenblatt klären. Man kann u.U. die benötigte negative Kontrastspannung von einem freien Anschluss am TTL-RS232 Pegelwandler nehmen (Forenbeitrag von P. M.).

Liste bekannter LCDs mit negativer Kontrastspannung:

  • Pollin: LCD-Modul YL162-90 / Best.Nr. 120 060 (D120060D.PDF)
  • Pollin: POWERTIP PC1602LRM-LSO-C
  • Pollin: LCD-Modul EPSON ECM-A0428 (Link)

R/W Leitung vom Text-LCD ist fix mit GND verbunden und die Ansteuerung mit der LCD/AVR-Library von Peter Fleury funktioniert nicht! Was ist los?

Die Fleury Library erwartet, dass R/W nicht fix ist, sondern vom Programm gesteuert werden kann. Das muss auch so sein, denn Peter liest das Busy Flag aus, um Warteschleifen zu vermeiden.

LCD Displaytech 204B (von Reichelt)...

Forenbeitrag von Klaus: Beim EA DIP204B-4NLW Display mit dem KS0073 drauf ist bei der Initialisierung folgendes zu beachten, sonst funktioniert die Sache nicht und das Display bleibt im 2 Zeilenmodus.

  • Die Adressen für die Zeilenanfang sind etwas anders.
  1. Zeile 00h
  2. Zeile 20h
  3. Zeile 40h
  4. Zeile 60h
  • Es gibt ein Erweiterungsbit RE 0x24 und das muss man zwingend setzen bevor dann in den 4-Bit-Modus geschaltet wird mit 0x09.