40
Dot-Matrix LCD-Displays zurück zu Elektronik , Homepage Einleitung Typen Der Controllerchip HD44780 interne und externe Organisation 2x8 Display 1x16 Display 2x16 Display bis 2x40 Display 4x20 Display 4x40-Display Adressen im Display-DDRAM Zeichengenerator - CGRAM Steckerbelegung Stromversorgung Hintergrundbeleuchtung Interface Display-Befehle Initialisierung Test eines unbekannten Displays Der Controllerchip KS0073 Der Controllerchip KS0066U Einleitung Dot-Matrix LCD-Displays eignen sich aufgrund ihres erträglichen Preises und des geringen Ansteueraufwandes gut, um ein PIC- gesteuertes Gerät 'geschwätzig' zu machen. Allerdings treten immer wieder Probleme auf, wenn man ein solches Display zum ersten Mal ansteuern will. Deshalb habe ich nützliche Informationen zur Funktion dieser Displays hier zusammengestellt. nach oben Typen der Displays

LCD Manual 2

Embed Size (px)

DESCRIPTION

www.sprut.de

Citation preview

Page 1: LCD Manual 2

Dot-Matrix LCD-Displays zurück zu Elektronik , Homepage

Einleitung Typen Der Controllerchip HD44780 interne und externe Organisation 2x8 Display 1x16 Display 2x16 Display bis 2x40 Display 4x20 Display 4x40-Display Adressen im Display-DDRAMZeichengenerator - CGRAM Steckerbelegung Stromversorgung Hintergrundbeleuchtung Interface Display-Befehle Initialisierung Test eines unbekannten DisplaysDer Controllerchip KS0073Der Controllerchip KS0066U

EinleitungDot-Matrix LCD-Displays eignen sich aufgrund ihres erträglichen Preises und des geringen Ansteueraufwandes gut, um ein PIC-gesteuertes Gerät 'geschwätzig' zu machen. Allerdings treten immer wieder Probleme auf, wenn man ein solches Display zum ersten Mal ansteuern will. Deshalb habe ich nützliche Informationen zur Funktion dieser Displays hier zusammengestellt.

nach oben

Typen der DisplaysDot-Matrix-Displays werden von vielen Herstellern in der ganzen Welt (und besonders in Taiwan) hergestellt. Neben Displays von Größen wie Datavision gibt es auch immer wieder Displays, deren Hersteller gar nicht zu ermitteln ist. Zum Glück sind Funktion und Anschluß der Displays immer gleich. Auf dieser Webseite beschäftige ich mich mit Displays, die einen Controller vom Typ HD44780 (oder kompatibel) verwenden.

Es gibt einzeilige,  zweizeilige und vierzeilige Displays mit 8 bis 40 Zeichen pro Zeile. Jedes Zeichen wird mit einer Matrix aus 5x8 Punkten dargestellt. Theoretisch gibt es auch die Möglichkeit einzeilige Displays mit Zeichen aus einer 5x11-Matrix zu bauen,

Page 2: LCD Manual 2

solche Displays sind aber unüblich. (Die beiden Modes werden gelegentlich auch als 7x7 und 5x10 bezeichnet.)

nach oben

Der Controllerchip HD44780Das einheitliche Verhalten aller Displays verdanken wir einem Controllerchip, der sich als Standard durchgesetzt hat, und der von allen Herstellern verbaut wird. Dabei handelt es sich um den HD44780 von Hitachi, der auch kompatible 'Brüder' von anderen Herstellern bekommen hat (z.B. den SED1278 von Epson).

Dieser Chip besitzt

einen 80 Zeichen langen Textpuffer ein paralleles Interface LCD Treiber mit 16 Punkt-Zeilenleitungen und 40 Punkt-Spaltenleitungen.

Legt man die 5x8-Punktmatrix für jedes Symbol zu grunde, so kann der Controller ein 2-zeiliges Display mit jeweils 8 Zeichen pro Zeile ansteuern. Der anzuzeigende Text wird dem internen Zeichenpuffer entnommen, der mit 80 Zeichen reichlich bemessen ist. Die beiden Zeilen stellen jeweils einen 8-zeichen langen Ausschnitt aus dem Puffer da. Die Position dieser 'Fenster' kann eingestellt werden.

Falls nur eine Zeile des 8-Stellen langen Displays benutzt werden soll, kann man den Controller auf einzeilig schalten. Dann werden die Punktzeilen-Leitungen 9..16 abgeschaltet, und die Leitungen 1..8 mit einem Takt angesteuert, der einen verbesserten Kontrast ermöglicht. In der Praxis gibt es aber kaum 1x8-Displays.

Page 3: LCD Manual 2

Wird anstelle der 5x8-Matrix die Darstellung mit 5x11 Punkten gewählt, stehen nicht mehr genug Punkt-Zeilenleitungen für eine 2. Zeile zur Verfügung. Der Controller kann dann nur ein einzeiliges 8 Zeichen langes Display ansteuern.

Mit einem Trick läßt sich mit einem Controllerchip auch ein 1x16-Display (eine Zeile, 16 Stellen) aufbauen. Dabei werden einfach die beiden 8-stelligen Zeilen hintereinander angeordnet. Was kosten spart verwirrt aber den Nutzer. Da der Controller von der exotischen Beschaltung nichts weiß, verwaltet er das Display wie ein 2x8-Display. Man muß ihn also als 2-zeilig initialisieren, und wenn man auf die Positionen 9 .. 16 schreiben will, so muß man in die 2. Zeile schreiben.

Der saubere Weg zu längeren Displays ist die Erweiterung des Displays mit zusätzlichen Display-Treiber-Schaltkreisen wie dem HD44100 oder dem SED1181. Ein Controllerchip kann mit mehrere Treiberchips umgehen. Jeder zusätzliche Treiber vom Typ HD44100 ergänzt den Controller um 40-Punktspalten-Leitungen.

Page 4: LCD Manual 2

Das sind jeweils 8 Zeichen. Dadurch läßt sich die Breite des 2-zeiligen Displays schrittweise bis auf 40 Zeichen ausbauen. Die Treiber besitzen keinen Textpuffer, sie helfen lediglich dem Controller, zusätzliche Zeichen anzuzeigen. Da der Controller nur einen 80 Zeichen großen Textpuffer besitzt, ist bei 2x40 der Ausbau beendet.

Für ein 4x40-Displays benötigt man 2 Controller, die einzeln angesteuert werden müssen. Jeder Controller hat ein eigenes ENABLE-Pin am Interface, weshalb man an einem solchen Display einen Anschlußpin mehr benötigt. Um Verwechslungen zu vermeiden verwendet man gleich ein ganz anderes Steckerlayout. Anstelle des einreihigen Steckerfeldes (14..16 Kontakte) wird ein zweireihiges Steckerfeld verwendet (2x8 Kontakte).

nach oben

interne und externe OrganisationAus dem oben gesagten ergibt sich das Problem, daß der Aufbau des LCD-Modules in Spalten und Zeilen nicht unbedingt mit der internen Organisation übereinstimmt.

Unproblematisch sind alle 2-zeiligen Displays (8..40 Zeichen pro Zeile) und alle 4-zeiligen Displays mit einer Zeilenlänge über 20 Zeichen.

