Home    Impressum / Datenschutz    Shop    Download    Links     Blog  

Das I2C-LCD-Gateway für alle LCD-Displays

Display Steuersequenzen über den I2C-Bus oder RS232 an das LCD-Display senden

Das I2C-LCD-Gateway wurde entwickelt um jedes LCD-Display über den I2C-Bus oder über RS232 ansprechen zu können.

Das Modul empfängt die Daten und legt diese auf den parallelen Bus zur LCD-Anzeige wobei das Display sowohl im 4-Bit als auch im 8-Bit Modus angesprochen werden kann.

Es sind bis zu 8 Gateways am I2C-Bus möglich. Folgende Adressen sind mit Lötbrücken auf der Platinen-Rückseite einstellbar: 96, 98, 100, 102, 104, 106, 108, 110

Allgemein:
Das Gateway kann wahlweise über I2C oder über RS232 mit einem Master bzw. PC verbunden werden. Die Steuerbefehle, die das Gateway empfängt werden an die LCD-Anzeige weitergeleitet und mit dem Enable- Signal bestätigt.

Datenaufbau:
Steuerbefehle werden als WORT übertragen wobei zuerst das Steuerbyte und danach das Datenbyte gesendet werden muss. Das Datenbyte wird dann unverändert an den LCD-Controller übergeben.

Steuerwort 7 6 5 4 3 2 1 0
  Steuerbyte Time     Licht R/W RS E2 E1
  Datenbyte D7 D6 D5 D4 D3 D2 D1 D0

Mit der Firmwareversion 1.4 wurde eine maximale Datenlänge von 16 Byte in die Firmware integriert. Somit ist es möglich bei I2C-Kommunikation nach einem Steuerbyte maximal 16 Datenbytes zu senden. Auf alle 16 Datenbyte wird das Steuerbyte dann automatisch angewendet.

E1, E2 - Enable:
Bei größeren Displays sind zwei Controller im Einsatz. Mit E2 wird der zweite Controller angewählt. Im Normalfall brauchen Sie nur E1 anzusteuern.

RS - Steuer- oder Datenregister:
Das Signal RS dient zur Auswahl des Befehlsregisters (RS=0) oder des Datenregisters (RS=1)
Bei Steuerbefehlen z.B. DISPLAY ON oder CURSOR HOME ist RS=0
Werden Zeichen zur Anzeige übertragen ist RS=1.

R/W - Read / Write:
R/W gibt an ob Daten zum Display geschrieben RW=0 werden oder vom Display gelesen werden sollen RW=1.

Licht:
Wird dieses Bit gesetzt wird das Backlight des Displays eingeschaltet und bleibt so lange ein bis das Bit wieder gesetzt wird. (Flip-Flop-Funktion).

Time:
Ist dieses Bit gesetzt wird das nachfolgende Byte als Timeout interpretiert und fest in das Gateway übertragen. Der Wert bleibt auch nach ausschalten der Betriebsspannung gespeichert.
Der Timeout wird für die Ansteuerung über RS232 benötigt.

Initialisierung:
Bei der Initialisierung verhalten sich die LCDs mit dem HD44780 sowie dem KS0066 gleich obwohl in zahlreichen Foren andere Szenarien geschildert werden.
Wir haben mit folgendem Initialisierungsreihenfolge gute Erfahrungen bei allen Displays gemacht.

  • Nach Power ON mindestens 15ms warten,
  • "00110000" = 30h = 48dez ins Steuerregister schreiben (RS=0)
    min. 5ms warten
  • "00110000" = 30h = 48dez ins Steuerregister schreiben (RS=0)
    min. 5ms warten
  • "00110000" = 30h = 48dez ins Steuerregister schreiben (RS=0)
  • Befehl "System Set" absetzten
    "00110000" = 30h = 48dez bei einzeiligen Displays 8-Bit Ansteuerung
    oder
    "00111000" = 38h = 56dez  bei mehrzelligen Displays 8-Bit Ansteuerung
  • Befehle "Display OFF", "Display CLEAR", "Cursor HOME" schreiben
    "00001000" = 08h = 8dez
    "00000001" = 01h = 1dez
    "00000001" = 02h = 2dez
  • Jetzt können noch die gewünschten Einstellungen gesendet werden z.B.
    "00001110" = 0Eh = 14dez  Display EIN, Unterstrich EIN , Blinken AUS

LCD-Steuerbefehle HD44780 oder KS0066:
Nachfolgend werden die vier wichtigsten Steuerbefehle der LCD-Anzeigen beschrieben

Befehl RS R/W D7 D6 D5 D4 D3 D2 D1 D0
Display löschen 0 0 0 0 0 0 0 0 0 1
Cursor Home 0 0 0 0 0 0 0 0 1 -
Display ON / OFF
 D = 1 / 0 Display EIN / AUS
 C = 1 / 0 Unterstrich EIN / AUS
 B = 1 / 0 Blinkender Cursor EIN / AUS
