触摸屏实验

news/2024/10/30 23:15:18/

文章目录

    • 触摸屏
      • 红外线式触摸屏
      • 表面声波式触摸屏
      • 电容触摸屏
        • 原理
        • 分类
          • 表面电容式电容触摸屏
          • 投射式电容触摸屏
            • 自我电容
            • 交互电容
        • 硬件连接
        • GT9147寄存器
          • 控制命令寄存器 0X8040
          • 产品ID寄存器
          • 状态寄存器(0X814E)
          • 坐标数据寄存器
        • 代码
      • 电阻触摸屏
        • 原理
        • 校准
        • XPT2046
          • 数字接口
        • 代码
      • 电阻屏和电容屏的区别

触摸屏

红外线式触摸屏

由装在触摸屏外框上的红外线发射与接收感测元件构成
在屏幕表面上形成红外线探测网
任何触摸物体可改变触点上的红外线来实现触摸屏操作

表面声波式触摸屏

由触摸屏 声波发生器 反射器 声波接收器组成 其中声波发生器能发生一种高频声波跨越屏幕表面 手指触及屏幕时 触点上的声波即被阻止 由此确定坐标位置
不怕电磁干扰 无漂移 防刮性 寿命长 透光率高

电容触摸屏

需要一个驱动IC检测电容触摸 一般通过IIC接口输出触摸数据
常见的2种电容触摸屏驱动IC:GT9147(10个感应通道 17个驱动通道) OTT2001A(8个感应通道 13个驱动通道)
它们通过四根线与MCU连接:SDA SCL RST INT

原理

触控屏 触控面板 可接收触头等输入讯号的感应式装置
触摸屏:检测触摸点
液晶屏:负责显示

分类

表面电容式电容触摸屏

利用ITO导电膜 通过电场感应的方式感测屏幕表面的触摸行为进行
缺点:只能识别一个手指 即一次触摸

投射式电容触摸屏

传感器利用触摸屏电极发射出静电场线
用于投射电容传感技术的 电容类型:自我电容 交互电容

自我电容

扫描电极与地构成的电容
手触摸屏的时候会并联一个电容到电路中 从而使该条扫描线上总体的电容量有所改变
控制IC依次扫描纵向和横向电极 根据扫描前后的电容变化来确定纵向和横向电极
eg:笔记本电脑触摸屏

交互电容

又 跨越电容 在玻璃表面的横向和纵向的ITO电极的交叉处形成电容
扫描每个交叉处的电容变化 判断触摸点的位置
扫描时间相比自我电容的相比要长一些

硬件连接

T_PEN -> CT_INT
T_CS ->CT_RST
T_CLK ->CT_SCL
T_MOSI ->CT_SDA
在这里插入图片描述
在这里插入图片描述

GT9147寄存器

控制命令寄存器 0X8040

2:软复位GT9147 (一般在硬复位之后)
0:正常读取坐标数据

产品ID寄存器

保存产品ID 通过寄存器的值 判断驱动IC的型号 以便执行初始化

状态寄存器(0X814E)

在这里插入图片描述
最高位 表示buffer状态 有数据(坐标/按键) buffer 为1
低四位表示有效触点的个数 范围0~5 0:没有触摸 5表示5点触摸

坐标数据寄存器

五个触点 每个触点需要6个寄存器存储数据
以触点1为例
在这里插入图片描述
我们一般只用到触点的x,y坐标 所以只需要读取
0X8150~0X8153的数据 组合即可得到触点坐标
GT9147支持寄存器地址自增 提高读取的速度

代码

扫描函数

