corrections for 130x132 display

Dependents:   PORGFINAL SpaceInvadersFINAL

Fork of NokiaLCD by Simon Ford

Revision:
3:65a915f69fa2
Parent:
1:8f005b0dcfa7
--- a/NokiaLCD.cpp	Fri Nov 19 22:12:28 2010 +0000
+++ b/NokiaLCD.cpp	Tue Mar 05 20:29:31 2013 +0000
@@ -9,7 +9,7 @@
 #define NOKIALCD_ROWS 16
 #define NOKIALCD_COLS 16
 #define NOKIALCD_WIDTH 130
-#define NOKIALCD_HEIGHT 130
+#define NOKIALCD_HEIGHT 132
 #define NOKIALCD_FREQUENCY 5000000
 
 NokiaLCD::NokiaLCD(PinName mosi, PinName sclk, PinName cs, PinName rst, LCDType type)
@@ -67,7 +67,7 @@
         case LCD6610:
             command(0xCA);    // display control
             data(0);
-            data(31);
+            data(32);
             data(0);
             command(0xBB);
             data(1);
@@ -115,7 +115,7 @@
 }
 
 void NokiaLCD::_window(int x, int y, int width, int height) {
-    int x1 = x + 2;
+    int x1=x+0;
     int y1 = y + 0;
     int x2 = x1 + width - 1;
     int y2 = y1 + height - 1;
@@ -302,10 +302,31 @@
     _cs = 1;
 }
 
+
 void NokiaLCD::pixel(int x, int y, int colour) {
     _cs = 0;
     _window(x, y, 1, 1);
-    _putp(colour);
+     switch (_type) {
+        case LCD6100:
+        case PCF8833:
+           
+                _putp(colour);
+            
+            break;
+        case LCD6610:
+           
+                int r4 = (colour >> (16 + 4)) & 0xF;
+                int g4 = (colour >> (8 + 4)) & 0xF;
+                int b4 = (colour >> (0 + 4)) & 0xF;
+                int d1 = (r4 << 4) | g4;
+                int d2 = (b4 << 4) | r4;
+                int d3 = (g4 << 4) | b4;
+                data(d1); 
+                data(d2);   
+                data(d3);
+            
+            break;
+            }
     _cs = 1;
 }
 
@@ -322,14 +343,14 @@
         case LCD6610:
             for (int i=0; i<width*height/2; i++) {
                 int r4 = (colour >> (16 + 4)) & 0xF;
-    	        int g4 = (colour >> (8 + 4)) & 0xF;
+                int g4 = (colour >> (8 + 4)) & 0xF;
                 int b4 = (colour >> (0 + 4)) & 0xF;
-        	    int d1 = (r4 << 4) | g4;
+                int d1 = (r4 << 4) | g4;
                 int d2 = (b4 << 4) | r4;
                 int d3 = (g4 << 4) | b4;
                 data(d1); 
-    	        data(d2);   
-    	        data(d3);
+                data(d2);   
+                data(d3);
             }
             break;
     }
@@ -350,19 +371,19 @@
              break;
         case LCD6610:
             for (int i=0; i<width*height/2; i++) {
-        	    int r41 = (colour[i*2] >> (16 + 4)) & 0xF;
-        	    int g41 = (colour[i*2] >> (8 + 4)) & 0xF;
-        	    int b41 = (colour[i*2] >> (0 + 4)) & 0xF;
-    	   
+                int r41 = (colour[i*2] >> (16 + 4)) & 0xF;
+                int g41 = (colour[i*2] >> (8 + 4)) & 0xF;
+                int b41 = (colour[i*2] >> (0 + 4)) & 0xF;
+           
                 int r42 = (colour[i*2+1] >> (16 + 4)) & 0xF;
-        	    int g42 = (colour[i*2+1] >> (8 + 4)) & 0xF;
-        	    int b42 = (colour[i*2+1] >> (0 + 4)) & 0xF;   
-        	    int d1 = (r41 << 4) | g41;
-        	    int d2 = (b41 << 4) | r42;
-        	    int d3 = (g42 << 4) | b42;               
-       	        data(d1); 
-    	        data(d2); 
-    	        data(d3); 
+                int g42 = (colour[i*2+1] >> (8 + 4)) & 0xF;
+                int b42 = (colour[i*2+1] >> (0 + 4)) & 0xF;   
+                int d1 = (r41 << 4) | g41;
+                int d2 = (b41 << 4) | r42;
+                int d3 = (g42 << 4) | b42;               
+                   data(d1); 
+                data(d2); 
+                data(d3); 
             }
             break;
      }            
@@ -388,24 +409,24 @@
             for(int i=0; i<height*width/2; i++) {
                 int byte1 = (i*2) / 8;
                 int bit1 = (i*2) % 8;   
-        	    int colour1 = ((bitstream[byte1] << bit1) & 0x80) ? _foreground : _background;
-        	    int byte2 = (i*2+1) / 8;
+                int colour1 = ((bitstream[byte1] << bit1) & 0x80) ? _foreground : _background;
+                int byte2 = (i*2+1) / 8;
                 int bit2 = (i*2+1) % 8;   
                 int colour2 = ((bitstream[byte2] << bit2) & 0x80) ? _foreground : _background;
-	
-        	    int r41 = (colour1 >> (16 + 4)) & 0xF;
-        	    int g41 = (colour1 >> (8 + 4)) & 0xF;
-        	    int b41 = (colour1 >> (0 + 4)) & 0xF;
-    	   
+    
+                int r41 = (colour1 >> (16 + 4)) & 0xF;
+                int g41 = (colour1 >> (8 + 4)) & 0xF;
+                int b41 = (colour1 >> (0 + 4)) & 0xF;
+           
                 int r42 = (colour2 >> (16 + 4)) & 0xF;
-        	    int g42 = (colour2 >> (8 + 4)) & 0xF;
-        	    int b42 = (colour2 >> (0 + 4)) & 0xF;   
-        	    int d1 = (r41 << 4) | g41;
-        	    int d2 = (b41 << 4) | r42;
-        	    int d3 = (g42 << 4) | b42;               
-       	        data(d1); 
-    	        data(d2); 
-    	        data(d3); 
+                int g42 = (colour2 >> (8 + 4)) & 0xF;
+                int b42 = (colour2 >> (0 + 4)) & 0xF;   
+                int d1 = (r41 << 4) | g41;
+                int d2 = (b41 << 4) | r42;
+                int d3 = (g42 << 4) | b42;               
+                   data(d1); 
+                data(d2); 
+                data(d3); 
             }
             break;
      }