LCD Testboard

verschiedene Displays


Beschreibung
Dieses Testboard bietet eine einfache Möglichkeit des Softwaretestens für ein Projekt mit LCD Anschluss und gegebenenfalls serieller Schnittstelle.
Das Layout der beiden 16 poligen Steckverbinder (St1 und St2) ist angepasst auf das Mikrocontroller Board von Batronix.

Der eigentliche Anschluss der LCD Anzeige wird möglichst universell ausgelegt und auf eine Stiftleiste gelegt. Das Display kann dann mit der passenden Buchsenleiste angeschlossen werden. Die Hersteller der verschiedenen Anzeigemodule scheinen als wichtigsten Ziel eine Inkompatibilität anzustreben, so dass es in jedem Fall sinnvoll ist, vor einem Anschluss auf "verdacht" notfalls die Leiterbahnen durchgemessen werden. Wann immer möglich sollte man sich die entsprechenden Datenblätter der in Frage kommenden Displaytreiber beschaffen, am besten mit Pinbelegung der Controller.

Die Anschlusspins selbst sind immer identisch, lediglich die Anordnung variiert. Über die LCD Anzeigen gibt es ettliche Informationen in den weiten des Internet, so dass ich mich hier auf die notwendigsten Beschränke, und sonst einige Links zu dem Thema angebe.

Die hier abgebildete Version entspricht nicht mehr ganz dem aktuellen Layout, bei dem die Brücken etwas anders angeordnet sind. Es ist nur die Steckerleiste für die 4 Bit Ansteuerung bestückt.

Die Pinbeschreibung der LCD Anschlüsse
Die Pinnummern stimmen nicht mit allen Displays überein! Die Pinbeschreibung aber schon.
 
 
1 GND Masse
2 +5V Spannungsversorgung
3 Kontrast Poti zwischen GND und +5V, bei besonderen Displays zwischen GND und -7V!
4 RS  1=Daten schreiben / 0=Kommando senden.
5 R/W  1=Read / 0=Write zum lesen bzw. Schreiben in das RAM des Displays
6 Enable Fallende Flanke -> Übertragen des Kommandos oder der Daten, H-Pegel -> Lesen von Daten aus dem Display
7 DB0 Datenbus bei 8 Bit Übertragung
8 DB1 Datenbus bei 8 Bit Übertragung
9 DB2 Datenbus bei 8 Bit Übertragung
10 DB3 Datenbus bei 8 Bit Übertragung
11 DB4 Datenbus bei 4 Bit und bei 8 Bit Übertragung
12 DB5 Datenbus bei 4 Bit und bei 8 Bit Übertragung
13 DB6 Datenbus bei 4 Bit und bei 8 Bit Übertragung
14 DB7 Datenbus bei 4 Bit und bei 8 Bit Übertragung

Zusätzlich gibt es bei einigen Displays noch 2 Anschlüsse für die Hintergrundbeleuchtung.

Schaltungsbeschreibung
Besondere Beachtung verdient der Pin 3 (Kontrast). Hier gibt es zwei Versionen von Displays: die "Standartversion" benötigt an diesem Pin eine Spannung zwischen 0 und +5V, die am einfachsten mittels eines Trimmpotis eingestellt wird. Je nach Blickwinkel auf das Display und der Umgebungstemperatur wird der Wert so eingestellt, das das Display gut lesbar ist. Es gibt allerdings auch Displays für "erweiterte" Umgebungstemperaturen, die eine Spannung zwischen GND und -7V erwarten. Für diesen Fall  ist die entsprechende Schaltung rund um das IC2 auf dem Board vorgesehen. Der Jumper K4 wird dementsprechend auf die Position -5V gesteckt. Die zur Verfügung stehenden -5V reichen in der Regel für diesen Fall aus. Falls das Display über eine 5V Hintergrundbeleuchtung verfügt, kann diese über den Transistor Tr1 eingeschaltet werden.

Der Schaltungsteil um das IC1 mit der seriellen Schnittstelle ist eine Grundschaltung des Maxim Schnittstellenwandlers MAX232. Über die Jumper K5 und K6 kann die serielle Schnittstelle abgeschaltet werden.

