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).

Committer:
frankvnk
Date:
Tue Mar 18 19:30:28 2014 +0000
Revision:
15:5059751d2fa2
Parent:
13:a10300cac491
Child:
16:784a071dec0e
New ILI9320 library.\\
; Added \\

Who changed what in which revision?

UserRevisionLine numberNew contents of line
frankvnk 10:d07f76421408 1 /*
frankvnk 10:d07f76421408 2 This file contains 3 examples:
frankvnk 10:d07f76421408 3
frankvnk 10:d07f76421408 4 ONE : Original example with paint demo.
frankvnk 10:d07f76421408 5 TWO : Example for displaying a bitmap read from SD card.
frankvnk 10:d07f76421408 6 Download the house.bmp bitmap file from http://mbed.org/media/uploads/frankvnk/house.bmp
frankvnk 10:d07f76421408 7 Copy this file to the root of an SD card, insert it into the Mini-DK.
frankvnk 10:d07f76421408 8 THREE : Example for copying a bitmap from SD to flash memory, use it as background and
frankvnk 10:d07f76421408 9 write text without disrupting the background image.
frankvnk 10:d07f76421408 10 Download the house.bmp bitmap file from http://mbed.org/media/uploads/frankvnk/house.bmp
frankvnk 10:d07f76421408 11 Copy this file to the root of an SD card, insert it into the Mini-DK.
frankvnk 10:d07f76421408 12
frankvnk 10:d07f76421408 13 IMPORTANT:
frankvnk 13:a10300cac491 14 If copy to flash option is not needed - enable //#define NO_FLASH_BUFFER in Mini_DK.h
frankvnk 13:a10300cac491 15
frankvnk 10:d07f76421408 16
frankvnk 10:d07f76421408 17 UNCOMMENT THE DESIRED CODE TO TEST.
frankvnk 10:d07f76421408 18
frankvnk 10:d07f76421408 19 */
frankvnk 10:d07f76421408 20
frankvnk 10:d07f76421408 21 // =========================================================================================================
frankvnk 10:d07f76421408 22 // ================================================== ONE ==================================================
frankvnk 10:d07f76421408 23 // =========================================================================================================
frankvnk 9:3e117b89c705 24 #include "stdio.h"
frankvnk 9:3e117b89c705 25 #include "mbed.h"
frankvnk 9:3e117b89c705 26 #include "Mini_DK.h"
frankvnk 9:3e117b89c705 27
frankvnk 9:3e117b89c705 28 extern unsigned char p1[]; // the mbed logo
frankvnk 9:3e117b89c705 29 #define RGB565CONVERT(red, green, blue) (uint16_t)( (( red >> 3 ) << 11 ) | (( green >> 2 ) << 5 ) | ( blue >> 3 ))
frankvnk 9:3e117b89c705 30
frankvnk 9:3e117b89c705 31 DigitalOut led(DK_LED1);
frankvnk 9:3e117b89c705 32 // TFT -> mosi, miso, sclk, cs
frankvnk 9:3e117b89c705 33 SPI_TFT TFT(LCD_SDI, LCD_SDO, LCD_SCK, LCD_CS,"TFT");
frankvnk 9:3e117b89c705 34 // ADS7843 -> mosi, miso, sclk, cs, irq, SPI_TFT
frankvnk 9:3e117b89c705 35 TouchScreenADS7843 TP(TP_SDI ,TP_SDO ,TP_SCK ,TP_CS ,TP_IRQ, &TFT);
frankvnk 9:3e117b89c705 36
frankvnk 9:3e117b89c705 37 int main()
frankvnk 9:3e117b89c705 38 {
frankvnk 9:3e117b89c705 39 unsigned short LCD_id;
frankvnk 9:3e117b89c705 40 TFT.claim(stdout); // send stdout to the TFT display
frankvnk 15:5059751d2fa2 41 // Disable stdout buffering, allows us to omit \n with printf.
frankvnk 15:5059751d2fa2 42 // More info at http://www.cplusplus.com/reference/cstdio/setvbuf/
frankvnk 15:5059751d2fa2 43 setvbuf ( stdout , NULL , _IONBF , NULL );
frankvnk 9:3e117b89c705 44
frankvnk 9:3e117b89c705 45 TFT.background(Black); // set background to black
frankvnk 9:3e117b89c705 46 TFT.foreground(White); // set chars to white
frankvnk 9:3e117b89c705 47
frankvnk 9:3e117b89c705 48
frankvnk 9:3e117b89c705 49 // LCD demo
frankvnk 9:3e117b89c705 50 // first show the 4 directions
frankvnk 9:3e117b89c705 51 TFT.cls();
frankvnk 9:3e117b89c705 52 TFT.set_font((unsigned char*) Arial12x12);
frankvnk 9:3e117b89c705 53 TFT.set_orientation(0);
frankvnk 9:3e117b89c705 54 TFT.locate(0,0);
frankvnk 10:d07f76421408 55 printf(" Hello Mbed 0");
frankvnk 9:3e117b89c705 56 TFT.set_orientation(1);
frankvnk 9:3e117b89c705 57 TFT.locate(0,0);
frankvnk 10:d07f76421408 58 printf(" Hello Mbed 1");
frankvnk 9:3e117b89c705 59 TFT.set_orientation(2);
frankvnk 9:3e117b89c705 60 TFT.locate(0,0);
frankvnk 10:d07f76421408 61 printf(" Hello Mbed 2");
frankvnk 9:3e117b89c705 62 TFT.set_orientation(3);
frankvnk 9:3e117b89c705 63 TFT.locate(0,0);
frankvnk 10:d07f76421408 64 printf(" Hello Mbed 3");
frankvnk 9:3e117b89c705 65 TFT.set_orientation(1);
frankvnk 9:3e117b89c705 66 TFT.set_font((unsigned char*) Arial24x23);
frankvnk 9:3e117b89c705 67 TFT.locate(50,100);
frankvnk 10:d07f76421408 68 printf("TFT orientation");
frankvnk 9:3e117b89c705 69
frankvnk 9:3e117b89c705 70 wait(2);
frankvnk 9:3e117b89c705 71
frankvnk 9:3e117b89c705 72 // draw some graphics
frankvnk 9:3e117b89c705 73 TFT.cls();
frankvnk 9:3e117b89c705 74 TFT.set_orientation(1);
frankvnk 9:3e117b89c705 75 TFT.set_font((unsigned char*) Arial24x23);
frankvnk 9:3e117b89c705 76 TFT.locate(120,115);
frankvnk 10:d07f76421408 77 printf("Graphic");
frankvnk 9:3e117b89c705 78 TFT.line(0,0,100,200,Green);
frankvnk 9:3e117b89c705 79 TFT.rect(100,50,50,50,Red);
frankvnk 9:3e117b89c705 80 TFT.fillrect(180,25,40,45,Blue);
frankvnk 9:3e117b89c705 81 TFT.draw_ellipse(80, 150, 33, 33, White);
frankvnk 9:3e117b89c705 82 TFT.fill_ellipse(80, 50, 33, 33, White);
frankvnk 9:3e117b89c705 83 wait(2);
frankvnk 9:3e117b89c705 84 TFT.cls();
frankvnk 9:3e117b89c705 85 TFT.draw_ellipse(160, 120, 100, 50, Yellow);
frankvnk 9:3e117b89c705 86 TFT.draw_ellipse(160, 120, 100, 100, Blue);
frankvnk 9:3e117b89c705 87 TFT.fill_ellipse(160, 120, 80, 40, Green);
frankvnk 9:3e117b89c705 88 wait(2);
frankvnk 9:3e117b89c705 89
frankvnk 9:3e117b89c705 90 // bigger text
frankvnk 9:3e117b89c705 91 TFT.foreground(White);
frankvnk 9:3e117b89c705 92 TFT.background(Blue);
frankvnk 9:3e117b89c705 93 TFT.cls();
frankvnk 9:3e117b89c705 94 TFT.set_font((unsigned char*) Arial24x23);
frankvnk 9:3e117b89c705 95 TFT.locate(0,0);
frankvnk 10:d07f76421408 96 printf("Different Fonts :");
frankvnk 9:3e117b89c705 97
frankvnk 9:3e117b89c705 98 TFT.set_font((unsigned char*) Neu42x35);
frankvnk 9:3e117b89c705 99 TFT.locate(0,50);
frankvnk 10:d07f76421408 100 printf("Hello");
frankvnk 9:3e117b89c705 101 TFT.set_font((unsigned char*) Arial24x23);
frankvnk 9:3e117b89c705 102 TFT.locate(50,100);
frankvnk 10:d07f76421408 103 printf("Hello");
frankvnk 9:3e117b89c705 104 TFT.set_font((unsigned char*) Arial12x12);
frankvnk 9:3e117b89c705 105 TFT.locate(55,150);
frankvnk 10:d07f76421408 106 printf("Hello");
frankvnk 9:3e117b89c705 107
frankvnk 9:3e117b89c705 108 TFT.set_orientation(2);
frankvnk 9:3e117b89c705 109 TFT.set_font((unsigned char*) Arial24x23);
frankvnk 9:3e117b89c705 110 TFT.locate(10,10);
frankvnk 10:d07f76421408 111 printf("Hi mbed");
frankvnk 9:3e117b89c705 112 wait(2);
frankvnk 9:3e117b89c705 113
frankvnk 9:3e117b89c705 114 // mbed logo
frankvnk 9:3e117b89c705 115 TFT.set_orientation(1);
frankvnk 9:3e117b89c705 116 TFT.background(Black);
frankvnk 9:3e117b89c705 117 TFT.cls();
frankvnk 9:3e117b89c705 118 TFT.Bitmap(90,90,172,55,p1);
frankvnk 9:3e117b89c705 119
frankvnk 9:3e117b89c705 120 // Read LCD ID
frankvnk 9:3e117b89c705 121 TFT.set_orientation(0);
frankvnk 9:3e117b89c705 122 LCD_id = TFT.Read_ID();
frankvnk 9:3e117b89c705 123 TFT.locate(10,10);
frankvnk 10:d07f76421408 124 printf("LCD: ILI%04X", LCD_id);
frankvnk 9:3e117b89c705 125 wait(2);
frankvnk 9:3e117b89c705 126
frankvnk 9:3e117b89c705 127 // RGB color wheel demo (cycle through all colors)
frankvnk 9:3e117b89c705 128 TFT.cls();
frankvnk 9:3e117b89c705 129 TFT.foreground(Yellow); // set chars to yellow
frankvnk 9:3e117b89c705 130 TFT.set_font((unsigned char*) Arial12x12);
frankvnk 9:3e117b89c705 131 TFT.locate(10,10);
frankvnk 10:d07f76421408 132 printf("RGB color wheel (2x)");
frankvnk 9:3e117b89c705 133
frankvnk 9:3e117b89c705 134 uint8_t r = 255, g = 0, b = 0, step = 1, i;
frankvnk 9:3e117b89c705 135 for (i=0;i<2;i++)
frankvnk 9:3e117b89c705 136 {
frankvnk 9:3e117b89c705 137 for(;g<255;g+=step) {TFT.fillrect(70,110,100,100,RGB565CONVERT(r, g, b));} // Cycle from FF0000 to FFFF00 : red to yellow
frankvnk 9:3e117b89c705 138 for(;r>0;r-=step) {TFT.fillrect(70,110,100,100,RGB565CONVERT(r, g, b));} // Cycle from FFFF00 to 00FF00 : yellow to green
frankvnk 9:3e117b89c705 139 for(;b<255;b+=step) {TFT.fillrect(70,110,100,100,RGB565CONVERT(r, g, b));} // Cycle from 00FF00 to 00FFFF : green to cyan
frankvnk 9:3e117b89c705 140 for(;g>0;g-=step) {TFT.fillrect(70,110,100,100,RGB565CONVERT(r, g, b));} // Cycle from 00FFFF to 0000FF : cyan to blue
frankvnk 9:3e117b89c705 141 for(;r<255;r+=step) {TFT.fillrect(70,110,100,100,RGB565CONVERT(r, g, b));} // Cycle from 0000FF to FF00FF : blue to purple
frankvnk 9:3e117b89c705 142 for(;b>0;b-=step) {TFT.fillrect(70,110,100,100,RGB565CONVERT(r, g, b));} // Cycle from FF00FF to FF0000 : purple to red
frankvnk 9:3e117b89c705 143 }
frankvnk 9:3e117b89c705 144 wait(2);
frankvnk 9:3e117b89c705 145
frankvnk 9:3e117b89c705 146 // Touchpanel demo
frankvnk 9:3e117b89c705 147 TP.TouchPanel_Calibrate();
frankvnk 9:3e117b89c705 148 TFT.set_font((unsigned char*) Arial12x12);
frankvnk 9:3e117b89c705 149 TFT.set_orientation(0);
frankvnk 9:3e117b89c705 150 TFT.locate(0,0);
frankvnk 10:d07f76421408 151 printf(" X:");
frankvnk 9:3e117b89c705 152 TFT.locate(70,0);
frankvnk 10:d07f76421408 153 printf(" Y:");
frankvnk 9:3e117b89c705 154 while (1)
frankvnk 9:3e117b89c705 155 {
frankvnk 9:3e117b89c705 156 if (!TP._tp_irq)
frankvnk 9:3e117b89c705 157 {
frankvnk 15:5059751d2fa2 158 if (TP.Read_Ads7843())
frankvnk 9:3e117b89c705 159 {
frankvnk 9:3e117b89c705 160 TP.getDisplayPoint() ;
frankvnk 9:3e117b89c705 161 TP.TP_DrawPoint(TP.display.x,TP.display.y, Blue);
frankvnk 9:3e117b89c705 162 TFT.locate(25,0);
frankvnk 10:d07f76421408 163 printf("%03d",TP.display.x);
frankvnk 9:3e117b89c705 164 TFT.locate(95,0);
frankvnk 10:d07f76421408 165 printf("%03d",TP.display.y);
frankvnk 9:3e117b89c705 166 // Touchscreen area is larger than LCD area.
frankvnk 9:3e117b89c705 167 // We use the bottom area outside the LCD area to clear the screen (y value > 320).
frankvnk 9:3e117b89c705 168 if (TP.display.y > 320)
frankvnk 9:3e117b89c705 169 {
frankvnk 9:3e117b89c705 170 TFT.cls();
frankvnk 9:3e117b89c705 171 TFT.locate(0,0);
frankvnk 10:d07f76421408 172 printf(" X:");
frankvnk 9:3e117b89c705 173 TFT.locate(70,0);
frankvnk 10:d07f76421408 174 printf(" Y:");
frankvnk 9:3e117b89c705 175 }
frankvnk 9:3e117b89c705 176 }
frankvnk 9:3e117b89c705 177 }
frankvnk 9:3e117b89c705 178 }
frankvnk 9:3e117b89c705 179 }
frankvnk 10:d07f76421408 180
frankvnk 10:d07f76421408 181 /*
frankvnk 10:d07f76421408 182 // =========================================================================================================
frankvnk 10:d07f76421408 183 // ================================================== TWO ==================================================
frankvnk 10:d07f76421408 184 // =========================================================================================================
frankvnk 10:d07f76421408 185
frankvnk 10:d07f76421408 186 #include "stdio.h"
frankvnk 10:d07f76421408 187 #include "mbed.h"
frankvnk 10:d07f76421408 188 #include "SDFileSystem.h"
frankvnk 10:d07f76421408 189 #include "Mini_DK.h"
frankvnk 10:d07f76421408 190
frankvnk 10:d07f76421408 191 // SD card
frankvnk 10:d07f76421408 192 SDFileSystem sd(SD_SDI, SD_SDO, SD_SCK, SD_CS, "sd");
frankvnk 10:d07f76421408 193 // TFT -> mosi, miso, sclk, cs
frankvnk 10:d07f76421408 194 SPI_TFT TFT(LCD_SDI, LCD_SDO, LCD_SCK, LCD_CS,"TFT");
frankvnk 10:d07f76421408 195 // ADS7843 -> mosi, miso, sclk, cs, irq, SPI_TFT
frankvnk 10:d07f76421408 196 TouchScreenADS7843 TP(TP_SDI ,TP_SDO ,TP_SCK ,TP_CS ,TP_IRQ, &TFT);
frankvnk 10:d07f76421408 197
frankvnk 10:d07f76421408 198 int main()
frankvnk 10:d07f76421408 199 {
frankvnk 10:d07f76421408 200 TFT.background(Black); // set background to black
frankvnk 10:d07f76421408 201 TFT.foreground(White); // set chars to white
frankvnk 10:d07f76421408 202
frankvnk 10:d07f76421408 203 TFT.claim(stdout); // send stdout to the TFT display
frankvnk 15:5059751d2fa2 204 // Disable stdout buffering, allows us to omit \n with printf.
frankvnk 15:5059751d2fa2 205 // More info at http://www.cplusplus.com/reference/cstdio/setvbuf/
frankvnk 15:5059751d2fa2 206 setvbuf ( stdout , NULL , _IONBF , NULL );
frankvnk 15:5059751d2fa2 207
frankvnk 10:d07f76421408 208 TFT.cls();
frankvnk 10:d07f76421408 209 TFT.set_font((unsigned char*) Arial12x12);
frankvnk 10:d07f76421408 210 TFT.set_orientation(1);
frankvnk 10:d07f76421408 211
frankvnk 10:d07f76421408 212 DISABLE_LCD_MISO;
frankvnk 10:d07f76421408 213 int dummy = TFT.Bitmap(0,0,"/sd/house.bmp");
frankvnk 10:d07f76421408 214 ENABLE_LCD_MISO;
frankvnk 10:d07f76421408 215 TFT.locate(0,0);
frankvnk 10:d07f76421408 216 printf("%02d",dummy);
frankvnk 10:d07f76421408 217 }
frankvnk 10:d07f76421408 218 */
frankvnk 10:d07f76421408 219
frankvnk 10:d07f76421408 220 /*
frankvnk 10:d07f76421408 221 // =========================================================================================================
frankvnk 10:d07f76421408 222 // ================================================= THREE =================================================
frankvnk 10:d07f76421408 223 // =========================================================================================================
frankvnk 10:d07f76421408 224
frankvnk 10:d07f76421408 225 #include "stdio.h"
frankvnk 10:d07f76421408 226 #include "mbed.h"
frankvnk 10:d07f76421408 227 #include "SDFileSystem.h"
frankvnk 10:d07f76421408 228 #include "Mini_DK.h"
frankvnk 10:d07f76421408 229
frankvnk 10:d07f76421408 230 // SD card
frankvnk 10:d07f76421408 231 SDFileSystem sd(SD_SDI, SD_SDO, SD_SCK, SD_CS, "sd");
frankvnk 10:d07f76421408 232 // TFT -> mosi, miso, sclk, cs
frankvnk 10:d07f76421408 233 SPI_TFT TFT(LCD_SDI, LCD_SDO, LCD_SCK, LCD_CS,"TFT");
frankvnk 10:d07f76421408 234 // ADS7843 -> mosi, miso, sclk, cs, irq, SPI_TFT
frankvnk 10:d07f76421408 235 TouchScreenADS7843 TP(TP_SDI ,TP_SDO ,TP_SCK ,TP_CS ,TP_IRQ, &TFT);
frankvnk 10:d07f76421408 236
frankvnk 10:d07f76421408 237
frankvnk 10:d07f76421408 238 Timer timer;
frankvnk 10:d07f76421408 239
frankvnk 10:d07f76421408 240 int main()
frankvnk 10:d07f76421408 241 {
frankvnk 10:d07f76421408 242 DISABLE_LCD_MISO;
frankvnk 10:d07f76421408 243 TFT.background(Black); // set background to black
frankvnk 10:d07f76421408 244 TFT.foreground(White); // set chars to white
frankvnk 10:d07f76421408 245
frankvnk 10:d07f76421408 246 TFT.claim(stdout); // send stdout to the TFT display
frankvnk 15:5059751d2fa2 247 // Disable stdout buffering, allows us to omit \n with printf.
frankvnk 15:5059751d2fa2 248 // More info at http://www.cplusplus.com/reference/cstdio/setvbuf/
frankvnk 15:5059751d2fa2 249 setvbuf ( stdout , NULL , _IONBF , NULL );
frankvnk 15:5059751d2fa2 250
frankvnk 10:d07f76421408 251 TFT.cls();
frankvnk 10:d07f76421408 252 TFT.set_font((unsigned char*) Arial12x12);
frankvnk 10:d07f76421408 253 TFT.set_orientation(1);
frankvnk 10:d07f76421408 254
frankvnk 10:d07f76421408 255 TFT.locate(0,200);
frankvnk 10:d07f76421408 256 printf("Loading from SD...");
frankvnk 10:d07f76421408 257 TFT.Bitmap(0,0,"/sd/house.bmp");
frankvnk 10:d07f76421408 258
frankvnk 10:d07f76421408 259 TFT.locate(0,0);
frankvnk 10:d07f76421408 260 printf("Copying to flash...");
frankvnk 10:d07f76421408 261 TFT.fileToFlash("/sd/house.bmp");
frankvnk 10:d07f76421408 262 TFT.locate(0,40);
frankvnk 10:d07f76421408 263 printf("Done: CLS in 2 seconds");
frankvnk 10:d07f76421408 264 wait(2);
frankvnk 10:d07f76421408 265 TFT.backgroundImage(false);
frankvnk 10:d07f76421408 266 TFT.cls();
frankvnk 10:d07f76421408 267 wait(2);
frankvnk 10:d07f76421408 268 TFT.backgroundImage(true);
frankvnk 10:d07f76421408 269
frankvnk 10:d07f76421408 270
frankvnk 10:d07f76421408 271 timer.reset();
frankvnk 10:d07f76421408 272 timer.start();
frankvnk 10:d07f76421408 273 TFT.cls();
frankvnk 10:d07f76421408 274 timer.stop();
frankvnk 10:d07f76421408 275 TFT.foreground(Black);
frankvnk 10:d07f76421408 276 TFT.locate(0,200);
frankvnk 10:d07f76421408 277 printf("Wrote background in %d ms",timer.read_ms());
frankvnk 10:d07f76421408 278 TFT.foreground(Black);
frankvnk 10:d07f76421408 279
frankvnk 10:d07f76421408 280 TFT.set_orientation(3);
frankvnk 10:d07f76421408 281 TFT.locate(0,200);
frankvnk 10:d07f76421408 282 printf("Wrote background in %d ms",timer.read_ms());
frankvnk 10:d07f76421408 283
frankvnk 10:d07f76421408 284 wait(5);
frankvnk 10:d07f76421408 285 TFT.cls();
frankvnk 10:d07f76421408 286 TFT.set_font((unsigned char*) Neu42x35);
frankvnk 10:d07f76421408 287 TFT.locate(0,50);
frankvnk 10:d07f76421408 288 printf("Orient = 3");
frankvnk 10:d07f76421408 289 TFT.set_orientation(0);
frankvnk 10:d07f76421408 290 TFT.locate(0,50);
frankvnk 10:d07f76421408 291 printf("Orient = 0");
frankvnk 10:d07f76421408 292 wait(5);
frankvnk 10:d07f76421408 293
frankvnk 10:d07f76421408 294 TFT.set_orientation(0);
frankvnk 10:d07f76421408 295 TFT.cls();
frankvnk 10:d07f76421408 296 TFT.locate(0,50);
frankvnk 10:d07f76421408 297 printf("Orient = 0");
frankvnk 10:d07f76421408 298
frankvnk 10:d07f76421408 299 while(1);
frankvnk 10:d07f76421408 300 }
frankvnk 15:5059751d2fa2 301 */