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:
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 }