搜索
bottom↓
楼主: yanxiao1227

触摸屏控制方法,个人总结(欢迎拍砖,但不要打脸)

  [复制链接]

出0入0汤圆

发表于 2011-12-7 19:47:48 | 显示全部楼层
学习了

出0入0汤圆

发表于 2011-12-9 15:24:09 | 显示全部楼层
回复【48楼】usecool  
-----------------------------------------------------------------------

我也有这个想法

出0入0汤圆

发表于 2011-12-10 19:58:02 | 显示全部楼层
收藏,很有用的而一个贴

出0入0汤圆

发表于 2011-12-13 16:52:58 | 显示全部楼层
触摸屏,记号

出0入0汤圆

发表于 2011-12-13 19:17:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-13 20:38:30 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-13 21:53:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-16 09:31:00 | 显示全部楼层
好东西啊,正好最近要弄触摸屏,收藏了!

出0入0汤圆

发表于 2011-12-16 10:10:11 | 显示全部楼层
收下……

出0入0汤圆

发表于 2011-12-27 14:59:34 | 显示全部楼层
回复【2楼】yanxiao1227
-----------------------------------------------------------------------

#define TOUCH_READ_INT()   GPIO_ReadInputDataBit(GPIOG, GPIO_Pin_7)
#define TOUCH_READ_BUSY()  GPIO_ReadInputDataBit(GPIOG, GPIO_Pin_8)
接口定义有点不明白

中断口 PENIRQ不用接吗?

出0入0汤圆

发表于 2011-12-28 05:00:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-28 09:32:45 | 显示全部楼层
能有人回复111楼的不

出0入0汤圆

发表于 2011-12-28 09:50:55 | 显示全部楼层
谢谢分享

出0入30汤圆

发表于 2011-12-28 10:49:42 | 显示全部楼层
MARK

出0入0汤圆

发表于 2012-1-7 16:31:15 | 显示全部楼层
学习了

出0入0汤圆

发表于 2012-1-7 16:33:21 | 显示全部楼层
顶一个

出0入0汤圆

发表于 2012-1-8 17:04:56 | 显示全部楼层
MARK

出0入0汤圆

发表于 2012-1-8 21:02:42 | 显示全部楼层
小屏还可以,试过2.4和3.2寸的,3.2的已经有点不大稳了,象大屏7寸之类的最好还是用TSC2046之类的专门芯片,稳定点

出0入0汤圆

发表于 2012-1-8 21:31:23 | 显示全部楼层
MARK

出0入0汤圆

发表于 2012-1-9 09:08:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-9 09:48:07 | 显示全部楼层
mark 触摸屏的应用

出0入0汤圆

发表于 2012-1-9 09:56:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-9 10:10:07 | 显示全部楼层
收藏

出0入0汤圆

发表于 2012-1-9 15:39:25 | 显示全部楼层
Mark,四线触摸屏算法!

出0入0汤圆

发表于 2012-1-15 23:19:47 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-16 07:10:23 | 显示全部楼层
好文

出0入0汤圆

发表于 2012-1-16 08:45:39 | 显示全部楼层
MK

出0入0汤圆

发表于 2012-1-16 19:42:40 | 显示全部楼层
mark一下

出0入0汤圆

发表于 2012-1-17 09:58:34 | 显示全部楼层
值得学习

出0入0汤圆

发表于 2012-1-17 15:04:09 | 显示全部楼层
1.触摸屏丢一两个点不是什么大事...绝对不要使用中断...中断留给更重要的部分...
2.触摸屏的采样速度应该和屏幕刷新速度一样...快了也没意义...屏幕刷一次读一次触摸屏就得了...不用中断...
3.Windows的down up movein moveout不是中断实现的....
  旧值为old_point,新值为new_point, 设啥也不按的时候值是(0,0)...
  如果old_point==(0,0) new_point!=(0,0)  这是down
  如果old_point!=(0,0) new_point==(0,0)  这是up
  如果old_point!=(0,0) new_point!=(0,0)  这是move
  如果old_point==(0,0) new_point==(0,0)  这是none
4.消抖和软件无关...16值累加然后>>4...这就够意思了...如果还抖找你们设计硬件的叫他把电容和2046放得近点...
5.校准...这个得看触摸屏...只要不是薄膜触摸屏就根本校不准....不用费那个劲...
  5.6以上的触摸屏离屏幕都有一个缝隙...并且很厚...这就有一个折射问题...就是说你换一个角度看就需要校准一次....
  另外由于这个缝隙用久了屏幕会形变...也就是说读出来的值根本不是线性的....
  5点校正也是无力的,对角线9点或13点矫正可以得到比较准确...
  所以说...差不多就行了...

