韦东山嵌入式入门笔记之——应用开发基础篇(七)电阻屏和电容屏

目录


前言

触摸屏分为电阻屏、电容屏。
电阻屏结构简单,在以前很流行;电容屏支持多点触摸,现在的手机基本都是使用电容屏。

注意:LCD、触摸屏不是一回事,LCD 是输出设备,触摸屏是输入设备;触摸屏是外屏,负责触控输入;LCD是内屏,负责显示输出。制作触摸屏时特意把它的尺寸做得跟 LCD 一模一样,并且把触摸屏覆盖在 LCD 上。

一、电阻屏

1、电阻屏原理

电阻屏就是基于欧姆定律制作的,它有上下两层薄膜,这两层薄膜就是两个电阻,如下图所示:

平时上下两层薄膜无触触,当点击触摸屏时,上下两层薄膜接触:这时就可以测量触点电压。过程如下:

① 测量 X 坐标:

在 xp、xm 两端施加 3.3V 电压,yp 和 ym 不施加电压(yp 就相当于探针),测量 yp 电压值。该电压值就跟 X 坐标成正比关系,假设:
X = 3.3*Vyp/Xmax

② 测量 Y 坐标:

在 yp、ym 两端施加 3.3V 电压,xp 和 xm 不施加电压(xp 就相当于探针),测量 xp 电压值。该电压值就跟 Y 坐标成正比关系,假设:

Y = 3.3*Vxp/Ymax

在实际使用时,电阻屏的 Xmax、Ymax 无从得知,所以使用之前要先较准:依次点击触摸屏的四个角和中心点,推算出 X、Y 坐标的公式:

X = func(Vyp)

Y = func(Vxp)

2、电阻屏数据

Linux 驱动程序中,会上报触点的 X、Y 数据,注意: 这不是 LCD 的坐标值,需要 APP 再次处理才能转换为 LCD 坐标值。

对应的 input_event 结构体中,"type、code、value"如下:

二、电容屏

1、原理

电容屏中有一个控制芯片,它会周期性产生驱动信号,接收电极接收到信号,并可测量电荷大小。当电容屏被按下时,相当于引入了新的电容,从而影响了接收电极接收到的电荷大小。主控芯片根据电荷大小即可计算出触点位置,这类芯片一般是 I2C 接口。 我们只需要编写程序,通过 I2C 读取芯片寄存器即可得到这些数据。

2、电容屏数据

电容屏可以支持多点触摸(Multi touch),驱动程序上报的数据中怎么分辨触点?

这有两种方法:Type A、Type B,这也对应两种类型的触摸屏。其中Type A只能上传触电数据给软件,由软件分析出触电位置,这类触摸屏已经淘汰过时了,所以我们主要讲Type B。

Type B

该类型的触摸屏能分辨是哪一个触点,上报数据时会先上报触点 ID,再上报它的数据。
当有 2 个触点时(type, code, value):


当ID为45的触点移动时:

松开 ID 为 45 的触点时:(这里无需重新设置SLOT,SLOT 就像一个全局变量一样:如果它没变化的话,就无需再次设置


最后,松开 ID 为 46 的触点:(这列因为更改了触点,所以要申明SLOT为1)

3、实际的实验数据

假设你的开发板上电容屏对应的设备节点是/dev/input/event0,执行以下命令:

bash 复制代码
hexdump /dev/input/event0

用一个手指点击触摸屏,得到类似如下的数据:

在上面的数据中,为了兼容老程序,它也上报了 ABS_X、ABS_Y 数据,电阻触摸屏就是使用这类型的数据。所以基于电阻屏的程序,也可以用在电容屏上。而两个MAJOR数据则是表示TOUCH面积的一个参数,暂时不需要了解。其他的基本和上面描述的一致。

使用两个手指点击触摸屏时,得到类似如下的数据:


为了兼容老程序,它也上报了 ABS_X、ABS_Y 数据,但是只上报第 1 个触点的数据。其他的也和也之前分析的一致。

相关推荐
独孤九剑打醒他2 小时前
【原创开源】双层Master‑Worker软硬协同调度架构:从根源解决分布式数据一致性难题
前端·嵌入式硬件·架构·前端框架·硬件工程
驴友花雕10 小时前
【花雕动手做】行空板 K10 系列实验之人工智能语音识别小车的10个参考案例
人工智能·单片机·嵌入式硬件·语音识别·行空板 k10 系列实验·花雕动手做·小车的10个参考案例
cardinal_50816 小时前
STM32MP157F-DK2开发板构建交叉编译链
stm32·单片机·嵌入式硬件
小羊先生car17 小时前
F429-HAL-RS485(回环/双机实验)(2026/8/16)
c语言·单片机·嵌入式硬件·软件构建
木白CPP17 小时前
Linux 驱动UART子系统源码分析
linux·运维·服务器·驱动开发·嵌入式硬件·开源软件
zlinear数据采集卡18 小时前
数据采集卡从入门到精通(10):采样率与分辨率的核心关系——反比律、架构分布与过采样
arm开发·嵌入式硬件·算法·fpga开发·架构·开源
水果里面有苹果20 小时前
33-TPS62130RGTR-3A降压器
嵌入式硬件
振南的单片机世界21 小时前
推挽vs开漏:一个“强拉硬灌”,一个“只拉不管”
arm开发·stm32·单片机·嵌入式硬件
小心亦新21 小时前
STM32学习23--I2C-1
stm32·嵌入式硬件·学习
小羊先生car1 天前
F429-HAL-Can总线(回环及双机实验)(2026/8/15)
c语言·单片机·嵌入式硬件·软件构建