Display text on LCD displays (even on multiple ones). Allow to create windows (frames) on display, and to combine them (split, add, duplicate, scroll). See http://mbed.org/users/hlipka/notebook/lcdwindow/ for more information.

Dependents:   Mbell

Revision:
1:65f72ed914fa
Parent:
0:ae5037e3d6e0
Child:
2:5ac5bab7daaf
--- a/ks0108_8bit.cpp	Mon Nov 15 22:37:30 2010 +0000
+++ b/ks0108_8bit.cpp	Tue Nov 16 20:49:18 2010 +0000
@@ -30,7 +30,7 @@
 
 #define ENABLE 1
 
-void KS0108LCD8bit::writeText(unsigned int line, unsigned int pos, char text[]) {
+void KS0108LCD8bit::writeText(const unsigned int line, const unsigned int pos, const char text[]) {
     printf("print to %d,%d {%s}\n",line,pos,text);
     int i=0;
     while (text[i]!=0) {
@@ -60,12 +60,13 @@
     }
 }
 
-void KS0108LCD8bit::setChar(unsigned int line, unsigned int pos, char c) {
+void KS0108LCD8bit::setChar(const unsigned int line, const unsigned int pos, const char c) {
     DigitalOut* cs=NULL;
-    if (pos>7)
+    int column=pos;
+    if (column>7)
     {
         cs=_right;
-        pos-=8;
+        column-=8;
     }
     else
     {
@@ -76,7 +77,7 @@
     
     sendCmd(0xb8|line,cs); // set x page    
 
-    unsigned int y=pos*8;
+    unsigned int y=column*8;
     sendCmd(0x40|y,cs); // set start line
     
     // send character data
@@ -88,7 +89,7 @@
 }
 
 KS0108LCD8bit::KS0108LCD8bit
-(unsigned int width, unsigned int height, BusOut *data, PinName enable, PinName rs, PinName leftCS, PinName rightCS)
+(const unsigned int width, const unsigned int height, BusOut *data, const PinName enable, const PinName rs, const PinName leftCS, const PinName rightCS)
         :TextLCDBase(width, height) {
     _data=data;
     _rs=new DigitalOut(rs);
@@ -122,21 +123,21 @@
     clear();
 }
 
-void KS0108LCD8bit::sendCmd(unsigned char cmd, DigitalOut *cs) {
+void KS0108LCD8bit::sendCmd(const unsigned char cmd, DigitalOut *cs) {
     _rs->write(0);
     wait_us(1);
     sendByte(cmd, cs);
     wait_us(10);
 }
 
-void KS0108LCD8bit::sendData(unsigned char cmd, DigitalOut *cs) {
+void KS0108LCD8bit::sendData(const unsigned char cmd, DigitalOut *cs) {
     _rs->write(1);
     wait_us(1);
     sendByte(cmd, cs);
     wait_us(10);
 }
 
-void KS0108LCD8bit::sendByte(unsigned char byte, DigitalOut *cs) {
+void KS0108LCD8bit::sendByte(const unsigned char byte, DigitalOut *cs) {
     // display reads flags with rising flank of E
 //    printf("send to %d\n",cs);
     _enable->write(0);