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 18:b934d95cc380, committed 2012-12-13
- Comitter:
- ttodorov
- Date:
- Thu Dec 13 02:41:56 2012 +0000
- Parent:
- 17:866f2a851dd7
- Child:
- 19:eb27effb8c07
- Commit message:
- - fix LANDSCAPE and LANDSCAPE_REV modes for the SSD1289 driver
Changed in this revision
| ssd1289.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/ssd1289.cpp Wed Dec 12 18:08:41 2012 +0000
+++ b/ssd1289.cpp Thu Dec 13 02:41:56 2012 +0000
@@ -71,10 +71,10 @@
{
switch ( _orientation )
{
- case LANDSCAPE: // uder test
- WriteCmdData( 0x01, 0x2B3F ); // driver output control // 0x293F 0x2B3F 0x2D3F 0x2F3F 0x693F 0x6B3F 0x6D3F 0x6F3F
+ case LANDSCAPE: // works
+ WriteCmdData( 0x01, 0x293F ); // driver output control
wait_ms( 1 );
- WriteCmdData( 0x11, 0x6068 ); // entry mode // 0x6040 0x6048 0x6050 0x6058 0x6060 0x6068
+ WriteCmdData( 0x11, 0x6078 ); // entry mode
break;
case PORTRAIT_REV: // works
@@ -83,8 +83,10 @@
WriteCmdData( 0x11, 0x6070 ); // entry mode
break;
- case LANDSCAPE_REV: // uder test
- WriteCmdData( 0x11, 0x6068 ); // entry mode
+ case LANDSCAPE_REV: // works
+ WriteCmdData( 0x01, 0x6B3F ); // driver output control
+ wait_ms( 1 );
+ WriteCmdData( 0x11, 0x6078 ); // entry mode
break;
case PORTRAIT: // works
@@ -99,10 +101,10 @@
{
switch ( _orientation )
{
- case LANDSCAPE: // uder test
- WriteCmdData( 0x01, 0x293F ); // driver output control // 0x293F 0x2B3F 0x2D3F 0x2F3F 0x693F 0x6B3F 0x6D3F 0x6F3F
+ case LANDSCAPE: // works
+ WriteCmdData( 0x01, 0x293F ); // driver output control
wait_ms( 1 );
- WriteCmdData( 0x11, 0x4068 ); // entry mode // 0x4040 0x4048 0x4050 0x4058 0x4060 0x4068
+ WriteCmdData( 0x11, 0x4078 ); // entry mode
break;
case PORTRAIT_REV: // works
@@ -111,8 +113,10 @@
WriteCmdData( 0x11, 0x4070 ); // entry mode
break;
- case LANDSCAPE_REV: // uder test
- WriteCmdData( 0x11, 0x4068 ); // entry mode
+ case LANDSCAPE_REV: // works
+ WriteCmdData( 0x01, 0x6B3F ); // driver output control
+ wait_ms( 1 );
+ WriteCmdData( 0x11, 0x4078 ); // entry mode
break;
case PORTRAIT: // works
@@ -192,14 +196,14 @@
void SSD1289_LCD::Sleep( void )
{
- // TODO: figure out if the SSD1289 controller has sleep and wakeup commands
+ WriteCmdData( 0x10, 0x0001 ); // sleep mode: 0 = exit, 1 = enter
if ( _lcd_pin_bl != 0 )
*_lcd_pin_bl = LOW;
}
void SSD1289_LCD::WakeUp( void )
{
- // TODO: figure out if the SSD1289 controller has sleep and wakeup commands
+ WriteCmdData( 0x10, 0x0000 ); // sleep mode: 0 = exit, 1 = enter
if ( _lcd_pin_bl != 0 )
*_lcd_pin_bl = HIGH;
}
@@ -220,11 +224,22 @@
void SSD1289_LCD::SetXY( uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2 )
{
- WriteCmdData( 0x44, ( x2 << 8 ) + x1 );
- WriteCmdData( 0x45, y1 );
- WriteCmdData( 0x46, y2 );
- WriteCmdData( 0x4e, x1 );
- WriteCmdData( 0x4f, y1 );
+ if ( _orientation == PORTRAIT || _orientation == PORTRAIT_REV )
+ {
+ WriteCmdData( 0x44, ( x2 << 8 ) + x1 );
+ WriteCmdData( 0x45, y1 );
+ WriteCmdData( 0x46, y2 );
+ WriteCmdData( 0x4e, x1 );
+ WriteCmdData( 0x4f, y1 );
+ }
+ else
+ {
+ WriteCmdData( 0x44, ( y2 << 8 ) + y1 );
+ WriteCmdData( 0x45, x1 );
+ WriteCmdData( 0x46, x2 );
+ WriteCmdData( 0x4e, y1 );
+ WriteCmdData( 0x4f, x1 );
+ }
WriteCmd( 0x22 );
}
