Code to run the cheap 2.4" TFT made by mcufriend.com on the STM nucleo. No modifications required, this plugs into the arduino header.

Dependents:   ST7735_V2_STM32F407

Fork of TFTLCD_8bit by Thiha Electronics

Revision:
20:4bdca8d8dadc
Parent:
13:5ceeba86bbe4
Child:
21:e5c1e8ffada1
--- a/lcd_base.cpp	Thu Dec 13 03:37:22 2012 +0000
+++ b/lcd_base.cpp	Fri Dec 21 06:05:15 2012 +0000
@@ -333,43 +333,18 @@
     if ( scale == 1 )
     {
         SetXY( x, y, x + img->Width - 1, y + img->Height - 1 );
-        
+
         if ( img->Format == RGB16 )
         {
             const unsigned short *pixel = ( const unsigned short* ) img->PixelData;
-            if ( _colorDepth == RGB16 )
-                for ( tc = 0; tc < ( img->Width * img->Height ); tc++ )
-                    WriteData( *pixel++ );
-            else if ( _colorDepth == RGB18 )
-            {
-                unsigned short r, g, b;
-                for ( tc = 0; tc < ( img->Width * img->Height ); tc++ )
-                {
-                    r = ( *pixel & 0xF800 ) >> 8;
-                    g = ( *pixel & 0x07E0 ) >> 3;
-                    b = ( *pixel & 0x001F ) << 3;
-                    pixel++;
-                    SetPixelColor( RGB( r, g, b ) );
-                }
-            }
+            for ( tc = 0; tc < ( img->Width * img->Height ); tc++ )
+                SetPixelColor( *pixel++, img->Format );
         }
         else if ( img->Format == RGB18 )
         {
             const unsigned int *pixel = ( const unsigned int* ) img->PixelData;
-            if ( _colorDepth == RGB16 )
-            {
-                unsigned short r, g, b;
-                for ( tc = 0; tc < ( img->Width * img->Height ); tc++ )
-                {
-                    r = ( *pixel >> 16 ) & 0xF8;
-                    g = ( *pixel >> 8 ) & 0xFC;
-                    b = ( *pixel++ & 0xF8 ) >> 3;
-                    WriteData( ( r << 8 ) | ( g >> 5 ) | ( g << 3 ) | b );
-                }
-            }
-            else if ( _colorDepth == RGB18 )
-                for ( tc = 0; tc < ( img->Width * img->Height ); tc++ )
-                    SetPixelColor( *pixel++ );
+            for ( tc = 0; tc < ( img->Width * img->Height ); tc++ )
+                SetPixelColor( *pixel++, img->Format );
         }
     }
     else
