中级会员
 
- 积分
- 369
- 金钱
- 369
- 注册时间
- 2018-1-11
- 在线时间
- 74 小时
|

楼主 |
发表于 2018-1-13 15:07:29
|
显示全部楼层
是这个吗?//é¨Ãè′¥ÃtÆá(2éóÃ2éÑˉ·½ê½)
//mode:0,Õy3£é¨Ãè.
//·μ»ØÖμ:μ±Ç°′¥Æá×′ì¬.
//0,′¥ÆáÎT′¥Ãt;1,′¥ÆáóD′¥Ãt
u8 GT9147_Scan(u8 mode)
{
u8 buf[4];
u8 i=0;
u8 res=0;
u8 temp;
u8 tempsta;
static u8 t=0;//¿ØÖÆ2éÑˉ¼ä¸ô,′ó¶ø½μμíCPUÕ¼óÃÂê
t++;
if((t%10)==0||t<10)//¿ÕÏDê±,ÿ½øèë10′ÎCTP_Scanoˉêy2żì2a1′Î,′ó¶ø½úê¡CPUê1óÃÂê
{
GT9147_RD_Reg(GT_GSTID_REG,&mode,1); //¶áè¡′¥ÃtμãμÄ×′ì¬
if(mode&0X80&&((mode&0XF)<6))
{
temp=0;
GT9147_WR_Reg(GT_GSTID_REG,&temp,1);//Çå±êÖ¾
}
if((mode&0XF)&&((mode&0XF)<6))
{
temp=0XFF<<(mode&0XF); //½«μãμĸöêy×a»»Îa1μÄλêy,Æ¥Åätp_dev.sta¶¨òå
tempsta=tp_dev.sta; //±£′æμ±Ç°μÄtp_dev.staÖμ
tp_dev.sta=(~temp)|TP_PRES_DOWN|TP_CATH_PRES;
tp_dev.x[4]=tp_dev.x[0]; //±£′æ′¥μã0μÄêy¾Y
tp_dev.y[4]=tp_dev.y[0];
for(i=0;i<5;i++)
{
if(tp_dev.sta&(1<<i)) //′¥ÃtóDD§?
{
GT9147_RD_Reg(GT9147_TPX_TBL[i],buf,4); //¶áè¡XY×ø±êÖμ
if(lcddev.id==0X5510) //4.3′ç800*480 MCUÆá
{
if(tp_dev.touchtype&0X01)//oáÆá
{
tp_dev.y[i]=((u16)buf[1]<<8)+buf[0];
tp_dev.x[i]=800-(((u16)buf[3]<<8)+buf[2]);
}else
{
tp_dev.x[i]=((u16)buf[1]<<8)+buf[0];
tp_dev.y[i]=((u16)buf[3]<<8)+buf[2];
}
}else if(lcddev.id==0X4342) //4.3′ç480*272 RGBÆá
{
if(tp_dev.touchtype&0X01)//oáÆá
{
tp_dev.x[i]=(((u16)buf[1]<<8)+buf[0]);
tp_dev.y[i]=(((u16)buf[3]<<8)+buf[2]);
}else
{
tp_dev.y[i]=((u16)buf[1]<<8)+buf[0];
tp_dev.x[i]=272-(((u16)buf[3]<<8)+buf[2]);
}
}
}
}
res=1;
if(tp_dev.x[0]>lcddev.width||tp_dev.y[0]>lcddev.height)//·Ç·¨êy¾Y(×ø±ê3¬3öáË)
{
if((mode&0XF)>1) //óDÆäËûμãóDêy¾Y,Ôò¸′μú¶t¸ö′¥μãμÄêy¾Yμ½μúò»¸ö′¥μã.
{
tp_dev.x[0]=tp_dev.x[1];
tp_dev.y[0]=tp_dev.y[1];
t=0; //′¥·¢ò»′Î,Ôò»á×îéùá¬Dø¼à2a10′Î,′ó¶øìá¸ßÃüÖDÂê
}else //·Ç·¨êy¾Y,ÔòoöÂÔ′Ë′Îêy¾Y(»1Ô-Ô-à′μÄ)
{
tp_dev.x[0]=tp_dev.x[4];
tp_dev.y[0]=tp_dev.y[4];
mode=0X80;
tp_dev.sta=tempsta; //»Ö¸′tp_dev.sta
}
}else t=0; //′¥·¢ò»′Î,Ôò»á×îéùá¬Dø¼à2a10′Î,′ó¶øìá¸ßÃüÖDÂê
}
}
if((mode&0X8F)==0X80)//ÎT′¥Ãtμã°′ÏÂ
{
if(tp_dev.sta&TP_PRES_DOWN) //֮ǰêDZ»°′ÏÂμÄ
{
tp_dev.sta&=~(1<<7); //±ê¼Ç°′¼üËé¿a
}else //֮ǰ¾íûóD±»°′ÏÂ
{
tp_dev.x[0]=0xffff;
tp_dev.y[0]=0xffff;
tp_dev.sta&=0XE0; //Çå3yμãóDD§±ê¼Ç
}
}
if(t>240)t=10;//ÖØDÂ′ó10¿aê¼¼Æêy
return res;
}
|
|