|
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.
|
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. |
|