Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of TFTLCD by
Diff: st7735.cpp
- Revision:
- 20:4bdca8d8dadc
- Parent:
- 15:af3cd35886fb
- Child:
- 22:4c169297f374
diff -r eb27effb8c07 -r 4bdca8d8dadc st7735.cpp
--- a/st7735.cpp Thu Dec 13 03:37:22 2012 +0000
+++ b/st7735.cpp Fri Dec 21 06:05:15 2012 +0000
@@ -162,9 +162,9 @@
WriteCmd( 0x36 ); //MX, MY, RGB mode
switch ( _orientation )
{
- case LANDSCAPE: WriteByteData( 0xB8 ); break;
+ case LANDSCAPE: WriteByteData( 0x6C ); break;
case PORTRAIT_REV: WriteByteData( 0xDC ); break;
- case LANDSCAPE_REV: WriteByteData( 0x6C ); break;
+ case LANDSCAPE_REV: WriteByteData( 0xB8 ); break;
case PORTRAIT:
default: WriteByteData( 0x08 ); break;
}
@@ -217,7 +217,7 @@
serializeByte( data );
}
-void ST7735_LCD::SetXY( uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2 )
+void ST7735_LCD::SetXY( unsigned short x1, unsigned short y1, unsigned short x2, unsigned short y2 )
{
WriteCmdData( 0x2a, x1 );
WriteData( x2 );
@@ -226,22 +226,56 @@
WriteCmd( 0x2c );
}
-void ST7735_LCD::SetPixelColor( unsigned int color )
+void ST7735_LCD::SetPixelColor( unsigned int color, colordepth_t mode )
{
- unsigned char r, g, b;
- r = ( color >> 16 ) & 0xFF;
- g = ( color >> 8 ) & 0xFF;
- b = color & 0xFF;
+ unsigned char r = 0, g = 0, b = 0;
+ unsigned short clr;
if ( _colorDepth == RGB16 )
{
- unsigned short clr = ( ( ( ( r ) & 0xF8 ) | ( ( g ) >> 5 ) ) << 8 ) | ( ( ( ( g ) & 0x1C ) << 3 ) | ( ( b ) >> 3 ) );
- WriteData( clr );
+ switch ( mode )
+ {
+ case RGB16:
+ WriteData( color & 0xFFFF );
+ break;
+ case RGB18:
+ r = ( color >> 10 ) & 0xF8;
+ g = ( color >> 4 ) & 0xFC;
+ b = ( color >> 1 ) & 0x1F;
+ clr = ( ( r | ( g >> 5 ) ) << 8 ) | ( ( g << 3 ) | b );
+ WriteData( clr );
+ break;
+ case RGB24:
+ r = ( color >> 16 ) & 0xF8;
+ g = ( color >> 8 ) & 0xFC;
+ b = color & 0xF8;
+ clr = ( ( r | ( g >> 5 ) ) << 8 ) | ( ( g << 3 ) | ( b >> 3 ) );
+ WriteData( clr );
+ break;
+ }
}
else if ( _colorDepth == RGB18 )
{
- WriteByteData( r & 0xFC );
- WriteByteData( g & 0xFC );
- WriteByteData( b & 0xFC );
+ switch ( mode )
+ {
+ case RGB16:
+ r = ( ( color >> 8 ) & 0xF8 ) | ( ( color & 0x8000 ) >> 13 );
+ g = ( color >> 3 ) & 0xFC;
+ b = ( ( color << 3 ) & 0xFC ) | ( ( color >> 3 ) & 0x01 );
+ break;
+ case RGB18:
+ b = ( color << 2 ) & 0xFC;
+ g = ( color >> 4 ) & 0xFC;
+ r = ( color >> 10 ) & 0xFC;
+ break;
+ case RGB24:
+ r = ( color >> 16 ) & 0xFC;
+ g = ( color >> 8 ) & 0xFC;
+ b = color & 0xFC;
+ break;
+ }
+ WriteByteData( r );
+ WriteByteData( g );
+ WriteByteData( b );
}
}
