Hilfe & Service von EDV-Fachleuten
lcd01b0.png

Edit v5.001 from 2006-02-25 to 2021-11-17 by H. Schärfer

Das LCD

LCD steht als Abkürzung für "Liquid Crystal Display." Zu Deutsch eine Anzeige bestehend aus Flüssigkristallen die den Lichtdurchfluss steuern könne. Es hat sich bei diesen Anzeigen ein Industriestandard herausgebildet. D.h. jedes, welches sich an diesen hält, ist mit den gleichen Befehlen ansteuerbar, der Anschluss ist gleich, nur die Qualität der Anzeige und deren Darstellung variiert. Damit ist diese Art der Anzeige zurzeit eine der günstigen (Zeit für das Einarbeiten, Kosten für die Beschaffung, etc.) Varianten.

Software

Programm-Ablauf

Im Folgenden wird gezeigt in welcher Reihenfolge, wahllos oder geordnet, die Signal angelegt werden müssen. Dabei gibt es kein reines Lesen oder Schreiben, sondern beide, der MC und der LCD-Controller, teilen dem Andere etwas mit. Der Aktivere kennt das Protokoll und steuert damit die Kommunikation. Lesen und Schreiben wird hier als Datenfluß-Richtung der zu betrachtenden Daten verstanden.

Bsp.: Einlesen der aktuellen Cursor-Position im LCD!
  1. Auslesen des Statutses des LCD, um zu erfahren ob dieses Bereit ist! Wenn JA dann weiter, wenn NEIN dann eine Zeit warten und wenn dann immer noch nicht, die Ausgabe abbrechen und z.Bsp. eine Fehlermeldung ausgeben.
  2. E=Enabel wird auf Low gelegt, damit das LCD nicht auf die sich verändernden Signale reagiert.
  3. Als nächstes werden die Signale, z.B. für das Lesen der aktuellen Cursor-Position, in beliebiger Reihenfolge angelegt.
    • R/W = Read/Write = Low für Schreiben des Befehles laut Protokoll;
    • RS = Register Steer = High für Anmeldung eines Befehles;
    • Datenbits 0 bis 7 die dem Befehlskode "Cursor-Position" entsprechen, anlegen;
  4. E=Enabel auf High, damit das LCD die anliegenden stabilen Signale übernimmt;
  5. Einen Taktzyklus des LCD's warten, dies ist i.d.R 10µs, da das LCD i.d.R einen Taktgenerator mit einer Frequenz von. ca. 100kHz hat;
  6. Als Letztes wird E=Enabel wieder auf Low gelegt, damit das LCD nicht auf die sich verändernden Signale reagiert.
  7. - - - - - - - - - - - - - - - - - - - - - - -
  8. Als nächstes werden die Signale für das Lesen der durch den LCD-Controller bereitgestellten Daten, welche die aktuelle Cursor-Position enthalten, in beliebiger Reihenfolge angelegt.
    • R/W = Read/Write = High für Lesen;
    • RS = Register Steer = Low für Anmeldung eines Nicht-Befehles;
    • Datenbits 0 bis 7 hochohmig, da der LCD-Controller die Daten noch nicht gibt und der MC ließt;
  9. E=Enabel auf High, damit das LCD die anliegenden stabilen Signale übernimmt;
  10. Einen Taktzyklus des LCD's warten, dies ist i.d.R 10µs, da das LCD i.d.R einen Taktgenerator mit einer Frequenz von. ca. 100kHz hat;
  11. Die Daten durch den MC übernehmen;
  12. Als Letztes wird E=Enabel wieder auf Low gelegt, damit das LCD nicht auf die sich verändernden Signale reagiert.

Standard-Befehle

Jedes LCD nach Industriestandard hat einen gemeinsamen Vorrat an Befehlen, die bei allen gleich lauten und funktionieren. 9 wirken auf die Befehls-SFR und 2 auf die Daten-SFR. Dazu kommen natürlich auch solche, welche speziell für das LCD entwickelt worden sind. Ist bei eine Bit-Position ein x als Wert angegeben, bedeutet dies, das der Wert nicht ausgewertet wird.

Tabelle 06: Die 11 Standard-Befehle des LCD-Controllers
Befehl Adressbus Datenbus Bearbeitungs-
zyklen a 40µs
R/W RS DB7 DB6 DB5 DB4   DB3 DB2 DB1 DB0
Display Clear 0 0 0 0 0 0 0 0 0 0 40
Cursor Home 0 0 0 0 0 0 0 0 1 x 40
Entry Mode Set 0 0 0 0 0 0 0 1 I/D S 1
Display ON/OFF Control 0 0 0 0 0 0 1 D C B 1
Cursor/Display Shift 0 0 0 0 0 1 S/C R/L x x 1
Function Set 0 0 0 0 1 DL N F x x 1
CG RAM Address Set 0 0 0 1 CG RAM Adresse 1
DD RAM Address Set 0 0 1 DD RAM Adresse 1
BF/Address Read 1 0 BF Adresszähler 0
Data Write to CG or DD RAM 0 1 Datenbyte D7 - D0 1
Data Read to CG or DD RAM 1 1 Datenbyte D7 - D0 1