Kritisch sind aber alle 1-zeiligen Displays (8..40 Zeichen) sowie 4-zeilige Displays mit bis zu 20 Zeichen pro Zeile.

2x8-DisplayEin zweizeiliges Display mit jeweils 8 Zeichenpro Zeile entspricht genau der internen Struktur eines HD44780-Chips, wenn er im 5x8-Punkte-Modus ist.

Page 5: LCD Manual 2

1x16-Display

Für Displaylängen über 8 Zeichen pro Zeile benötigt man normalerweise zusätzliche Displaytreiber (HD44100). Um diese Kosten zu sparen, werden oft einfach die beiden Zeilen eines 2x8 Displays mechanisch hintereinander angeordnet (8+8-Modul). Der Controller weiß davon nichts, und behandelt die vordere und die hintere Displayhälfte wie zwei getrennte Zeilen. Deshalb muß der Controller auch 2-zeilig initialisiert werden. 

Es gibt gelegentlich auch echte 1x16-Displays mit nur einer logischen Zeile. Diese sollten auch nur einzeilig initialisiert werden. Was für einen Typ man besitzt, stellt sich spätestens nach der Initialisierung heraus. Befindet sich auf der Displayrückseite aber nur ein Chip (der Controller HD44780) dann handelt es sich höchstwarscheinlich um ein 8+8-Modul. Befindet sich dort aber noch ein zweiter Chip (ein Displaytreiber HD44100), dann arbeitet das Display einzeilig mit 16 Zeichen pro Zeile.

Page 6: LCD Manual 2

2x16 bis 2x40

Zusätzliche Stellen können unter Zuhilfenahme von Displaytreibern angezeigt werden. 

Im nebenstehenden Foto einer 2x16-Display-Rückseite erkennt man deutlich auf der rechten Seite den am Interface angeschlossenen Controller und links davon (unter dem Aufkleber versteckt) den zusätzlichen Displaytreiber für die zusätzlichen 8 Stellen (40 Punktspalten) beider Zeilen. 

Wieviel Displaytreiber bei welcher Zeilenlänge benötigt werden, hängt vom verwendeten Chip-Typ ab. Beim HD44100 werden für jeweils 8 zusätzliche Zeichen je ein Displaytreiber benötigt. 40-Zeichen benötigen also neben dem Controller noch 4 Displaytreiber HD44100.

Page 7: LCD Manual 2

Andere Treiberschaltkreise können mehr Spalten ansteuern. Im untenstehenden Foto ist die Platine eines 2x40 Displays zu sehen, das mit nur 2 zusätzlichen Spaltentreibern ausgestattet ist. Jeder dieser Treiber entspricht in der Funktion zwei kaskadierten HD44100.

4x20 DisplayVierzeilige Displays mit bis zu 20 Zeichen pro Zeile lassen sich mit nur einem Controller und zusätzlichen Displaytreibern aufbauen. Das 4x20 Display ist eigentlich ein 2x40 Display, das in der Mitte durchgeschnitten wurde, und bei dem dann die hinteren Hälften der Zeilen unter den vorderen Hälften der Zeilen angebracht wurde. Wenn man also dem Controller Daten für die 1. Zeile übergibt, so werden davon die ersten 20 Zeichen wirklich in die 1. Zeile geschrieben, wärend Zeichen 21 bis 40 in die 3. Zeile gelangen. Genauso gehören die 2. und 4. Zeile des Displays eigentlich hintereinander.

Bei den im nachfolgenden Bild eingezeichneten Displaytreibern HD44100 handelt es sich um einmal 1,5 Schaltkreise und einmal 2,5 Schaltkreise - zusammen also 4

Page 8: LCD Manual 2

Schaltkreise. Der Übersichtlichkeit halber wurden sie als 2 Kästchen gezeichnet.

nach oben

4x40 DisplayVierzeilige Displays mit bis mehr als 20 Zeichen pro Zeile lassen sich nicht mehr mit einem Controller realisieren. Der interne Textpuffer des HD44780 ist zu klein. Deshalb sind diese Displays als zwei unabhängige zweizeilige Displays aufgebaut. Der 1. Controller verwaltet die oberen beiden Zeilen und der zweite Controller die unteren beiden Zeilen.

Beide Controller sind an den selben Interfacestecker angeschlossen (, der aber zweireihig ausgeführt ist). Jeder Controller hat auf dem Stecker seinen eigenen ENABLE-Pin, alle anderen Anschlüsse sind an beide Controller parallel angeschlossen.

nach oben

Adressen im Display - DDRAMDer Controller (und damit die LCD-Anzeige) stellt in der Anzeige die Zeichen da, die sich im internen Textpuffer befinden. Dieser 80-Zeichen lange Puffer wird als DDRAM bezeichnet.

Page 9: LCD Manual 2

Ist der Controller als einzeilig initialisiert worden, dann ist der DDRAM ein geschlossenen Speicherbereich mit den Adressen 00h bis 4Fh. Ist der Controller zweizeilig initialisiert worden, besteht der DDRAM aus 2 getrennten je 40 Zeichen langen Bereichen. Der DDRAM für die 1. Zeile hat die Adressen 00h bis 27h, der DDRAM für die 2. Zeile geht von 40h bis 67h

Der Inhalt des internen 80 Zeichen langen Textpuffer wird vom Display angezeigt. Da das Display oft kleiner als der Textpuffer ist, wird oft nur ein Ausschnitt des Puffers angezeigt. Dieser Ausschnitt ist im Textpuffer verschiebbar. Dazu dient der "Cursor/Display-Shift"-Befehl, mit dem der angezeigte DDRAM-Ausschnitt schrittweise verschoben werden kann. Nach dem Einschalten des Displays ist das erste dargestellte Zeichen die DDRAM-Zelle "0".

Im Folgenden geht es um die Zuordnung von Displaypositionen zu Adressen des Textpuffers ohne Berücksichtigung dieser möglichen Verschiebung.

Die nicht immer einleuchtenden Aufteilungen der internen Zeilen des Controlers auf die sichtbaren Zeilen des Displays führen zu einer Zuordnung der Speicheradressen des Textpuffers im Controller zu den angezeigten Stellen, die für jedes Display anders ist.  

Adressen der Displaypositionen im Textpuffer(hexadezimal, ohne Shift))

Displaytyp 1. Zeile

2. Zeile

3. Zeile

4. Zeile Bemerkung

1x8 00-07 - - -  

1x16 00-0F - - - echtes einzeiliges Display mit Displaytreiber

1x16 (8+8)00-07

40-47- - -

linke Hälfte

rechte Hälfte1x20 00-13 - - -  1x40 00-27   - -  2x8 00-07 40-47 - -  

2x12 00-0B 40-4B - -  2x16 00-0F 40-4F - -  2x20 00-13 40-53 - -  2x24 00-17 40-57 - -  2x40 00-27 40-67 - -  4x16 00-0F 40-4F 10-1F 50-5F  4x20 00-13 40-53 14-27 54-67  

4x4000-27

-

40-67

-

-

00-27

-

40-67

1. Controller

2. Controller 

Page 10: LCD Manual 2

nach oben

