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 09:52:16 2013 +0000
Revision:
7:ffdd4e75b366
Parent:
6:b547fb6c1095
Code cleanup / comments added

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