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
Revision 16:4ccc2fa2cfec, committed 2012-12-12
- Comitter:
- ttodorov
- Date:
- Wed Dec 12 07:17:31 2012 +0000
- Parent:
- 15:af3cd35886fb
- Child:
- 17:866f2a851dd7
- Commit message:
- - added color depth code to SSD1289; - fixed HW rotation for SSD1289 for PORTRAIT and PORTRAIT_REV positions
Changed in this revision
| ssd1289.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/ssd1289.cpp Tue Dec 11 23:42:47 2012 +0000
+++ b/ssd1289.cpp Wed Dec 12 07:17:31 2012 +0000
@@ -63,8 +63,6 @@
wait_ms( 1 );
WriteCmdData( 0x1E, 0x00B7 ); // power control 5
wait_ms( 1 );
- WriteCmdData( 0x01, 0x2B3F ); // driver output control
- wait_ms( 1 );
WriteCmdData( 0x02, 0x0600 ); // driving waveform control
wait_ms( 1 );
WriteCmdData( 0x10, 0x0000 ); // sleep mode: 0 = exit, 1 = enter
@@ -74,17 +72,26 @@
switch ( _orientation )
{
case LANDSCAPE:
- WriteCmdData( 0x11, 0x6098 ); // entry mode
+ WriteCmdData( 0x01, 0x2B3F ); // driver output control // 0x293F 0x2B3F 0x2D3F 0x2F3F 0x693F 0x6B3F 0x6D3F 0x6F3F
+ wait_ms( 1 );
+ WriteCmdData( 0x11, 0x6030 ); // entry mode // 0x6040 0x6048 0x6050 0x6058 0x6060 0x6068
break;
+
case PORTRAIT_REV:
- WriteCmdData( 0x11, 0x6080 ); // entry mode
+ WriteCmdData( 0x01, 0x693F ); // driver output control
+ wait_ms( 1 );
+ WriteCmdData( 0x11, 0x6070 ); // entry mode
break;
+
case LANDSCAPE_REV:
WriteCmdData( 0x11, 0x60A8 ); // entry mode
break;
+
case PORTRAIT:
default:
- WriteCmdData( 0x11, 0x60B0 ); // entry mode
+ WriteCmdData( 0x01, 0x2B3F ); // driver output control
+ wait_ms( 1 );
+ WriteCmdData( 0x11, 0x6070 ); // entry mode
break;
}
}
@@ -93,17 +100,26 @@
switch ( _orientation )
{
case LANDSCAPE:
- WriteCmdData( 0x11, 0x4098 ); // entry mode
+ WriteCmdData( 0x01, 0x293F ); // driver output control // 0x293F 0x2B3F 0x2D3F 0x2F3F 0x693F 0x6B3F 0x6D3F 0x6F3F
+ wait_ms( 1 );
+ WriteCmdData( 0x11, 0x4048 ); // entry mode // 0x4040 0x4048 0x4050 0x4058 0x4060 0x4068
break;
+
case PORTRAIT_REV:
- WriteCmdData( 0x11, 0x4080 ); // entry mode
+ WriteCmdData( 0x01, 0x693F ); // driver output control
+ wait_ms( 1 );
+ WriteCmdData( 0x11, 0x4070 ); // entry mode
break;
+
case LANDSCAPE_REV:
- WriteCmdData( 0x11, 0x40A8 ); // entry mode
+ WriteCmdData( 0x11, 0x4068 ); // entry mode
break;
+
case PORTRAIT:
default:
- WriteCmdData( 0x11, 0x40B0 ); // entry mode
+ WriteCmdData( 0x01, 0x2B3F ); // driver output control
+ wait_ms( 1 );
+ WriteCmdData( 0x11, 0x4070 ); // entry mode
break;
}
}
@@ -215,15 +231,19 @@
void SSD1289_LCD::SetPixelColor( unsigned int color )
{
unsigned char r, g, b;
+ unsigned short clr;
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 ) );
+ clr = ( ( ( ( r ) & 0xF8 ) | ( ( g ) >> 5 ) ) << 8 ) | ( ( ( ( g ) & 0x1C ) << 3 ) | ( ( b ) >> 3 ) );
WriteData( clr );
}
else if ( _colorDepth == RGB18 )
{
+ clr = ( ( r & 0xFC ) << 8 ) | ( g & 0xFC );
+ WriteData( clr );
+ WriteData( b & 0xFC );
}
}