Zeichengenerator - CGRAMJedes Zeichen, das im Display dargestellt wird, besteht aus einem "Punkt"muster in einer "Matrix" aus 5 Spalten und 8 bis 11 Zeilen. Daher kommt ja der Begriff  "Dotmatrix"-Display. Welche Punkte der Matrix bei einem bestimmten Zeichen hell sind und welche dunkel, das steht im Zeichengenerator (character generator - CG). Der CG ist ein Speicher, der für jedes darstellbare Zeichen 8..11 Bytes enthält. Jedes Bit eins Bytes entspricht einem Punkt der Matrix.Der CG besteht aus zwei Teilen:

einem je nach Chip-Typ 7200 bis 9920 Bit großen ROM, und einem 64 Bit großen RAM

Den ROM gibt es in unterschiedlichen Versionen, so dass die dargestellten Zeichen je nach Display etwas unterschiedlich aussehen können. Typischerweise gibt es aber zu jedem Display ein Datenblatt mit der Darstellung aller Zeichen des CGROM.

Interessanter ist der CGRAM. Er ermöglicht es dem Anwender, eigene Zeichen zu kreieren. Dazu schreibt man einfach ein selbstentworfenes Punktmuster in den CGRAM. Dort ist Platz für 8 Zeichen in 5x8-Punke-Darstellung oder 4 Zeichen in 5x11-Punke-Darstellung. Das ist nicht viel, aber es genügt z.B. für eine Balkengrafik oder einige zusätzliche Buchstaben des kyrillischen Alphabetes, für die sich unter den lateinischen Buchstaben keine Entsprechungen finden. (Einige Displays haben auch kyrillische Großbuchstaben bereits im CGROM.)

Natürlich kann man die Symbole im CGRAM immer wieder ändern, aber das Display kann immer nur die Symbole darstellen, die sich auch gerade im CGRAM befinden. Zu jedem Zeitpunkt kann man im Display also maximal 8 selbstentworfene Symbole gleichzeitig anzeigen.

Die Zeichen des CGRAMs sind den "ASCII"-Codes 0x00 bis 0x0F zugeordnet. Dabei gibt es allerdings 2 bis 4 Codes für jedes darstellbare CGRAM-Symbol. die nachfolgende Tabelle zeigt , welche CGRAM-Symbole welchen ASCII-Codes zugeordnet sind.

Code 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F

5x8-Pixel

1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8

5x11-Pixel

1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4

Nach dem Einschalten des Displays steht noch nichts im CGRAM. Man muss den CGRAM also erst beschreiben.Dazu schreibt man (je nach Darstellung) 8 bis 11 Byte in die entsprechenden Speicherzellen des CGRAMs. Die niederwertigen 5 Bits eine jeden Bytes bilden dann je eine Zeile der darzustellenden Punktmatrix, wobei das niederwertigste Bit dem

Page 11: LCD Manual 2

rechten Punkt zugeordnet ist. Die nachfolgende Tabelle zeigt die zu den Zeichen gehörenden CGRAM-Adressen. Die jeweils niedrigste Adresse entspricht der obersten Matrixzeile.

Zeichen 1 2 3 4 5 6 7 8

Adressen bei 5x8

0x00-0x07

0x08-0x0F

0x10-0x17

0x18-0x1F

0x20-0x27

0x28-0x2F

0x30-0x37

0x38-0x3F

Adressen bei 5x11

0x00-0x0A

0x10-0x1A

0x20-0x2A

0x30-0x3A

/ / / /

Beispiel:Ich möchte das kyrillische Symbol für das große I ausgeben. Das sieht genauso aus wie ein gespiegeltes N. Angenommen, im CGROM ist es nicht enthalten, dann muss ich es selbst erzeugen. Zunächst denke ich mir ein passendes Punktmuster aus. Dabei gehe ich von einer 5x8-Darstellung aus:

Jede Zeile entspricht nun einem Byte im CGRAM. Ich bestimme dei Werte der Bytes, den ich in die zugeordneten CGRAM-Zellen einzutragen habe.

CGRAM-Adresse 16 8 4 2 1 Byte dezimal Byte hexadezimal0x00 16+1 = 17 0x11

0x01 16+1 = 17 0x11

0x02 16+2+1 = 19 0x13

0x03 16+4+1 = 21 0x15

0x04 16+8+1 = 25 0x19

0x05 16+1 = 17 0x11

0x06 16+1 = 17 0x11

0x07 0 0x00

Das Einschreiben dieser 8 Bytres in die zugehörigien CGRAM-Zellen erfolgt mit den Befehlen "CG RAM Address Set" und "CG RAM/DD RAM Data Write".Ein praktisches Beispiel findet man hier.

Page 12: LCD Manual 2

nach oben

SteckerbelegungDie nachfolgenden Anschlussbelegungen gelten als Orientierung und treffen auf die meisten Displays zu. Es wird aber immer auch Ausnahmen geben. Wenn möglich, sollte man einen Blick in das Datenblatt des Displays werfen. Um Anschlussfehler zu vermeiden, sollte man zumindest prüfen, ob das vermeintliche Massepin mit den Masseflächen des Displays verbunden ist. Dann kann man davon ausgehen, das auch die anderen Pins mit der vermuteten Anschlussbelegung übereinstimmen.

Die 1- und 2-Zeiligen Displays (sowie 4-zeilige Displays mit bis zu 20 Zeichen pro Zeile) besitzen einen Reihe von 14 oder 16 Lötkontakten, bzw. eine einreihige Stiftleiste mit 14 oder 16 Kontakten. Die Kontakte 15 und 16 sind für den Anschluß der Hintergrundbeleuchtung (soweit vorhanden). Hat ein hintergrundbeleuchtetes Display nur 14 Kontakte am Verbinder, so sind die Beleuchtungsanschlüsse an einer anderen Stelle des Displays zu finden. Die Pins 1 bis 14 sind in aller Regel identisch belegt belegt. (Eine Ausnahme scheinen Displays von Seiko zu sein, wie mir Peter J. mitteilte - danke.) Der einreihige Steckverbinder kann sowohl an der Oberseite wie auch an der Unterseite des Displays liegen. Das Pin 1 ist beschriftet, oft auch das letzte Pin.

Manchmal findet sich auch ein zweireihiger 14- oder 16-poliger Steckverbinder. Die Nummerierung der Pins ist in der Regel auf der Platine angegeben, und geht auch aus nebenstehender Abbildung hervor. Die Funktionsbelegung der Pins ist identisch mit der Standardbelegung des einreihigen Verbinders.

Pinbelegung 2x8 bis 4x20 / 2x40Pin

(Standard)Pin

(Seiko) Symbol Pegel Beschreibung

Page 13: LCD Manual 2

1 13 Vss Masse Masse GND2 14 Vdd +5V Betriebsspannung +5V

3 12 Vo 0 .. 1,5V (-2..-5V)

Displayspannung (Kontrast)

4 11 RS H/L Register Select5 10 R/W H/L H:Read / L:Write6 9 E H Enable7 8 D0 H/L Datenleitung 0 (LSB)8 7 D1 H/L Datenleitung 19 6 D2 H/L Datenleitung 210 5 D3 H/L Datenleitung 311 4 D4 H/L Datenleitung 412 3 D5 H/L Datenleitung 513 2 D6 H/L Datenleitung 614 1 D7 H/L Datenleitung 7 (MSB)

