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:
Fri Jan 04 14:08:03 2013 +0000
Revision:
9:3e117b89c705
Child:
10:d07f76421408
back to code example - library is at separate page

Who changed what in which revision?

UserRevisionLine numberNew contents of line
frankvnk 9:3e117b89c705 1 #include "stdio.h"
frankvnk 9:3e117b89c705 2 #include "mbed.h"
frankvnk 9:3e117b89c705 3 #include "Mini_DK.h"
frankvnk 9:3e117b89c705 4 //#include "string"
frankvnk 9:3e117b89c705 5
frankvnk 9:3e117b89c705 6 extern unsigned char p1[]; // the mbed logo
frankvnk 9:3e117b89c705 7 #define RGB565CONVERT(red, green, blue) (uint16_t)( (( red >> 3 ) << 11 ) | (( green >> 2 ) << 5 ) | ( blue >> 3 ))
frankvnk 9:3e117b89c705 8
frankvnk 9:3e117b89c705 9 DigitalOut led(DK_LED1);
frankvnk 9:3e117b89c705 10 // TFT -> mosi, miso, sclk, cs
frankvnk 9:3e117b89c705 11 SPI_TFT TFT(LCD_SDI, LCD_SDO, LCD_SCK, LCD_CS,"TFT");
frankvnk 9:3e117b89c705 12 // ADS7843 -> mosi, miso, sclk, cs, irq, SPI_TFT
frankvnk 9:3e117b89c705 13 TouchScreenADS7843 TP(TP_SDI ,TP_SDO ,TP_SCK ,TP_CS ,TP_IRQ, &TFT);
frankvnk 9:3e117b89c705 14
frankvnk 9:3e117b89c705 15 int main()
frankvnk 9:3e117b89c705 16 {
frankvnk 9:3e117b89c705 17 unsigned short LCD_id;
frankvnk 9:3e117b89c705 18 TFT.claim(stdout); // send stdout to the TFT display
frankvnk 9:3e117b89c705 19
frankvnk 9:3e117b89c705 20 TFT.background(Black); // set background to black
frankvnk 9:3e117b89c705 21 TFT.foreground(White); // set chars to white
frankvnk 9:3e117b89c705 22
frankvnk 9:3e117b89c705 23
frankvnk 9:3e117b89c705 24 // LCD demo
frankvnk 9:3e117b89c705 25 // first show the 4 directions
frankvnk 9:3e117b89c705 26 TFT.cls();
frankvnk 9:3e117b89c705 27 TFT.set_font((unsigned char*) Arial12x12);
frankvnk 9:3e117b89c705 28 TFT.set_orientation(0);
frankvnk 9:3e117b89c705 29 TFT.locate(0,0);
frankvnk 9:3e117b89c705 30 TFT.printf(" Hello Mbed 0");
frankvnk 9:3e117b89c705 31 TFT.set_orientation(1);
frankvnk 9:3e117b89c705 32 TFT.locate(0,0);
frankvnk 9:3e117b89c705 33 TFT.printf(" Hello Mbed 1");
frankvnk 9:3e117b89c705 34 TFT.set_orientation(2);
frankvnk 9:3e117b89c705 35 TFT.locate(0,0);
frankvnk 9:3e117b89c705 36 TFT.printf(" Hello Mbed 2");
frankvnk 9:3e117b89c705 37 TFT.set_orientation(3);
frankvnk 9:3e117b89c705 38 TFT.locate(0,0);
frankvnk 9:3e117b89c705 39 TFT.printf(" Hello Mbed 3");
frankvnk 9:3e117b89c705 40 TFT.set_orientation(1);
frankvnk 9:3e117b89c705 41 TFT.set_font((unsigned char*) Arial24x23);
frankvnk 9:3e117b89c705 42 TFT.locate(50,100);
frankvnk 9:3e117b89c705 43 TFT.printf("TFT orientation");
frankvnk 9:3e117b89c705 44
frankvnk 9:3e117b89c705 45 wait(2);
frankvnk 9:3e117b89c705 46
frankvnk 9:3e117b89c705 47 // draw some graphics
frankvnk 9:3e117b89c705 48 TFT.cls();
frankvnk 9:3e117b89c705 49 TFT.set_orientation(1);
frankvnk 9:3e117b89c705 50 TFT.set_font((unsigned char*) Arial24x23);
frankvnk 9:3e117b89c705 51 TFT.locate(120,115);
frankvnk 9:3e117b89c705 52 TFT.printf("Graphic");
frankvnk 9:3e117b89c705 53 TFT.line(0,0,100,200,Green);
frankvnk 9:3e117b89c705 54 TFT.rect(100,50,50,50,Red);
frankvnk 9:3e117b89c705 55 TFT.fillrect(180,25,40,45,Blue);
frankvnk 9:3e117b89c705 56 TFT.draw_ellipse(80, 150, 33, 33, White);
frankvnk 9:3e117b89c705 57 TFT.fill_ellipse(80, 50, 33, 33, White);
frankvnk 9:3e117b89c705 58 wait(2);
frankvnk 9:3e117b89c705 59 TFT.cls();
frankvnk 9:3e117b89c705 60 TFT.draw_ellipse(160, 120, 100, 50, Yellow);
frankvnk 9:3e117b89c705 61 TFT.draw_ellipse(160, 120, 100, 100, Blue);
frankvnk 9:3e117b89c705 62 TFT.fill_ellipse(160, 120, 80, 40, Green);
frankvnk 9:3e117b89c705 63 wait(2);
frankvnk 9:3e117b89c705 64
frankvnk 9:3e117b89c705 65 // bigger text
frankvnk 9:3e117b89c705 66 TFT.foreground(White);
frankvnk 9:3e117b89c705 67 TFT.background(Blue);
frankvnk 9:3e117b89c705 68 TFT.cls();
frankvnk 9:3e117b89c705 69 TFT.set_font((unsigned char*) Arial24x23);
frankvnk 9:3e117b89c705 70 TFT.locate(0,0);
frankvnk 9:3e117b89c705 71 TFT.printf("Different Fonts :");
frankvnk 9:3e117b89c705 72
frankvnk 9:3e117b89c705 73 TFT.set_font((unsigned char*) Neu42x35);
frankvnk 9:3e117b89c705 74 TFT.locate(0,50);
frankvnk 9:3e117b89c705 75 TFT.printf("Hello");
frankvnk 9:3e117b89c705 76 TFT.set_font((unsigned char*) Arial24x23);
frankvnk 9:3e117b89c705 77 TFT.locate(50,100);
frankvnk 9:3e117b89c705 78 TFT.printf("Hello");
frankvnk 9:3e117b89c705 79 TFT.set_font((unsigned char*) Arial12x12);
frankvnk 9:3e117b89c705 80 TFT.locate(55,150);
frankvnk 9:3e117b89c705 81 TFT.printf("Hello");
frankvnk 9:3e117b89c705 82
frankvnk 9:3e117b89c705 83 TFT.set_orientation(2);
frankvnk 9:3e117b89c705 84 TFT.set_font((unsigned char*) Arial24x23);
frankvnk 9:3e117b89c705 85 TFT.locate(10,10);
frankvnk 9:3e117b89c705 86 TFT.printf("Hi mbed");
frankvnk 9:3e117b89c705 87 wait(2);
frankvnk 9:3e117b89c705 88
frankvnk 9:3e117b89c705 89 // mbed logo
frankvnk 9:3e117b89c705 90 TFT.set_orientation(1);
frankvnk 9:3e117b89c705 91 TFT.background(Black);
frankvnk 9:3e117b89c705 92 TFT.cls();
frankvnk 9:3e117b89c705 93 TFT.Bitmap(90,90,172,55,p1);
frankvnk 9:3e117b89c705 94
frankvnk 9:3e117b89c705 95 // Read LCD ID
frankvnk 9:3e117b89c705 96 TFT.set_orientation(0);
frankvnk 9:3e117b89c705 97 LCD_id = TFT.Read_ID();
frankvnk 9:3e117b89c705 98 TFT.locate(10,10);
frankvnk 9:3e117b89c705 99 TFT.printf("LCD: ILI%04X", LCD_id);
frankvnk 9:3e117b89c705 100 wait(2);
frankvnk 9:3e117b89c705 101
frankvnk 9:3e117b89c705 102 // RGB color wheel demo (cycle through all colors)
frankvnk 9:3e117b89c705 103 TFT.cls();
frankvnk 9:3e117b89c705 104 TFT.foreground(Yellow); // set chars to yellow
frankvnk 9:3e117b89c705 105 TFT.set_font((unsigned char*) Arial12x12);
frankvnk 9:3e117b89c705 106 TFT.locate(10,10);
frankvnk 9:3e117b89c705 107 TFT.printf("RGB color wheel (2x)");
frankvnk 9:3e117b89c705 108
frankvnk 9:3e117b89c705 109 uint8_t r = 255, g = 0, b = 0, step = 1, i;
frankvnk 9:3e117b89c705 110 for (i=0;i<2;i++)
frankvnk 9:3e117b89c705 111 {
frankvnk 9:3e117b89c705 112 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 113 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 114 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 115 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 116 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 117 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 118 }
frankvnk 9:3e117b89c705 119 wait(2);
frankvnk 9:3e117b89c705 120
frankvnk 9:3e117b89c705 121
frankvnk 9:3e117b89c705 122 // Touchpanel demo
frankvnk 9:3e117b89c705 123 TP.TouchPanel_Calibrate();
frankvnk 9:3e117b89c705 124 TFT.set_font((unsigned char*) Arial12x12);
frankvnk 9:3e117b89c705 125 TFT.set_orientation(0);
frankvnk 9:3e117b89c705 126 TFT.locate(0,0);
frankvnk 9:3e117b89c705 127 TFT.printf(" X:");
frankvnk 9:3e117b89c705 128 TFT.locate(70,0);
frankvnk 9:3e117b89c705 129 TFT.printf(" Y:");
frankvnk 9:3e117b89c705 130 while (1)
frankvnk 9:3e117b89c705 131 {
frankvnk 9:3e117b89c705 132 if (!TP._tp_irq)
frankvnk 9:3e117b89c705 133 {
frankvnk 9:3e117b89c705 134 if (TP.Read_Ads7846())
frankvnk 9:3e117b89c705 135 {
frankvnk 9:3e117b89c705 136 TP.getDisplayPoint() ;
frankvnk 9:3e117b89c705 137 TP.TP_DrawPoint(TP.display.x,TP.display.y, Blue);
frankvnk 9:3e117b89c705 138 TFT.locate(25,0);
frankvnk 9:3e117b89c705 139 TFT.printf("%03d",TP.display.x);
frankvnk 9:3e117b89c705 140 TFT.locate(95,0);
frankvnk 9:3e117b89c705 141 TFT.printf("%03d",TP.display.y);
frankvnk 9:3e117b89c705 142 // Touchscreen area is larger than LCD area.
frankvnk 9:3e117b89c705 143 // We use the bottom area outside the LCD area to clear the screen (y value > 320).
frankvnk 9:3e117b89c705 144 if (TP.display.y > 320)
frankvnk 9:3e117b89c705 145 {
frankvnk 9:3e117b89c705 146 TFT.cls();
frankvnk 9:3e117b89c705 147 TFT.locate(0,0);
frankvnk 9:3e117b89c705 148 TFT.printf(" X:");
frankvnk 9:3e117b89c705 149 TFT.locate(70,0);
frankvnk 9:3e117b89c705 150 TFT.printf(" Y:");
frankvnk 9:3e117b89c705 151 }
frankvnk 9:3e117b89c705 152 }
frankvnk 9:3e117b89c705 153 }
frankvnk 9:3e117b89c705 154 }
frankvnk 9:3e117b89c705 155 }