سلام به همه دوستان
چند وقت قبل سر یه پروژه نیاز بود از این ای سی ها استفاده کنم
بنابراین یه هدر تروتمیز + ارتباط نرم افزاری واسش نوشتم که اینجا میذارم تا همه ازش استفاده کنن
فقط شما باید اول هدر این پایه هارو طبق نیاز خودتون اول هدر تغییر بدید
این هدر رو با lpc1768 تست شده و کامل توسط خودم جواب گرفته شده.
خب اینارو که طبق نیازتون تغیر دادید تو هدر بعدش تو مینتون فقط اینکلود میکنید هدر رو و
ابتدا باید تابع
فراخوانی بشه و سپس تا بع
که باعث میشه ای سی در صورت گرفتن لمس جدید یه اینتر اپ بده
و تیکه کد بالا وایمیسه تا نقطه جدید لمس بشه و بعد لمس شدن مقدار x و y رو تو دوتا متغییر ذخیره میکنه و بعدشم دوبار ای سیو برای مختصات جدید اماده میکنه
فقط استفاده کردید , یه فاتحه واسه شهدا بخونید دمتون گرم.
اینم کل فایل هدر
بازم اگه مشکلی یا سوالی بود در خدمتم... :rolleyes:
چند وقت قبل سر یه پروژه نیاز بود از این ای سی ها استفاده کنم
بنابراین یه هدر تروتمیز + ارتباط نرم افزاری واسش نوشتم که اینجا میذارم تا همه ازش استفاده کنن
فقط شما باید اول هدر این پایه هارو طبق نیاز خودتون اول هدر تغییر بدید
این هدر رو با lpc1768 تست شده و کامل توسط خودم جواب گرفته شده.
کد:
//****************** XPT2046 Library By:Alireza Hammamizadeh ***************** //******************************** Alireza.hammamizadeh@yahoo.com ********************* //*************************************************************************************** //*************************************************************************************** //*************************************************************************************** //*************************************************************************************** #define XPT2046_DCLK(x) {if(x) LPC_GPIO1->FIOSET|=(1<<10); else LPC_GPIO1->FIOCLR|=(1<<10); } #define XPT2046_DCLK_OUTPUT() LPC_GPIO1->FIODIR|=(1<<10) //*************************************************************************************** #define XPT2046_CS(x) {if(x) LPC_GPIO1->FIOSET|=(1<<14); else LPC_GPIO1->FIOCLR|=(1<<14); } #define XPT2046_CS_OUTPUT() LPC_GPIO1->FIODIR|=(1<<14) //*************************************************************************************** #define XPT2046_DIN(x) {if(x) LPC_GPIO1->FIOSET|=1<<18; else LPC_GPIO1->FIOCLR|=1<<18; } #define XPT2046_DIN_OUTPUT() LPC_GPIO1->FIODIR|=(1<<18) //*************************************************************************************** #define XPT2046_DIO() (LPC_GPIO1->FIOPIN&(1<<16)) #define XPT2046_DIO_INPUT() LPC_GPIO1->FIODIR&=~(1<<16) //*************************************************************************************** #define XPT2046_PENIRQ() (LPC_GPIO1->FIOPIN&(1<<17)) #define XPT2046_PENIRQ_INPUT() LPC_GPIO1->FIODIR&=~(1<<17) //*************************************************************************************** //***************************************************************************************
ابتدا باید تابع
کد:
XPT2046_SPI_INT( );
کد:
XPT2046_SEND(CMD_ENABLE_PENIRQ);
کد:
while(XPT2046_PENIRQ()); datax= XPT2046_SEND(CMD_X_POSITION); datay= XPT2046_SEND(CMD_Y_POSITION); XPT2046_SEND(CMD_ENABLE_PENIRQ);
فقط استفاده کردید , یه فاتحه واسه شهدا بخونید دمتون گرم.
اینم کل فایل هدر
کد:
//****************** XPT2046 Library By:Alireza Hammamizadeh ***************** //******************************** Alireza.hammamizadeh@yahoo.com ********************* //*************************************************************************************** //*************************************************************************************** //*************************************************************************************** //*************************************************************************************** #define XPT2046_DCLK(x) {if(x) LPC_GPIO1->FIOSET|=(1<<10); else LPC_GPIO1->FIOCLR|=(1<<10); } #define XPT2046_DCLK_OUTPUT() LPC_GPIO1->FIODIR|=(1<<10) //*************************************************************************************** #define XPT2046_CS(x) {if(x) LPC_GPIO1->FIOSET|=(1<<14); else LPC_GPIO1->FIOCLR|=(1<<14); } #define XPT2046_CS_OUTPUT() LPC_GPIO1->FIODIR|=(1<<14) //*************************************************************************************** #define XPT2046_DIN(x) {if(x) LPC_GPIO1->FIOSET|=1<<18; else LPC_GPIO1->FIOCLR|=1<<18; } #define XPT2046_DIN_OUTPUT() LPC_GPIO1->FIODIR|=(1<<18) //*************************************************************************************** #define XPT2046_DIO() (LPC_GPIO1->FIOPIN&(1<<16)) #define XPT2046_DIO_INPUT() LPC_GPIO1->FIODIR&=~(1<<16) //*************************************************************************************** #define XPT2046_PENIRQ() (LPC_GPIO1->FIOPIN&(1<<17)) #define XPT2046_PENIRQ_INPUT() LPC_GPIO1->FIODIR&=~(1<<17) //*************************************************************************************** //*************************************************************************************** //*************************************************************************************** //*************************************************************************************** // xpt registers #define ADS_CTRL_PD0 (1 << 0) // PD0 #define ADS_CTRL_PD1 (1 << 1) // PD1 #define ADS_CTRL_DFR (1 << 2) // SER/DFR #define ADS_CTRL_EIGHT_BITS_MOD (1 << 3) // Mode #define ADS_CTRL_START (1 << 7) // Start Bit #define ADS_CTRL_SWITCH_SHIFT 4 // Address setting // Get X position command #define CMD_X_POSITION ((1 << ADS_CTRL_SWITCH_SHIFT) | ADS_CTRL_START | ADS_CTRL_PD0 | ADS_CTRL_PD1) // Get Y position command #define CMD_Y_POSITION ((5 << ADS_CTRL_SWITCH_SHIFT) | ADS_CTRL_START | ADS_CTRL_PD0 | ADS_CTRL_PD1) // Enable penIRQ #define CMD_ENABLE_PENIRQ ((1 << ADS_CTRL_SWITCH_SHIFT) | ADS_CTRL_START) // delay #define XPT2046_Delay() 1 //*************************************************************************************** //*************************************************************************************** //*************************************************************************************** void XPT2046_SPI_INT( void ) { XPT2046_DCLK_OUTPUT(); XPT2046_DCLK(0); XPT2046_CS_OUTPUT(); XPT2046_CS(1); XPT2046_DIN_OUTPUT(); XPT2046_DIN(0); XPT2046_DIO_INPUT(); XPT2046_PENIRQ_INPUT(); return; }//void XPT2046_SPI_INT( void ) unsigned int XPT2046_SEND(unsigned char cmd ) { unsigned int data=0; unsigned char j=0,gbyt=11;; //***************************//strat connect XPT2046_DCLK(0); XPT2046_CS(0); XPT2046_DIN(0); while(XPT2046_DIO());// wait unti xpt get answer XPT2046_Delay(); for(j=8;j>=1;j--) { if(cmd & ( 1<< ( j - 1 ) )){ XPT2046_DIN(1);} else XPT2046_DIN(0); XPT2046_DCLK(1); XPT2046_Delay(); XPT2046_DCLK(0); XPT2046_Delay(); } XPT2046_DIN(0); XPT2046_Delay(); //************************** send byte to xpt finished gbyt=12; for(j=9;j>=1;j--) { XPT2046_DCLK(1); XPT2046_Delay(); XPT2046_DCLK(0); XPT2046_Delay(); if(XPT2046_DIO()) {data|=1<<(gbyt-1);} gbyt--; } gbyt=5; for(j=9;j>=1;j--) { XPT2046_DCLK(1); XPT2046_Delay(); XPT2046_DCLK(0); XPT2046_Delay(); if(XPT2046_DIO()&&gbyt!=0) {data|=1<<(gbyt-1);} gbyt--; } //************************** end connect XPT2046_DCLK(0); XPT2046_DIN(0); XPT2046_CS(1); return data; } //*************************************************************************************** //****************** XPT2046 Library By:Alireza Hammamizadeh ***************** //******************************** Alireza.hammamizadeh@yahoo.com ********************* //*************************************************************************************** //*************************************************************************************** //*************************************************************************************** //***************************************************************************************
دیدگاه