出0入0汤圆

发表于 2012-1-17 16:16:33 | 显示全部楼层
好资料,mark

出0入0汤圆

发表于 2012-1-17 17:00:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-17 19:53:26 | 显示全部楼层
标记

出0入0汤圆

发表于 2012-1-17 20:03:53 | 显示全部楼层
回复【楼主位】yanxiao1227  
-----------------------------------------------------------------------

mmaarrkk

出0入0汤圆

发表于 2012-1-17 21:41:58 | 显示全部楼层
我以前做过一个,用中断+定时的方法,用中断开始,然后关中断,开定时器+状态机,一到时间就检查状态,与读坐标,每10次就做软件滤波,除掉最高及最低的数据,再/8,检查与上个数值是否一样,没有移动就丢弃,不一样的话就发一个笔移动的消息给主程序.(一共有三种消息,笔按下,笔移动,提笔)

出0入0汤圆

发表于 2012-1-17 23:12:33 | 显示全部楼层
我就是使用两点定位的

出0入0汤圆

发表于 2012-1-18 16:59:11 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-18 20:18:14 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2012-2-8 09:43:56 | 显示全部楼层
回复【131楼】adce
1.触摸屏丢一两个点不是什么大事...绝对不要使用中断...中断留给更重要的部分...
2.触摸屏的采样速度应该和屏幕刷新速度一样...快了也没意义...屏幕刷一次读一次触摸屏就得了...不用中断...
3.windows的down up movein moveout不是中断实现的....
  旧值为old_point,新值为new_point, 设啥也不按的时候值是(0,0)...
  如果old_point==(0,0) new_point!=(0,0)  这是down
  如果old_point!=(0,0) new_point==(0,0)  这是up
  如果old_point!=(0,0) new_point!=(0,0)  这是move
  如果old_point==(0,0) new_point==(0,0)  这是none
4.消抖和软件无关...16值累......
-----------------------------------------------------------------------

这个专业,状态判断这种方法更好,我之前用的时候还判断了先前状态,看来多此一举了。

不过有个不好的地方是,定时器要不停的读取触摸屏控制器的数据,效率有点低,如果配合INT线,这种方法就不能用了。

出0入0汤圆

 楼主| 发表于 2012-2-8 09:47:10 | 显示全部楼层
回复【113楼】grant-liao
-----------------------------------------------------------------------

中断引脚接了,但是没有用中断读。用的定时器。

出0入0汤圆

发表于 2012-2-8 12:00:48 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-8 12:57:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-8 16:19:28 | 显示全部楼层
回复【131楼】adce  
1.触摸屏丢一两个点不是什么大事...绝对不要使用中断...中断留给更重要的部分...
2.触摸屏的采样速度应该和屏幕刷新速度一样...快了也没意义...屏幕刷一次读一次触摸屏就得了...不用中断...
3.windows的down up movein moveout不是中断实现的....
  旧值为old_point,新值为new_point, 设啥也不按的时候值是(0,0)...
  如果old_point==(0,0) new_point!=(0,0)  这是down
  如果old_point!=(0,0) new_point==(0,0)  这是up
  如果old_point!=(0,0) new_point!=(0,0)  这是move
  如果old_point==(0,0) new_point==(0,0)  这是none
4.消抖和软件无关...16值累加然后>&......
-----------------------------------------------------------------------

为什么不用中断?检测到下降沿发一个消息给触摸屏处理函数。这个中断函数很少触发,而且里边只有几条指令。中断处理函数要求保持非常短。

出0入0汤圆

发表于 2012-2-8 16:33:47 | 显示全部楼层
c ool

出0入0汤圆

 楼主| 发表于 2012-2-8 16:53:22 | 显示全部楼层
回复【144楼】armrunc1
-----------------------------------------------------------------------
如果按住触摸屏不动或者不抬起滑动,IRQ引脚会一直是低电平, 只有用电平触发方式才能工作,
而这样会一直引发中断,程序会死掉的。除非不响应滑动事件。

出0入0汤圆

发表于 2012-2-8 19:45:34 | 显示全部楼层
回复【140楼】yanxiao1227

1. 不是不停的读...认真看我写的...是每次清除Dirty区的时候读...
   也就是每次更新屏幕的时候读...
   极限情况也就是30次...Windows是28次吧...INT的确没有什么用....

回复【144楼】armrunc1
1. 触摸屏丢一两个点不是什么大事...绝对不要使用中断...中断留给更重要的部分...
   所有的中断应该留给重要的控制信号...

