Search
News
  • Allgemein
Contact Info
an image
DJ5MHZ
EMail:

DL5MGD
EMail:

Sie sind hier: Start » Allerlei » Bastel-Wastel » HD44780 LCD

HD44780 LCD

Ansteuerung eines LCD Displays mit Hitachi HD44780 Controller

Für die Ausgabe von Informationen von einem Raspberry-Pi auf ein 16x4 Display sollte ein Pascal Programm erstellt werden. Dafür wurde der GPIO Anschluss verwendet. Die Datenübertragung sollte im 4bit Modus erfolgen. Eigentlich kein grosser Akt.
Aber das Datenblatt (org. Hitachi) gab nicht genügend Informationen über die Initialisierung her. Das ist ja der eigentliche Knackpunkt. Gelingt zumindest irgendeine Form der Ausgabe, dann bekommt man den Rest schon irgendwie hingebastelt. So war eine stundenlange Stümperei ohne Ergebnis die Folge.
Die Rettung war ein Datenblatt für den HD44780 von Sharp. Dort werden einige Schritte zur Initialisierung detailiert beschrieben, die Hitachi irgendwie vergessen hat.

So funktionierts:
Für den 4bit Modus werden die Datenleitungen D4-D7 verwendet. D0-D3 bleiben offen.

a) EN: 1 (Enable)
b) D7: 0 - D6: 0 - D5: 1 - D4: 1
c) EN: 0 (mit fallender Flange liest der Controller die Zustände der Datenleitungen)
d) ein paar ms warten

Die Schritte a) bis d) noch 2 mal wiederholen. Die Sequenz muss also 3 mal durchlaufen werden. Damit wird der Controller sicher in den 8bit Modus geschaltet. Und zwar unabhängig davon, in welchem Zustand er sich befindet. Also auch wenn er sich z.B. im 4bit Modus befinden und auf ein 2tes Nibble warten sollte.
Anschliessend muss in den 4bit Modus geschalten werden:

a) EN: 1
b) D7: 0 - D6: 0 - D5: 1 - D4: 0
c) EN: 0
d) ein paar ms warten

Ab hier werden die 8bit Instruktionen als 2x4bit (Nibbles) gesendet.
Es folgt die Festlegung von Interface (4bit), Zeilen (1/2) und Font (5x7):

a) EN: 1
b) D7: 0 - D6: 0 - D5: 1 - D4: 0
c) EN: 0
d) EN: 1
e) D7: 1 - D6: 0 - D5: 0 - D4: 0
f) EN: 0

Danach Display ein/aus, Cursor ein/aus, blinkender Cursor ja/nein (z.B.):
Ablauf wie oben. Kurz: 00001000

Danach Display löschen:
Ablauf wie oben. Kurz: 00000001

Dann Display fix/fliessend, Cursor Addr. inkrementierend links/rechts:
Ablauf wie oben. Kurz: 00000110

Zum Schluss Display ein/aus, Cursor ein/aus, blinkender Cursor ja/nein (z.B.):
Ablauf wie oben. Kurz: 00001100

Nun ist das Display einsatzbereit.

Ich wollte ein Programm für die Kommandozeile unter Linux, das ich in Shellskripten verwenden kann. Mit folgenden Parametern kann das Display angesprochen werden:
-i: Initialisierung
-l: Disp. löschen
-l<N>: Zeile N löschen
-z<N><text>: Text in Zeile N
-d<L>: Debug L=1..4
Mehrere Zeilen-Parameter sind möglich.

Hier noch das Programmlisting.