LPC1768 Mini-DK board with 2.8" SPI TFT and SPI touch

Dependencies:   Mini-DK mbed SDFileSystem

WARNING: filetoflash (SD to CPU flash)

The SPI_TFT library called from Mini-DK.lib contains an option to copy an image from the SD card to the CPU flash memory. This allows you to use an image as background without speed loss when writing other text and graphics.

By default, this option is enabled.

It can be disabled by uncommenting the #define mentioned below in Mini_DK.h:

#define NO_FLASH_BUFFER

Since the flash memory has limited write endurance, DO NOT use this feature when you intend to read multiple images from the SD card (eg: when used as a photo frame).

Revision:
10:d07f76421408
Parent:
9:3e117b89c705
Child:
13:a10300cac491
--- a/main.cpp	Fri Jan 04 14:08:03 2013 +0000
+++ b/main.cpp	Tue Jan 08 16:12:13 2013 +0000
@@ -1,7 +1,29 @@
+/*
+This file contains 3 examples:
+
+ONE   : Original example with paint demo.
+TWO   : Example for displaying a bitmap read from SD card.
+        Download the house.bmp bitmap file from http://mbed.org/media/uploads/frankvnk/house.bmp
+        Copy this file to the root of an SD card, insert it into the Mini-DK.
+THREE : Example for copying a bitmap from SD to flash memory, use it as background and
+        write text without disrupting the background image.
+        Download the house.bmp bitmap file from http://mbed.org/media/uploads/frankvnk/house.bmp
+        Copy this file to the root of an SD card, insert it into the Mini-DK.
+
+IMPORTANT:
+Enable #define USE_FLASH_BUFFER in SPI_TFT.h to allow copy to flash.
+If copy to flash option is not needed - disable it.
+
+UNCOMMENT THE DESIRED CODE TO TEST.
+
+*/
+
+// =========================================================================================================
+// ================================================== ONE ==================================================
+// =========================================================================================================
 #include "stdio.h"
 #include "mbed.h"
 #include "Mini_DK.h"
-//#include "string"
 
 extern unsigned char p1[];  // the mbed logo
 #define RGB565CONVERT(red, green, blue) (uint16_t)( (( red   >> 3 ) << 11 ) | (( green >> 2 ) << 5  ) | ( blue  >> 3 ))
@@ -27,20 +49,20 @@
     TFT.set_font((unsigned char*) Arial12x12);
     TFT.set_orientation(0);
     TFT.locate(0,0);
-    TFT.printf("  Hello Mbed 0");
+    printf("  Hello Mbed 0");
     TFT.set_orientation(1);
     TFT.locate(0,0);
-    TFT.printf("  Hello Mbed 1");
+    printf("  Hello Mbed 1");
     TFT.set_orientation(2);
     TFT.locate(0,0);
-    TFT.printf("  Hello Mbed 2");
+    printf("  Hello Mbed 2");
     TFT.set_orientation(3);
     TFT.locate(0,0);
-    TFT.printf("  Hello Mbed 3");
+    printf("  Hello Mbed 3");
     TFT.set_orientation(1);
     TFT.set_font((unsigned char*) Arial24x23);
     TFT.locate(50,100);
-    TFT.printf("TFT orientation");
+    printf("TFT orientation");
 
     wait(2);
 
@@ -49,7 +71,7 @@
     TFT.set_orientation(1);
     TFT.set_font((unsigned char*) Arial24x23);
     TFT.locate(120,115);
-    TFT.printf("Graphic");
+    printf("Graphic");
     TFT.line(0,0,100,200,Green);
     TFT.rect(100,50,50,50,Red);
     TFT.fillrect(180,25,40,45,Blue);
@@ -68,22 +90,22 @@
     TFT.cls();
     TFT.set_font((unsigned char*) Arial24x23);
     TFT.locate(0,0);
-    TFT.printf("Different Fonts :");
+    printf("Different Fonts :");
 
     TFT.set_font((unsigned char*) Neu42x35);
     TFT.locate(0,50);
-    TFT.printf("Hello");
+    printf("Hello");
     TFT.set_font((unsigned char*) Arial24x23);
     TFT.locate(50,100);
-    TFT.printf("Hello");
+    printf("Hello");
     TFT.set_font((unsigned char*) Arial12x12);
     TFT.locate(55,150);
-    TFT.printf("Hello");
+    printf("Hello");
 
     TFT.set_orientation(2);
     TFT.set_font((unsigned char*) Arial24x23);
     TFT.locate(10,10);
-    TFT.printf("Hi mbed");
+    printf("Hi mbed");
     wait(2);
 
     // mbed logo
@@ -96,7 +118,7 @@
     TFT.set_orientation(0);
     LCD_id = TFT.Read_ID();
     TFT.locate(10,10);
-    TFT.printf("LCD: ILI%04X", LCD_id);
+    printf("LCD: ILI%04X", LCD_id);
     wait(2);
 
     // RGB color wheel demo (cycle through all colors)
@@ -104,7 +126,7 @@
     TFT.foreground(Yellow);    // set chars to yellow
     TFT.set_font((unsigned char*) Arial12x12);
     TFT.locate(10,10);
-    TFT.printf("RGB color wheel (2x)");
+    printf("RGB color wheel (2x)");
 
     uint8_t r = 255, g = 0,  b = 0, step = 1, i;
     for (i=0;i<2;i++)
