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

目录


前言

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

注意: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 个触点的数据。其他的也和也之前分析的一致。

相关推荐
t13970181 小时前
MPPT 和 PWM 有什么区别?小功率太阳能供电到底该选哪个
嵌入式硬件·物联网
en.en..2 小时前
STM32入门最佳学习顺序(寄存器→标准库→HAL库)
单片机·嵌入式硬件
Good白10193 小时前
嵌入式:1.嵌入式入门|初识嵌入式、处理器、ARM与STM32
arm开发·stm32·嵌入式硬件
小李不想当小白3 小时前
HAL库之UART(STM32 HAL库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
Dev_XH4 小时前
【成品设计】基于物联网的旅游生态农业互动系统
stm32·单片机·嵌入式硬件·物联网·旅游
Industio_触觉智能17 小时前
RK3506 Buildroot系统目录地图-上|7个关键符号链接与构建产物全解析
嵌入式硬件·sdk·智能硬件·固件·瑞芯微·系统编译·rk3506
lzj_pxxw20 小时前
STM32移植FreeRTOS(Cmake+CubeMX)
vscode·stm32·嵌入式硬件
물の韜21 小时前
ZYNQ/FMQL系列Linux之I2C开发实战
linux·arm开发·嵌入式硬件·设备树·iic·zynq
无敌贵点大王1 天前
从寄存器层面重学STM32(7)——定时器
stm32·单片机·嵌入式硬件
碧海银沙音频科技研究院1 天前
粉色笔记本电脑每次要等把电池电耗尽才能开机问题解决方法
嵌入式硬件