附件的文件里有touch.c,touch.h和touch_c.c,touch_c.h
touch.c,touch.h是用
[mw_shl_code=c,true] displayPtr->x = ( (touch_para.An * screenPtr->x) +
(touch_para.Bn * screenPtr->y) +
touch_para.Cn
) ;
displayPtr->y = ((touch_para.Dn * screenPtr->x) +
(touch_para.En * screenPtr->y) +
touch_para.Fn
);
[/mw_shl_code]
来转换坐标的
touch_c.c,touch_c.h是用原子例程的方法换坐标
问题一:使用touch.c,touch.h的程序触摸点会随压力压力变化漂移
问题二:使用touch_c.c,touch_c.h移植了原子例程的方案,程序整体和例程差不多,虽然不会漂移但效果没有例程好
感觉移植后的程序点比较散没有原程序那么连续
好像SPI通讯部分也许有点问题
感兴趣帮忙看看
[mw_shl_code=c,true]static u8 Touch_SPI_RWData(u8 tsr_Write)
{
u8 tsr_8;
for(tsr_8=8;tsr_8>0;tsr_8--)
{
Tou_MOSI=((tsr_Write&0x80)>>7);
Tou_CLK=0;
Tou_CLK=1;
tsr_Write<<=1;
tsr_Write|=Tou_MISO;
}
Tou_CLK=0;
return tsr_Write;
}
static void TouDelayUS(vu32 cnt)
{
uint16_t i;
for(i = 0;i<cnt;i++)
{
uint8_t us = 12; /* ?è??????12???ó????1???? */
while (us--) /* ??1???? */
{
;
}
}
}
/*******************************************************************************/
static int Read_touch_ad(void)
{
unsigned short buf;
buf=Touch_SPI_RWData(0x00)<<8;
// TouDelayUS(1);
buf|=Touch_SPI_RWData(0x00);
return (buf>>3)&0Xfff;
}
int Read_XorY(u8 rxy_cmd)
{
int rx_i;
Tou_CS=0;
TouDelayUS(1);
Touch_SPI_RWData(rxy_cmd);
TouDelayUS(8);
rx_i=Read_touch_ad();
Tou_CS=1;
return rx_i;
}
[/mw_shl_code]
|