OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 281|回复: 3

如何做一个mcu4.3电容屏松手按键检测,不要操作系统的方法。

[复制链接]

  离线 

6

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2018-1-11
在线时间
13 小时
发表于 2018-1-12 09:52:45 | 显示全部楼层 |阅读模式
回复

使用道具 举报

  离线 

489

主题

9万

帖子

30

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
125162
金钱
125162
注册时间
2010-12-1
在线时间
1056 小时
发表于 2018-1-12 09:52:46 | 显示全部楼层
回复

使用道具 举报

  离线 

5

主题

30

帖子

0

精华

高级会员

Rank: 4

积分
557
金钱
557
注册时间
2017-8-21
在线时间
61 小时
发表于 2018-1-12 15:02:26 | 显示全部楼层
这个好像在GT9147SCAN.C的程序里已经做好了!楼主可以去找找!
回复

使用道具 举报

  离线 

6

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2018-1-11
在线时间
13 小时
 楼主| 发表于 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;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-4-27 08:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
/* */