u8 GT9147_Scan(u8 mode)
{u8 buf[4];u8 i=0;u8 res=0;u8 temp;u8 tempsta;static u8 t=0;//控制查询间隔 降低CPU利用率   t++;if((t%10)==0||t<10)//空闲  10进入检测一次{GT9147_RD_Reg(GT_GSTID_REG,&mode,1);	//触摸点状态temp=0;GT9147_WR_Reg(GT_GSTID_REG,&temp,1);//清标志			if((mode&0XF)&&((mode&0XF)<6)){temp=0XFF<<(mode&0XF);		//将点的个数转换为1的位数 匹配tp_dev.sta的定义 tempsta=tp_dev.sta;			//保存当前tp_dev.sta的值tp_dev.sta=(~temp)|TP_PRES_DOWN|TP_CATH_PRES; tp_dev.x[4]=tp_dev.x[0];	//保存触点0的数据tp_dev.y[4]=tp_dev.y[0];for(i=0;i<5;i++){if(tp_dev.sta&(1<<i))	//触摸是否有效{GT9147_RD_Reg(GT9147_TPX_TBL[i],buf,4);	//读取XY坐标值if(tp_dev.touchtype&0X01)//横屏{tp_dev.y[i]=((u16)buf[1]<<8)+buf[0];tp_dev.x[i]=800-(((u16)buf[3]<<8)+buf[2]);}else{tp_dev.x[i]=((u16)buf[1]<<8)+buf[0];tp_dev.y[i]=((u16)buf[3]<<8)+buf[2];}  }			} res=1;if(tp_dev.x[0]>lcddev.width||tp_dev.y[0]>lcddev.height)//非法数据{ if((mode&0XF)>1)		//其他点有数据,则复第二个触点的数据到第一个触点{tp_dev.x[0]=tp_dev.x[1];tp_dev.y[0]=tp_dev.y[1];t=0;				//触发一次检测10次 从而提高命中率}else					//非法数据{tp_dev.x[0]=tp_dev.x[4];tp_dev.y[0]=tp_dev.y[4];mode=0X80;		tp_dev.sta=tempsta;	//恢复tp_dev.sta}}else t=0;					}}if((mode&0X8F)==0X80)//无触摸点{ if(tp_dev.sta&TP_PRES_DOWN)	//之前按下{tp_dev.sta&=~(1<<7);	//标记按键松开}tp_dev.x[0]=0xffff;tp_dev.y[0]=0xffff;tp_dev.sta&=0XE0;	//清除点有效标记	} 	if(t>240)t=10;//重新从10开始计数return res;
}
//电容型触摸屏测试
void ctp_test(void)
{u8 t=0;u8 i=0;	  	    u16 lastpos[5][2];		//最后一次的数据while(1){tp_dev.scan(0);for(t=0;t<5;t++){if((tp_dev.sta)&(1<<t)){if(tp_dev.x[t]<lcddev.width&&tp_dev.y[t]<lcddev.height){if(lastpos[t][0]==0XFFFF){lastpos[t][0] = tp_dev.x[t];lastpos[t][1] = tp_dev.y[t];}lcd_draw_bline(lastpos[t][0],lastpos[t][1],tp_dev.x[t],tp_dev.y[t],2,POINT_COLOR_TBL[t]);//画线lastpos[t][0]=tp_dev.x[t];lastpos[t][1]=tp_dev.y[t];if(tp_dev.x[t]>(lcddev.width-24)&&tp_dev.y[t]<20){Load_Drow_Dialog();//清除}}}else lastpos[t][0]=0XFFFF;}delay_ms(5);i++;if(i%20==0)LED0=!LED0;}	
}

电阻触摸屏

定位准确 不支持多点触摸 触摸有效物体不局限于手指

在这里插入图片描述

原理

电阻屏的主要部分是电阻薄膜屏
触摸屏幕时 绝缘的两层导电层在触摸点接触
控制器侦测到接通后 一面导电层接通y轴方向的5V均匀电压场 另一导电层将接触点的电压引至控制卡进行A/D转换(A/D转换芯片) 得到电压值后与5V相比可得到触摸点的y轴坐标 同理可得x轴的坐标

校准

得到电压与坐标之间的函数关系
在这里插入图片描述
在这里插入图片描述

校准参数保存在EEPROM 断点可保存
每次启动读取该数据即可

XPT2046

在这里插入图片描述

4导线触摸屏控制器 支持1.5V到5.25V的低电压I/O接口 可通过执行两次A/D转换查出被按的屏幕位置

数字接口

在这里插入图片描述
前八个时钟输入控制字节 转换器收到足够信息 设置输入多路选择器 和 参考源输入 进入采样模式
三个多时钟后 控制字节设置完成 转换器进入转换模式
通过12个时钟周期 完成AD转换

代码

//初始化函数
u8 TP_Init(void)
{GPIO_InitTypeDef  GPIO_InitStructure;	if(lcddev.id==0X5510)		//电容触摸屏{if(GT9147_Init()==0)	//GT9147{ tp_dev.scan=GT9147_Scan;	//指向GT9147触摸屏扫描}else{OTT2001A_Init();tp_dev.scan=OTT2001A_Scan;	//扫描函数指向OTT2001A触摸屏扫描}tp_dev.touchtype|=0X80;	//电容屏tp_dev.touchtype|=lcddev.dir&0X01;//横屏或竖屏return 0;}else if(lcddev.id==0X1963){FT5206_Init();tp_dev.scan=FT5206_Scan;		//扫描函数指向GT9147触摸屏扫描	tp_dev.touchtype|=0X80;			//电容屏tp_dev.touchtype|=lcddev.dir&0X01;//横屏还是竖屏return 0;}else{RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC|RCC_AHB1Periph_GPIOF, ENABLE);//使能相应时钟//GPIOB1,2初始化GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2;//PB1/PB2设置上拉输入GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//输入模式GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHzGPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;//设置推挽输出GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//输出模式GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;//PC13设置推挽模式GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//输出模式GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;//PF11设置推挽输出GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//输出模式GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化			TP_Read_XY(&tp_dev.x[0],&tp_dev.y[0]);//第一次读取初始化	 AT24CXX_Init();		//初始化24CXXif(TP_Get_Adjdata())return 0;//已经校准else			   //未校准{ 										    LCD_Clear(WHITE);//清屏TP_Adjust();  	//屏幕校准TP_Save_Adjdata();	 }			TP_Get_Adjdata();	}return 1; 									 
}