0 0 0 0 0 0 1 D C B
Cursor / Display Shift
 S/C = 0 verschiebt den Cursor oder
 S/C = 1 verschiebt die Anzeige nach
 R/L = 1 Rechts oder
 R/L = 0 Links
0 0 0 0 0 1 S/C R/L - -
System Set (Funktion Set)
 DL = 0  4-Bit Ansteuerung  D4 .. D7
 DL = 1  8-Bit Ansteuerung  D0 .. D7
 N = 0   Einzeiliges Display
 N = 1   Mehrzeiliges Display
 F = 0   5 x 8 Zeichenmatrix
 F = 1   5 x 10 Zeichenmatrix
0 0 0 0 1 DL N F - -
CGRAM Adresse setzen 0 0 0 1 A5 A4 A3 A2 A1 A0
DDRAM-Adresse setzen 0 0 1 A6 A5 A4 A3 A2 A1 A0
Daten schreiben 1 0 D7 D6 D5 D4 D3 D2 D1 D0

Die Adressen der Spalten und Zeilen:
Damit das LCD nach dem Initialisieren  Zeichen darstellt wird die Zeichennummer des gewünschten  Zeichens in die DD-Speicherzellen (DDRAM) geschrieben. Die Zuordnung welche RAM-Adresse zu welcher Displaystelle gehört entnehmen Sie diesen Tabellen oder der Beschreibung des Displayherstellers.

2 Zeilen / 16 Zeichen
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Zeile 1 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F
Zeile 2 C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF
(Adressangabe in hex)

4 Zeilen / 16 Zeichen
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Zeile 1 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F
Zeile 2 C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF
Zeile 3 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F
Zeile 4 D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF
(Adressangabe in hex)

4 Zeilen / 20 Zeichen
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Zeile 1 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93
Zeile 2 C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3
Zeile 3 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7
Zeile 4 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7
(Adressangabe in hex)

Beispiel für die Ausgabe von HALLO als I2C-Befehlsreihenfolge:

Display löschen und Home

START Gateway
Adresse
ACK
vom Gateway
Steuerbyte
05h
ACK
vom Gateway
CLEAR
01h
ACK
vom Gateway
 
Controlbyte
01h
ACK
vom Gateway
HOME
02h
ACK
vom Gateway
STOP

DDRAM Adresse 80hex einstellen

START Gateway
Adresse
ACK
vom Gateway
Steuerbyte
05h
ACK
vom Gateway
DDRAM-Adr.
80h
ACK
vom Gateway
STOP

HALLO schreiben

START Gateway
Adresse
ACK
vom Gateway
Steuerbyte
05h
ACK
vom Gateway
Zeichen "H"
48h
ACK
vom Gateway
 
Steuerbyte
05h
ACK
v. GW
Zeichen "A"
41h
ACK
v. GW
Steuerbyte
05h
ACK
v. GW
Zeichen "L"
4Ch
ACK
v. GW
 
Steuerbyte
05h
ACK
v. GW
Zeichen "L"
4Ch
ACK
v. GW
Steuerbyte
05h
ACK
v. GW
Zeichen "O"
4Fh
ACK
v. GW
STOP

Eigene Zeichen definieren:
Die ersten acht Zeichen im Zeichensatz können selbst definiert werden. Sie werden mit je 8 Byte definiert und im CGRAM abgelegt. Dabei müssen die rechten 5 Bits im Definitionsbyte gesetzt werden wenn der entsprechende Punkt dunkel erscheinen soll. Die drei linken Bits bleiben "0"
Eine genaue Beschreibung finden Sie im Handbuch des entsprechenden Controllers.

LCD-Segment-Designer
Da es ziemlich mühsam ist die Zeichen über die Bitstellen rauszurechnen habe ich ein kleines Tool in Visual Basic geschrieben. Mit der Maus kann man die einzelnen Segmente ein- und ausschalten.
Als Ergebnis bekommt man die Bytes in dezimal oder hex mit Komma oder Tab getrennt.

Das Programm ist Freeware und kann unentgeltlich genutzt werden.


LCD-Dokumentation
HD44780U:
Beschreibung Dot Matrix Liquid Crystal Display Controller/Driver HITACHI
lcd_hd44780.pdf (390 kB)
KS0066U:
Beschreibung dot matrix LCD driver & controller SAMSUNG
lcd_ks0066u.pdf (529 kB)
LCD-Segment-Designer.exe (96 kB)
Voraussetzung für den Betrieb sind die VB 5.0 Runtime-Dateien die aber auf jedem Rechner sowieso zu finden sind.
Falls es nicht läuft, kann per Mail das Installationspaket angefordert werden

 

Bausätze können Sie günstig in unserem Onlineshop in der Rubrik
"I2C-Komponenten" bestellen.