Einfügen als Gemeinsames Modul
Funktionen:
Display-Befehle: | Clipboard-Befehle: | Terminal Funktionen: | Textausgabe: |
clear | storedisp | FF | textmodus |
init | restoredisp | CR | font |
invert | storearea | LF | text |
fill | showarea | enter | definechar |
screen | cursor | ||
clipboard | goto | ||
normal | Tfont | ||
Zeichnen: | Bilder: | Bargraph-Befehle: | Tastatur-Befehle: |
Gmode | loadbmp | bargraph | button |
dot | sendbmp | barvalue | touchactive |
gerade | touchevent | ||
Wgerade | Makro-Befehle: | Menü-Befehle: | invertbutton |
rechteck | makro | menu | gettouch |
rundeck | automakro | menuinvers | touchreturn |
delzone | item | ||
invzone | menusend | ||
fillzone | menumakro | ||
box | menuabort | ||
rundbox | |||
Kontroll-/Definitions-Befehle: | Port-Befehle: | ||
blinkarea | outport | ||
blinktime | inport | ||
blinkmode | portscan | ||
beeper | portinvers | ||
ic2read | |||
i2cwrite |
Beschreibung Nach oben
Das Modul touchlcd.c2 ist ein Treiber für die
Grafik-Touch-LC-Displays von
Electronic Assembly.
(EA KIT 120-5 bis EA KIT 240-7; für EA KIT 320-8 nur bedingt geeignet)
Das LCD wird über SWCOM angeschlossen.
Ist die vorgesehene Leitungslänge zwischen CC2 und LCD nicht länger als 20cm,
dann kann man das LCD auch ohne Pegelwandler (TTL-Pegel) anschließen.
Dazu muß der Pegelwandlerbaustein am LCD entfernt werden. (siehe Anleitung LCD)
touchlcd.c2 benutzt ein Hardware-Handshake. Dazu muß die
TTL-Pegel-Leitung
RTS vom Touchlcd an Port P1H.5 der CC2 angeschlossen werden.
Man kann im Modul touchlcd.c2 auch einen anderen Port festlegen.
Wenn man das LCD mit TTL-Pegel anschließt, sollte man Widerstande
zum Schutz der Ports (CC2 & LCD) in serie anschließen.
Will man das LCD weiter als 20cm von der Unit empfielt es sich einen
Pegelwandler zu verwenden. Man sollte einen zweiten(externen)
Pegelwandler verwenden. So kann man noch das HW-Handshake
der hwcom nutzen.
Einfügen als Gemeinsames Modul
Nach oben
Die Datei touchlcd.c2 in das Verzeichnis .\CControl2\UserLib
kopieren und in der Datei modules.txt
die Zeile touchlcd.c2 am Ende
einfügen.
Funktionen:
Display-Befehle:
Initialisierung Nach oben
function init()
Die Funktion Init initialisiert SWCOM und das Touch-LCD.
Es wird dabei das Makro 0 des LCDs ausgeführt, falls
eines geladen wurde
Clear
Nach oben
function clear()
Die Funktion clear löscht das Display (Alle Pixel aus).
Invert Nach oben
function invert()
Durch invert wird der gesamte Displayinhalt invertiert.
Fill Nach oben
function fill()
Die Funktion fill ist das Gegenteil der Funktion clear .
Es werden alle Pixel eingeschaltet.
Display
ein/ausschalten Nach oben
function screene(byte OnOff)
Die Funktion screen schaltet das Display ein bzw. aus.
Beim Ausschalten wird nur der Displayinhalt unsichtbar, er bleibt aber erhalten.
Es können weiterhin Befehle gesendet werden.
OnOff | Aus = 0, Ein = 1 |
Clipboard darstellen Nach oben
function clipboard()
Es wird der Clipboard-Inhalt dargestellt. Displayausgaben werden nicht
mehr sichtbar.
Normaldarstellung Nach oben
function normal()
Die Funktion normal zeigt das Aktuelle Bild.
Alle ausgaben werden wieder sichtbar
Clipboard-Befehle:
Displayinhalt sichern Nach oben
function storedisp()
Es wird der gesamte Displayinhalt als Bildbereich in das Clipboard
kopiert.
Normaldarstellung Nach oben
function restoredisp()
Es wird der Bildbereich im Clipboard wieder ins Display
zurückkopiert.
Bereich sichern Nach oben
function storearea(byte x1, byte x2, byte y1, byte y2)
Es wird der Bildbereich von x1,y1 bis x2,y2 in das Clipboard
kopiert.
x1 | Begin (links) |
y1 | Begin (oben) |
x2 | Ende (rechts) |
y2 | Ende (unten) |
Bereich
kopieren Nach oben
function showarea(byte x, byte y)
Es wird der Bildbereich vom Clipboard wieder ins Display
an die Koordinaten x, y zurückkopiert.
x | Begin (links) |
y | Begin (oben) |
Terminal-Funktionen:
Formfeed Nach oben
function FF()
Die Funktion FF sendet einen Formfeed an das Display.(ASCII
12).
Es wird dabei des Bildschirm gelöscht und de Cursor auf
Position 1, 1 gesetzt.
Carriage Return Nach oben
function CR()
Die Funktion CR sendet ein Carriage Return an das Display.
(ASCII 13).
Der Cursor wird dabei links an den Zeilenanfang gesetzt.
Linefeed Nach oben
function LF()
Die Funktion LF sendet ein Linefeed an das Display. (ASCII 10).
Der Cursor wird dabei eine Zeile tiefer gesetzt. Falls sich der
Cursor in der letzten Zeile befindet, wird dieser dann auf
Zeile 1 gesetzt.
Zeilenvorschub Nach oben
function enter()
Die Funktion enter sendet ein Carriage Return und ein
Linefeed an
das Display. (ASCII 13 & 10).
Der Cursor wird dabei eine Zeile tiefer und an den Zeilenanfang gesetzt.
Falls sich der Cursor in der letzten Zeile befindet, wird dieser dann
auf Position 1, 1 gesetzt.
Cursor-Status Nach oben
function cursor(byte set)
Die Funktion sursor schaltet den Cursor für den Terminalbetrieb
ein bzw. aus.
set | Cursor-Status: 1=ein 0=aus |
Goto Nach oben
function goto(byte row,byte column)
Mit goto kann man den Cursor für den Terminalbetrieb
positionieren. Dabei entspricht goto(1,1) den Ursprung
ganz oben links.
row | Zeile |
column | Spalte |
Terminal-Font Nach oben
function Tfont(byte font)
Die Funktion Tfont setzt den Font für den Terminalbetrieb.
font | Font 1 bis 16 |
Textausgabe-Befehle:(Grafik-Modus)
Textmodus einstellen Nach oben
function textmodus(byte mode, byte muster)
Mit dieser Funktion wird der Textmodus eingestellt, wie der
Text ausgegeben werden soll.
mode | Modus: 1=setzen 2=löschen 3=invers 4=Replace 5=Invers Replace |
muster | Muster Nr. 0-7 |
Font einstellen Nach oben
function font(byte font, byte zoomX, byte zoomY)
Mit der Funktion font wird der Font und der Zoomfaktor für
den
Font eingestellt.
font | Modus: 1=setzen 2=löschen 3=invers 4=Replace 5=Invers Replace |
zoomX, zoomY | Zoomfaktor 1 bis 8 |
Textausgabe Nach oben
function text(byte dir, byte posX, byte posY, byte text[], byte length)
Die Funktion text gibt einen Text beginnend an der angegebenen
Position
in der Ausrichtung dir aus dem Display aus
dir | Ausrichtung horizontal:(bezogen auf posX) 'L'=Linksbündig, 'Z'=Zentriert, 'R'=Rechtsbündig Ausrichtung vertikal:(bezogen auf posY) 'O'=Oben-Bündig, 'M'=Mittig, 'U'=Unten-Bündig |
posX, posY | Ausgabeposition |
text[] | zu übergebener String oder Bytepuffervariable |
length | Auszugebene Textlänge |
Zeichen definieren Nach oben
function definchar(byte font, byte nr, byte data[])
Mit der funktion definechar kann man eigene Zeichen definieren.
font | Font-Nr. für den das Zeichen definiert werden soll |
nr | Zeichen-Nr. |
data[] | Zeichendaten |
Anzahl erwarteter Daten-Bytes für die Fonts:
1: | 4x6 | 6Bytes |
2: | 5x6 | 6Bytes |
3: | 6x8 | 8Bytes |
4: | 8x8 | 8Bytes |
5: | 8x16 | 16Bytes |
6: | 16x16 | 16Bytes |
Zeichnen:
Grafik-Modus Nach oben
function Gmode(byte mode)
Die Funktion Gmode bestimmt den Zeichenmodus, wie
gezeichnet werden soll.
mode | 1=setzen;2=löschen;3=Invers 4=Replace;5=Invers Replace |
Punkt setzen Nach oben
function dot(byte posX, byte posY)
Die Funktion dot setzt einen Punkt an posX, posY.
posX | Position X-Achse |
posY | Position Y-Achse |
Gerade zeichnen Nach oben
function gerade(byte x1, byte y1, byte x2, byte y2)
Die Funktion gerade zeichnet eine Linie von x1,y1 nach x2,y2.
x1 | Anfang Gerade |
y1 | Anfang Gerade |
x2 | Ende Gerade |
y2 | Ende Gerade |
Gerade weiterzeichnen Nach oben
function Wgerade(byte x, byte y)
Die Funktion Wgerade zeichnet eine Gerade an der Position weiter,
an der zu letzt eine mit der Funktion gerade bzw Wgerade
gezeichnete
Gerade geendet hat.
x1 | Ende Gerade |
y2 | Ende Gerade |
Rechteck zeichnen Nach oben
function rechteck(byte x1, byte y1, byte x2, byte y2)
Mit der Funktion rechteck wird ein Rechteck von x1,y1 bis x2,y2
gezeichnet.
x1,y1 | Linke obere Ecke |
x2,y2 | rechte untere Ecke |
Rundeck zeichnen Nach oben
function rundeck(byte x1, byte y1, byte x2, byte y2)
Mit der Funktion rundteck wird ein abgerundetes Rechteck
von x1,y1 bis x2,y2 gezeichnet.
x1,y1 | Linke obere Ecke |
x2,y2 | rechte untere Ecke |
Bereich löschen Nach oben
function delzone(byte x1, byte y1, byte x2, byte y2)
Die Funktion delzone löscht einen Bereich des LCDs.(alle Pixel aus)
x1,y1 | Linke obere Ecke |
x2,y2 | rechte untere Ecke |
Bereich invertieren Nach oben
function invzone(byte x1, byte y1, byte x2, byte y2)
Die Funktion invzone invertiert einen ausgewählten Bereich.
x1,y1 | Linke obere Ecke |
x2,y2 | rechte untere Ecke |
Bereich füllen Nach oben
function fillzone(byte x1, byte y1, byte x2, byte y2)
Die Funktion fillzone füllt einen ausgewählten Bereich.(alle Pixel an)
x1,y1 | Linke obere Ecke |
x2,y2 | rechte untere Ecke |
Rechteck mit Füllmuster zeichnen Nach oben
function box(byte x1, byte y1, byte x2, byte y2, byte muster)
Mit der Funktion box wird ein Rechteck mit Muster 0-7 von x1,y1 bis
x2,y2
gezeichnet.
x1,y1 | Linke obere Ecke |
x2,y2 | rechte untere Ecke |
muster | Füllmuster 0 bis 7 |
Rundeck mit Füllmuster zeichnen Nach oben
function rundbox(byte x1, byte y1, byte x2, byte y2, byte muster)
Mit der Funktion rundbox wird ein abgerundetes Rechteck
mit Muster 0-7 von x1,y1 bis x2,y2 gezeichnet.
x1,y1 | Linke obere Ecke |
x2,y2 | rechte untere Ecke |
muster | Füllmuster 0 bis 7 |
Bilder:
Bitmap aus EEProm laden Nach oben
function loadbmp(byte bmp, byte posX, byte posY,)
Die Funktion loadbmp lädt ein Bitmap aus dem LCD eigenen EEProm
an Position posX, posY.
bmp | Nr. des Bildes (0 bis 255) |
posX,posY | Position des Bitmaps (linke obere Ecke) |
Bild an LCD senden Nach oben
function sendbmp(byte data[], byte posX, byte posY)
Mit der Funktion box wird ein Rechteck mit Muster 0-7 von x1,y1 bis
x2,y2
gezeichnet.
data[] | Byte Array mit Bilddaten Byte 0 : Anzahl Bytes=((Breite+7)/8)* Höhe Bytes Byte 1 : Breite des Bildes in Pixel Ab Byte 2: Bilddaten |
posX, posY | Position des Bitmaps (linke obere Ecke) |
Bargraph-Befehle:
Bargraph definieren Nach oben
function bargraph(byte mode, byte nr, byte x1, byte y1, byte x2, byte y2, byte aw, byte ew, byte muster)
Mit der Funktion bargraph wird ein Bargraph definiert.
mode | Ausrichtung: 0=nach rechts 1=nach links 2=nach oben 3=nach unten |
nr | Bargraph-Nr. (1 bis 16) |
x1, y2, x2, y2 | umschließendes Rechteck |
aw | Anfangswert (0 bis 254) |
ew | Endwert (0 bis 254) |
muster | Füllmuster 0 bis 7 |
Bargraph setzen
Nach oben
function barvalue(byte nr, byte value)
Mit der Funktion barvalue wird der Wert value des Bargraphs
mit Nummer nr gesetzt.
nr | Nummer des Bargraphs (1 bis 16) |
value | Wert (>=aw & <=ew) |
Makro-Befehle:
Makro ausführen
Nach oben
function makro(byte art, byte nr)
Die Funktion makro ruft das Normal-, Touch bzw. Port-Makro
mit der Nummer nr auf.
art | Art des Makros: 0=Normal Makro 1=Touch Makro 2=Port Makro |
nr | Makro Nummer (0 bis 255) |
Makros automatisch
ausführen
Nach oben
function barvalue(byte mode, byte nr1, byte nr2, byte interv)
Mit der Funktion barvalue wird der Wert value des Bargraphs
mit Nummer nr gesetzt.
mode | 0=zyklisch (n1...n2,n1...n2) 1=PingPong (n1...n2...n1) |
nr1, n2 | Makros nr1 bis nr2 ausführen |
interv | Intervall der Makros in 1/10sec |
Menü-Befehle:
Menü definieren
Nach oben
function menu(byte dir,byte posX,byte posY,byte sel,byte text[],byte length)
Die Funktion menu zeichnet ein Menü an posX, posY.
dir | 0=horizontal; 1=vertikal |
posX, posY | Ausgabeposition |
sel | Nr. des aktuell invertierten Eintrags (beg. bei 1) |
text[] | String oder Byte-Array mit den Menüpunkten. Die Einträge werden mit 0x7C(124) getrennt. |
length | Länge des Strings oder Byte-Arrays |
Menübox invertieren
Nach oben
function menuinvers()
menuinvers invertiert die gesamte Menübox des aktuellen Menüs.
Menüpunkt wählen
Nach oben
function item(byte sel)
Die Funktion item selektiert den nächsten/vorherigen Eintrag
des aktuellen Menüs.
sel | 0=vorheriger Eintrag; 1=nächster Eintrag |
Menüende / Senden
Nach oben
function menusend() returns byte
Die Funktion menusend entfernt das Menü vom LCD und gibt
den aktuell ausgewählten Eintrag (1...n) zurück.
Menüende / Makro
Nach oben
function menumakro(byte nr)
Die Funktion menumakro entfernt das Menü vom LCD und führt
das Makro nr für Eintrag 1 aus, Makro nr+1 für
Eintrag 2 usw. aus.
nr | Makro-Nr. |
Menüende / Abbrechen Nach oben
function menuabort()
Die Funktion menuabort entfernt das Menü vom LCD.
Tastatur-Befehle:
Taste definieren
Nach oben
function button(byte dir, byte f1, byte f2, byte retCode, byte form, byte text[], byte length)
Die Funktion butten definiert eine Touchtaste.
dir | Ausrichtung: 0=horizontal; 1=vertikal |
f1 | Begin Touch-Taste |
f2 | Ende Touch-Taste |
retCode | Rückgabewert 1 bis 255 (0=Taste nicht aktiv) |
form | 0=nichts; 1=löschen; 2=mit Rahmen |
text[] | Zeichenkette, die zentriert angezeigt werden soll Zeilenwechsel durch 0x7C (dez:124) |
length | Länge der Zeichenkette |
Touch-Tasten (P)Reset
Nach oben
function touchactive(byte set)
Die Funktion touchactive aktiviert aufsteigend alle Felder bzw.
deaktiviert alle Felder.
set | 0=alle Touch-Felder deaktiviert; 1=alle Touch-Felder aufsteigend aktiviert |
Touchevent
Nach oben
function touchevent(byte invers, byte beep)
Die Funktion touchevent bestimmt, ob die definierte Taste invertiert
wird
und ob der Summer dabei piepst.
invers | 0=kein Invertieren; 1=Taste wird invertiert |
beep | 0=kein Summer; 1=Summer piepst beim Berühren |
Taste invertieren
Nach oben
function invertbutton(byte button)
Mit der Funktion invertbutton wird die definierte Taste mit dem
Return Code button manuell invertiert
button | Touch-Taste (Return Code) |
Taste manuell
abfragen Nach oben
function gettouch(byte button)
Die Funktion gettouch sendet die aktuell gedrückte Taste über RS232/422.
button | Touch-Taste (Return Code) |
Tasten-Abrage
Ein/Ausschalten Nach oben
function touchreturn(byte set)
touchreturn schaltet die Tastenabfrage ein bzw. aus.
set | 0=Abfrage deaktiviert 1=aktiviert; Tastendrücke werden autom. gesendet 2=aktiviert; Tastendrücke werden nicht gesendet und müssen mit gettouch abgefragt werden |
Kontroll-/Definitions-Befehle:
Blinkender Bereich Nach oben
function blinkarea(byte x1, byte y1, byte x2, byte y2)
Mit blinkarea wird ein blinkender Bereich definiert.
Die Blinkzeit wird mit blinktime eingestellt.
x1, y1 | obere linke Ecke |
x2, y2 | untere rechte Ecke |
Blinkzeit einstellen Nach oben
function blinktime(byte intervall)
Mit blinktime wird die Blinkzeit in 1/10 sec. eingestellt.
intervall | 1 bis 15 in 1/10 sec.; 0=Blinkfunktion deaktiviert |
Blink-Modus Nach oben
function blinkmode(byte mode, byte mst)
Die Funktion blinkmode legt den Blinkmodus fest.
mode | 0=invers; 1= Muster mst |
mst | Blinkmuster 0 bis 7 |
Summer schalten Nach oben
function beeper(byte set)
Mit der Funktion beeper kann der Summer des LCDs manuell
ein bzw. ausgeschaltet werden.
set | 0=aus; 1=ein; 2 bis 255= ein für set*1/10sec. |
I²C-Bus lesen
Nach oben
function i2cread(byte addr, byte mst)
Mit der Function i2cread kann auf den I²C-Bus des LCDs ein
Lesezugriff ausgeführt werden.
Die gelesenen Daten werden in dem Bytearray i2cbuf[] gespeichert.
addr | Adresse des I²C-Bus Device |
length | Anzahl der zu empfangenen Bytes 0=1Byte; 1=2Byte ... 255 = 256Byte |
I²C-Bus schreiben
Nach oben
function i2cwrite(byte addr, byte mst, byte data[])
Mit der Function i2cwrite kann auf den I²C-Bus des LCDs ein
Schreibzugriff ausgeführt werden.
addr | Adresse des I²C-Bus Device |
length | Anzahl der zu sendenden Bytes 0=1Byte; 1=2Byte ... 255 = 256Byte |
data[] | Datenbytes, die Übertragen werden sollen |
Port-Befehle: (nur Option EA OPT8I8O)
Outport schreiben
Nach oben
function outport(byte ports, byte set)
Mit der Funktion outport werden die Ausgangsports des LCDs beschrieben.
ports | 0=alle Ports; 1 bis 8=Einzelports |
set | Bei ports=0 werden die Ports entsprechend set gesetzt. Einzelports: 0=rücksetzen; 1=setzen; 2=invertieren |
Eingabe-Port lesen
Nach oben
function inport(byte ports) returns byte
Die Funktion inport liest den Portzustand der Eingabe-Ports und
gibt diesen als Byte zurück.
ports | 0=alle Ports; 1 bis 8=Einzelports |
Automatische
Portabfrage Nach oben
function portscan(byte set)
Die Funktion portscan aktiviert/deaktiviert die automatische
Portabfrage. Ist diese aktiviert, werden bei jeder Änderung
am Eingabeport entsprechend die Portmakros 0 bis 255 aufgerufen.
set | 0=deaktiviert; 1=aktiviert |
Eingabe-Port invers
Nach oben
function portinvers(byte set)
Mit der Funktion portinvers kann die Logik des Eingabeports
invertiert weden.
set | 0=normal; 1=invertiert |
Author: André H. Mail: andre.h@cc2net.de
Erstellt: 5.02.2002