出0入0汤圆

发表于 2012-2-8 19:51:11 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-8 21:47:52 | 显示全部楼层
mark 触摸屏

出0入0汤圆

发表于 2012-2-8 22:35:24 | 显示全部楼层
个人见解,欢迎拍砖。

感觉状态里 DOWN可以和MOVE合并,因为触摸屏精度很高,按下的值不可能不变,等于一直在移动。

我的思路是使用中断,当按下进入中断后跳转到一个检测程序,检测程序里只有一个do循环,加个和屏幕刷新率差不多的延时,不停地

读触摸屏的坐标,直到检测到PENIRQ 脚为高电平(松开)跳出中断。可以不用TIM

出0入0汤圆

发表于 2012-2-8 23:00:22 | 显示全部楼层
回复【146楼】yanxiao1227  
回复【144楼】armrunc1
-----------------------------------------------------------------------
如果按住触摸屏不动或者不抬起滑动,irq引脚会一直是低电平, 只有用电平触发方式才能工作,
而这样会一直引发中断,程序会死掉的。除非不响应滑动事件。
-----------------------------------------------------------------------

中断是下降沿触发,不会很频繁,创建一个优先级非常低的低的任务,专门处理屏幕读取,这个任务大部分时间处在 idle 状态。
你甚至可以在下降沿中断处理函数内创建该优先级非常低的任务,上升沿中断处理函数销毁该任务。非常简单,而且对CPU 负载非常小,并且一点都不影响实时性。

出0入0汤圆

发表于 2012-2-8 23:03:21 | 显示全部楼层
现在的外设都使用中断检测,没有必要再跑回到轮询方式,占用资源,实时性还很差。

出0入0汤圆

发表于 2012-2-8 23:15:37 | 显示全部楼层
无操作系统的也可以设定一个全局变量,在该中断函数内标志其为按下,主循环内利用这个标准进行操作。

出0入0汤圆

发表于 2012-2-9 07:20:41 | 显示全部楼层
好文

出0入0汤圆

发表于 2012-2-9 11:01:25 | 显示全部楼层
MARK

出0入0汤圆

发表于 2012-2-17 17:58:58 | 显示全部楼层
支持!!

出0入0汤圆

发表于 2012-2-23 15:25:41 | 显示全部楼层
好贴!!!

出0入0汤圆

发表于 2012-2-23 15:58:26 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-24 00:16:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-24 11:36:30 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-3-4 23:20:03 | 显示全部楼层
回复【151楼】armrunc1
回复【146楼】yanxiao1227   
回复【144楼】armrunc1  
-----------------------------------------------------------------------
如果按住触摸屏不动或者不抬起滑动,irq引脚会一直是低电平, 只有用电平触发方式才能工作,
而这样会一直引发中断,程序会死掉的。除非不响应滑动事件。
-----------------------------------------------------------------------
中断是下降沿触发,不会很频繁,创建一个优先级非常低的低的任务,专门处理屏幕读取,这个任务大部分时间处在 idle 状态。
你甚至可以在下降沿中断处理函数内创建该优先级非常低的任务,上升沿中断处理函数销毁该任务。非常简单,而且对cpu 负载非常小,并且一点都不影响实时性......
-----------------------------------------------------------------------

已经实现了,在:
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=5448459&bbs_page_no=1&bbs_id=3020

出0入0汤圆

发表于 2012-3-28 20:50:58 | 显示全部楼层
mark                       

出0入0汤圆

发表于 2012-3-28 23:47:09 来自手机 | 显示全部楼层
手机上果断标记……

出0入0汤圆

发表于 2012-3-29 00:35:02 来自手机 | 显示全部楼层
非常好的讨论啊!收藏先

出0入0汤圆

发表于 2012-3-29 09:00:05 | 显示全部楼层
学习了!!!

出0入0汤圆

发表于 2012-3-29 09:13:49 | 显示全部楼层
很详细,不错,谢谢了

出0入0汤圆

发表于 2012-3-29 19:55:36 | 显示全部楼层
小弟是用单片机来写的,但想要把它写成滑动翻页的,就是不知道思路和算法是怎样

出0入0汤圆

发表于 2012-3-30 20:53:24 | 显示全部楼层
好帖子。关注。

出0入0汤圆

发表于 2012-3-31 08:52:48 | 显示全部楼层
留个地方。。。。。。。。。

出0入0汤圆

发表于 2012-4-5 10:15:45 | 显示全部楼层
正在学触摸屏!谢谢分享!很有帮助!

