Helloworld program for TFT320_QVT Touchscreen module

Dependencies:   TFTLCD UTouch mbed

Fork of TFT_320QVT_Window_Drag_Demo by Dmitry Shtatnov

Committer:
rpocc
Date:
Mon Jan 11 10:36:30 2016 +0000
Revision:
2:2f4024b1aefd
Parent:
0:dc51da7c52b1
First release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rpocc 0:dc51da7c52b1 1 /** \file main.cpp
rpocc 2:2f4024b1aefd 2 * \brief mbed Hello World demo for TFT-320QVT module with SSD1289 and XPT2046 touchscreen.
rpocc 0:dc51da7c52b1 3 *
rpocc 0:dc51da7c52b1 4 * \copyright GNU Public License, v2. or later
rpocc 0:dc51da7c52b1 5 * Creates a window, which can be dragged within the screen, and can be closed
rpocc 0:dc51da7c52b1 6 * with the standard WIndows-style "x"-button.
rpocc 0:dc51da7c52b1 7 * Window appearance: initial position, size and colors can be changed via defines
rpocc 0:dc51da7c52b1 8 * Window in this demo can not be moved beyond the screen area except of the right side.
rpocc 0:dc51da7c52b1 9 * May require a touchscreen calibration procedure using UTouchCD.h
rpocc 0:dc51da7c52b1 10 *
rpocc 0:dc51da7c52b1 11 * Made by Dmitry Shtatnov, SSSR Labs
rpocc 0:dc51da7c52b1 12 * http://modularsynth.ru/
rpocc 0:dc51da7c52b1 13 ***************************************************************************************/
rpocc 0:dc51da7c52b1 14
rpocc 0:dc51da7c52b1 15 #include "mbed.h"
rpocc 0:dc51da7c52b1 16 #include "ssd1289.h"
rpocc 0:dc51da7c52b1 17 #include "UTouch.h"
rpocc 0:dc51da7c52b1 18
rpocc 0:dc51da7c52b1 19 #define C_WINDOW_BODY 0xCCCCCC
rpocc 0:dc51da7c52b1 20 #define C_WINDOW_HIGHLIGHT 0xDDDDDD
rpocc 0:dc51da7c52b1 21 #define C_WINDOW_SHADOW 0xBBBBBB
rpocc 0:dc51da7c52b1 22 #define C_WINDOW_TITLE_BAR 0x0066DD
rpocc 2:2f4024b1aefd 23 #define C_DESKTOP_BG 0x000000
rpocc 0:dc51da7c52b1 24
rpocc 0:dc51da7c52b1 25 #define WINDOW_WIDTH 150
rpocc 0:dc51da7c52b1 26 #define WINDOW_HEIGHT 100
rpocc 0:dc51da7c52b1 27
rpocc 0:dc51da7c52b1 28 PortOut LCDPA(PortA,0xFF00);
rpocc 0:dc51da7c52b1 29 PortOut LCDPC(PortC,0x00FF);
rpocc 0:dc51da7c52b1 30 // CS, REST, RS, WR, DATA, BL, RD
rpocc 0:dc51da7c52b1 31 SSD1289_LCD myGLCD(PB_3, PB_4, PB_0, PB_1, &LCDPA, &LCDPC, NC, PB_2);
rpocc 0:dc51da7c52b1 32
rpocc 0:dc51da7c52b1 33 UTouch myTouch(PB_9, PB_8, PB_7, PB_6, PB_5);
rpocc 2:2f4024b1aefd 34 long x, y, oldx, oldy, wx, wy;
rpocc 0:dc51da7c52b1 35 float p;
rpocc 0:dc51da7c52b1 36 uint8_t av_cnt;
rpocc 0:dc51da7c52b1 37 int16_t rx, ry, rz1, rz2, pressure;
rpocc 0:dc51da7c52b1 38 char xc[10], yc[10], z1c[10], z2c[10], str[15];
rpocc 0:dc51da7c52b1 39 bool drag = false;
rpocc 2:2f4024b1aefd 40 bool loop = true;
rpocc 0:dc51da7c52b1 41
rpocc 0:dc51da7c52b1 42 bool title(uint16_t xcur, uint16_t ycur, uint16_t xwin, uint16_t ywin) {
rpocc 0:dc51da7c52b1 43 if((xcur>xwin+2)&&(xcur<xwin+WINDOW_WIDTH-18)&&(ycur>ywin+2)&&(ycur<ywin+22)) return true;
rpocc 0:dc51da7c52b1 44 else return false;
rpocc 0:dc51da7c52b1 45 }
rpocc 0:dc51da7c52b1 46
rpocc 0:dc51da7c52b1 47 bool close(uint16_t xcur, uint16_t ycur, uint16_t xwin, uint16_t ywin) {
rpocc 0:dc51da7c52b1 48 if((xcur>xwin+WINDOW_WIDTH-19)&&(xcur<xwin+WINDOW_WIDTH-1)&&(ycur>ywin+2)&&(ycur<ywin+21)) return true;
rpocc 0:dc51da7c52b1 49 else return false;
rpocc 0:dc51da7c52b1 50 }
rpocc 0:dc51da7c52b1 51
rpocc 0:dc51da7c52b1 52 void drawBox(uint16_t xpos, uint16_t ypos, uint16_t xsize, uint16_t ysize) {
rpocc 0:dc51da7c52b1 53 myGLCD.FillRect(xpos,ypos,xpos+xsize-1,ypos+ysize-1,C_WINDOW_BODY);
rpocc 0:dc51da7c52b1 54 myGLCD.DrawHLine(xpos,ypos,xsize,C_WINDOW_HIGHLIGHT);
rpocc 0:dc51da7c52b1 55 myGLCD.DrawHLine(xpos+1,ypos+ysize-1,xsize-1,C_WINDOW_SHADOW);
rpocc 0:dc51da7c52b1 56 myGLCD.DrawVLine(xpos,ypos,ysize,C_WINDOW_HIGHLIGHT);
rpocc 0:dc51da7c52b1 57 myGLCD.DrawVLine(xpos+xsize-1,ypos,ysize-1,C_WINDOW_SHADOW);
rpocc 0:dc51da7c52b1 58 }
rpocc 0:dc51da7c52b1 59
rpocc 0:dc51da7c52b1 60 void drawWindow(uint16_t xpos, uint16_t ypos, uint16_t xsize, uint16_t ysize) {
rpocc 0:dc51da7c52b1 61 drawBox(xpos, ypos, xsize, ysize);
rpocc 0:dc51da7c52b1 62 myGLCD.FillRect(xpos+2,ypos+2,xpos+xsize-3,ypos+21,C_WINDOW_TITLE_BAR);
rpocc 0:dc51da7c52b1 63 drawBox(xpos+xsize-21,ypos+3,18,18);
rpocc 0:dc51da7c52b1 64 myGLCD.DrawLine(xpos+xsize-18,ypos+6,xpos+xsize-7,ypos+17,COLOR_BLACK);
rpocc 0:dc51da7c52b1 65 myGLCD.DrawLine(xpos+xsize-18,ypos+17,xpos+xsize-7,ypos+6,COLOR_BLACK);
rpocc 2:2f4024b1aefd 66 myGLCD.SetBackground(C_WINDOW_TITLE_BAR);
rpocc 2:2f4024b1aefd 67 myGLCD.SetForeground(COLOR_WHITE);
rpocc 2:2f4024b1aefd 68 myGLCD.Print("Hello World", xpos+6,ypos+6);
rpocc 0:dc51da7c52b1 69 }
rpocc 0:dc51da7c52b1 70 int main() {
rpocc 0:dc51da7c52b1 71 myGLCD.Initialize();
rpocc 0:dc51da7c52b1 72 myGLCD.SetBackground(COLOR_WHITE);
rpocc 0:dc51da7c52b1 73 myGLCD.SetForeground(COLOR_BLACK);
rpocc 2:2f4024b1aefd 74 myGLCD.FillScreen(C_DESKTOP_BG);
rpocc 0:dc51da7c52b1 75
rpocc 2:2f4024b1aefd 76 while(1==1)
rpocc 2:2f4024b1aefd 77 {
rpocc 2:2f4024b1aefd 78 wx = 85;
rpocc 2:2f4024b1aefd 79 wy = 70;
rpocc 2:2f4024b1aefd 80 loop = true;
rpocc 0:dc51da7c52b1 81 myGLCD.SetFont(&TerminusFont);
rpocc 0:dc51da7c52b1 82 myTouch.InitTouch();
rpocc 0:dc51da7c52b1 83 myTouch.SetPrecision(PREC_HI);
rpocc 2:2f4024b1aefd 84 drawWindow(wx,wy,WINDOW_WIDTH,WINDOW_HEIGHT);
rpocc 2:2f4024b1aefd 85 while(loop)
rpocc 2:2f4024b1aefd 86 {
rpocc 2:2f4024b1aefd 87 if (myTouch.DataAvailable() == true)
rpocc 0:dc51da7c52b1 88 {
rpocc 0:dc51da7c52b1 89 if(myTouch.Read()) {
rpocc 0:dc51da7c52b1 90 x = myTouch.GetX();
rpocc 0:dc51da7c52b1 91 y = myTouch.GetY();
rpocc 0:dc51da7c52b1 92 if((oldx!=x)&&(oldy!=y)) {
rpocc 0:dc51da7c52b1 93 if(drag) {
rpocc 2:2f4024b1aefd 94 myGLCD.FillRect(wx, wy, wx+WINDOW_WIDTH-1, wy+WINDOW_HEIGHT-1, C_DESKTOP_BG);
rpocc 0:dc51da7c52b1 95 wx=wx+x-oldx;
rpocc 0:dc51da7c52b1 96 wy=wy+y-oldy;
rpocc 0:dc51da7c52b1 97 drawWindow(wx,wy,WINDOW_WIDTH,WINDOW_HEIGHT);
rpocc 0:dc51da7c52b1 98 }
rpocc 0:dc51da7c52b1 99 if(title(x, y, wx, wy)) {
rpocc 0:dc51da7c52b1 100 drag = true;
rpocc 0:dc51da7c52b1 101 }
rpocc 0:dc51da7c52b1 102 if(close(x, y, wx, wy)) {
rpocc 2:2f4024b1aefd 103 myGLCD.FillRect(wx, wy, wx+WINDOW_WIDTH-1, wy+WINDOW_HEIGHT-1, C_DESKTOP_BG);
rpocc 2:2f4024b1aefd 104 loop = false;
rpocc 0:dc51da7c52b1 105 }
rpocc 0:dc51da7c52b1 106 oldx = x;
rpocc 0:dc51da7c52b1 107 oldy = y;
rpocc 0:dc51da7c52b1 108 }
rpocc 0:dc51da7c52b1 109 }
rpocc 0:dc51da7c52b1 110 }
rpocc 0:dc51da7c52b1 111 else {
rpocc 0:dc51da7c52b1 112 drag = false;
rpocc 0:dc51da7c52b1 113 }
rpocc 0:dc51da7c52b1 114 }
rpocc 0:dc51da7c52b1 115 }
rpocc 2:2f4024b1aefd 116 }