一、电阻触摸屏原理
触摸屏包含上下叠合的两个透明层,一般覆盖在lcd表面,两个透明层是由均匀的电阻介质组成,如下图。
当触摸屏表面受到的压力(如通过笔尖或手指进行按压)足够大时,顶层与底层之间的薄膜会产生接触,此时会形成x方向和y方向的坐标。那么x,y坐标的值是怎么得来的呢?本质上就是通过ADC转换得来的。详解如下:
触摸屏的等效电路可以看成如下图:
计算触点的X,Y坐标分为如下两步(见下图):
1.计算Y坐标:
在Y+电极施加驱动电压Vdrive, Y-电极接地,由于上下两层膜形成触点,X+做为触点的引出端,测量得到接触点的电压,触点电压与Vdrive电压之比等于触点Y坐标与屏高度之比。如下图:
2.计算X坐标:
在X+电极施加驱动电压Vdrive, X-电极接地,由于上下两层膜形成触点,Y+做为触点的引出端,测量得到接触点的电压,Y+做为引出端测量得到接触点的电压,触点电压与Vdrive电压之比等于触点X坐标与屏宽度之比。如下图:
二、电阻触摸屏的几种模式
1.等待中断模式
平时的时候上下两层膜并不粘在一起,我们把这种状态称为“等待中断模式”, 等效电路如下图的右边那幅图:
s5、s4闭合,s1、s2、s3断开,这个时候Y_ADC/XP通过S5接上拉电阻,处于高电平状态,X_ADC/YP接地。没法读取x,y坐标。
2.读取x坐标模式:
给X方向通电,也就是让S1、S3开关闭合,s2、s4断开,那么当屏幕按下,触点YP的电平就对应x坐标。(XP到XM之间是均匀的电阻介质)
x_adc电压/vcc = x坐标/width, 所以x坐标= width * x_adc电压/vcc
3.读取y坐标模式:
给Y方向通电,也就是让S2、S4开关闭合,s1、s3断开,那么当屏幕按下,触点XP的电平就对应y坐标。(YP到YM之间是均匀的电阻介质)
y_adc电压/vcc = Y坐标/height, 所以y坐标= height * y_adc电压/vcc
4.我们总结一下单次触发TS中断,使用触摸屏的流程:
<1>按下触摸屏,产生TS中断
<2>启动ADC(目的是获取x,y方向上的坐标值)
<3>ADC转换完成,产生adc中断(adc转换需要一定的时间)
<4>ADC中断中来读取x y坐标
松开,结束
我们知道,现在的手机都是支持屏幕滑动翻页和长按的功能。那么这些功能是如何做到的呢?
如何让触摸屏支持长按或者滑动操作(多次触发TS中断)
答案:定时器,当长按屏幕,会产生多次TS中断,因此我们需要用定时器来判断,当定时一段时间后,还有TS中断产生,那么我们认为是长按操作,进行中断响应。滑动也是类似的道理,当定时时间到后,如果还有TS中断产生,且坐标发生了改变,就认为是滑动操作。
<5> 启动定时器
<6> 一段时间后,定时器中断发生,判断触摸屏是否仍被按下(是否有定时器中断产生),如果有就循环上述过程<2><3><4><5>
可以用如下流程图概括TSC的整个SW flow.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App