Grundsätzlich gibt es zwei Varianten um das Display anzusteuern:
Eine Version mit einem 8 Bit breiten Datenbus, und eine zweite mit nur 4 Datenbits. Dabei werden nur die Pins DB7-DB4 für Kontrollkommandos oder Anzuzeigende Daten benutzt, DB3-DB0 bleiben unbelegt. Diese Variante hat den großen Vorteil, dass inclusive der Steuerleitungen nur 7 Bits benutzt werden, also ein I/O Port ausreicht, und sogar noch eine Steuerleitung z.B. für die Hintergrundbeleuchtung übrig bleibt. Auf dem Testboard sind Anschlussmöglichkeiten für beide Varianten vorgesehen. Falls die 8 Bit Variante verwendet wird, müssen natürlich die Jumper auf den Stiftleisten K1 gezogen werden. Bei Verwendung der 4 Bit Ansteuerung werden die Jumper aber gebraucht.

Der Unterschied in der Ansteuerung besteht eigentlich nur darin, dass in der 8 Bit Version die Daten zur Displaysteuerung oder zur Anzeige ganz normal sozusagen "in einem Rutsch" mit der fallenden Flanke des Enable Pins auf das Display geschickt werden, bei der 4 Bit Ansteuerung muss dies in 2 Takten geschehen. Mit dem ersten Takt des "Enable" Pins werden die Datenbits 7-4, also die "vorderen" 4 Bit übertragen, danach die Bits 3-0. Die Kommandos selbst bleiben gleich.

Eingestellt wird der 4 oder 8 Bit Modus bei der Initialisierung des Displays, also mit dem ersten gesendeten Befehl.

Wenn das LC Display in einer Schaltung eingesetzt wird, in der ein Datenbus vorhanden ist, also z.B. bei den Controller 8031/32 oder 80C535 empfiehlt sich möglicherweise ein Anschluss im 8 Bit Modus, und eine Adressierung der Steuerleitungen über einen Adressdekodierer. Die Pins DB0-DB7 werden dann am Datenbus angeschlossen.

Beim Einsatz an den Controllern 8751 und z.B. den Atmel Controllern 89Cx051 ist natürlich der 4 Bit Modus zum sparen von Portbits zu empfehlen.

Schaltplan
Schaltplan LCD-Board

Download:
Schaltplan
Bestückung/Stückliste
Platinenlayout

Kommandos zur Steuerung
Hier die wichtigsten Befehle, um die ersten Einstellungen vorzunehmen:
 
 
Befehl  RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 Beschreibung  Ausführungszeit
Funktion Set
0
0
0
0
1
DL
N
F
*
*
Initialisierung des Displays  max. 120 yS
Display ON/Off
0
0
0
0
0
0
1
D
C
B
Ein/Aus und Cursor Control  max. 120 yS
Entry Mode Set
0
0
0
0
0
0
0
1
I/D
S
Cursor Richtung und Display schieben max. 120 yS
Read Busy Flag
0
1
BF
AC
AC
AC
AC
AC
AC
AC
AC= Ram Adresse Counter 1 yS
Clear Display
0
0
0
0
0
0
0
0
0
1
Löscht Display und Cursor Home max. 5 ms
Return Home
0
0
0
0
0
0
0
0
1
*
Cursor auf Home Position max. 5 ms
Cursor /Display shift
0
0
0
0
0
1
S/C
R/L
*
*
Schiebt Cursor oder Display max. 120 yS

Legende:
 
DL: Data Length 0= 4Bit, 1=8 Bit 
N :  Number of Lines 0=1 Zeile, 1 = 2Zeilen 
F :  Font 0=5*7 Punkte, 1=5*10 Punkte (nur bei 1 Zeiligen Displays) 
D : Display 1=On, 0=Off 
C : Cursor 1=On, 0=Off 
B : Blinken des Cursors 1=Blinken, 0=Dauer
I/D : 1=increment(+1) 0=decrement (-1)
S  :  1= Display schieben, 0=Cursor bewegen 
BF : 1=Busy, 0=Ready 
S/C: 1= Display Schieben, 0= Cursor schieben 
R/L: 1= nach rechts, 0=nach links 

