Fork of TFTLCD with new support for SSD1963 ad HX8352-A controller.

Dependents:   TFTLCD_Fork_Test

Fork of TFTLCD by Todor Todorov

Revision:
12:d0978272a340
Parent:
10:69571adcfad5
Child:
14:8efbe7361dae
--- a/st7735.cpp	Tue Dec 11 16:50:09 2012 +0000
+++ b/st7735.cpp	Tue Dec 11 18:11:14 2012 +0000
@@ -29,9 +29,10 @@
     else _lcd_pin_bl = 0;
 }
 
-void ST7735_LCD::Initialize( orientation_t orientation )
+void ST7735_LCD::Initialize( orientation_t orientation, colordepth_t colors )
 {
     _orientation = orientation;
+    _colorDepth = colors;
     
     wait_ms( 100 );
     _lcd_pin_reset = HIGH;
@@ -148,8 +149,8 @@
     WriteCmd( 0xF6 ); // disable ram power save mode
     WriteByteData( 0x00 );
 
-    WriteCmd( 0x3A ); // interface pixel format (color mode)
-    WriteByteData( 0x05 ); // 65k mode
+    WriteCmd( 0x3A ); // interface pixel format (color mode): 0x05 => RGB16, 0x06 => RGB18
+    WriteByteData( _colorDepth == RGB16 ? 0x05 : 0x06 );
     WriteCmd( 0x29 ); // display on
 
     Deactivate();
@@ -216,9 +217,23 @@
     WriteCmd( 0x2c );
 }
 
-void ST7735_LCD::SetPixelColor( unsigned short color )
+void ST7735_LCD::SetPixelColor( unsigned int color )
 {
-    WriteData( color );
+    unsigned char r, g, b;
+    r = ( color >> 16 ) & 0xFF;
+    g = ( color >> 8 ) & 0xFF;
+    b = color & 0xFF;
+    if ( _colorDepth == RGB16 )
+    {
+        unsigned short clr = ( ( ( ( r ) & 0xF8 ) | ( ( g ) >> 5 ) ) << 8 ) | ( ( ( ( g ) & 0x1C ) << 3 ) | ( ( b ) >> 3 ) );
+        WriteData( clr );
+    }
+    else
+    {
+        WriteByteData( r & 0xFC );
+        WriteByteData( g & 0xFC );
+        WriteByteData( b & 0xFC );
+    }
 }
 
 void ST7735_LCD::serializeByte( unsigned char data )