OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4944|回复: 2

触摸屏状态寄存器的问题

[复制链接]

17

主题

342

帖子

0

精华

高级会员

Rank: 4

积分
544
金钱
544
注册时间
2014-4-24
在线时间
20 小时
发表于 2014-10-15 23:52:55 | 显示全部楼层 |阅读模式
5金钱
原子哥,你这触摸屏的这段代码我感觉好难理解:
[mw_shl_code=c,true]#define TP_PRES_DOWN 0x80 //触屏被按下 #define TP_CATH_PRES 0x40 //有按键按下了 //触摸屏控制器 typedef struct { u8 (*init)(void); //初始化触摸屏控制器 u8 (*scan)(u8); //扫描触摸屏.0,屏幕扫描;1,物理坐标; void (*adjust)(void); //触摸屏校准 u16 x[OTT_MAX_TOUCH]; //当前坐标 u16 y[OTT_MAX_TOUCH]; //电容屏有最多5组坐标,电阻屏则用x[0],y[0]代表:此次扫描时,触屏的坐标,用 //x[4],y[4]存储第一次按下时的坐标. u8 sta; //笔的状态 //b7:按下1/松开0; //b6:0,没有按键按下;1,有按键按下. //b5:保留 //b4~b0:电容触摸屏按下的点数(0,表示未按下,1表示按下)[/mw_shl_code]
这个笔的状态寄存器sta的b7位和b6位是什么意思呢?两者有什么区别?
触摸屏扫描得到的不就当前无触摸,当前第一次触摸,当前非第一次触摸这三种情况吗?这两位的4种组合各是什么意思呢?
如果说b6是当前按下标志,b7是松开标志的话:
[mw_shl_code=c,true]//触摸按键扫描 //tp:0,屏幕坐标;1,物理坐标(校准等特殊场合用) //返回值:当前触屏状态. //0,触屏无触摸;1,触屏有触摸 u8 TP_Scan(u8 tp) { if(PEN==0)//有按键按下 { if(tp)TP_Read_XY2(&tp_dev.x[0],&tp_dev.y[0]);//读取物理坐标 else if(TP_Read_XY2(&tp_dev.x[0],&tp_dev.y[0]))//读取屏幕坐标 { tp_dev.x[0]=tp_dev.xfac*tp_dev.x[0]+tp_dev.xoff;//将结果转换为屏幕坐标 tp_dev.y[0]=tp_dev.yfac*tp_dev.y[0]+tp_dev.yoff; } if((tp_dev.sta&TP_PRES_DOWN)==0)//之前没有被按下 { tp_dev.sta=TP_PRES_DOWN|TP_CATH_PRES;//按键按下 tp_dev.x[4]=tp_dev.x[0];//记录第一次按下时的坐标 tp_dev.y[4]=tp_dev.y[0]; } }else { if(tp_dev.sta&TP_PRES_DOWN)//之前是被按下的 { tp_dev.sta&=~(1<<7);//标记按键松开 这里为什么不对b6清零?[/mw_shl_code] [mw_shl_code=c,true] }else//之前就没有被按下 { tp_dev.x[4]=0; tp_dev.y[4]=0; tp_dev.x[0]=0xffff; tp_dev.y[0]=0xffff; //这里无任何触摸,为什么不对b6~7都清零呢? } } return tp_dev.sta&TP_PRES_DOWN;//返回当前的触屏状态 }[/mw_shl_code]

最佳答案

查看完整内容[请看2#楼]

b6是标记了给外部程序用的,必须由外部程序自行处理。 b7则是触摸屏扫描标记是否有触摸。 当第一次触摸的时候,b6,b7都会设置为1 后续b7会自动清零 b6如果没有任何程序处理,那么就一直是1了。。。 b6比较少用,具体你根据自己需要去选择。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-10-15 23:52:56 | 显示全部楼层
b6是标记了给外部程序用的,必须由外部程序自行处理。
b7则是触摸屏扫描标记是否有触摸。

当第一次触摸的时候,b6,b7都会设置为1
后续b7会自动清零
b6如果没有任何程序处理,那么就一直是1了。。。

b6比较少用,具体你根据自己需要去选择。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

17

主题

342

帖子

0

精华

高级会员

Rank: 4

积分
544
金钱
544
注册时间
2014-4-24
在线时间
20 小时
 楼主| 发表于 2014-10-16 00:48:29 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥居然哈在线。。。。。。早点歇息吧`····~~
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-30 06:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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