触摸屏
触摸屏(touch screen)又称为“触控屏”、“触控面板”,是一种可接收触头等输入讯号的感应式装置。作为一种新型的电脑输入设备,可以用来取代传统的机械按键等输入设备。它是目前最简单、方便、自然的一种人机交互方式。主要应用于公共信息的查询、领导办公、工业控制、军事指挥、电子游戏、点歌点菜、多媒体教学、房地产预售等。
触摸屏本质上与液晶是分离的。触摸屏负责的是检测触摸点,液晶屏负责的是显示。区别开来。
触摸屏分类
按照触摸屏的工作原理和传输信息的介质,把触摸屏分为四种,它们分别为
①电阻式:定位准确,单点触摸。
②电容感应式:支持多点触摸,价格偏贵。工业应用最广泛
③红外线式:价格低廉,但其外框易碎,容易产生光干扰,曲面情况下失真。
④表面声波式:解决各种缺点,但是屏幕表面如果有水滴和尘土会使触摸屏变的迟钝。
电容型触摸屏
电容屏是利用人体感应进行触点检测控制,只需要轻微接触,通过检测感应电流来定位触摸坐标。现在几乎所有智能手机,包括平板电脑都是采用电容屏作为触摸屏。
电容型触摸屏分类
表面电容式电容触摸屏
表面电容式触摸屏技术是利用ITO(铟锡氧化物,是一种透明的导电材料)导电膜,通过电场感应方式感测屏幕表面的触摸行为进行。但是表面电容式触摸屏有一些局限性,它只能识别一个手指或者一次触摸。
投射式电容触摸屏
投射电容式触摸屏是传感器利用触摸屏电极发射出静电场线。一般用于投射电容传感技术的电容类型有两种:自我电容和交互电容。
①自我电容式
自我电容又称绝对电容,是最广为采用的一种方法,自我电容通常是指扫描电极与地构成的电容。在玻璃表面有用ITO制成的横向与纵向的扫描电极,这些电极和地之间就构成一个电容的两极。当用手或触摸笔触摸的时候就会并联一个电容到电路中去,从而使在该条扫描线上的总体的电容量有所改变。在扫描的时候,控制IC依次扫描纵向和横向电极,并根据扫描前后的电容变化来确定触摸点坐标位置。笔记本电脑触摸输入板就是采用的这种方式,笔记本电脑的输入板采用X*Y的传感电极阵列形成一个传感格子,当手指靠近触摸输入板时,在手指和传感电极之间产生一个小量电荷。采用特定的运算法则处理来自行、列传感器的信号来确定手指的位置。
②交互电容式
交互电容又叫做跨越电容,它是在玻璃表面的横向和纵向的ITO电极的交叉处形成电容。交互电容的扫描方式就是扫描每个交叉处的电容变化,来判定触摸点的位置。当触摸的时候就会影响到相邻电极的耦合,从而改变交叉处的电容量,交互电容的扫面方法可以侦测到每个交叉点的电容值和触摸后电容变化,因而它需要的扫描时间与自我电容的扫描方式相比要长一些,需要扫描检测X*Y根电极。目前智能手机/平板电脑等的触摸屏,都是采用交互电容技术。
电阻屏与电容屏的区别电阻屏与电容屏的区别
①电阻屏在触模时需要轻触压按,而电容屏只需轻微的手指触碰就能激活
②电阻屏可以用任何物体来触摸,而电容屏是人体热感应工作原理,只能用手指的热感区来触摸,指甲和手写笔均无效。由于手指头的面积比手写笔大很多,因此电容屏的手机,触摸比较小图标或者菜单的时候,触摸精度无法做到电阻屏那么高。
③电容屏可以很容易进行多点触摸,电阻屏一般不能实现多点触摸的。
④电阻屏内部是软的,一般是在4到5层超薄的钢化玻璃中间夹杂细微的炭粒(显微镜下才能看见),通过按压导致上下两层的炭粒相互接触而接通触屏电路,产生触摸反应,容易产生划痕,易坏,容易触屏不灵,而电容屏都是采用单层加厚钢化玻璃,硬度大,耐旧,使用寿长
⑤电阻屏在阳光下可视性稍差,电容屏则非常好,在阳光下可视性很强。
电容触摸屏对工作环境的要求是比较高的,在潮湿、多尘、高低温环境下面,都是不适合使用电容屏的。
电容屏优缺点总结
优点:
手感好,无需校准,支持多点触摸,透光性好。
缺点:
成本高,精度不高,抗干扰能力差。
电容触摸屏一般都需要一个驱动IC来检测电容触摸,且一般是通过IIC接口输出触摸数据的。
常见的2种电容触摸屏驱动
①ICGT9147:采用17*10的驱动结构(10个感应通道,17个驱动通道)。
②OTT2001A:采用13*8的驱动结构(8个感应通道,13个驱动通道)。
它们与MCU连接通过4根线:SDA、SCL、RST和INT。
GT9147的IIC地址,可以是0X14或者0X5D,当复位结束后的5ms内,如果INT是高电平,则使用0X14作为地址,否则使用0X5D作为地址。
GT9147关键寄存器
控制命令寄存器(0X8040)
该寄存器可以写入不同值,实现不同的控制,我们一般使用0和2这两个值,写入2,即可软复位GT9147,在硬复位之后,一般要往该寄存器写2,实行软复位。然后,写入0,即可正常读取坐标数据(并且会结束软复位)。
配置寄存器组(0X8047~0X8100)
这里共186个寄存器,用于配置GT9147的各个参数,这些配置一般由厂家提供给我们(一个数组),所以我们只需要将厂家给我们的配置,写入到这些寄存器里面,即可完成GT9147的配置。
产品ID寄存器(0X8140~0X8143)
这里总共由4个寄存器组成,用于保存产品ID,对于GT9147,这4个寄存器读出来就是:9,1,4,7四个字符(ASCII码格式)。因此,我们可以通过这4个寄存器的值,来判断驱动IC的型号,从而判断是OTT2001A还是GT9147,以便执行不同的初始化。
状态寄存器(0X814E)
我们仅关心最高位和最低4位,最高位用于表示buffer状态,如果有数据(坐标/按键),buffer就会是1,最低4位用于表示有效触点的个数,范围是:0~5,0,表示没有触摸,5表示有5点触摸。
坐标数据寄存器(共30个)
这里共分成5组(5个点),每组6个寄存器存储数据,以触点1的坐标数据寄存器组为例,
我们一般只用到触点的x,y坐标,所以只需要读取0X8150~0X8153的数据,组合即可得到触点坐标。其他4组分别是:0X8158、0X8160、0X8168和0X8170等开头的16个寄存器组成,分别针对触点2~4的坐标。同样GT9147也支持寄存器地址自增,我们只需要发送寄存器组的首地址,然后连续读取即可,GT9147会自动地址自增,从而提高读取速度。
参考:开源电子网 STM32中文参考手册