Zur Druckansicht wechseln Visit the English version of this page

www.jb-electronics.de » Elektronik » Digitaltechnik » LCD-Einstieg

LCD-Einstieg

Wenn immer es in der Elektronik gilt, eine optische Schnittstelle zwischen Mensch und Maschine herzustellen, kommt man um ein Display nicht umher. Sollen numerische Werte angezeigt werden, kann man sich verschiedenster Siebensegment-Anzeigen bedienen, aber sobald Text dazukommt, wird es kompliziert. Wenn da die LCDs nicht wären.

LCDs (Liquid Crystal Displays) sind relativ preiswert, sehen gut aus und verbrauchen wenig Strom. Sie haben einen großen Zeichenvorrat, mit ihnen lässt sich fast alles anzeigen, es gibt sogar graphische LCDs mit Touchsensoren.

Aber mit steigender Funktionalität kommt natürlich auch eine Komplexität der Ansteuerung einher. Diese Schaltung stellt die Grundlagen der LCDs dar und ermöglicht es, Daten einfach und unkompliziert anzuzeigen, ohne dass man sich in den Tiefen der LCD-Ansteuerung auskennen muss.

Trotzdem ein bisschen Theorie. Die meisten LCDs haben folgende Anschlüsse:

BezeichnungFunktion
VDDBetriebsspannung
VSSGND
V0Kontrastspannung
RSDaten-/Kommando-Umschaltung
RWSchreib-/Lese-Umschaltung
ENABLEDatenübertragung
D0...D7Dateneingänge, 1 Byte weit (also 8 Bits)
(A)Hintergrundbeleuchtungs-LED, Anode
(K)Hintergrundbeleuchtungs-LED, Lathode

Zwischen VDD und GND wird die Betriebsspannung (5V bei den meisten Typen) angelegt. V0 regelt den Kontrast des Displays, er wird über ein Potentiometer wiefolgt angeschlossen:

Die Verschaltung des V0-Pins

Je nach Typ besitzt das LCD auch eine Hintergrundbeleuchtung in Form einer LED, deren Anode und Kathode wie für eine LED gewohnt verschaltet werden. Wichtig: Diese LED hat meistens keinen eigenen Vorwiderstand eingebaut, dieser muss noch extern hinzugefügt werden, sonst zerstört man die LED-Hintergrundbeleuchtung durch einen zu hohen Strom.

Aber nun zum Interessanten: Der eigentlichen Ansteuerung. Man kann Daten (so z.B. einen darzustellenden Buchstaben) an das LCD senden, oder Steuerkommandos. Um z.B. den Buchstaben B in die Zeile 2, Spalte 7 zu schreiben, muss man erst das LCD auf Schreibemodus schalten, dann den Cursor mittels Befehl positionieren, und dann den Buchstaben B als Zeichen senden.

Dazu stellt man die beiden Pins RS und RW ein:

RSRWAktion
00Zeichen in das LCD schreiben
01Zeichen zurücklesen
10Steuerkommandos schreiben
11Betriebsbereitschaft prüfen

Die Reihenfolge ist immer die selbe:

  1. RS und RW setzen (je nach Aufgabe)
  2. Die Daten (das Zeichen oder den Befehlscode) an D0...D7 legen
  3. Alles mit einer positiven Flanke auf ENABLE bestätigen

Das sind schon die Grundzüge. Das Gute ist: Die Befehle, und auch die ganze Ansteuerung sind weitestgehend auf einen Industriestandard genormt - es ist also egal, von welchem Hersteller mein 2x16 LCD kommt, es lässt sich immer gleich ansteuern.

Für die Ansteuerung eines LCDs ist ein Microcontroller nicht zu vermeiden; hier wird ein Programm verwendet, dass schon viele Methoden zur LCD-Ansteuerung enthält.

Damit ließ sich zum Beispiel folgendes Bild erzeugen:

Eine Displayausgabe

Hier ist der Schaltplan zu sehen:

Der Schaltplan

Hier ist der Schaltplan in höherer Auflösung zu finden.

Im C-Quellcode sind einige Routinen enthalten, die das Arbeiten mit LCDs vereinfachen (Achtung: Die Ansteuerung ist hier auf ein 2x16 LCD einprogrammiert). Hier eine Übersicht über die verschiedenen Methoden:

MethodeBeschreibung
void initLCD ()initlialisiert ein 2x16 LCD mit unsichbarem Cursor
void setCursor (uchar DISPLAY_ON, uchar CURSOR_ON, uchar BLINKING)Setzt die Einstellungen des Cursors. Alle Argumente sind etweder 1 oder 0.
void setCursorHome () Setzt den Cursor nach oben links
void clearDisplay ()löscht das gesamte Display
void writeChar (uchar Zeichen, uchar Row, uchar Columnschreibt ein Zeichen an eine beliebige Stelle im LCD
void writeCharBuffered (uchar Zeichen, uchar Row, uchar Column)schreibt ein Zeichen in den Software-Zeichenpuffer des Programms
void writeTextBuffered (uchar Text[], uchar Row, uchar Column, uchar Length)schreibt ein Character-Array (also im Prinzip einen Text) an eine beliebige Stelle im Display, aber auch gepuffert.
void updateLCD ();sendet alle Daten aus dem Puffer an das LCD, spart bei vielen Einzelzeichen deutlich Zeit ein im Gegensaz zur direkten Methode

Es sind weitere Methoden im Programm enthalten, die obigen sind jedoch die wichtigsten.

Wer mehr über LCDs erfahren will, informiert sich am besten unter http://www.sprut.de/electronic/lcd/, wohl einer der ausführlichsten deutschen Seiten zu LCDs.

Für alle Interessierten gibt es hier den C-Quellcode und das fertig kompilierte HEX-File: LCD.zip (4KB)

Nach oben

show print layout Die deutsche Version der Seite besuchen

www.jb-electronics.de » Electronics » Digital Technology » Introduction in LCDs

Introduction in LCDs

My apologies...

There is no English translation of this page available yet. It will take some more time for me to translate the whole website.

If you have a particular interest in this page getting translated as fast as possible, please contact me; I will see what I can do. Please click here for the German version.

To the top