@@ -377,35 +352,6 @@
         if ( img->Format == RGB16 )
         {
             const unsigned short *pixel = ( const unsigned short* ) img->PixelData;
-            unsigned short r, g, b;
-                            
-            for ( ty = 0; ty < img->Height; ty++ )
-            {
-                SetXY( x, y + ( ty * scale ), x + ( ( img->Width * scale ) - 1 ), y + ( ty * scale ) + scale );
-                for ( tsy = 0; tsy < scale; tsy++ )
-                {
-                    for ( tx = 0; tx < img->Width; tx++ )
-                    {
-                        for ( tsx = 0; tsx < scale; tsx++ )
-                        {
-                            if ( _colorDepth == RGB16 )
-                                WriteData( pixel[ ( ty * img->Width ) + tx ] );
-                            else if ( _colorDepth == RGB18 )
-                            {
-                                r = ( pixel[ ( ty * img->Width ) + tx ] & 0xF800 ) >> 8;
-                                g = ( pixel[ ( ty * img->Width ) + tx ] & 0x07E0 ) >> 3;
-                                b = ( pixel[ ( ty * img->Width ) + tx ] & 0x001F ) << 3;
-                                SetPixelColor( RGB( r, g, b ) );
-                            }
-                        }
-                    }
-                }
-            }
-        }
-        else if ( img->Format == RGB18 )
-        {
-            const unsigned int *pixel = ( const unsigned int* ) img->PixelData;
-            unsigned short r, g, b;
             
             for ( ty = 0; ty < img->Height; ty++ )
             {
@@ -415,17 +361,24 @@
                     for ( tx = 0; tx < img->Width; tx++ )
                     {
                         for ( tsx = 0; tsx < scale; tsx++ )
-                        {
-                            if ( _colorDepth == RGB16 )
-                            {                                
-                                r = ( pixel[ ( ty * img->Width ) + tx ] >> 16 ) & 0xF8;
-                                g = ( pixel[ ( ty * img->Width ) + tx ] >> 8 ) & 0xFC;
-                                b = ( pixel[ ( ty * img->Width ) + tx ] & 0xF8 ) >> 3;
-                                WriteData( ( r << 8 ) | ( g >> 5 ) | ( g << 3 ) | b );
-                            }
-                            else if ( _colorDepth == RGB18 )
-                                SetPixelColor( pixel[ ( ty * img->Width ) + tx ] );
-                        }
+                            SetPixelColor( pixel[ ( ty * img->Width ) + tx ], img->Format );
+                    }
+                }
+            }
+        }
+        else if ( img->Format == RGB18 )
+        {
+            const unsigned int *pixel = ( const unsigned int* ) img->PixelData;
+            
+            for ( ty = 0; ty < img->Height; ty++ )
+            {
+                SetXY( x, y + ( ty * scale ), x + ( ( img->Width * scale ) - 1 ), y + ( ty * scale ) + scale );
+                for ( tsy = 0; tsy < scale; tsy++ )
+                {
+                    for ( tx = 0; tx < img->Width; tx++ )
+                    {
+                        for ( tsx = 0; tsx < scale; tsx++ )
+                            SetPixelColor( pixel[ ( ty * img->Width ) + tx ], img->Format );
                     }
                 }
             }
@@ -449,7 +402,6 @@
         if ( img->Format == RGB16 )
         {
             const unsigned short *pixel = ( const unsigned short* ) img->PixelData;
-            unsigned short r, g, b;
             
             for ( ty = 0; ty < img->Height; ty++ )
                 for ( tx = 0; tx < img->Width; tx++ )
@@ -458,21 +410,12 @@
                     newy = y + roy + ( ( ( ty - roy ) * cos( radian ) ) + ( ( tx - rox ) * sin( radian ) ) );
     
                     SetXY( newx, newy, newx, newy );
-                    if ( _colorDepth == RGB16 )
-                        WriteData( pixel[ ( ty * img->Width ) + tx ] );
-                    else if ( _colorDepth == RGB18 )
-                    {
-                        r = ( pixel[ ( ty * img->Width ) + tx ] & 0xF800 ) >> 8;
-                        g = ( pixel[ ( ty * img->Width ) + tx ] & 0x07E0 ) >> 3;
-                        b = ( pixel[ ( ty * img->Width ) + tx ] & 0x001F ) << 3;
-                        SetPixelColor( RGB( r, g, b ) );
-                    }
+                    SetPixelColor( pixel[ ( ty * img->Width ) + tx ], img->Format );
                 }
         }
         else if ( img->Format == RGB18 )
         {
             const unsigned int *pixel = ( const unsigned int* ) img->PixelData;
-            unsigned short r, g, b;
             
             for ( ty = 0; ty < img->Height; ty++ )
                 for ( tx = 0; tx < img->Width; tx++ )
@@ -481,15 +424,7 @@
                     newy = y + roy + ( ( ( ty - roy ) * cos( radian ) ) + ( ( tx - rox ) * sin( radian ) ) );
     
                     SetXY( newx, newy, newx, newy );
-                    if ( _colorDepth == RGB16 )
-                    {
-                        r = ( pixel[ ( ty * img->Width ) + tx ] >> 16 ) & 0xF8;
-                        g = ( pixel[ ( ty * img->Width ) + tx ] >> 8 ) & 0xFC;
-                        b = ( pixel[ ( ty * img->Width ) + tx ] & 0xF8 ) >> 3;
-                        WriteData( ( r << 8 ) | ( g >> 5 ) | ( g << 3 ) | b );
-                    }
-                    else if ( _colorDepth == RGB18 )
-                        SetPixelColor( pixel[ ( ty * img->Width ) + tx ] );
+                    SetPixelColor( pixel[ ( ty * img->Width ) + tx ], img->Format );
                 }
         }
         Deactivate();