K (→Befehlsübersicht) |
K |
||
Zeile 1: | Zeile 1: | ||
− | |||
− | |||
[[Bild:lcdmodul_2.jpg|right|thumb|350px|LCD-Modul]] | [[Bild:lcdmodul_2.jpg|right|thumb|350px|LCD-Modul]] | ||
Zeile 85: | Zeile 83: | ||
Der CGROM (Character Generator ROM) enthält die Zeichen in Form von 5x8 oder 5x10 Punktmatrizen. | Der CGROM (Character Generator ROM) enthält die Zeichen in Form von 5x8 oder 5x10 Punktmatrizen. | ||
Im CGRAM (Character Generator RAM) können acht benutzerdefinierte Zeichen 5x8 Pixel oder vier 5x10 Pixel abgelegt werden. | Im CGRAM (Character Generator RAM) können acht benutzerdefinierte Zeichen 5x8 Pixel oder vier 5x10 Pixel abgelegt werden. | ||
− | |||
− | |||
====Befehlsübersicht==== | ====Befehlsübersicht==== | ||
Zeile 106: | Zeile 102: | ||
| '''Ausführungszeit bei fosc=250kHz''' | | '''Ausführungszeit bei fosc=250kHz''' | ||
|- | |- | ||
− | | | + | |Lösche Display |
|0 | |0 | ||
|0 | |0 | ||
Zeile 117: | Zeile 113: | ||
|0 | |0 | ||
|1 | |1 | ||
− | | | + | |Löscht das Display und setzt den Cursor auf das Anfang der 1. Zeile (Addresse 0). |
|1.64mS | |1.64mS | ||
|- | |- | ||
− | | Cursor | + | |Cursor Home |
|0 | |0 | ||
|0 | |0 | ||
Zeile 131: | Zeile 127: | ||
|1 | |1 | ||
|* | |* | ||
− | | | + | |setzt den Cursor auf das Anfang der 1. Zeile (Addresse 0) |
|1.64mS | |1.64mS | ||
|- | |- | ||
Zeile 148: | Zeile 144: | ||
|40uS | |40uS | ||
|- | |- | ||
− | |Display | + | |Display an/aus Steuerung |
|0 | |0 | ||
|0 | |0 | ||
Zeile 159: | Zeile 155: | ||
|C | |C | ||
|B | |B | ||
− | | | + | |Schaltet an/aus: das gesamte Display (D), Den Cursor (C) blinken des Zeichens an der Cursor Position (B). |
|40uS | |40uS | ||
|- | |- | ||
− | |Cursor/ | + | |Cursor/Display verschieben |
|0 | |0 | ||
|0 | |0 | ||
Zeile 173: | Zeile 169: | ||
|* | |* | ||
|* | |* | ||
− | | | + | |Setzt Cursor Bewegung oder Display Bewegung (S/C), Bewegungs Richtung (R/L) |
|40uS | |40uS | ||
|- | |- | ||
− | | | + | |Funktion setzen |
|0 | |0 | ||
|0 | |0 | ||
Zeile 187: | Zeile 183: | ||
|* | |* | ||
|* | |* | ||
− | | | + | |Einstellen der Schnittstellen Datenlänge (DL), Anzahl Display Zeilen (N) und Zeichen Font (F). |
|40uS | |40uS | ||
|- | |- | ||
− | | | + | |Setzen der CGRAM Addresse |
|0 | |0 | ||
|0 | |0 | ||
|0 | |0 | ||
|1 | |1 | ||
− | |CGRAM | + | |CGRAM Adresse |
|A | |A | ||
|A | |A | ||
Zeile 201: | Zeile 197: | ||
|A | |A | ||
|A | |A | ||
− | | | + | |Setzen der CGRAM Adresse. CGRAM Daten werden gesendet und empfangen nach dem setzen. |
|40uS | |40uS | ||
|- | |- | ||
− | | | + | |Seten DDRAM Adresse |
|0 | |0 | ||
|0 | |0 | ||
|1 | |1 | ||
− | |DDRAM | + | |DDRAM Adresse |
|A | |A | ||
|A | |A | ||
Zeile 215: | Zeile 211: | ||
|A | |A | ||
|A | |A | ||
− | | | + | |Setzen der DDRAM Adresse. DDRAM Daten werden gesendet und empfangen nach dem setzen. |
|40uS | |40uS | ||
|- | |- |
Version vom 7. Juni 2006, 22:02 Uhr
Inhaltsverzeichnis
- 1 Einleitung
- 2 Text-Displays
- 3 Graphik-Displays
- 4 Siehe auch
- 5 Weblinks
- 6 Autore(en)
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 der HD44780 von Hitachi oder ein kompatibler Controller zum Einsatz. Dieser Controller unterstützt Displays mit bis zu 80 Zeichen. Gängige Displaygrößen sind: 8 × 1, 8 × 2, 16 × 1, 16 × 2, 20 × 2, 20 × 4, 40 × 2 Zeichen Displays (Spalten × Zeilen). Hat das Display mehr als 80 Zeichen, dann benötigt das Display 2 Controller und verhält sich nach außen zur Ansteuerung, wie 2 Displays (zusätzliche Enable Leitung)
Anschlußbelegung für 8×1 bis 20×4 Zeichen Displays
Text-Displays verfügen über einen über genormte 14 Anschluß Pins (LCD-Module mit Backlight über 16 Pins). Lediglich bei der Backlight Versorgungsspannung und Polung kann es Unterschiede geben. Im Zweifelsfall hilft hier der Blick ins Datenblatt. Entweder sind die Anschlüsse in einer Reihe (1 × 14(16)) oder zweireihig (2 × 7(8)) herausgeführt.
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 |
LCD Controller HD44780 kompatible
Der LCD Controller besitzt 3 Speicher. Den DDRAM (Display Data RAM) Darin werden die anzuzeigenden Daten geschrieben. Der CGROM (Character Generator ROM) enthält die Zeichen in Form von 5x8 oder 5x10 Punktmatrizen. Im CGRAM (Character Generator RAM) können acht benutzerdefinierte Zeichen 5x8 Pixel oder vier 5x10 Pixel abgelegt werden.
Befehlsübersicht
Befehl | RS | R/W | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 | Beschreibung | Ausführungszeit bei fosc=250kHz |
Lösche Display | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | Löscht das Display und setzt den Cursor auf das Anfang der 1. Zeile (Addresse 0). | 1.64mS |
Cursor Home | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | * | setzt den Cursor auf das Anfang der 1. Zeile (Addresse 0) | 1.64mS |
Entry mode set | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | I/D | S | Sets cursor move direction (I/D), specifies to shift the display (S). These operations are performed during data read/write. | 40uS |
Display an/aus Steuerung | 0 | 0 | 0 | 0 | 0 | 0 | 1 | D | C | B | Schaltet an/aus: das gesamte Display (D), Den Cursor (C) blinken des Zeichens an der Cursor Position (B). | 40uS |
Cursor/Display verschieben | 0 | 0 | 0 | 0 | 0 | 1 | S/C | R/L | * | * | Setzt Cursor Bewegung oder Display Bewegung (S/C), Bewegungs Richtung (R/L) | 40uS |
Funktion setzen | 0 | 0 | 0 | 0 | 1 | DL | N | F | * | * | Einstellen der Schnittstellen Datenlänge (DL), Anzahl Display Zeilen (N) und Zeichen Font (F). | 40uS |
Setzen der CGRAM Addresse | 0 | 0 | 0 | 1 | CGRAM Adresse | A | A | A | A | A | Setzen der CGRAM Adresse. CGRAM Daten werden gesendet und empfangen nach dem setzen. | 40uS |
Seten DDRAM Adresse | 0 | 0 | 1 | DDRAM Adresse | A | A | A | A | A | A | Setzen der DDRAM Adresse. DDRAM Daten werden gesendet und empfangen nach dem setzen. | 40uS |
Read busy-flag and address counter | 0 | 1 | BF | CGRAM / DDRAM address | A | A | A | A | A | A | Reads Busy-flag (BF) indicating internal operation is being performed and reads CGRAM or DDRAM address counter contents (depending on previous instruction). | 0uS |
Write to CGRAM or DDRAM | 1 | 0 | write data | D | D | D | D | D | D | D | Writes data to CGRAM or DDRAM. | 40uS |
Read from CGRAM or DDRAM | 1 | 1 | read data | D | D | D | D | D | D | D | Reads data from CGRAM or DDRAM. | 40uS |
Anmerkungen: - DDRAM = Display Data RAM. - CGRAM = Character Generator RAM. - DDRAM address corresponds to cursor position. - * = Don't care. - ** = Based on Fosc = 250kHz.
Bit Name | Einstellung / Status | |
I/D | 0 = Decrement cursor position | 1 = Increment cursor position |
S | 0 = No display shift | 1 = Display shift |
D | 0 = Display off | 1 = Display on |
C | 0 = Cursor off | 1 = Cursor on |
B | 0 = Cursor blink off | 1 = Cursor blink on |
S/C | 0 = Move cursor | 1 = Shift display |
R/L | 0 = Shift left | 1 = Shift right |
DL | 0 = 4-bit interface | 1 = 8-bit interface |
N | 0 = 1/8 or 1/11 Duty (1 line) | 1 = 1/16 Duty (2 lines) |
F | 0 = 5x7 dots | 1 = 5x10 dots |
BF | 0 = Can accept instruction | 1 = Internal operation in progress |
8-Bit Ansteuerung (Busmode)
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 häufig im Bus Mode auch memory-mapped Mode genannt. Diesen Mode unterstützen allerdings nur die wenigsten Atmel AVR Prozessoren (mit externem Bus-Interface), z.B. der AT90S8515 und ATmega128.
BASCOM-AVR Programm
Das Programm zur Ansteuerung des Displays im 8-Bit Bus Mode.
$regfile = "8515def.dat" $crystal = 4000000 $lcd = &HC000 'Adresse LCD Daten $lcdrs = &H8000 'Adresse LCD Register select Config Lcdbus = 8 'LCD im 8-Bit Bus Mode Config Lcd = 16 * 2 'wir verwenden ein 16 x 2 Zeichen Display Cls 'loesche das LCD Display Locate 1 , 1 'Cursor auf 1 Zeile, 1 Spalte Lcd "Hello world." 'String auf Display anzeigen
AVR-GCC Programm
Die lcdlibrary von Peter Fleury unterstützt den 8-Bit Bus Mode
TODO....
4-Bit Ansteuerung (I/O Mode)
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, dann ist aber keine Busy-Bit Abfrage möglich.
BASCOM-AVR Programm
Das Programm zur Ansteuerung des Displays im 4-Bit I/O Mode.
$regfile = "m32def.dat" $crystal = 16000000 Config Lcd = 20 * 4 'wir verwenden ein 4 x 20 Zeichen Display ' Im I/O Mode wird jeder Prozessor Pin einzeln angegeben Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4 Cls 'loesche das LCD Display Locate 1 , 1 'Cursor auf 1 Zeile, 1 Spalte Lcd "Hello world." 'String auf Display anzeigen
AVR-GCC Programm
Die lcdlibrary von Peter Fleury unterstützt auch den 4-Bit I/O Mode.
TODO....
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.
BASCOM-AVR Programm
Das BASCOM Programm für diese Ansteuerung ist nicht ganz so einfach, da es nicht von der BASCOM Library unterstützt wird. Die Routinen zum Ansprechen des Displays muß man selbst coden.
TODO....
AVR-GCC Programm
TODO....
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.
BASCOM Programm
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
AVR-GCC Programm
TODO....
Ansteuerung über RS232
Ebenfalls nur 2 Pins zur Ansteuerung benötigt die Lösung. Allerdings ist die serielle Schnittstelle bei Mikrocontrollern oft schon 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