Fallen bei der Programmerstellung
Es gibt 2 Schwierigkeiten, bei denen man die ersten Stunden der Fehlersuche verbringen kann:
Die erste ist der Pin 3, die Kontrasteinstellung. Ist dieser Anschluss nicht adäquat angeschlossen, sieht man nämlich garnichts. Bei genauem Hinsehen und aus verschiedenen Blickwinkeln kann man beim drehen des Potis und richtig angeschlossenem Display zumindest geringe Kontraste wahrnehmen, auch wenn das Display noch nicht initialisiert ist.

Die zweite Schwierigkeit kann durch die Befehlsausführungszeiten mancher Befehle des Displays ausgelöst werden. Die Befehle Clear Display und Cursor Home benötigen nämlich bis zu ca. 5ms Pause, bevor neue Kommandos richtig ausgeführt werden können. Einige Verzögerungsschleifen sind also angebracht. Ebenfalls relevant sind noch die Zeiten nach dem Power on und der Initialisierung. Es kann nicht schaden bei eigenen Programmen einige Wartezyklen einzubauen.

Hat man diese Hürden genommen, und das Display richtig initialisiert, ist der weitere Betrieb einfach darzustellen.

Software für 8051 kompatible Prozessoren

Für meine eigenen Versuche habe ich mir eine Library zusammengebaut, die häufig benötigte Routinen enthält. Diese Library habe ich einmal für die 8 Bit und einmal für die 4 Bit Version angelegt. der eigentliche Unterschied besteht nur bei wenigen Routinen, die für die Übertragung der Kommandos und die Initialisierung des Displays zuständig sind. Der Großteil der Unterprogramme ist in beiden Versionen gleich.
Mit dem Einsatz von Labels wurde die Konfiguration möglichst universell gehalten.
Die Librarys wurden getestet mit verschiedenen Displays (1 und 2 Zeilig, 16 - 40 Character) mit dem Hitachi Controller HD44780. Absolut Pin und Funktionsgleich ist z.B. der Sanyo LC7985NC.

Hier die Library für die 4 Bit AnsteuerungKorrektur 04.09.2001 !, 8 Bit LibraryKorrektur 04.09.2001 ! und ein Testprogramm (zusätzlich MOD51.H downloaden). Das Testprogramm enthält außerdem noch einen Teil zur Ansteuerung des Tastaturboards , der durch die Definition des Labels Tastatur in der Source ausgewählt wird. Bei Verwendung eines anderen Kompilers eventuell auskommentiert werden muss.
Im Testprogramm derzeit nicht enthalten sind die Routinen zur Ansteuerung der seriellen Schnittstelle.

Kompiliert wurden die Testprogramme mit dem kostenlosen Assembler RAD51 von  Systronix . Dieser Assembler bietet eine Projektverwaltung und arbeitet unter Windows (95+98). Außerdem werden individuelle Registerkonfigurationen und "if else" Verzweigungen unterstützt.
Für den Controllertyp 8051 habe ich noch eine "quick+dirty" modifizierte Definitionsdatei für die einzelbits der Register (z.B. ACC_0 - ACC_7) da diese variante der Adressierung beim RAD51 nicht standartmässig eingebaut ist.:  MOD51.H Der RAD51 hat allerdings eine eigene definitionsdatei für die Register des 8051: Controller.cfg Diese Datei wollte ich jedoch nicht so ohne weiteres modifizieren.

Hier noch alle Softwarefiles gepackt, dabei ist auch ein kompiliertes "Intel HEX" file.

Links zu Funktionsbeschreibung und Datenblättern

 http://www.eio.com/datashet.htm   Datenblätter zu LCD vielen Controllern.
 http://www.lcd-module.de/   Viele Infos über Technik der LCD Module und Lieferübersicht.
 http://allshore.liglobal.com/charactermodules.cfm   Infos und Datenblatt des HD44780 Controllers
 
 
 

Letzter Update: 25.08.2001


Diese Seite ist Teil eines Framesets. Kein Inhalsverzeichnis? Mit Home gelangen Sie zum Index.