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