Einfügen als Gemeinsames Modul
Funktionen:
setLight()
set()
get()
init()
WriteCmd()
defineChar()
clear()
home()
delline()
line()
goto()
cursorleft()
cursorright()
setcursor()
put()
print2()
print()
printlength()
ziff()
zahl2()
zahl3p()
zahl3()
zahl4p()
zahl4()
zahl5()
zahl()
zahl4n1()
zahl4n2()
zahl5n1()
zahl5n2()
def_bargraph()
bargraph()
def_sanduhr()
der_arr_up()
der_arr_down()
Beschreibung Nach oben
Das Moduls srlcd.c2 ist ein LCD-Treiber für ein Standard-LCD
an 3I/Os über zwei Schieberegister.
Passende Interface-Platinen, aber auch anschlußfertige LCD-Bundles
von 1x16 bis 4x20, sind bei http://cctools.hs-control.de
erhältlich.
Das LCD wird im 8-Bit-Mode angesprochen. Es stehen am zweiten
Schieberegister 6 frei verwendbare Ausgänge zur Verfügung.
Der erste Ausgang ist jedoch für eine LCD-Beleuchtung vorgesehen.
Portbelegung an den Schieberegistern:
Schieberegister 1 | Schieberegister 2 | |
Q0 | LCD-D0 | LCD-RS |
Q1 | LCD-D1 | LCD-Enable |
Q2 | LCD-D2 | LCD-Light |
Q3 | LCD-D3 | Ausgang 1 |
Q4 | LCD-D4 | Ausgang 2 |
Q5 | LCD-D5 | Ausgang 3 |
Q6 | LCD-D6 | Ausgang 4 |
Q7 | LCD-D7 | Ausgang 5 |
Einfügen als Gemeinsames Modul Nach oben
Die Datei srlcd.c2 in das Verzeichnis .\CControl2\UserLib
der IDE
kopieren und in der Datei modules.txt die Zeile srlcd.c2 einfügen.
Außerdem muß die Datei srlcd.hex mit den nötigen Systemroutinen
mit dem Downloadtool in die C-Control II geladen werden.
Der Systemtreiber srlcd.hex belegt den Adressbereich 0xD000 bis 0xD0CD
in Segment 3 des Flash. (206 Byte)
Konstanten Nach oben
Mit den Konstanten Line[] und Charsperline wird der LCD-Typ
ausgewählt:
const Line[]= 0x80,0x80,0xC0,0x94,0xD4;
// für 4x20 LCD
const CharsperLine=20; // für 4x20 & 2x20 LCD
//const Line[]= 0x80,0x80,0xC0,0x90,0xD0; // für 4x16 LCD
//const CharsperLine=16; // für 4x16 & 2x16 LCD
Einsprungadressen für Systemtreiber:
const CMD
= 0xD0B4;
const PUT = 0xD05A;
const PRINT = 0xD08A;
const SEND = 0xD0A2;
const PORTS = 0xD0BE;
Funktionen:
setLight()
Nach oben
function setLight(byte state)
Mit der Funktion setLight() kann die LCD-Hintergrungbeleuchtung ein
bzw.
ausgeschaltet werden.
state | 0 = Beleuchtung aus ungleich 0(z.B. 1) = Beleuchtung ein |
set()
Nach oben
function set(byte port, byte state)
Mit der Funktion set() werden die Ausgänge des zweiten
Schieberegisters
gesetzt. Dabei entsprechen Q2 bis Q7 Port 0 bis Port 5.
port | 0 bis 5 (Port 0 entspricht der LCD-Beleuchtung) |
state | 0: Port aus ungleich 0 (z.B. 1) = Port ein |
get()
Nach oben
function get(byte port) returns int
Mit der Funktion get() werden die in outputstate
gespeicherten
Portzustände der Ausgänge abgefragt.
port | 0 bis 5 (Port 0 entspricht der LCD-Beleuchtung) |
init()
Nach oben
function init()
Die Funktion init() initialisiert das angeschlossenen LC-Display.
WriteCmd() Nach oben
function WriteCmd(byte cmd)
Mit WriteCmd() wird ein Kommandobyte an das LCD gesendet.
cmd | Kommandobyte |
defineChar() Nach oben
function defineChar(byte addr, byte char[])
Mit der Funktion defineChar() können benutzerdefinierte Zeichen
in den RAM
des LC-Displays geschrieben werden. Es können dafür die ASCII-Codes 0 bis 7
verwendet werden. Die Zeichendaten werden mit einem 8 Byte großem Array
übergeben. In dem Byte-Array werden jeweils nur die Bits 0 bis 4 verwendet.
Bit 4 entspricht dem Pixel ganz links und Bit 0 dem Pixel ganz rechts.
Byte 0 entspricht entspricht der ersten Pixelzeile und Byte 7 der untersten(8.)
Pixelzeile,
wobei diese der Cursorzeile entspricht.
addr | ASCII-Code 0 bis 7 |
char[] | Bytearray mit den Zeichendaten (8Byte) |
clear()
Nach oben
function clear()
Mit clear() wird der Inhalt des Display gelöscht
home()
Nach oben
function home()
Die Funktion home() setzt den Cursor auf die
anfangspostion (Zeile1, Spalte0)
Hierfür sollte jedoch die Funktion line() vorgezogen werden, da dies
schneller ausgeführt wird.
delline() Nach oben
function delline(byte line)
Die Funktion delline() löscht den Inhalt der angegebenen Zeile.
line | Zeile 1 bis 4 |
line() Nach oben
function line(byte line)
Mit der Funktion line() wird der Cursor an den Anfang der angegebenen Zeile gesetzt.
line | Zeile 1 bis 4 |
goto() Nach oben
function goto(byte line, byte col)
Mit der Funktion goto() wird der Cursor an die angegebene Position gesetzt.
line | Zeile 1 bis 4 |
col | Spalte 0 bis 19 (bis 15 bei 2x16 oder 4x16 LCDs) |
cursorleft(), cursorright()
Nach oben
function cursorleft()
function cursorright()
Mit diesen beiden Funktion kann der Cursor jeweils um eine Position links bzw
rechts
geschoben werden.
setcursor() Nach oben
function setcursor(byte cursor)
Mit der Funktion setcursor() kann die Darstellung des Cursors verändert werden.
cursor | 0 = Cursor nicht sichtbar 2 = Cursor als Unterstrich 3 = Cursor als Block, blinkend |
put() Nach oben
function put(byte char)
Die Funktion put() gibt ein einzelnes Zeichen aus.
char | Zeichen-Code 0 - 255 ASCII Zeichen können direkt angegeben werden: z.B. lcdext.put('T'); |
function print2(byte
s[])
function print(string s[])
function printlength(byte s[], byte len)
Mit diesen Funktionen können Zeichenketten Ausgegeben werden.
s[] | String-Variable bei print2() Zeichenkette oder Stringvariable bei print() Stringvariable oder Bytearray bei printlength() |
len | Anzahl der auszugebenen Zeichen bei printlength |
Zahlfuntkionen
Nach oben
function ziff(int num)
function zahl2(int num)
function zahl3p(int num)
function zahl3(int num)
function zahl4p(int num)
function zahl4(int num)
function zahl5(int num)
function zahl(int num)
function zahl4n1(int num)
function zahl4n2(int num)
function zahl5n1(int num)
function zahl5n2(int num)
Mit diesen Funktion können Zahlen direkt ausgegeben werden, ohne diese
erst in Strings zu konvertieren. Jede Funktion besitzt eine andere Ausgabeform
von Zahlen:
ziff() | Einzelziffer: 0 bis 9 |
zahl2() | Zweistellig: 0 bis 99 |
zahl3p() | Dreistellig positiv: 0 bis 999 |
zahl3() | Dreistellig: -99 bis 999 |
zahl4p() | 4-stellig positiv: 0 bis 9999 |
zahl4() | 4-stellig: -999 bis 9999 |
zahl5() | 5-stellig positiv: 0 bis 32767 |
zahl() | 6-stellig: -32768 bis 32767 |
zahl4n1() | eine Nachkommastelle: -99,9 bis 999,9 (-999 bis 9.999) |
zahl4n2() | zwei Nachkommastellen: -9,99 bis 99,99 (-999 bis 9.999) |
zahl5n1() | eine Nachkommastelle: -999,9 bis 9999,9 (-9.999 bis 99.999) |
zahl5n2() | zwei Nachkommastellen: -99,99 bis 999,99 (-9.999 bis 99.999) |
num | Zahl im Integerbereich |
def_bargraph()
Nach oben
function def_bargraph()
Die Funktion defbargraph() definiert Zeichen für die
Bargraph-Funktion und legt diese
im Display-RAM als ASCII-Zeichen 0 bis 3 ab..
bargraph()
Nach oben
function bargraph(byte len, byte maxlen)
Mit der Funktion bargraph() können Balken ausgegeben werden.
Es muß vor dem ersten Verwenden dieser Funktion die Funktion def_bargraph()
aufgerufen werden.
Die Maximale Balkenlänge bei 2x16 und 4x16 LCDs beträgt 80 und bei
2x20 und 4x20 100.
len | Länge des Bargraph 0 bis maxlen wenn größer als maxlen, wird maxlen ausgegeben |
maxlen | Maximallänge |
sonderzeichen
Nach oben
function def_sanduhr(byte ascii)
function def_arr_up(byte ascii)
function def_arr_down(byte ascii)
Mit diesen Funktion können die Sonderzeichen "Sanduhr", Pfeil nach
oben und
Pfeil nach unten erstellt und im RAM des Displays abgelegt werden.
Die jeweilige Funktion muß vor dem ersten Verwenden des Zeichens aufgerufen
werden.
ascii | ASCII-Code, den das Zeichen verwenden soll (0 - 7) |
Author: André Helbig Mail: andre.h@cc2net.de
Erstellt: 21.4.2003