出0入0汤圆

发表于 2012-4-5 14:07:32 来自手机 | 显示全部楼层
mark                  ,

出0入0汤圆

发表于 2012-4-10 20:10:13 | 显示全部楼层
顶楼主!

出0入0汤圆

发表于 2012-4-10 22:40:33 | 显示全部楼层
学习,记号

出0入0汤圆

发表于 2012-4-11 00:12:09 来自手机 | 显示全部楼层
最近太浮躁

出0入0汤圆

发表于 2012-4-11 09:15:08 | 显示全部楼层
必须顶,mark

出0入0汤圆

发表于 2012-4-11 09:37:31 | 显示全部楼层
xpt2046 为什么总是中断,好像传送完成就中断一次,也不一定
它的中断引脚是只在触摸中断么??最近被这玩意困扰

出0入0汤圆

发表于 2012-4-11 18:01:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-4-11 18:11:14 | 显示全部楼层
qingyin2009 发表于 2012-4-11 09:37
xpt2046 为什么总是中断,好像传送完成就中断一次,也不一定
它的中断引脚是只在触摸中断么??最近被这玩 ...

建议你去看看 XPT2046 的规格书,看仔细,尤其是笔中断的地方,有个 TRICK。

出0入0汤圆

发表于 2012-4-11 22:17:23 | 显示全部楼层
armrunc1 发表于 2012-4-11 18:11
建议你去看看 XPT2046 的规格书,看仔细,尤其是笔中断的地方,有个 TRICK。 ...

的确,没仔细看官方文档,一直按着文档上时序图做的

是不是要在转换的读取周期写入 8'h01 ?我试试

出0入0汤圆

发表于 2012-4-17 16:56:17 | 显示全部楼层
好贴!标记一下,留着以后备用。

出0入0汤圆

发表于 2012-4-17 21:58:58 | 显示全部楼层
学习学习

出0入0汤圆

发表于 2012-4-18 12:12:17 | 显示全部楼层
厉害aa !

出0入0汤圆

发表于 2012-4-18 12:29:09 | 显示全部楼层
mark  好贴!

出0入0汤圆

发表于 2012-4-19 21:34:32 | 显示全部楼层
顶顶顶顶顶

出0入0汤圆

发表于 2012-4-20 16:35:25 | 显示全部楼层
maaaaaaark

出0入0汤圆

发表于 2012-4-20 16:53:26 | 显示全部楼层
....mark.....

出0入0汤圆

发表于 2012-4-20 16:55:40 | 显示全部楼层
嘿嘿 终于找到我需要的了 现在一想 还确实简单呢

出0入0汤圆

发表于 2012-4-21 09:14:04 | 显示全部楼层
very good! 太好了

出0入0汤圆

发表于 2012-4-22 16:00:58 | 显示全部楼层
lang1437 发表于 2011-10-19 12:30
最近也在搞触摸屏

x y的逻辑坐标和对应的物理坐标 怎么确定呢?!

我也在搞这个,如果你知道的话也和我说说哦谢谢!

出0入0汤圆

发表于 2012-4-27 15:03:07 | 显示全部楼层
不错,顶顶啊

出0入0汤圆

发表于 2012-4-27 19:02:41 | 显示全部楼层
这个很好,触摸屏一直是硬伤啊

出0入0汤圆

发表于 2012-7-7 09:38:21 来自手机 | 显示全部楼层
加关注。。。。。。。

出0入0汤圆

发表于 2012-7-7 10:38:32 | 显示全部楼层
market、

出0入0汤圆

发表于 2012-7-7 18:02:32 | 显示全部楼层
好贴!

出0入0汤圆

发表于 2012-7-7 18:58:17 | 显示全部楼层
真是好贴,收藏了.

出0入0汤圆

发表于 2012-7-18 18:02:46 | 显示全部楼层
mark 正是需要。

出0入0汤圆

发表于 2012-7-19 19:56:08 | 显示全部楼层
标记。。

出0入0汤圆

发表于 2012-7-19 21:39:50 | 显示全部楼层
谢谢分享!

出0入0汤圆

发表于 2012-8-6 09:31:10 | 显示全部楼层
my_avr 发表于 2011-10-18 22:20
滤波那里可以采用状态机的方法,还可以实现长按、短按、连_发等功能,非常方便 ...

很好……受教了

出0入0汤圆

发表于 2012-8-6 10:36:03 | 显示全部楼层
mark                           

出0入0汤圆

发表于 2012-8-6 10:43:49 | 显示全部楼层
强大。。。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-5 11:52

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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