@@ -118,15 +140,14 @@
     }
     wait(2);
 
-
     // Touchpanel demo
     TP.TouchPanel_Calibrate();
     TFT.set_font((unsigned char*) Arial12x12);
     TFT.set_orientation(0);
     TFT.locate(0,0);
-    TFT.printf(" X:");
+    printf(" X:");
     TFT.locate(70,0);
-    TFT.printf(" Y:");
+    printf(" Y:");
     while (1)
     {
         if (!TP._tp_irq)
@@ -136,20 +157,134 @@
                 TP.getDisplayPoint() ;
                 TP.TP_DrawPoint(TP.display.x,TP.display.y, Blue);
                 TFT.locate(25,0);
-                TFT.printf("%03d",TP.display.x);
+                printf("%03d",TP.display.x);
                 TFT.locate(95,0);
-                TFT.printf("%03d",TP.display.y);
+                printf("%03d",TP.display.y);
                 // Touchscreen area is larger than LCD area.
                 // We use the bottom area outside the LCD area to clear the screen (y value > 320).
                 if (TP.display.y > 320)
                 {
                     TFT.cls();
                     TFT.locate(0,0);
-                    TFT.printf(" X:");
+                    printf(" X:");
                     TFT.locate(70,0);
-                    TFT.printf(" Y:");
+                    printf(" Y:");
                 }
             }
         }
     }
 }
+
+/*
+// =========================================================================================================
+// ================================================== TWO ==================================================
+// =========================================================================================================
+
+#include "stdio.h"
+#include "mbed.h"
+#include "SDFileSystem.h"
+#include "Mini_DK.h"
+
+// SD card
+SDFileSystem sd(SD_SDI, SD_SDO, SD_SCK, SD_CS, "sd");
+// TFT -> mosi, miso, sclk, cs
+SPI_TFT TFT(LCD_SDI, LCD_SDO, LCD_SCK, LCD_CS,"TFT");
+// ADS7843 -> mosi, miso, sclk, cs, irq, SPI_TFT
+TouchScreenADS7843 TP(TP_SDI ,TP_SDO ,TP_SCK ,TP_CS ,TP_IRQ, &TFT);
+
+int main()
+{
+    TFT.background(Black);    // set background to black
+    TFT.foreground(White);    // set chars to white
+
+    TFT.claim(stdout);        // send stdout to the TFT display
+    TFT.cls();
+    TFT.set_font((unsigned char*) Arial12x12);
+    TFT.set_orientation(1);
+
+    DISABLE_LCD_MISO;
+    int dummy = TFT.Bitmap(0,0,"/sd/house.bmp");
+    ENABLE_LCD_MISO;
+    TFT.locate(0,0);
+    printf("%02d",dummy); 
+}
+*/
+
+/*
+// =========================================================================================================
+// ================================================= THREE =================================================
+// =========================================================================================================
+
+#include "stdio.h"
+#include "mbed.h"
+#include "SDFileSystem.h"
+#include "Mini_DK.h"
+ 
+// SD card
+SDFileSystem sd(SD_SDI, SD_SDO, SD_SCK, SD_CS, "sd");
+// TFT -> mosi, miso, sclk, cs
+SPI_TFT TFT(LCD_SDI, LCD_SDO, LCD_SCK, LCD_CS,"TFT");
+// ADS7843 -> mosi, miso, sclk, cs, irq, SPI_TFT
+TouchScreenADS7843 TP(TP_SDI ,TP_SDO ,TP_SCK ,TP_CS ,TP_IRQ, &TFT);
+
+
+Timer timer;
+ 
+int main()
+{
+    DISABLE_LCD_MISO;
+    TFT.background(Black);    // set background to black
+    TFT.foreground(White);    // set chars to white
+ 
+    TFT.claim(stdout);        // send stdout to the TFT display
+    TFT.cls();
+    TFT.set_font((unsigned char*) Arial12x12);
+    TFT.set_orientation(1);
+    
+    TFT.locate(0,200);
+    printf("Loading from SD...");
+    TFT.Bitmap(0,0,"/sd/house.bmp");
+    
+    TFT.locate(0,0);
+    printf("Copying to flash...");
+    TFT.fileToFlash("/sd/house.bmp");
+    TFT.locate(0,40);
+    printf("Done: CLS in 2 seconds");
+    wait(2);
+    TFT.backgroundImage(false);
+    TFT.cls();
+    wait(2);
+    TFT.backgroundImage(true);
+   
+    
+    timer.reset();
+    timer.start();
+    TFT.cls();
+    timer.stop();
+    TFT.foreground(Black);
+    TFT.locate(0,200);
+    printf("Wrote background in %d ms",timer.read_ms());
+    TFT.foreground(Black);
+
+    TFT.set_orientation(3);
+    TFT.locate(0,200);
+    printf("Wrote background in %d ms",timer.read_ms());
+
+    wait(5);
+    TFT.cls();
+    TFT.set_font((unsigned char*) Neu42x35);
+    TFT.locate(0,50);
+    printf("Orient = 3");
+    TFT.set_orientation(0);
+    TFT.locate(0,50);
+    printf("Orient = 0");
+    wait(5);
+
+    TFT.set_orientation(0);
+    TFT.cls();
+    TFT.locate(0,50);
+    printf("Orient = 0");
+    
+    while(1);
+}
+*/
\ No newline at end of file