LCDs (Liquid cristall displays) sind heute schon für unter 10€ zu
bekommen. Dabei sind diese Displays selbst mit einem eigenen Controller
ausgestattet, der die meisten Aufgaben schon übernimmt. Daher ist ein
solches Display sehr einfach anzuschliessen und zu programmieren.
Bascom stellt für diesen Fall eine Reihe von wertvollen Befehlen zur
Verfügung, so dass die Programmierung leicht gelingt. In der Industrie
haben sich zwei Controllertypen weitgehend durchgesetzt. Einmal der
HD44780 und der KS0077. Beide können ohne Probleme genutzt werden. Für
beide Controller gibt es eine eigene Vorlage
LCD mit HD44780.bas
und
LCD mit Ks0077.bas.
Der Anschluss erfolgt über eine 10poligen Normstecker am Board.
Die LCD-Displays sind mit einer 14 bzw 16poligen Anschlussleiste versehen.
VDD
|
+5V
|
VSS
|
GND
|
V0
|
Eine Spannung zwischen +5V und GND
|
RS
|
Reset
|
R/W
|
Read/Write (wird mit GND verbunden, Lesen nicht interessant
|
E
|
Enabel
|
D0-D7
|
Datenbus
|
Die Spannung V0 wird mit einem Spannungsteile erzeugt. Damit kann der
Kontrast des Displays geregelt werden. Das Display kann beschrieben
(Write) und ausgelesen werden (Read). Das Auslesen ist für unsere
Anwendungen nicht erforderlich, daher wird dieser Eingang fest mit GND
verbunden.
Der Attiny stellt nur 8 Datenleitungen zur Verfügung. Benötigt werden
aber 8 Datenleitungen und zwei Steuerleitungen. Die LCD-Displays können
aber auch im 4-Bit-Modus betrieben werden. Dann wird ein Byte in 2
Nibble (4bits) zerlegt und nacheinander übertragen. Dadurch sinkt die
benötigten Datenleitungen am Attiny von 10 auf 6.
Der Schaltplan für den Anschluss sieht also folgendermaßen aus:
Damit der Attiny das LCD-Display korrekt ansteuern kann, muß man
ihm mitteilen, welcher Pin des PortsB mit welchem Port des LCD-Displays
verbunden ist. Dies geschieht mit dem Befehl
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.6 , Rs = Portb.4
Die Datenübertragung erfolgt im 4-Bit-Modus, wie weiter oben schon
beschrieben. Auch dies muß dem Display mitgeteilt werden. Dazu dient
der Befehl
Config Lcdbus = 4
Nach der Übertragung wird das LCD-Display mit dem Befehl
InitLCD einmalig korrekt eingerichtet. Dieser Befehl überträgt auch die frei programmierbaren Sonderzeichen.
Mit LCD"Test" wird das Wort Test auf dem Display angezeigt.
Wichtige Befehle für das LCD-Display
LCD"Test" | Gibt Test auf dem Display aus |
LCD A | Gibt den Wert der Variabel A aus |
CLS | Löscht das Display und setzt den Cursor an die Position 1 |
Locate x,y | Setzt den Fokus an die Position x,y auf dem Display y = 1 oder 2 ; x = 0....16 |
Cursor | ON / OFF BLINK/NOBLINK |
ShiftLCD | LEFT / RIGHT Verschiebt den Text um eine Position nach rechts oder links |
ShiftCursor | LEFT / RIGHT Verschiebt den Cursor um eine Position nach rechts oder links |
Sonderzeichen auf dem LCD-Display
Das Display hat einen
RAM-Speicher für 7 frei definierbare Zeichen, die mit dem Befehl
InitLCD an das Display übertragen werden. BASCOM hat einen eingebauten
LCD-Designer, der den Entwurf eines Sonderzeichens sehr einfach macht.
Dazu wird in Bascom auf das Symbol LCD geklickt.
Es öffnet sich ein Fenster mit dem LCD-Designer

Mit der Maus können die einzelnen Quadrate angeklickt werden, um das Sonderzeichen zu zeichnen. Das Ergebnis könnte so aussehen:

Mit OK wird in Bascom eine neue Programmzeile erzeugt. Diese muss ggf. vor den Befehl InitLCD kopiert werden.

Das
[x] muß nun noch durch die Zahl 0...7 ersetzt werden, dann kann das
Sonderzeichen mit dem CHR-Befehl aufgerufen werden. Zum Beispiel mit
LCD CHR(0), das das Sonderzeichen 0 aufruft.