电阻屏和电容屏的区别

电容屏轻微手指触屏即可激活 电阻屏则需要轻触按压
电阻屏可用任何物体触摸 电容屏是人体热感应原理 只能用手指的热感区触摸
电容屏能多点触摸 电阻屏一般不能
电容屏单层加厚钢化玻璃 硬度大 寿命长 电阻屏内部是软的 易划痕 损坏
电容屏在阳光下可视性好 电阻屏可视性稍差
电容触摸屏 对环境要求较高 潮湿 多尘 高低温环境 不易使用


http://www.ppmy.cn/news/122231.html

相关文章

多媒体一体机计算机打不开,SEESUN多媒体交互一体机 一般故障问题排除

SEESUN 快速安装指南 SEESUN多媒体交互一体机 一般故障问题排除 一&#xff0e; 开机后屏幕显示无信号&#xff0c;不能显示系统画面 检查电视通道是否在电脑通道模式&#xff0c;如果不是请切换到电脑通道模式上 确定电脑主机已经打开&#xff0c;并且按过启动按钮&#xff0c…

鸿蒙一体机使用方法,多媒体教学一体机使用方法和操作流程

原标题&#xff1a;多媒体教学一体机使用方法和操作流程 一、使用多媒体教学一体机的操作流程 第1步&#xff1a;班级学生管理员用钥匙打开黑板。 第2步&#xff1a;按下教学一体机右下方面板上的电源键&#xff0c;电脑投影同步开机。 第3步&#xff1a;开展正常的教学工作。 …

会议平板一体机常见触摸屏幕故障分析与解决

使用触摸屏会议平板一体机&#xff0c;尤其是小品牌的会议平板的产品&#xff0c;有时会遇到触摸屏故障的问题。那接下来我们来分析一下最常见的触摸屏幕的故障原因。 会议平板https://www.horion.com/ 一、常见的触摸屏分类 1.根据触摸屏的生产工艺&#xff0c;分为电阻式…

【数据结构】一篇文章带你彻底学会《后缀表达式》

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c语言系列专栏&#xff1a;c语言之路重点知识整合 &#x…

中达优控触摸屏编程视频教程_YKBuilder中文版(中达优控触摸屏编程系统)V5.0.300 正式版...

YKBuilder中文版(中达优控触摸屏编程系统)是中达优控YKHMI系列人机界面的集成开发环境软件包。非常专业的触摸屏组态编程软件,可以通过对现场数据的采集处理,YKBuilder以动画显示、报警处理、流程控制和报表输出等多种方式向用户提供解决实际工程问题的方案,帮助开发适合自己…

matebook14支持触摸屏吗_华为MateBook 14 2021发布,触摸屏成标配

触摸屏可能会是未来的标配 MateBook 14 2021 很重要的一个改变就是全系搭载触摸屏&#xff0c;这不是MateBook第一次搭载触摸屏&#xff0c;华为也不是第一个推出触摸屏笔记本的厂商&#xff0c;但是触摸屏笔记本并没有流行起来&#xff0c;究其原因是因为应用场景匮乏&#xf…

触摸电脑电视一体机

系列触摸一体机采用不锈钢&#xff0c;铝合金等材质 无任何尖角利边,安全性高 采用红外多点触摸屏,操作流畅 采用FULL HD全高清屏幕,分辩率为1920X1080 HDMI,VGA,USB,AV,TV等丰富端口 轻松与其它设备互联.

一体机怎么修复音频服务器,多媒体教学一体机没有声音是怎么办?

教学一体机没有声音怎么办&#xff1f;教学一体机是结合多种传统终端设备为一体的智能设备&#xff0c;可以触摸&#xff0c;可以书写&#xff0c;可以传屏等等功能&#xff0c;主要是于Windows系统和Android系统为载体进行研发的。很多时候&#xff0c;教学一体会出现各种原因…