Erläuterungen zu den verwendeten Begriffen:
BF/Address Read
Auslesen des BF (BUSY-Flags) um festzustellen ob der Controller des Displays bereit ist und der eingestellten RAM-Adresse, entweder des Display-Speichers (DD RAM) oder des Character-Speichers (CG RAM). Die Auswahl ist Teil des Befehls.
CG RAM Address Set (CG = Character)
Setzen der Adresse im Zeichenspeicher (8 Byte), in dem ein selbstdefiniertes Zeichen geschrieben bzw. ausgelesen werden soll.
Cursor Home
Cursor auf die Home-Position, Adresse 00H entspricht (Spalte 0, Zeile 0), setzen. Siehe dazu die Adress-Aufteilung des Displays.
Cursor/Display Shift
Bewegt sich der Cursors (S/C=0) oder wird das Display (S/C=1) geshiftet?
Ist nun noch die Frage, nach rechts (R/L=1 oder linke (R/L=0), zu klären.
Data Read from CG RAM or DD RAM
Auslesen von Daten aus dem Character- oder aus dem Display-RAM.
Data Write from CG RAM or DD RAM
Einschreiben von Daten in das Character- oder in dem Display-RAM.
DD RAM Address Set
Einstellen der Adresse innerhalb des Display-Speichers, in dem ein darzustellendes Zeichen geschrieben oder aus dem ein vorhandenes ausgelesen werden soll. Im Anschluss folgt der eigentliche Lese- bzw. Schreib-Befehl.
Display Clear
Löschen des Displays durch
  • Einschreiben von 020H (Leerzeichen) in den gesamten Display-Speicher und
  • Setzen des Cursors auf die Home-Position (00H).
Display ON/OFF Control
  • Ein-/Ausschalten des Displays (D=1/0) um Energie zu sparen. Der Inhalt geht dabei nicht verloren!
  • Cursor (C=1/0) ein-/ausschalten.
  • Cursor-Blinken (B=1/0) ein-/ausschalten.
Entry Mode Set
Festlegung der Bewegungsart
  • Cursor mit jedem Schreiben oder Lesen eines Zeichen nach rechts (I/D=1 d.h. Increment) oder nach links ((I/D=0 d.h. Decrement) bewegen;
  • Art und Weise des Shift im Display. Wenn S=0 wird nicht geshihftet. Ist S=1 ist die Shiftrichtung nach links, wenn I/D=0, und nach rechts, wenn I/D=1.
    Beim PC gibt es etwas Ähnliches. Dort nennt man das nicht Shift sondern Rollen, wenn man die Taste <Rollen> betätigt.
Function Set
Einstellen der allgemeinen Betriebsart des Displays mit
  • Datenbusbreite 4 (DL=0) oder 8 Bit (DL=1);
  • Taktverhältnis (N=?) 1 Zeile ??? und
  • Zeichengröße (F=?) 5*7 Dot's???.

Hardware

Das umfasst den Teil, der fest Verdrahtet und damit berührbar ist.

Anschluss-Belegung

lcd01c0.png
Abb. 1c: Lötansicht der Anschlusskontakte
am LCD in einer Reihe
lcd01b0.png
Abb. 1b: Vorderansicht der Anschlusskontakte
am LCD in einer Reihe
lcd01a0.png
Abb. 1a: Schematische Darstellung
der 14 Anschlusskontakte am LCD
Die Anschlussbelegung am Display ist, hintereinander weg (Abb. 01c), in einer Reihe. Lötet man hier ein Flachbandkabel an, hat man das Display auf einen 2x7−Stecker- bzw. Buchsenleiste gleicher Belegung und damit können die Displays schnell getauscht werden.
Tabelle 01: Belegung der 1x16−Kontaktreihe am LCD
PIN-Nr. -2 -1 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Bezeichnung V+H V-H GND VCC VK RS R/W E D0 D1 D2 D3 D4 D5 D6 D7
lcd02c0.png
Abb. 2c: Buchsenleiste plus
Flachbandkabel mit aufgelöteter
Steckerleiste verbunden
lcd02b0.png
Abb. 2b: Belegung eines
14poligen Wannensteckers
in der Draufsicht
lcd02a0.png
Abb. 2a: Flachbandkabel auf einem
14poligen IDC-Anschluss aufgepresst
Flachbandkabel können gut mit Steckern und Buchsen, die einen IDC-Anschluss haben, durch Auflegen und hineinpressen des Kabels in die Kontaktgabeln, verbunden werden. Dies geschieht durch paralleles Zusammenpressen von Anschluss und Kabel, entweder mit einer dbzgl. Zange (Abb. 1b) oder mit dem Schraubstock.
Tabelle 02: Belegung des 2x7−Wannensteckers bzw. der Pfostenbuchse
Bezeichnung Pin-Nr. Bezeichnung
VSS bzw. GND 1 2 VDD bzw. VCC
VKontrast 3 4 RS
R/W 5 6 E
D0 7 8 D1
D2 9 10 D3
D4 11 12 D5
D6 13 14 D7
Innerhalb
Folgenden Abkürzungen wurden bei der Bezeichnung der PIN's verwendet.
D0 .… D7 = Datenbits 0 bis 7
Pin's der Datenleitungen, in dem Fall ein Byte.
E = Enabel
Bei High nimmt das LCD am Datentransfer teil, bei Low reagiert es nicht.
RS = Register Select um Speicher für die Steuerung auszuwählen
RS=0, es werden Steuerzeichen gesendet. Diese werden in das Befehlsregister geladen. Macht aber nur Sinn, wenn in das LCD geschrieben (R/W = Low) wird!
Bei RS=1 können Anzeigedaten ins LCD geschrieben bzw. aus dem LCD gelesen werden. Zum Beispiel die Position des Cursors.
R/W = Read/Write
High zum Lesen vom LCD und Low zum Schreiben in das LCD.
V±Hintergrund bzw. V±H
Die Spannungsdifferenz zum Betrieb der Hintergrund-Beleuchtung.
VCC
Betriebsspannung gegen Masse (GND) oder als Differenz zwischen VDD-VSS, i.d.R. +5V.
VKontrast bzw. VK
Spannung zwischen Null und Betriebsspannung, meist über ein Potentiometer mit 10kOhm bereitgestellt.
  • Bei Null hat Schrift und Hintergrund auf dem LCD eine einheitliche Farbe und
  • bei Betriebsspannung sind Schrift und Hintergrund in Komplementärfarben dargestellt.
Die Hintergrundbeleuchtung, mit den Anschlüssen V-Hintergrund und V+Hintergrund, gehört nicht auf den 2*7 poligen Wannenstecker, sondern diese werden in der Regel lokal benutzt, um die Anzeige den Lichtverhältnissen anzupassen.

Speicher-Aufteilung

(/2???/ S. 434: Kommen wir zur praktischen Ansteuerung ...)
Tabelle 03: Signale an den Pins R/W und RS und deren Wirkung auf den Datenfluss.
R/W
High Low
Daten lesen aus RAM Data schreiben in RAM High RS
Busy-Signal + aktuelle Adresse auslesen Steuerzeichen zum LCD senden Low
Die Speicherzellen (RAM) werden im LCD Spezial−Funktions−Register, abgekürzt SFR, genannt. Über die 2 Leitungen werden dann das Daten- oder Steuer−SFR ausgewählt, um sie dann lesen oder beschreiben zu können.

Zeichen-Speicher

Tabelle 04: Zeichensatz des LCD-Controllers
Adresse 00H 01H 02H 03H 04H 05H 06H 07H - 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH
00H ??? ??? ??? -
10H CG[1] CG[2] CG[3] CG[4] CG[5] CG[6] CG[7] CG[8] - CG[1] CG[2] CG[3] CG[4] CG[5] CG[6] CG[7] CG[8]
20H ! " # $ % & ' - ( ) * + , - . /
30H 0 1 2 3 4 5 6 7 - 8 9 : ; < = > ?
40H @ A … O
... ... ...
7FH p q … 
(/2???/ S. 434: Die darstellbaren Zeichen ...) Der Zeichen-Speicher umfasst wie die ASCII-Tabelle 16*16 Byte. Statt der Steuerzeichen sind hier die Adressen 00H bis 0FH frei mit eigenen Zeichen im Format von 5*7 Punkten belegbar.

Display-Speicher

Tabelle 05: Adressezuweisung Zeile und Spalte beim Display-Speicher
Spalte/Zeile S00 S19
Z1 00H 13H
Z2 40H 53H
Z3 14H 27H
Z4 54H 67H
Der Anzeigespeicher, auch DD RAM genannt, (/2???/ S. 438: Man erkennt hier …) ist etwas eigenwillig aufgeteilt. Die 1. Zeile endet mit an der Adresse 13H und die 3. Zeile beginnt mit der Adresse 14H. Analog die 2. mit Adresse 52H und 4. Zeile mit Adresse 54H.
Nach Oben