15 (optional) ? LED+ - Pluspol der LED-Beleuchtung

16 (optional) ? LED- - Minuspol der LED-Beleuchtung

Vierzeilige Displays it mehr als 20 Zeichen pro Zeile besitzen zwei unabhängige Display-Controller. Einen für die ersten beiden Zeilen und einen für die unteren beiden Zeilen.

Als anschluß wird auch der einreihige Anschluß verwendet (wie bei kleineren Displays) wobei der zusätzliche Enable-Pin zwischen D0 und den ersten Enable-Pin eingefügt wird. Ich habe auch schon Displays gesehen, die genau andersherum numeriert waren. Man sollte immer analysieren, welches Pin mit den Masseflächen der Displayplatine verbunden ist, um das Vss-Pin zu identifizieren.  

Pinbelegung 4x24 bis 4x40 (1-reihiger Verbinder)Pin

(Standard) Symbol Pegel Beschreibung

1 Vss Masse Masse GND2 Vdd +5V Betriebsspannung +5V

3 Vo 0 .. 1,5V (-2..-5V) Displayspannung (Kontrast)

4 RS H/L Register Select5 R/W H/L H:Read / L:Write6 E2 H Enable untere Zeilen7 E1 H Enable obere Zeilen

Page 14: LCD Manual 2

8 D0 H/L Datenleitung 0 (LSB)9 D1 H/L Datenleitung 1

10 D2 H/L Datenleitung 211 D3 H/L Datenleitung 312 D4 H/L Datenleitung 413 D5 H/L Datenleitung 514 D6 H/L Datenleitung 615 D7 H/L Datenleitung 7 (MSB)

16 (optional) LED+ - Pluspol der LED-Beleuchtung

17 (optional) LED- - Minuspol der LED-Beleuchtung

Manche Steckverbinder für solche Displays besitzt 2 Reihen zu je 8 Pins. Eine Reihe sind die Pins mit gerader Pinnummer, die andere Reiche die ungeraden. Auch hier dienen die Pins 15&16 dem Anschluß der LED-Hintergrundbeleuchtung (soweit vorhanden).

Pinbelegung 4x24 bis 4x40 (2-reihiger Verbinder)Pin Symbol Pegel Beschreibung1 D6 H/L Datenleitung 62 D7 H/L Datenleitung 7 (MSB)3 D4 H/L Datenleitung 44 D5 H/L Datenleitung 55 D2 H/L Datenleitung 26 D3 H/L Datenleitung 37 D0 H/L Datenleitung 0 (LSB)8 D1 H/L Datenleitung 19 E1 H Enable 1. Controller

10 E2 H Enable 2. Controller11 RS H/L Register Select12 R/W H/L H:Read / L:Write

13 Vo 0 .. 1,5V (-2..-5V) Displayspannung (Kontrast)

14 Vdd +5V Betriebsspannung +5V15 (optional) LED + - Pluspol der LED-Beleuchtung16 (optional) LED - - Minuspol der LED-

Beleuchtung

   

nach oben

Page 15: LCD Manual 2

Stromversorgung

Die Dotmatrix-Displays werden mit einer Betriebsspannung Vdd von +5V (± 5%) betrieben. Der Vss-Pin ist der Masseanschluß. Die Stromaufnahme (ohne Beleuchtung) liegt meist unter 1 mA. Maximalwerte von 5 mA sind möglich. 

Außerdem wird eine Spannung zur Einstellung des Displaykontrastes benötigt. Es gibt zwei unterschiedliche Displaysorten, die auch unterschiedliche Kontrast-Spannungen benötigen: 

Standard-Displays (Temperaturbereich: 0°C ...50°C) benötigen eine Konstrastspannung zwischen 0V und 1,5V. Großdisplays und Displays für hohe Umgebungstemperaturen (Temperaturbereich: -20°C ...70°C) benötigen aber oft eine Spannung von -2V ... -5V, was ihren Einsatz verkompliziert.

Das nebenstehende Bild verdeutlicht den Anschluß des Displays und die Erzeugung der Kontrast-Spannung für Standard-Displays. Durch Änderung der Spannung läßt sich der Kontrast und der optimale Blickwinkel zum Display verändern.

Der Kontrast des Displays ist temperaturabhängig. Wer das Display unter verschiedenen Temperaturen betreiben will (Sommer und Winter im Freien) sollte den Einstellwiderstand als von außen bedienbaren Regler gestalten.

Page 16: LCD Manual 2

Zur Versorgung eines Displays mit erweitertem Temperaturbereich oder eines Großdisplays benötigt man eine negative Spannung von ein paar Volt, die aber so gut wie nicht belastet wird (einige Mikroampere). Nebenstehende Schaltung ist für diesen Zweck ausreichend. Sie basiert auf dem polulären ICL7660 Schaltkreis für Ladungspumpen.

Das rechts stehende Foto zeigt diese Schaltung an einem 2x16-Display. Mit dem Einstellwiderstand läßt sich die negative Kontrastspannung, und damit der Displaykontrast einstellen. Bei -5V ist das Display gut ablesbar. 

Wenn man ein LCD-Display zu einem sehr günstigen Preis bekommt (z.B. bei einem Restpostenhändler), dann bemerkt man manchmal erst nach dem Kauf, daß man ein 'Hochtemperaturdisplay' erworben hat. Meist wird man erst stutzig, wenn das Display mit einer normalen Beschaltung nichts (aber auch gar nichts) anzeigt. Da die Displayhersteller die gleichen Leiterplatten einsetzen, wie für normale Displays, können nur Aufkleber auf dem Display eine Hochtemperausführung kennzeichnen. Oft befindet sich auf dem Controller oder Spaltentreiber ein Aufkleber der Art '240°HT2' zur Kennzeichnung der Hochtemperaturvariante.

Page 17: LCD Manual 2

Natürlich wird man naturgemäß versuchen, ein Display für normalen Temperaturbereich einzusetzen, da man sich dabei die Erzeugung einer zusätzlichen negativen Spannung erspart. Allerdings haben die 'Hochtemperatur-Displays' auch einen wesentlichen Vorteil. Bei einer Kontrastspannung von -5V sind sie aus nahezu jedem Blickwinkel hervorragend abzulesen (trifft jedenfalls auf die von mir getesteten Typen zu), wärend normale Displays je nach Kontrastspannung nur von schräg-oben oder von vorn oder von schräg-unten gut ablesbar sind, wären aus anderen Richtungen die Anzeige unscharf wirkt oder ein pixelieger grauer Hintergrund sichtbar wird. So benötigen Geräte mit Normaldisplay in aller Regel einen von außen zugänglichen Kontrastregler. Wer in seinem Gerät ohnehin eine negative Spannung erzeugen muß (z.B. für OPVs) sollte also dem Hochtemperaturdisplay den Vorzug geben.

