LPC1768 Mini-DK board with 2.8" SPI TFT and SPI touch
Dependencies: Mini-DK SDFileSystem mbed
Fork of LPC1768_Mini-DK by
Diff: main.cpp
- Revision:
- 2:d0acbd263ec7
- Parent:
- 1:557df792279c
- Child:
- 3:fb4d62b5ffb3
--- a/main.cpp Wed Dec 12 12:42:22 2012 +0000 +++ b/main.cpp Thu Jan 03 10:54:09 2013 +0000 @@ -1,165 +1,164 @@ -#include "stdio.h" -#include "mbed.h" -#include "SPI_TFT.h" -#include "string" -#include "Arial12x12.h" -#include "Arial24x23.h" -#include "Arial28x28.h" -#include "font_big.h" -#include "Touch.h" - -extern unsigned char p1[]; // the mbed logo -#define RGB565CONVERT(red, green, blue) (uint16_t)( (( red >> 3 ) << 11 ) | (( green >> 2 ) << 5 ) | ( blue >> 3 )) - -// ADS7843 -> mosi, miso, sclk, cs, irq - TFT -> mosi, miso, sclk, cs, reset -TouchScreenADS7843 TFT(p5 ,p6 ,p7 ,p8 ,P2_13 ,p11, p12, p13, p14, p15,"TFT"); - -// (To be modified) put these global vars back in Touch.cpp/Touch.h -Matrix matrix; -Coordinate display; -Coordinate screen; - -int main() -{ - unsigned char Ads7846_status; - unsigned short LCD_id; - TFT.claim(stdout); // send stdout to the TFT display - TFT.TP_Init(); - - 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); - printf(" Hello Mbed 0"); - TFT.set_orientation(1); - TFT.locate(0,0); - printf(" Hello Mbed 1"); - TFT.set_orientation(2); - TFT.locate(0,0); - printf(" Hello Mbed 2"); - TFT.set_orientation(3); - TFT.locate(0,0); - 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); - - // 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 (5x)"); - - uint8_t r = 255, g = 0, b = 0, step = 5, i; - for (i=0;i<5;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 - TFT.TouchPanel_Calibrate(&matrix); - TFT.set_font((unsigned char*) Arial12x12); - TFT.set_orientation(0); - TFT.cls(); - TFT.locate(0,0); - TFT.printf(" X:"); - TFT.locate(70,0); - TFT.printf(" Y:"); - - while (1) - { - if (!TFT._tp_irq) - { - Ads7846_status = TFT.Read_Ads7846(&screen); - if (Ads7846_status) - { - TFT.getDisplayPoint(&display, &screen, &matrix ) ; - TFT.TP_DrawPoint(display.x,display.y, Blue); -// TFT.rect(display.x,display.y,1,1,Red); - TFT.locate(25,0); - printf("%03d",display.x); - TFT.locate(95,0); - printf("%03d",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 (display.y > 320) - { - TFT.cls(); - TFT.locate(0,0); - TFT.printf(" X:"); - TFT.locate(70,0); - TFT.printf(" Y:"); - - } - } - } - } -} +#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 +TouchScreenADS7843 TP(TP_SDI ,TP_SDO ,TP_SCK ,TP_CS ,TP_IRQ); + +// (To be modified) put these global vars back in Touch.cpp/Touch.h +//Matrix matrix; +//Coordinate display; +//Coordinate screen; + +int main() +{ + unsigned char Ads7846_status; + 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); + printf(" Hello Mbed 0"); + TFT.set_orientation(1); + TFT.locate(0,0); + printf(" Hello Mbed 1"); + TFT.set_orientation(2); + TFT.locate(0,0); + printf(" Hello Mbed 2"); + TFT.set_orientation(3); + TFT.locate(0,0); + 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 = 5, 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.cls(); + TFT.locate(0,0); + TFT.printf(" X:"); + TFT.locate(70,0); + TFT.printf(" Y:"); + while (1) + { + if (!TP._tp_irq) + { + Ads7846_status = TP.Read_Ads7846(&TP.screen); + if (Ads7846_status) + { + TP.getDisplayPoint() ; +// TP.TP_DrawPoint(display.x,display.y, Blue); + TFT.rect(TP.display.x,TP.display.y,1,1,Red); + TFT.locate(25,0); + printf("%03d",TP.display.x); + TFT.locate(95,0); + 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:"); + } + } + } + } +}