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:
Thu Jan 03 10:54:09 2013 +0000
Revision:
2:d0acbd263ec7
Parent:
1:557df792279c
Child:
3:fb4d62b5ffb3
ONLY FOR TEST

Who changed what in which revision?

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