Es gibt auch Module (sowohl Normal- wie auch Hochtemperaturdisplays), die für 3V Betriebsspannung (Vdd) ausgelegt sind. Diese unterscheiden sich durch die Bestückung mit einem anderen Widerstand (75 kOhm anstelle von 91 kOhm) für die Takterzeugung. Wird ein 3V-Display mit 5V betrieben, steigt die Frequenz seines internen Oszillators, im Extremfall funktioniert es nicht mehr, da der Arbeitstakt zu hoch ist. Wird umgekehrt ein 5V-Display mit nur 3V betrieben, so verringert sich sein Takt, und es arbeitet langsamer als im Datenblatt angegeben. Das ist zu beachten, wenn man dem Display Befehle übermittelt, und ihm dann eine feste Zeit für die Befehlsabarbeitung zubilligt, anstatt das Busy-Flag abzufragen.

Man findet übrigens auch immer wieder preiswerte Displays, deren Oszillatoren mit einem 110 kOhm oder 120 kOhm-Widerstand bestückt sind. Die laufen bei 5V Betriebsspannung noch mit 2/3 der Normalgeschwindigkeit. Bei 3V erreichen sie höchstens noch halbe Normalgeschwindigkeit. Das ist für die meisten Anwendungen aber nicht tragisch.

Den Oszillatorwiderstand findet man, wenn man von hinten auf die Platine schaut normalerweise rechts unten neben dem Controller-Chip. Er ist normalerweise der einzige Widerstand auf der Platine mit mehr als 50 kOhm, und dadurch leicht zu identifizieren.

nach oben

Hintergrundbeleuchtung

Die Hintergrundbeleuchtung eines LCD-Displays ist in der Regel mit LEDs aufgebaut (es gibt auch Modelle mit EL-Folie, die benötigen aber einen zusätzlichen Inverter zur 100V-Spannungserzeugung). Um diese LED-Hintergrundbeleuchtung zu betreiben, sind die LED-Pins über einen Vorwiderstand mit einner Spannungsquelle (in der Regel 5V) zu verbinden. Die Größe des Vorwiderstandes bestimmt sich aus dem zulässigen LED-Strom, sowie der Differenz zwischen Speisespannung und LED-Spannung.

Displays, deren LED-Anschlüsse als Pin15&16 am Hauptanschluß des Displays sitzen, haben manchmal (aber nicht immer !) schon einen internen Vorwiderstand, der es erlaubt, die LED-Anschlüsse direkt mit 5V zu verbinden. Befinden sich die

Page 18: LCD Manual 2

LED-Anschlüsse aber nicht am Hauptanschlussfeld, sondern z.B. seitlich neben dem Display, dann besitzt das Display in der Regel keinen internen Vorwiderstand für die LED-Beleuchtung. Wenn man seinen Displaytyp nicht genau kennt, und das Platinenlayout nicht deuten kann, dann sollte man sicherheitshalber davon ausgehen, das kein interner Vorwiderstand existiert. Zum Betrieb der LED-Beleuchtung muß dann unbedingt ein externer Vorwiderstand verwendet werden.

Der Betrieb der LED-Beleuchtung ohne (oder mit zu kleinem) Vorwiderstand führt zur Zerstörung der LED-Beleuchtung!

LED-Strom und LED-Spannung kann man dem Datenblatt entnehmen. Die meisten weiss beleuchteten Displays  haben eine LED-Spannung von 4,2V. Üblich sind aber auch 3,3V (blaue, weiße oder grüne Displays) und 1,8V (amber-farbige Displays). Typische LED-Ströme sind 20mA .. 200mA (Großdisplays schlucken auch schon mal bis zu 2A). Stromfresser sind vor allem die Lightbox-Displays, bei denen LEDs direkt hinter dem LCD angeordnet sind. solche Displays sind dicker, haben aber auch eine hohe, gleichmäßige Helligkeit. Lightbox-Displays benötigen oft 4,2V/200mA. Stromsparer sind Displays, die hinter dem LCD einen Lichtleitkörper besitzen, der seitlich von LEDs angestrahlt wird. Diese Displays sind flacher und begnügen sich oft schon mit 3,3V/20mA.

Wenn die genauen Parameter der LED-Beleuchtung unbekannt sind, dann speist man die LED eines normalenDisplays (nicht amber !) über einen ca.80 Ohm Widerstand aus der 5V-Quelle, wodurch  sich ein Strom von max. 20 mA einstellt. Dann kann man den Widerstand verkleinern, bis sich eine normale Displayhelligkeit einstellt. Nicht selten ergeben sich dann Werte um 10 Ohm.

Ergänzung von Horst: Eine ... Ergänzung zur Beleuchtung. Ich verwende eins dieser modernen blauen Displays mit weisser Hintergrundbeleuchtung. Dabei muss man mit dem Vorwiderstand sehr vorsichtig sein, die auf der Site erwähnten 10 Ohm als wahrscheinlicher Zielwert für 5V Versorgungsspannung führen sicher zur Zerstörung. In meinem Fall hat die Beleuchtung bei 20mA eine Durchflussspannung von 3.1V, bei 30mA (max. zulässiger Strom) 3.4V. Wenn man den Vorwiderstand gefühlsmässig verkleinert, landet man schnell im roten Bereich. Wenn man mit 80 Ohm startet, ist man auch hier im sicheren Bereich. Verkleinerungen des Widerstandes darf man natürlich nur nach einer Strommessung machen und nicht nach Gefühl. 

nach oben

Page 19: LCD Manual 2

InterfaceDer Controller (und damit die LCD-Anzeige) besitzt ein paralleles Interface, bestehend aus:

ein 8 Bit Datenbus (D0..D7) Enable-Leitung RS-Leitung R/W-Leitung

Der Datenbus dient zur eigentlichen Übertragung der Daten zum Display. Er kann 8-bittig wie auch 4-bittig genutzt werden.

Die Enable Leitung schaltet das Interface ein (E=1). Nur wenn Enable auf High-Pegel liegt, läßt sich das Display ansprechen. Das erlaubt die Nutzung der anderen Leitungen für andere Zwecke (z.B. die Ansteuerung einer parallelgeschalteten Tastatur).

Die RS (Register-Select)-Leitung bestimmt, ob die übertragenen Daten als Zeichen in den Textpuffer (RS=1), oder als Befehl  in ein Steuerregister (RS=0) geschrieben werden.

Mit der R/W (Read/Write) leitung bestimmt man, ob Daten zum Display geschrieben (R/W=0) oder vom Display gelesen (R/W=1) werden sollen. Wer auf die Lesefunktion verzichten will, muß diese Leitung fest mit 0V (Vss) verbinden, da ein offener Anschluß vom Display auf high gezogen werden kann.

Im Moment der Low-High-Flanke von ENABLE liest das Dislplay die Werte von RS und R/W ein. Ist zu diesem Zeitpunkt R/W=0, dann liest das Display mit der folgenden High-Low-Flanke von ENABLE   den Datenbus ein (Schreibzyklus). War aber R/W=1, dann legt das Display ein Datenword auf den Datenbus (Lese-Zyklus), solange bis die High-Low-Flanke von ENABLE das Interface wieder deaktiviert.

