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

Dependencies:   Mini-DK SDFileSystem mbed

Fork of LPC1768_Mini-DK by Frank Vannieuwkerke

Committer:
frankvnk
Date:
Tue Jan 08 16:12:13 2013 +0000
Revision:
10:d07f76421408
Parent:
9:3e117b89c705
Child:
13:a10300cac491
TFT.printf replaced with printf (mbed Stream(name) is available again).
; 3 different code examples in main.cpp to demonstate the possibilities of the Mini-DK library.

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 10:d07f76421408 14 Enable #define USE_FLASH_BUFFER in SPI_TFT.h to allow copy to flash.
frankvnk 10:d07f76421408 15 If copy to flash option is not needed - disable it.
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 9:3e117b89c705 41
frankvnk 9:3e117b89c705 42 TFT.background(Black); // set background to black
frankvnk 9:3e117b89c705 43 TFT.foreground(White); // set chars to white
frankvnk 9:3e117b89c705 44
frankvnk 9:3e117b89c705 45
frankvnk 9:3e117b89c705 46 // LCD demo
frankvnk 9:3e117b89c705 47 // first show the 4 directions
frankvnk 9:3e117b89c705 48 TFT.cls();
frankvnk 9:3e117b89c705 49 TFT.set_font((unsigned char*) Arial12x12);
frankvnk 9:3e117b89c705 50 TFT.set_orientation(0);
frankvnk 9:3e117b89c705 51 TFT.locate(0,0);
frankvnk 10:d07f76421408 52 printf(" Hello Mbed 0");
frankvnk 9:3e117b89c705 53 TFT.set_orientation(1);
frankvnk 9:3e117b89c705 54 TFT.locate(0,0);
frankvnk 10:d07f76421408 55 printf(" Hello Mbed 1");
frankvnk 9:3e117b89c705 56 TFT.set_orientation(2);
frankvnk 9:3e117b89c705 57 TFT.locate(0,0);
frankvnk 10:d07f76421408 58 printf(" Hello Mbed 2");
frankvnk 9:3e117b89c705 59 TFT.set_orientation(3);
frankvnk 9:3e117b89c705 60 TFT.locate(0,0);
frankvnk 10:d07f76421408 61 printf(" Hello Mbed 3");
frankvnk 9:3e117b89c705 62 TFT.set_orientation(1);
frankvnk 9:3e117b89c705 63 TFT.set_font((unsigned char*) Arial24x23);
frankvnk 9:3e117b89c705 64 TFT.locate(50,100);
frankvnk 10:d07f76421408 65 printf("TFT orientation");
frankvnk 9:3e117b89c705 66
frankvnk 9:3e117b89c705 67 wait(2);
frankvnk 9:3e117b89c705 68
frankvnk 9:3e117b89c705 69 // draw some graphics
frankvnk 9:3e117b89c705 70 TFT.cls();
frankvnk 9:3e117b89c705 71 TFT.set_orientation(1);
frankvnk 9:3e117b89c705 72 TFT.set_font((unsigned char*) Arial24x23);
frankvnk 9:3e117b89c705 73 TFT.locate(120,115);
frankvnk 10:d07f76421408 74 printf("Graphic");
frankvnk 9:3e117b89c705 75 TFT.line(0,0,100,200,Green);
frankvnk 9:3e117b89c705 76 TFT.rect(100,50,50,50,Red);
frankvnk 9:3e117b89c705 77 TFT.fillrect(180,25,40,45,Blue);
frankvnk 9:3e117b89c705 78 TFT.draw_ellipse(80, 150, 33, 33, White);
frankvnk 9:3e117b89c705 79 TFT.fill_ellipse(80, 50, 33, 33, White);
frankvnk 9:3e117b89c705 80 wait(2);
frankvnk 9:3e117b89c705 81 TFT.cls();
frankvnk 9:3e117b89c705 82 TFT.draw_ellipse(160, 120, 100, 50, Yellow);
frankvnk 9:3e117b89c705 83 TFT.draw_ellipse(160, 120, 100, 100, Blue);
frankvnk 9:3e117b89c705 84 TFT.fill_ellipse(160, 120, 80, 40, Green);
frankvnk 9:3e117b89c705 85 wait(2);
frankvnk 9:3e117b89c705 86
frankvnk 9:3e117b89c705 87 // bigger text
frankvnk 9:3e117b89c705 88 TFT.foreground(White);
frankvnk 9:3e117b89c705 89 TFT.background(Blue);
frankvnk 9:3e117b89c705 90 TFT.cls();
frankvnk 9:3e117b89c705 91 TFT.set_font((unsigned char*) Arial24x23);
frankvnk 9:3e117b89c705 92 TFT.locate(0,0);
frankvnk 10:d07f76421408 93 printf("Different Fonts :");
frankvnk 9:3e117b89c705 94
frankvnk 9:3e117b89c705 95 TFT.set_font((unsigned char*) Neu42x35);
frankvnk 9:3e117b89c705 96 TFT.locate(0,50);
frankvnk 10:d07f76421408 97 printf("Hello");
frankvnk 9:3e117b89c705 98 TFT.set_font((unsigned char*) Arial24x23);
frankvnk 9:3e117b89c705 99 TFT.locate(50,100);
frankvnk 10:d07f76421408 100 printf("Hello");
frankvnk 9:3e117b89c705 101 TFT.set_font((unsigned char*) Arial12x12);
frankvnk 9:3e117b89c705 102 TFT.locate(55,150);
frankvnk 10:d07f76421408 103 printf("Hello");
frankvnk 9:3e117b89c705 104
frankvnk 9:3e117b89c705 105 TFT.set_orientation(2);
frankvnk 9:3e117b89c705 106 TFT.set_font((unsigned char*) Arial24x23);
frankvnk 9:3e117b89c705 107 TFT.locate(10,10);
frankvnk 10:d07f76421408 108 printf("Hi mbed");
frankvnk 9:3e117b89c705 109 wait(2);
frankvnk 9:3e117b89c705 110
frankvnk 9:3e117b89c705 111 // mbed logo
frankvnk 9:3e117b89c705 112 TFT.set_orientation(1);
frankvnk 9:3e117b89c705 113 TFT.background(Black);
frankvnk 9:3e117b89c705 114 TFT.cls();
frankvnk 9:3e117b89c705 115 TFT.Bitmap(90,90,172,55,p1);
frankvnk 9:3e117b89c705 116
frankvnk 9:3e117b89c705 117 // Read LCD ID
frankvnk 9:3e117b89c705 118 TFT.set_orientation(0);
frankvnk 9:3e117b89c705 119 LCD_id = TFT.Read_ID();
frankvnk 9:3e117b89c705 120 TFT.locate(10,10);
frankvnk 10:d07f76421408 121 printf("LCD: ILI%04X", LCD_id);
frankvnk 9:3e117b89c705 122 wait(2);
frankvnk 9:3e117b89c705 123
frankvnk 9:3e117b89c705 124 // RGB color wheel demo (cycle through all colors)
frankvnk 9:3e117b89c705 125 TFT.cls();
frankvnk 9:3e117b89c705 126 TFT.foreground(Yellow); // set chars to yellow
frankvnk 9:3e117b89c705 127 TFT.set_font((unsigned char*) Arial12x12);
frankvnk 9:3e117b89c705 128 TFT.locate(10,10);
frankvnk 10:d07f76421408 129 printf("RGB color wheel (2x)");
frankvnk 9:3e117b89c705 130
frankvnk 9:3e117b89c705 131 uint8_t r = 255, g = 0, b = 0, step = 1, i;
frankvnk 9:3e117b89c705 132 for (i=0;i<2;i++)
frankvnk 9:3e117b89c705 133 {
frankvnk 9:3e117b89c705 134 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 135 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 136 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 137 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 138 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 139 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 140 }
frankvnk 9:3e117b89c705 141 wait(2);
frankvnk 9:3e117b89c705 142
frankvnk 9:3e117b89c705 143 // Touchpanel demo
frankvnk 9:3e117b89c705 144 TP.TouchPanel_Calibrate();
frankvnk 9:3e117b89c705 145 TFT.set_font((unsigned char*) Arial12x12);
frankvnk 9:3e117b89c705 146 TFT.set_orientation(0);
frankvnk 9:3e117b89c705 147 TFT.locate(0,0);
frankvnk 10:d07f76421408 148 printf(" X:");
frankvnk 9:3e117b89c705 149 TFT.locate(70,0);
frankvnk 10:d07f76421408 150 printf(" Y:");
frankvnk 9:3e117b89c705 151 while (1)
frankvnk 9:3e117b89c705 152 {
frankvnk 9:3e117b89c705 153 if (!TP._tp_irq)
frankvnk 9:3e117b89c705 154 {
frankvnk 9:3e117b89c705 155 if (TP.Read_Ads7846())
frankvnk 9:3e117b89c705 156 {
frankvnk 9:3e117b89c705 157 TP.getDisplayPoint() ;
frankvnk 9:3e117b89c705 158 TP.TP_DrawPoint(TP.display.x,TP.display.y, Blue);
frankvnk 9:3e117b89c705 159 TFT.locate(25,0);
frankvnk 10:d07f76421408 160 printf("%03d",TP.display.x);
frankvnk 9:3e117b89c705 161 TFT.locate(95,0);
frankvnk 10:d07f76421408 162 printf("%03d",TP.display.y);
frankvnk 9:3e117b89c705 163 // Touchscreen area is larger than LCD area.
frankvnk 9:3e117b89c705 164 // We use the bottom area outside the LCD area to clear the screen (y value > 320).
frankvnk 9:3e117b89c705 165 if (TP.display.y > 320)
frankvnk 9:3e117b89c705 166 {
frankvnk 9:3e117b89c705 167 TFT.cls();
frankvnk 9:3e117b89c705 168 TFT.locate(0,0);
frankvnk 10:d07f76421408 169 printf(" X:");
frankvnk 9:3e117b89c705 170 TFT.locate(70,0);
frankvnk 10:d07f76421408 171 printf(" Y:");
frankvnk 9:3e117b89c705 172 }
frankvnk 9:3e117b89c705 173 }
frankvnk 9:3e117b89c705 174 }
frankvnk 9:3e117b89c705 175 }
frankvnk 9:3e117b89c705 176 }
frankvnk 10:d07f76421408 177
frankvnk 10:d07f76421408 178 /*
frankvnk 10:d07f76421408 179 // =========================================================================================================
frankvnk 10:d07f76421408 180 // ================================================== TWO ==================================================
frankvnk 10:d07f76421408 181 // =========================================================================================================
frankvnk 10:d07f76421408 182
frankvnk 10:d07f76421408 183 #include "stdio.h"
frankvnk 10:d07f76421408 184 #include "mbed.h"
frankvnk 10:d07f76421408 185 #include "SDFileSystem.h"
frankvnk 10:d07f76421408 186 #include "Mini_DK.h"
frankvnk 10:d07f76421408 187
frankvnk 10:d07f76421408 188 // SD card
frankvnk 10:d07f76421408 189 SDFileSystem sd(SD_SDI, SD_SDO, SD_SCK, SD_CS, "sd");
frankvnk 10:d07f76421408 190 // TFT -> mosi, miso, sclk, cs
frankvnk 10:d07f76421408 191 SPI_TFT TFT(LCD_SDI, LCD_SDO, LCD_SCK, LCD_CS,"TFT");
frankvnk 10:d07f76421408 192 // ADS7843 -> mosi, miso, sclk, cs, irq, SPI_TFT
frankvnk 10:d07f76421408 193 TouchScreenADS7843 TP(TP_SDI ,TP_SDO ,TP_SCK ,TP_CS ,TP_IRQ, &TFT);
frankvnk 10:d07f76421408 194
frankvnk 10:d07f76421408 195 int main()
frankvnk 10:d07f76421408 196 {
frankvnk 10:d07f76421408 197 TFT.background(Black); // set background to black
frankvnk 10:d07f76421408 198 TFT.foreground(White); // set chars to white
frankvnk 10:d07f76421408 199
frankvnk 10:d07f76421408 200 TFT.claim(stdout); // send stdout to the TFT display
frankvnk 10:d07f76421408 201 TFT.cls();
frankvnk 10:d07f76421408 202 TFT.set_font((unsigned char*) Arial12x12);
frankvnk 10:d07f76421408 203 TFT.set_orientation(1);
frankvnk 10:d07f76421408 204
frankvnk 10:d07f76421408 205 DISABLE_LCD_MISO;
frankvnk 10:d07f76421408 206 int dummy = TFT.Bitmap(0,0,"/sd/house.bmp");
frankvnk 10:d07f76421408 207 ENABLE_LCD_MISO;
frankvnk 10:d07f76421408 208 TFT.locate(0,0);
frankvnk 10:d07f76421408 209 printf("%02d",dummy);
frankvnk 10:d07f76421408 210 }
frankvnk 10:d07f76421408 211 */
frankvnk 10:d07f76421408 212
frankvnk 10:d07f76421408 213 /*
frankvnk 10:d07f76421408 214 // =========================================================================================================
frankvnk 10:d07f76421408 215 // ================================================= THREE =================================================
frankvnk 10:d07f76421408 216 // =========================================================================================================
frankvnk 10:d07f76421408 217
frankvnk 10:d07f76421408 218 #include "stdio.h"
frankvnk 10:d07f76421408 219 #include "mbed.h"
frankvnk 10:d07f76421408 220 #include "SDFileSystem.h"
frankvnk 10:d07f76421408 221 #include "Mini_DK.h"
frankvnk 10:d07f76421408 222
frankvnk 10:d07f76421408 223 // SD card
frankvnk 10:d07f76421408 224 SDFileSystem sd(SD_SDI, SD_SDO, SD_SCK, SD_CS, "sd");
frankvnk 10:d07f76421408 225 // TFT -> mosi, miso, sclk, cs
frankvnk 10:d07f76421408 226 SPI_TFT TFT(LCD_SDI, LCD_SDO, LCD_SCK, LCD_CS,"TFT");
frankvnk 10:d07f76421408 227 // ADS7843 -> mosi, miso, sclk, cs, irq, SPI_TFT
frankvnk 10:d07f76421408 228 TouchScreenADS7843 TP(TP_SDI ,TP_SDO ,TP_SCK ,TP_CS ,TP_IRQ, &TFT);
frankvnk 10:d07f76421408 229
frankvnk 10:d07f76421408 230
frankvnk 10:d07f76421408 231 Timer timer;
frankvnk 10:d07f76421408 232
frankvnk 10:d07f76421408 233 int main()
frankvnk 10:d07f76421408 234 {
frankvnk 10:d07f76421408 235 DISABLE_LCD_MISO;
frankvnk 10:d07f76421408 236 TFT.background(Black); // set background to black
frankvnk 10:d07f76421408 237 TFT.foreground(White); // set chars to white
frankvnk 10:d07f76421408 238
frankvnk 10:d07f76421408 239 TFT.claim(stdout); // send stdout to the TFT display
frankvnk 10:d07f76421408 240 TFT.cls();
frankvnk 10:d07f76421408 241 TFT.set_font((unsigned char*) Arial12x12);
frankvnk 10:d07f76421408 242 TFT.set_orientation(1);
frankvnk 10:d07f76421408 243
frankvnk 10:d07f76421408 244 TFT.locate(0,200);
frankvnk 10:d07f76421408 245 printf("Loading from SD...");
frankvnk 10:d07f76421408 246 TFT.Bitmap(0,0,"/sd/house.bmp");
frankvnk 10:d07f76421408 247
frankvnk 10:d07f76421408 248 TFT.locate(0,0);
frankvnk 10:d07f76421408 249 printf("Copying to flash...");
frankvnk 10:d07f76421408 250 TFT.fileToFlash("/sd/house.bmp");
frankvnk 10:d07f76421408 251 TFT.locate(0,40);
frankvnk 10:d07f76421408 252 printf("Done: CLS in 2 seconds");
frankvnk 10:d07f76421408 253 wait(2);
frankvnk 10:d07f76421408 254 TFT.backgroundImage(false);
frankvnk 10:d07f76421408 255 TFT.cls();
frankvnk 10:d07f76421408 256 wait(2);
frankvnk 10:d07f76421408 257 TFT.backgroundImage(true);
frankvnk 10:d07f76421408 258
frankvnk 10:d07f76421408 259
frankvnk 10:d07f76421408 260 timer.reset();
frankvnk 10:d07f76421408 261 timer.start();
frankvnk 10:d07f76421408 262 TFT.cls();
frankvnk 10:d07f76421408 263 timer.stop();
frankvnk 10:d07f76421408 264 TFT.foreground(Black);
frankvnk 10:d07f76421408 265 TFT.locate(0,200);
frankvnk 10:d07f76421408 266 printf("Wrote background in %d ms",timer.read_ms());
frankvnk 10:d07f76421408 267 TFT.foreground(Black);
frankvnk 10:d07f76421408 268
frankvnk 10:d07f76421408 269 TFT.set_orientation(3);
frankvnk 10:d07f76421408 270 TFT.locate(0,200);
frankvnk 10:d07f76421408 271 printf("Wrote background in %d ms",timer.read_ms());
frankvnk 10:d07f76421408 272
frankvnk 10:d07f76421408 273 wait(5);
frankvnk 10:d07f76421408 274 TFT.cls();
frankvnk 10:d07f76421408 275 TFT.set_font((unsigned char*) Neu42x35);
frankvnk 10:d07f76421408 276 TFT.locate(0,50);
frankvnk 10:d07f76421408 277 printf("Orient = 3");
frankvnk 10:d07f76421408 278 TFT.set_orientation(0);
frankvnk 10:d07f76421408 279 TFT.locate(0,50);
frankvnk 10:d07f76421408 280 printf("Orient = 0");
frankvnk 10:d07f76421408 281 wait(5);
frankvnk 10:d07f76421408 282
frankvnk 10:d07f76421408 283 TFT.set_orientation(0);
frankvnk 10:d07f76421408 284 TFT.cls();
frankvnk 10:d07f76421408 285 TFT.locate(0,50);
frankvnk 10:d07f76421408 286 printf("Orient = 0");
frankvnk 10:d07f76421408 287
frankvnk 10:d07f76421408 288 while(1);
frankvnk 10:d07f76421408 289 }
frankvnk 10:d07f76421408 290 */