LPC1768 Mini-DK board with 2.8" SPI TFT and SPI touch
Dependencies: Mini-DK SDFileSystem mbed
Fork of LPC1768_Mini-DK by
main.cpp
- Committer:
- frankvnk
- Date:
- 2013-01-04
- Revision:
- 7:ffdd4e75b366
- Parent:
- 6:b547fb6c1095
File content as of revision 7:ffdd4e75b366:
#include "stdio.h" #include "mbed.h" #include "Mini_DK.h" //#include "string" extern unsigned char p1[]; // the mbed logo #define RGB565CONVERT(red, green, blue) (uint16_t)( (( red >> 3 ) << 11 ) | (( green >> 2 ) << 5 ) | ( blue >> 3 )) DigitalOut led(DK_LED1); // TFT -> mosi, miso, sclk, cs SPI_TFT TFT(LCD_SDI, LCD_SDO, LCD_SCK, LCD_CS,"TFT"); // ADS7843 -> mosi, miso, sclk, cs, irq, SPI_TFT TouchScreenADS7843 TP(TP_SDI ,TP_SDO ,TP_SCK ,TP_CS ,TP_IRQ, &TFT); int main() { unsigned short LCD_id; TFT.claim(stdout); // send stdout to the TFT display TFT.background(Black); // set background to black TFT.foreground(White); // set chars to white // LCD demo // first show the 4 directions TFT.cls(); TFT.set_font((unsigned char*) Arial12x12); TFT.set_orientation(0); TFT.locate(0,0); TFT.printf(" Hello Mbed 0"); TFT.set_orientation(1); TFT.locate(0,0); TFT.printf(" Hello Mbed 1"); TFT.set_orientation(2); TFT.locate(0,0); TFT.printf(" Hello Mbed 2"); TFT.set_orientation(3); TFT.locate(0,0); TFT.printf(" Hello Mbed 3"); TFT.set_orientation(1); TFT.set_font((unsigned char*) Arial24x23); TFT.locate(50,100); TFT.printf("TFT orientation"); wait(2); // draw some graphics TFT.cls(); TFT.set_orientation(1); TFT.set_font((unsigned char*) Arial24x23); TFT.locate(120,115); TFT.printf("Graphic"); TFT.line(0,0,100,200,Green); TFT.rect(100,50,50,50,Red); TFT.fillrect(180,25,40,45,Blue); TFT.draw_ellipse(80, 150, 33, 33, White); TFT.fill_ellipse(80, 50, 33, 33, White); wait(2); TFT.cls(); TFT.draw_ellipse(160, 120, 100, 50, Yellow); TFT.draw_ellipse(160, 120, 100, 100, Blue); TFT.fill_ellipse(160, 120, 80, 40, Green); wait(2); // bigger text TFT.foreground(White); TFT.background(Blue); TFT.cls(); TFT.set_font((unsigned char*) Arial24x23); TFT.locate(0,0); TFT.printf("Different Fonts :"); TFT.set_font((unsigned char*) Neu42x35); TFT.locate(0,50); TFT.printf("Hello"); TFT.set_font((unsigned char*) Arial24x23); TFT.locate(50,100); TFT.printf("Hello"); TFT.set_font((unsigned char*) Arial12x12); TFT.locate(55,150); TFT.printf("Hello"); TFT.set_orientation(2); TFT.set_font((unsigned char*) Arial24x23); TFT.locate(10,10); TFT.printf("Hi mbed"); wait(2); // mbed logo TFT.set_orientation(1); TFT.background(Black); TFT.cls(); TFT.Bitmap(90,90,172,55,p1); // Read LCD ID TFT.set_orientation(0); LCD_id = TFT.Read_ID(); TFT.locate(10,10); TFT.printf("LCD: ILI%04X", LCD_id); wait(2); // RGB color wheel demo (cycle through all colors) TFT.cls(); TFT.foreground(Yellow); // set chars to yellow TFT.set_font((unsigned char*) Arial12x12); TFT.locate(10,10); TFT.printf("RGB color wheel (2x)"); uint8_t r = 255, g = 0, b = 0, step = 1, i; for (i=0;i<2;i++) { for(;g<255;g+=step) {TFT.fillrect(70,110,100,100,RGB565CONVERT(r, g, b));} // Cycle from FF0000 to FFFF00 : red to yellow for(;r>0;r-=step) {TFT.fillrect(70,110,100,100,RGB565CONVERT(r, g, b));} // Cycle from FFFF00 to 00FF00 : yellow to green for(;b<255;b+=step) {TFT.fillrect(70,110,100,100,RGB565CONVERT(r, g, b));} // Cycle from 00FF00 to 00FFFF : green to cyan for(;g>0;g-=step) {TFT.fillrect(70,110,100,100,RGB565CONVERT(r, g, b));} // Cycle from 00FFFF to 0000FF : cyan to blue for(;r<255;r+=step) {TFT.fillrect(70,110,100,100,RGB565CONVERT(r, g, b));} // Cycle from 0000FF to FF00FF : blue to purple for(;b>0;b-=step) {TFT.fillrect(70,110,100,100,RGB565CONVERT(r, g, b));} // Cycle from FF00FF to FF0000 : purple to red } wait(2); // Touchpanel demo TP.TouchPanel_Calibrate(); TFT.set_font((unsigned char*) Arial12x12); TFT.set_orientation(0); TFT.locate(0,0); TFT.printf(" X:"); TFT.locate(70,0); TFT.printf(" Y:"); while (1) { if (!TP._tp_irq) { if (TP.Read_Ads7846()) { TP.getDisplayPoint() ; TP.TP_DrawPoint(TP.display.x,TP.display.y, Blue); TFT.locate(25,0); TFT.printf("%03d",TP.display.x); TFT.locate(95,0); TFT.printf("%03d",TP.display.y); // Touchscreen area is larger than LCD area. // We use the bottom area outside the LCD area to clear the screen (y value > 320). if (TP.display.y > 320) { TFT.cls(); TFT.locate(0,0); TFT.printf(" X:"); TFT.locate(70,0); TFT.printf(" Y:"); } } } } }