Schreiben zum Display Die folgende Abbildung zeigt einen Schreibzugriff auf ein Display. Das Display überwacht den Pegel von ENABLE. Ändert sich dieser Pegel von Low nach High, dann fragt es die Leitungen RS und R/W ab. Liegt zu diesem Zeitpunkt R/W auf Low, dann weiß das Display, daß ein Schreibzugriff erfolgt, und bereitet sich darauf vor, mit der High-Low Flanke von ENABLE die Daten vom Datenbus ( DB0..DB7 ) einzulesen. Dazu muß das Display aber noch wissen, wohin diese Daten geschrieben werden sollen. Liegt RS auf low, so werden die Daten als Kommando verstanden, und in ein Steuerregister geschrieben. Liegt aber RS auf High, so handelt es sich um Daten, die angezeigt werden sollen, und in den Textpuffer (DDRAM) zu schreiben sind. (oder um die Definition eines neuen Zeichens)

Um eine sichere Verarbeitung einzuhalten, sind Mindestzeitabstände zwischen dem Einstellen von RS und R/W sowie der ENABLE -Low-High-Flanke einzuhalten. Genauso muß der Datenbus um die High-Low-Flanke von Enable herum stabil sein, und RS und R/W dürfen erst nach ENABLE abgeschaltet werden. Diese Zeiten sind aber so kurz, daß man sie bei der Ansteuerung durch einen PIC ignorieren kann. Der Abstand zwischen zwei Befehlen, die zwei Signale Ändern ist groß genug.

Page 20: LCD Manual 2

Wenn mit EQU-Befehlen beschrieben wurde, an welchen Port-Pins des PIC die LCD-Steuerleitungen angeschlossen sind, und der LCD-Datenbus an PORTB liegt, dann kann eine Ausgabe wie folgt aussehen:

; alle verwendeten Pins und das ; ganze PORTB auf output gestellt ; Enable ist low

BSF   RS        ; Zeichen zur Anzeige BCF   R_W       ; schreiben MOVFW Daten     ; Daten auf Datenbus MOVWF PORTB     ; BSF   Enable    ; Interface ein NOP             ; warten, das Display Daten hat BCF   Enable    ; Interface aus

Lesen vom Display (Busy-Abfrage) Wurde dem Display ein Datenwort übergeben, so muß das Display das Wort intern abspeichern, oder wenn es ein Kommando enthielt (z.B. Löschen des Displays) dann muß es dieses Kommando ausführen. Dazu benötigt das Display Zeit, und wärend dieser Zeit kann es keine neuen Kommandos entgegennehmen. Bevor man also einen neuen Schreibzugriff macht, sollte man testen, ob das Display mit dem letzten Befehl schon fertig oder immer noch beschäftigt (busy) ist.

Dazu kann man mit einem Lesezugriff auf das Display ein busy-Bit abfragen. Die folgende Abbildung zeigt einen Lesezugriff auf ein Display. Das Display überwacht den Pegel von ENABLE. Ändert sich dieser Pegel von Low nach High, dann fragt es die Leitungen RS und R/W ab. Liegt zu diesem Zeitpunkt R/W auf High, dann weiß das Display, daß ein Lesezugriff erfolgt. Das Display muß nun das angeforderte Datenbyte unverzüglich auf den Datenbus ( DB0..DB7 ) legen. Dazu muß das Display aber noch wissen, welche Daten angefordert wurden. Liegt RS auf

Page 21: LCD Manual 2

low, so werden das Statusregister ausgegeben. Liegt aber RS auf High, so handelt wird ein Zeichen aus dem Textpuffer (DDRAM) ausgegeben. Mit der High-Low Flanke von ENABLE wird das Interface (und insbesondere der Datenbus) wieder deaktiviert.

Wenn mit EQU-Befehlen beschrieben wurde, an welchen Port-Pins des PIC die LCD-Steuerleitungen angeschlossen sind, und der LCD-Datenbus an PORTB liegt, dann kann eine Ausgabe wie folgt aussehen:

; alle verwendeten Pins und das ; ganze PORTB auf output gestellt ; Enable ist low

;PortB auf input BSF   STATUS, RP0; auf Bank 1 umschalten MOVLW B'11111111'; PortB alle input MOVWF TRISB BCF   STATUS, RP0; auf Bank 0 zurückschalten

;Display abfragen BCF   RS; Statusregister lesen BSF   R_W; lesen BSF   Enable; Interface ein NOP; warten auf Daten MOVFW PORTB; Daten lesen MOVWF Daten; Daten speichern BCF   Enable; Interface aus

;PortB wieder auf output BSF   STATUS, RP0; auf Bank 1 umschalten CLRF  TRISB; PortB alle output BCF   STATUS, RP0; auf Bank 0 zurückschalten

Page 22: LCD Manual 2

Hat man das Steuerregister gelesen, so findet man das busy-Flag im MSB (D7) des gelesenen Datenwortes.Ist dieses Bit 1, dann ist der Controller noch beschäftigt, und kann keine weiteren Operationen annehmen. Man fragt das busy-Flag solange ab, bis es 0 ist. Dann kann wieder zum Display gecschrieben werden.

4-Bit Interface

Das oben beschriebene Interface mit seinem 8-Bit breiten Datenbus hat den Nachteil, dass zum Anschluß des Displays an den steuernden Prozessor 11 Leitungen nötig sind.  Wenn man einen Prozessor mit reichlich I/O-Pins benutzt, mag das nicht problematisch sein, aber gerade die Nutzer kleiner PIC-Prozessoren (PIC16F84 & Co) müssen mit den I/O-Pins geizen. 

Dotmatrix-Displays kennen auch ein Interface, bei dem nur die oberen 4-Bit des Datenbusses (D7..D4) benutzt werden: das verringert die Zahl der benötigten I/O-Pins auf 7. Da nach wie vor aber 8-Bit Werte über den Datenbus übertragen werden müssen, geschieht dies in jeweils 2 Hälften. Bei jedem Lese- oder Schreibzugriff

Page 23: LCD Manual 2

werden auf dem Datenbus also nacheinander erst die 4 oberen Bits und dann die 4 unteren Bits des 8-Bit-Datenworts übertragen. Dazu muß Enable zwei mal ein- und wieder aus-geschaltet werden.

 

Nebenstehendes Bild zeigt drei aufeinanderfolgende Zugriffe auf das Display im 4-Bit Mode. 

Schreiben eines Steuerbefehls (RS=R/W=0) Lesen des Status (busy-Flag und AC) (RS=0, R/W=1) Schreiben eines Zeichens zur Anzeige  (RS=R/W=1)

Für jeden Befehl wird Enable jeweils 2 mal aktiviert, um zuerst die oberen 4 Bit und dann die unteren 4 Bit zu übertragen. 

Ich arbeite prinzipiell mit dem 4-Bit-Interface. Beispiele für Schreib-und Lese-Routinen finden sich z.B.: 

im PIC-Lernbeispiel LCD-Display  im Projekt 50 MHz-Frequenzzähler  im Projekt Frequenzanzeige für UKW-Empfänger 

Da das Display nach dem Zuschalten der Betriebsspannung sein Interface zunächst 8-bittig betreibt, muß es in der Initialisierung auf 4-billtig umgeschaltet werden. Dafür werden die Datenleitungen D0..D3 zum Glück nicht benötigt.

