Gitakichi Tokyo / Mbed 2 deprecated ATM0177B3A

Dependencies:   mbed

Revision:
6:7abe5999dc1c
Parent:
5:570ba49da81c
Child:
7:eaaf60683ca4
--- a/ili9163lcd.cpp	Sat Jan 02 06:51:11 2021 +0000
+++ b/ili9163lcd.cpp	Sat Jan 02 07:29:21 2021 +0000
@@ -109,6 +109,65 @@
     CS_ = 1;
 }
 
+void lcdWriteData_burst(uint16_t *burst_data,uint16_t length)
+{  
+    uint8_t dataByte1,dataByte2;
+    uint8_t i;
+    uint16_t pixel;
+
+    CS_ = 0;
+    A0_ = 1;
+    for(pixel = 0;pixel < length;pixel++){
+        dataByte1 = *burst_data >> 8;
+        dataByte2 = *burst_data;
+        burst_data++;
+        
+        for(i=0;i<8;i++){
+            if(dataByte1 & 128)SDA_= 1; else SDA_ = 0;
+            SCK_ = 0;//TBD
+            dataByte1 <<= 1;
+            SCK_ = 1;//TBD
+        }
+        for(i=0;i<8;i++){
+            if(dataByte2 & 128)SDA_= 1; else SDA_ = 0;
+            SCK_ = 0;//TBD
+            dataByte2 <<= 1;
+            SCK_ = 1;//TBD
+        }
+    }
+    wait_us(1);
+    CS_ = 1;
+}
+
+void lcdWriteData_sameburst(uint16_t data,uint16_t length)
+{  
+    uint8_t dataByte1,dataByte2;
+    uint8_t i;
+    uint16_t pixel;
+
+    CS_ = 0;
+    A0_ = 1;
+    for(pixel = 0;pixel < length;pixel++){
+        dataByte1 = data >> 8;
+        dataByte2 = data;
+        
+        for(i=0;i<8;i++){
+            if(dataByte1 & 128)SDA_= 1; else SDA_ = 0;
+            SCK_ = 0;//TBD
+            dataByte1 <<= 1;
+            SCK_ = 1;//TBD
+        }
+        for(i=0;i<8;i++){
+            if(dataByte2 & 128)SDA_= 1; else SDA_ = 0;
+            SCK_ = 0;//TBD
+            dataByte2 <<= 1;
+            SCK_ = 1;//TBD
+        }
+    }
+    wait_us(1);
+    CS_ = 1;
+}
+
 // Initialise the display with the require screen orientation
 void lcdInitialise(uint8_t orientation)
 {   
@@ -214,10 +273,6 @@
 
 void lcdClearDisplay(uint16_t colour)
 {
-    uint16_t pixel;
-    uint8_t dataByte1, dataByte2;
-    uint8_t i;
-  
     // Set the column address to 0-127
     lcdWriteCommand(SET_COLUMN_ADDRESS);
     lcdWriteParameter(0x00);
@@ -237,35 +292,13 @@
     lcdWriteCommand(WRITE_MEMORY_START);
     //for(pixel = 0; pixel < 16385; pixel++) lcdWriteData(colour >> 8, colour);
     //for(pixel = 0; pixel < 20480; pixel++) lcdWriteData(colour >> 8, colour);
-    
-    CS_ = 0;
-    A0_ = 1;
-    for(pixel = 0; pixel < 20480; pixel++){
-        dataByte1 = colour >> 8;
-        dataByte2 = colour;
-        for(i=0;i<8;i++){
-            if(dataByte1 & 128)SDA_= 1; else SDA_ = 0;
-            SCK_ = 0;//TBD
-            dataByte1 <<= 1;
-            SCK_ = 1;//TBD
-        }
-        for(i=0;i<8;i++){
-            if(dataByte2 & 128)SDA_= 1; else SDA_ = 0;
-            SCK_ = 0;//TBD
-            dataByte2 <<= 1;
-            SCK_ = 1;//TBD
-        }
-    }
-    wait_us(1);
-    CS_ = 1;
+    lcdWriteData_sameburst(colour,20480);
 }
 
 void grade(void)
 {
     uint16_t line_buf[128];
-    uint16_t pixel,page;
-    uint8_t dataByte1, dataByte2;
-    uint8_t i;
+    uint8_t pixel;
   
     // Set the column address to 0-127
     lcdWriteCommand(SET_COLUMN_ADDRESS);
@@ -286,48 +319,19 @@
         if(pixel < 32)          line_buf[pixel] = decodeRgbValue((pixel&0b11111)>>1, 0, 0);
         else if(pixel < 64)     line_buf[pixel] = decodeRgbValue(0, (pixel&0b11111)>>1, 0);
         else if(pixel < 96)     line_buf[pixel] = decodeRgbValue(0, 0, (pixel&0b11111)>>1);
-        //if(pixel < 32)          line_buf[pixel] = decodeRgbValue(31, 0, 0);
-        //else if(pixel < 64)     line_buf[pixel] = decodeRgbValue(0, 31, 0);
-        //else if(pixel < 96)     line_buf[pixel] = decodeRgbValue(0, 0, 31);
         else                    line_buf[pixel] = decodeRgbValue(0, 0, 0);
     }
     // Plot the pixels
     lcdWriteCommand(WRITE_MEMORY_START);
-    //for(uint16_t page = 0;page < 160;page++){
-    //    for(pixel = 0; pixel < 128; pixel++){
-    //        lcdWriteData(line_buf[pixel] >> 8, line_buf[pixel]);
-    //    }
-    //}
-    
-    
-    CS_ = 0;
-    A0_ = 1;
-    for(page = 0;page < 160;page++){
-        for(pixel = 0; pixel < 128; pixel++){
-            dataByte1 = line_buf[pixel] >> 8;
-            dataByte2 = line_buf[pixel];
-            for(i=0;i<8;i++){
-                if(dataByte1 & 128)SDA_= 1; else SDA_ = 0;
-                SCK_ = 0;//TBD
-                dataByte1 <<= 1;
-                SCK_ = 1;//TBD
-            }
-            for(i=0;i<8;i++){
-                if(dataByte2 & 128)SDA_= 1; else SDA_ = 0;
-                SCK_ = 0;//TBD
-                dataByte2 <<= 1;
-                SCK_ = 1;//TBD
-            }
-        }
+    for(uint16_t page = 0;page < 160;page++){
+        lcdWriteData_burst(line_buf,128);
     }
-    wait_us(1);
-    CS_ = 1;
+    lcdWriteData_burst(line_buf,128);
     
 }
 
 void colorbar(void)
 {
-    uint16_t pixel;
     uint16_t colour;
   
     // Set the column address to 0-127
@@ -347,6 +351,8 @@
   
     // Plot the pixels
     lcdWriteCommand(WRITE_MEMORY_START);
+    CS_ = 0;
+    A0_ = 1;
     for(uint16_t page = 0;page < 160;page++){
         if(page < 28)       colour = decodeRgbValue(31, 31, 31);
         else if(page < 50)  colour = decodeRgbValue(31, 31, 0);
@@ -356,9 +362,7 @@
         else if(page < 138) colour = decodeRgbValue(31, 0, 0);
         else                colour = decodeRgbValue(0, 0, 31);
         
-        for(pixel = 0; pixel < 128; pixel++){
-            lcdWriteData(colour >> 8, colour);
-        }
+        lcdWriteData_sameburst(colour,128);
     }
 }