
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.
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 |
|
|
|
|
|
|
|
|
|
|
Initialisierung des Displays | max. 120 yS |
| Display ON/Off |
|
|
|
|
|
|
|
|
|
|
Ein/Aus und Cursor Control | max. 120 yS |
| Entry Mode Set |
|
|
|
|
|
|
|
|
|
|
Cursor Richtung und Display schieben | max. 120 yS |
| Read Busy Flag |
|
|
|
|
|
|
|
|
|
|
AC= Ram Adresse Counter | 1 yS |
| Clear Display |
|
|
|
|
|
|
|
|
|
|
Löscht Display und Cursor Home | max. 5 ms |
| Return Home |
|
|
|
|
|
|
|
|
|
|
Cursor auf Home Position | max. 5 ms |
| Cursor /Display shift |
|
|
|
|
|
|
|
|
|
|
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
Ansteuerung
,
8
Bit Library
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
Diese Seite ist Teil eines Framesets. Kein Inhalsverzeichnis? Mit
Home
gelangen Sie zum Index.