nach oben

Page 24: LCD Manual 2

Display-BefehleBevor das Display benutzt werden kann, muß es vom steuernden Gerät (z.B. PIC Microkontroller) initialisiert werden. Dazu werden einige Steuerbefehle zum Display geschrieben (RS=R/W=0). Das geschieht mit Steuerbefehlen. Eine Liste aller existierenden Befehle enthält die folgende Tabelle. Die Steuerbefehle sind daran zu erkennen, das RS=0 ist.

Befehl RS R/W D7 D6 D5 D4 D3 D2 D1 D0 Beschreibung benötigte Zeit

Display löschen 0 0 0 0 0 0 0 0 0 1

löscht das Display, Kursor auf Adresse 0,

 1,64 ms

Kursor zum Anfang 0 0 0 0 0 0 0 0 1 *

Kursor auf Adresse 0, Display-Shift entfernen,

 1,64 ms

Entry Mode Set 0 0 0 0 0 0 0 1 I/D SI/D: Kursor Laufrichtung, S: Shift ein/aus

 40 µs

Display ein/aus 0 0 0 0 0 0 1 D C B

D: Display ein/aus C: Kursor ein/aus B: Blinkende Kursorposition ein/aus

 40 µs

Cursor/Display-Shift 0 0 0 0 0 1 S/C R/L * *

S/C: Display oder Kursor R/L: nach rechts oder links schieben

 40 µs

Function Set 0 0 0 0 1 DL N F * *

DL: Interface 8-Bit/4-Bit lang  N: ein-/zwei-zeilig F: 5x8/5x11 Darstellung

 40 µs

CG RAM Address Set 0 0 0 1            

CG RAM-Adresse einstellen

 40 µs

DD RAM Address Set 0 0 1              

DD RAM-Adresse einstellen

 40 µs

Busy-Flag/Address Read 0 1 BF              

busy-Flag und Adress-counter auslesen 

 40 µs

Page 25: LCD Manual 2

CG RAM/DD RAM Data Write 1 0                

Daten zum Textpuffer oder CG RAM schreiben 

 40 µs

CG RAM/DD RAM Data Read 1 1                

Daten vom Textpuffer oder CG RAM lesen

 40 µs

Display löschen

Das gesamte Display (also eigentlich der ganze Textpuffer) wird gelöscht, und der Kursor an den Anfang des Textpuffers gesetzt.

Kursor zum Anfang Der Kursor wird an den Anfang des Textpuffers gesetzt. Falls der vom Display

angezeigte Abschnitt des Textpuffers nicht am Textpufferanfang lag, wird das Display wieder dorthin geschoben.

Entry Mode Set Mit dem I/D (Increment/Decrement) -Bit stellt man ein, ob der Kursor nachdem

ein Zeichen in den Textpuffergeschrieben wurde nach rechtes (Increment) oder links (Decrement) zur nächsten Position geht. Im deutschsprachigen Bereich bietet sich nach rechts an (Increment).

I/D=0: links ID=1: rechts

Mit dem S-Bit läßt sich die Shift-Funktion des Displays ein- (S=1) und aus- (S=0) schalten.

Ist Shift ausgeschaltet, dann wandert der Kursor nach dem Schreiben eines Zeichens zur nächsten Position im Textpuffer und auf dem Display.Verläßt der Kursor den angezeigten Bereich, ist er nicht mehr sichtbar. Ist Shift dagegen eingeschaltet, dann wandert der Kursor zwar immer noch im Textpuffer, aber gleichzeitig verschiebt sich der im Display angezeigte Bereich des Textpuffers um eine Stelle, so daß der Kursor scheinbar still steht, wärend der Text im Display wandert. S=0: kein Shift S=1: Shift ein

Display ein/aus Mit D schaltet man das Display insgesamt ein oder aus. Dabei wird der

Textpuffer nicht verändert, er wird nur bei D=0 nicht mehr am LCD angezeigt.

D=0: Display aus D=1: Display ein

Mit C wird der Kursor ein- und ausgeschaltet. Dieser Kursor (ein Unterstrich oder ein blinkender Block) wird bei C=1 auf der nächsten zu beschreibenden Stelle des Displays angezeigt.

Page 26: LCD Manual 2

C=0: Kursor aus

C=1: Kursor ein Mit B wird der Kursor zwischen Unterstrich und blinkendem Block

umgeschaltet.

B=0: Kursor als Unterstrich B=1: Kursor als blinkender Block

Kursor/Display-Shift Mit dieser Funktion kann der Angezeigte Abschnitt des Textpuffers oder der

Kursor um eine Position nach rechts oder links verschoben werden.

S/C=0: verschiebe den Kursor S/C=1: verschiebe das Display R/L=0: um eine Stelle nach links R/L=1: um eine Stelle nach rechts

Function Set Mit DL wird das Interface auf 8-Bit oder 4-Bit breite eingestellt

DL=0: 4-bit Mode DL=1: 8-bit Mode

Mit N kann auf einzeiligen oder 2-zeiligen Betrieb umgestellt werden. In der Regel wird hier bei Displays jenseits der 1x8-Anzeige der 2zeilige Mode nötig sein.

N=0: 1-zeilig N=1: 2-zeilig

Mit F wird zwischen der Darstellung mit 5x8 (5x7)-Punkt-Mustern und 5x11-Punkt-Mustern umgeschaltet. Die meisten Displays arbeiten mit 5x8-Punkt-Mustern im Display

F=0: 5x8 Punkt-Darstellung F=1: 5x11 Punkt-Darstellung

  nach oben

InitialisierungBevor das Display benutzt werden kann, muß es vom steuernden Gerät (z.B. PIC-Controller) initialisiert werden. Der Displaycontroller kennt eine Power-on-Reset-Funktion, die die meisten Displays benutzen. Diese läuft beim Anlegen der Betriebsspannung automatisch ab und bringt das Display in folgenden Zustand:

8-bit-Interface (DL=1) 1-zeiliges Display (N=0) 5x8-Punkt-Matrix (F=0)

Page 27: LCD Manual 2

Display:aus /  Kursor: aus / Kursor-blinken: aus (D=C=B=0) Displayshift: aus (S=0) Kursor gehr bei jedem neuen Zeichen nach rechts (I/D=1)

Wärend dieser ca. 15 ms-langen Reset-Prozedur, kann das Display keine Befehle von außen annehmen, das busy-Flag ist gesetzt. Nach dem Reset, ist das Display ausgeschaltet, also kann es so nicht benutzt werden.

Eine Initialisierungsroutine sollte nicht nur das Display sicher aus diesem Zustand in den gewünschten Betriebsmode bringen, vielmehr sollte es das Display aus jedem beliebigen Zustand (auch einem 4-bit Interface-Mode) in den gewünschen Betriebsmode bringen. Schließlich wird diese Routine auch nach einem Reset des steuernden Prozessors (ohne Power-on-Reset) durchlaufen, und dabei wird ja das Display nicht automatisch 'resetet'.

Die nachfolgenden Tabellen beschreiben den Ablauf der Initialisierung für 8-Bit und 4-Bit-Interface. Das die Routinen umständlich aussehen, ist der Tatsache geschuldet, daß sie das Display aus jedem Mode heraus ansprechen können.  

