Aus RN-Wissen.de
Wechseln zu: Navigation, Suche


Einleitung

24x1,5 Zeichen Display

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 auf allen anderen funktionieren. Getestet wurde es auf M-Unit 2 und Station 1. 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

Autoren

Amiwerewolf