An diesem Artikel arbeitet gerade Mitglied m_a_r_v_i_n.
Am besten momentan noch keine gravierenden Ergänzungen / Änderungen vornehmen. Dieser Hinweis verschwindet wenn der Autor soweit ist. Sollte dieser Hinweis länger als drei Tage auf einer Seite sein, bitte beim Autor m_a_r_v_i_n per PM / Mail oder Forum nachfragen ob er vergessen wurde. |
Inhaltsverzeichnis
Einleitung
LCD ist eine Abkürzung und bedeutet Liquid Crystal Display. Übersetzt bedeutet dies Flüssigkristall-Anzeige. Flüssigkristalle sind organische Verbindungen, die Eigenschaften von Flüssigkeiten und Festkörpern besitzen. Zwischen zwei Glasplatten mit Polarisationsfiltern schwimmen die Flüssigkristalle. Durh Anlegen einer Wechselspannung ändert sich die Polarisationsebene der Flüssigkristalle und damit, ob das einfallende Licht reflektiert oder absorbiert wird.
Bei einem LCD-Modul befindet sich neben dem LCD auch ein Controller zur Ansteuerung des LCDs.
Text-Displays
Text-Displays kommen wegen der problemlosen Anbindung in Mikrocontroller Projekten wie Robotern am häufigsten zum Einsatz. Bei Text-LCDs kommen meistens HD44780 oder kompatible Controller zum Einsatz.
Anschlußbelegung
Die meisten Text-Display verfügen über eine identisch belegte Anschlußbelegung und verfügen über 16 Anschluß Pins (LCD-Module ohne Backlight über 14 Pins). Lediglich bei der Backlight Versorgungsspannung und Polung kann es Unterschiede geben. Im Zweifelsfall hilft hier der Blick ins Datenblatt.
Pin | Bezeichnung | Beschreibung |
1 | GND | Masse |
2 | VCC | Spannungsversorgung +5V |
3 | VEE | Kontrast Poti 0..0,5V |
4 | RS | Register Select, 1=Daten schreiben / 0=Kommando senden. |
5 | R/W | 1=Read / 0=Write zum lesen / schreiben in das Display RAM |
6 | Enable | Fallende Flanke -> Übertragen des Kommandos oder der Daten, H-Pegel -> Lesen von Daten aus dem Display |
7 | DB0 | Datenbus Bit0 LSB |
8 | DB1 | Datenbus Bit1 |
9 | DB2 | Datenbus Bit2 |
10 | DB3 | Datenbus Bit3 |
11 | DB4 | Datenbus Bit4 |
12 | DB5 | Datenbus Bit5 |
13 | DB6 | Datenbus Bit6 |
14 | DB7 | Datenbus Bit7 MSB |
15 | GND BL | Masse Hintergrundbeleuchtung |
16 | VCC BL | Spannungsversorgung Hintergrundbeleuchtung, mit Vorwiderstand |
8-Bit Ansteuerung
Für die 8-Bit Ansteuerung werden die meisten Prozessor-Ports benötigt. Da Prozessor-Ports normalerweise rar sind ist diese Anbindung sicher nicht die erste Wahl. Die Anbindung erfolgt dabei im memory-mapped Mode. Diesen Mode unterstützen allerdings nur die wenigsten Atmel AVR Prozessoren, z.B. der AT90S8515 und ATmega128.
4-Bit Ansteuerung
Mit die häufigste Anbindungsart ist sicher die 4-Bit Ansteuerung. Dabei werden die Display-Daten Nibble-weise in den Display Speicher übertragen. Das ist zwar etwas langsamer als im 8-Bit Mode, das spielt aber kaum eine Rolle. Für diese Ansteuerung werden 6 Prozessor Ports benötigt. Die R/W Leitung des Displays kann man dabei einfach auf GND legen.
Das Programm zur Ansteuerung des Displays im 4-Bit Mode.
$regfile = "m32def.dat" $crystal = 16000000 Config Lcd = 20 * 4 'wir verwenden ein 4 x 20 Zeichen Display Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4 Config Lcdbus = 4 Cls 'loesche das LCD Display Locate 1 , 1 'Cursor auf 1 Zeile, 1 Spalte Lcd "Hello world." 'String auf Display anzeigen
Ansteuerung über Porterweiterung
Mit einem Porterweiterungs Baustein wie dem 74HC595 lassen sich weitere Prozessor-Ports einsparen. Diese Lösung kommt mit 4 Prozessor Ports aus, läßt man die Abfrage des Busy-Bits (PC5) weg, sogar nur mit 3 Prozessor Ports. Trotzdem wird das Display im 8-Bit Mode betrieben.
Ansteuerung über I²C
Nur 2 Prozessor Ports benötigt man bei der I²C-Ansteuerung. Dazu wird als I²C Porterweiterungs IC der PCF8574P benötigt.
Diese Ansteuerung basiert auf der Application Note AN#118 von MCS electronics. Dazu gibt es auch eine fertige Library zu BASCOM-AVR. damit können die gleichen Befehle zur Ansteuerung verwendet werden. Das BASCOM Programm, um das LCD-Modul über I²C anzusprechen, sieht dann so aus.
$lib "Lcd_i2c.lib" 'ersetzt die Standard LCD Library $regfile = "m32def.dat" $crystal = 16000000 Const Pcf8574_lcd = &H40 'I2C Adresse Config Scl = Portd.6 'I2C SCL Pin Config Sda = Portd.7 'I2C SDA Pin Dim _lcd_e As Byte _lcd_e = 128 'LCDim 4-Bit Mode betreiben Cls 'loesche das LCD Display Locate 1 , 1 'Cursor auf 1 Zeile, 1 Spalte Lcd "Hello world." 'String auf Display anzeigen
Ansteuerung über RS232
Ebenfalls nur 2 Pins zur Ansteuerung benötigt die Lösung. Allerdings iss die serielle Schnittstelle bei Mikrocontrollern bereits mit anderen Aufgaben belegt. Deshalb befindet sich meistens noch zusätzlich eine I²C-Bus Schnittstelle zur Ansteuerung auf dem Modul.
Graphik-Displays
In Mikrocontroller Anwendungen seltener anzutreffen sind Grafik-Displays. Da der Aufwand hier um einiges höher ist (jeder Pixel ist einzeln anzusteuern), kommen in der Praxis nur Grafik-Displays mit RS232 oder I²C-Bus Ansteuerung zum Einsatz.
Siehe auch
Weblinks
- MCS electronics AN #118 - I²C LCD and Keyboard library
- Peter Fleury's Homepage - Interfacing a HD44780 Based LCD to an AVR, LCD library for HD44870 based LCD's