Beispiel für eine Initialisierung mit 8-Bit Interface:  

Power On

mindestens 15 ms warten auf das Ende des internen Reset warten

RS R/W D7 D6 D5 D4 D3 D2 D1 D00 0 0 0 1 1 - - - -

Interface auf 8-Bit setzen

mindestens 4,1 ms warten

RS R/W D7 D6 D5 D4 D3 D2 D1 D00 0 0 0 1 1 - - - -

Interface auf 8-Bit setzen

wenigstens 100 µs warten

RS R/W D7 D6 D5 D4 D3 D2 D1 D00 0 0 0 1 1 - - - -

Interface auf 8-Bit setzen

RS R/W D7 D6 D5 D4 D3 D2 D1 D00 0 0 0 1 1 - - - -0 0 0 0 1 1 N(1) F(0) - -0 0 0 0 0 0 1 0 0 00 0 0 0 0 0 0 0 0 10 0 0 0 0 0 0 1 I/D(1) S(0)0 0 0 0 0 0 1 1 0 0

2-zeilig, 5x8-Punkt-Matrix Display aus Display löschen Kursor nach rechts wandernd, kein Display shift Display ein

fertig

Page 28: LCD Manual 2

Beispiel für eine Initialisierung mit 4-Bit Interface:  

Power On

mindestens 15 ms warten auf das Ende des internen Reset warten

RS R/W D7 D6 D5 D4 D3 D2 D1 D00 0 0 0 1 1 - - - -

Interface auf 8-Bit setzen

mindestens 4,1 ms warten

RS R/W D7 D6 D5 D4 D3 D2 D1 D00 0 0 0 1 1 - - - -

Interface auf 8-Bit setzen

wenigstens 100 µs warten

RS R/W D7 D6 D5 D4 D3 D2 D1 D00 0 0 0 1 1 - - - -

Interface auf 8-Bit setzen

RS R/W D7 D6 D5 D4 D3 D2 D1 D00 0 0 0 1 0 - - - -

Interface auf 4-Bit setzen

RS R/W D7 D6 D5 D4 D3 D2 D1 D00 0 0 0 1 0        0 0 N(1) F(0) - -        0 0 0 0 0 0        0 0 1 0 0 0        0 0 0 0 0 0        0 0 0 0 0 1        0 0 0 0 0 0        0 0 0 1 I/D(1) S(0)        0 0 0 0 0 0        0 0 1 1 0 0        

2-zeilig, 5x8-Punkt-Matrix

Display aus

Display löschen

Kursor nach rechts wandernd, kein Display shif

Display einfertig

nach oben

Test eines unbekannten Display-TypsDas Display wird zunächst mit den nötigen Spannungen verbunden.

Vdd: +5V Vss:  Masse 0V Vo:  Kontrastspannung 0V (aus regelbarer Spannungsquelle 0..2V)

Die Kontrastspannung wird so weit verändert (0V .. 1,5V) bis ein Teil der Displaystellen oder das alle Displaystellen als dunkle Vierecke erscheinen. (Das ist

Page 29: LCD Manual 2

meist schon der Fall, wenn als Kontrastspannung 0V verwendet wird.) Ist es nicht möglich, am Display dunkle Vierecke zu erzeugen, dann handelt es sich beim Display offensichtlich um ein Display mit erweitertem Temperaturbereich. In diesem Fall ist eine Kontrastspannung von -2V..-5V einzustellen, wobei nun aber nicht unbedingt auch dunkle Vierecke sichtbar werden müssen. Die Kontrastspannung muss im laufenden Betrieb so eingestellt werden, dass die Dunkelfärbung der Displaystellen nicht auftritt, aber zur Erkennung der richtigen Kontrastspannungspolarität und der Anzahl von Zeilen und Stellen ist diese Einstellung hilfreich.

Da das Display nicht mit einem steuernden Prozessor verbunden ist, befindet es sich im Grundzustand - im 1-zeiligen Mode. Werden nun alle Stellen des Displays als dunkle Vierecke dargestellt, dann ist das der richtige Mode für dieses Display. Werden aber nur die Hälfte der Stellen dunkel dargestellt, dann ist es nötig, das Display für den regulären Betrieb 2-zeilig zu initialisieren.

Nun besitzt man alle nötigen Informationen, um das Display zu nutzen:

richtige Kontrastspannungspolarität Anzahl der Zeilen und Spalten richtiger Mode (1 oder2 zeilig)

Beispiel: Das hier gezeigte Display wurde mit Vdd=5V und Vo=0V in Betrieb genommen. Man erkennt, das es offensichtlich ein 4-zeiliges Normaltemperatur-Display ist, dessen 1. und 3. Zeile aktiv sind. Pro Zeile werden 27 Rechtecke angezeigt, es ist also ein 27x4-Display. Folglich muß es 2 Controller-Chips besitzen - das Display ist wie ein 40x4-Display organisiert. Der erste Controller verwaltet die oberen beiden Zeilen und der zweite Controller die unteren beiden Zeilen. Da jeweils nur eine Zeile pro Controller aktiv ist, befinden sich die Controller im einzeiligen Mode, müssen aber zum Betrieb des Displays in den 2-zeiligen Mode geschaltet werden. Ich habe dieses Display in meinen VDR eingebaut.

nach oben

Der Controllerchip KS0073In letzter Zeit tauchen vermehrt Displays mit dem Controller KS0073 von Samsung auf. Dieser Chip ist dem HD44780 sehr ähnlich, aber leider nicht 100% kompatibel. Dass der Controller (im Vergleich zum HD44780) größere Displays ohne zusätzliche Spaltentreiber ansteuern kann, ist für den Nutzer belanglos, es gibt aber auch einige deutliche Unterschiede mit Konsequenzen für die Nutzung:

Page 30: LCD Manual 2

DisplayanschlußDer Controller hat einen Reseteingang, der normalerweise auf den Steckverbinder des Displays herausgeführt ist. Das wirkt sich auf die Stecker-Pinbelegung aus. Die Pins 1..14 sind in der Regel normal belegt. Dann folgt ein freies Pin (15), dann das Reset-Pin (16) und dann erst die LED-Anschlüsse für die Hintergrundbeleuchtung Led+ (17) und LED- (18).Der Reseteingang ist Low-activ und wird im Display auf high gezogen. Man kann ihn also einfach frei lassen.

RAM-AdressenDie Anfangsadressen der zweiten (und aller weiteren) Displayzeile weichen vom HD44780 Standard ab.

4-Bit-InitialisierungDie Initialisierung des 4-Bit-Datenbus-Modes weicht etwas vom HD44780-Standard ab.

nach oben

Der Controllerchip KS0066UDer Controllerchip KS0066U von Samsung soll zu 100% mit dem HD44780 kompatibel sein, Aber auch hier stößt man gelegentlich auf Probleme mit  Software, die am HD44780 problemlos läuft. In einem Forum fand ich die Aussage, dass dieser Chip das Busy-Flag ca 10 Mikrosekunden zu früh löscht. Das müsse in der Software durch eine entsprechende Wartezeit kompensiert werden. Überprüft habe ich das aber nicht.