This program present workng library/class implementation/driver for touch panel controler xpt2046 or ads7843. Calbration in the future. I use in this program TFTLCD Library http://developer.mbed.org/users/ttodorov/. Thank You Todor

Dependencies:   MyTouch TFTLCD mbed

main.cpp

Committer:
micchassek
Date:
2014-11-28
Revision:
0:a6a47eb54f87
Child:
1:ea35f77decd1

File content as of revision 0:a6a47eb54f87:

#include "mbed.h"
#include "ssd1289.h"
#include "MyTouch.h"

// **********************************************************************
// make bus for lcd data
//* // prepare the data bus for writing commands and pixel data
BusOut lcdDataBus( PC_0, PC_1, PC_2, PC_3, PC_4, PC_5, PC_6, PC_7, PC_8, PC_9, PC_10, PC_11, PC_12, PC_13, PC_14, PC_15 ); // 16 pins pc13-pb7

void vISRTouchIRQ(void) ;
volatile unsigned int x, y ;

// create LCD class instance
SSD1289_LCD lcd( PA_11, PA_12, PB_13, PB_14, &lcdDataBus ); //CS, RESET, RS, WR, DATA_PORT
// create MYTOUCH class instance
MYTOUCH MyTouch( PA_7, PA_6, PA_5, PB_6, PB_8, USE_12BITS, &mytouch_irq_handler); // mosi, miso, sck, cs, irq pin, mode, pointer to touch panel irq handler

void mytouch_irq_handler(void)
    {
        float xf, yf ;
        x = MyTouch.TP_GetX();
        y = MyTouch.TP_GetY();
        xf = x ;
        yf = y ;
        xf = (xf/1024)*320 ;
        yf = (yf/1024)*240 ;
        x = (int)xf ;
        y = (int)yf ;
        lcd.DrawCircle(x,y,2, COLOR_GREEN) ;
        wait(0.2);
    }
// **********************************************************************


int main() {
    char text[24] ;
    x = 0 ;
    y = 0 ;
    // initialize display - place it in standard portrait mode and set background to black and
    //                      foreground to white color.
    lcd.Initialize(LANDSCAPE, RGB16);
    lcd.ClearScreen() ;
    lcd.FillScreen(COLOR_BLACK) ;
    lcd.SetForeground(COLOR_YELLOW);
    lcd.SetBackground(COLOR_BLACK) ;
    
    // set current font to the smallest 8x12 pixels font.
    lcd.SetFont(&TerminusFont ) ;    // print something on the screen
    while(1)
        {        
        sprintf(text,"X%d Y%d    ", x, y ) ;
        lcd.Print(text, 15, 15 ) ;
        wait(0.5) ;
        }
}