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. Durch Anlegen einer Wechselspannung (Pulsespannung) ä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.
Anschlussbelegung für Displays mit HD44780 an der C-Control M2.0 (4-Bit Modus)
Pin LCD | Bezeichnung | Pin CCM2.0 | Beschreibung |
1 | GND | GND | Masse |
2 | VCC | 5V | Spannungsversorgung +5V |
3 | VEE | - | Kontrast Poti 0..0,5V |
4 | RS | Port 14 | Register Select, 1=Daten schreiben / 0=Kommando senden. |
5 | R/W | Port 13 | 1=Read / 0=Write zum lesen / schreiben in das Display RAM |
6 | Enable | Port 15 | Fallende Flanke -> Übertragen des Kommandos oder der Daten, H-Pegel -> Lesen von Daten aus dem Display |
7 | DB0 | Not Used | Datenbus Bit0 LSB |
8 | DB1 | Not Used | Datenbus Bit1 |
9 | DB2 | Not Used | Datenbus Bit2 |
10 | DB3 | Not Used | Datenbus Bit3 |
11 | DB4 | Port 9 | Datenbus Bit4 |
12 | DB5 | Port 10 | Datenbus Bit5 |
13 | DB6 | Port 11 | Datenbus Bit6 |
14 | DB7 | Port 12 | Datenbus Bit7 MSB |
LCD Ansteuerung mit LCD.Objekt
Das LCD wir hier vom Betriebssystem im 4-Bit Modus angesteuert (Pinbelegung siehe oben). Das Programm ist in Workbench++/Basic++ geschrieben.
'//////////////////////////////////////////////////////////////// '// '// Basic++ '// Destination C-Control I M2.0 '// Beschreibung: LCD an C-Control M-Unit2 betreiben mit Objekt '// Autor: Amiwerewolf 13. Oktober 06 V1.0 '// '//////////////////////////////////////////////////////////////// OPTION CC2.0 'Zielplattform definieren LCD.INIT 'LCD Initialisieren LCD.CLEAR 'LCD Löschen LCD.POS 1,1 'Schreibposition Zeile, Spalte LCD.PRINT "LCD an C-Control M-Unit2 für RN" 'Text LCD.OFF 'LCD Übertragung ausschalten DO 'Endlosschleife LOOP
LCD Ansteuerung manuell
Dies ist ein Programm um ein LCD manuell anzusteuern. Dürfte nicht nur auf der M-Untit 2 funktionieren sondern sondern auch auf allen außer Station 1 und Micro. Geteset wurde es aber auf M-Unit 2. Das Programm hat die Pinbelegung wie oben beschrieben (4 Bit Mode). Das Programm ist in Workbench++/Basic++ geschrieben.
'/////////////////////////////////////////////////////// '// '// Basic++ '// Destination C-Control I M2.0 '// Beschreibung: LCD an C-Control betreiben (Manuell) '// Autor: Amiwerewolf 13. Oktober 06 '// '/////////////////////////////////////////////////////// OPTION CC2.0 'Zielplattform define lcd_port byteport[2] define lcd_rw port[13] define lcd_rs port[14] define lcd_e port[15] define lcdbyte as byte const leer=20h const z0=30h const z1=31h const z2=32h const z3=33h const z4=34h const z5=35h const z6=36h const z7=37h const z8=38h const z9=39h const gA=41h const gB=42h const gC=43h const gD=44h const gE=45h const gF=46h const gG=47h const gH=48h const gI=49h const gJ=4Ah const gK=4Bh const gL=4Ch const gM=4Dh const gN=4Eh const gO=4Fh const gP=50h const gQ=51h const gR=52h const gS=53h const gT=54h const gU=55h const gV=56h const gW=57h const gX=58h const gY=59h const gZ=5Ah const ka=61h const kb=62h const kc=63h const kd=64h const ke=65h const kf=66h const kg=67h const kh=68h const ki=69h const kj=6Ah const kk=6Bh const kl=6Ch const km=6Dh const kn=6Eh const ko=6Fh const kp=70h const kq=71h const kr=72h const ks=73h const kt=74h const ku=75h const kv=76h const kw=77h const kx=78h const ky=79h const kz=7Ah const zka=40h ' Klammeraffe const zp=2Eh ' Punkt const zk=2Ch ' Komma const zmin=2Dh ' Minus const zdp=3Ah ' Doppelpunkt const zar=21h ' Ausrufezeichen pause 10 lcd_init() pause 1 lcd_clr() pause 1 lcd_line(1) pause 1 lcd_write(gL) lcd_write(gC) lcd_write(gD) lcd_write(leer) lcd_write(ka) lcd_write(kn) lcd_write(leer) lcd_write(gC) lcd_write(zmin) lcd_write(gC) lcd_write(kO) lcd_write(kN) lcd_write(kO) lcd_write(kT) lcd_write(kr) lcd_write(kL) lcd_write(leer) lcd_write(gm) lcd_write(zmin) lcd_write(gu) lcd_write(kn) lcd_write(ki) lcd_write(kt) lcd_write(z2) do loop sub lcd_init() lcd_port=00000010b lcd_ena() pause 1 lcd_cmd(28h) pause 1 lcd_cmd(0Ch) pause 1 end sub sub lcd_clr() lcd_cmd(02h) pause 1 lcd_cmd(01h) pause 1 end sub sub lcd_cmd(lcd_param ref lcdbyte) lcd_port = 00000000b or (lcd_param shr 4) lcd_ena() lcd_port = 00000000b or (lcd_param and 0Fh) lcd_ena() end sub sub lcd_line(line ref lcdbyte) if line = 1 then lcd_cmd(80h) if line = 2 then lcd_cmd(C0h) end sub sub lcd_write(lcd_param ref lcdbyte) lcd_port = 00100000b or (lcd_param shr 4) lcd_ena() lcd_port = 00100000b or (lcd_param and 0Fh) lcd_ena() end sub sub lcd_ena() lcd_e = ON lcd_e = OFF end sub
LCD Ansteuerung über I²C
Folgt noch. Aber im Prinzip ähnlich der manuellen Ansteuerung