由于智能手机的发展和大屏幕的兴起,触摸屏已经得到了广泛的应用。触摸屏分为两种:电阻触屏 俗称“软屏”;电容触屏俗称“硬屏”。
电阻触摸屏的屏体部分是一块多层复合薄膜,由一层玻璃或有机玻璃作为基层,表面涂有一层透明的阻性材料组成的导电层(ito膜),上面再盖有一层外表面经过硬化处理、光滑防刮的塑料层。它的内表面也涂有一层ito,在两层导电层之间有许多细小(小于千分之一英寸)的透明隔离点把它们隔开。当手指接触屏幕时,两层 ito发生接触,电阻发生变化,控制器根据检测到的电阻变化来计算接触点的坐标,再依照这个坐标来进行相应的操作,因此这种技术必须是要施力到屏幕上,才能获得触摸效果。
所有的电阻式触摸屏都采用分压器原理来产生代表x坐标和y坐标的电压。
分压器是通过将两个电阻进行串联来实现的。
上面的电阻(r1)连接正参考电压(vref),
下面的电阻(r2)接地。
两个电阻连接点处的电压测量值与下面那个电阻的阻值成正比。
所以电阻屏的定位是通过ad采样获取电压,来确定点击位置的。
电容式触摸屏利用人体的电流感应进行工作,其触摸屏由一块四层复合玻璃屏构成。当手指触摸在触摸屏上时,由于人体电场、用户和触摸屏表面形成以一个耦合电容,对于高频电流来说,电容是直接导体,于是手指从接触点吸走一个很小的电流。这个电流分别从触摸屏四角上的电极中流出,并且流经这四个电极的电流与手指到四角的距离成正比,控制器通过对这四个电流比例的精确计算,得出触摸点的位置信息。
两种屏幕都有其优缺点。电阻屏价格低廉,精度较高。电容屏外层可以使用玻璃,抗损性好,不容易出现误操作,可以实现多点触控。
这里驱动的是驱动ic为xpt2046的4线电阻式触摸屏,触摸屏的控制芯片很多,包括ads7843、ads7846、tsc2046、ak4182等。这几款芯片的驱动程序基本上都是一样的,而且封装也有一样的。
xpt2046是一款4导线制触摸屏控制器,内含12位分辨率125khz转换速率逐步逼近型a/d转换器。xpt2046支持从1.5v~5.25v的低电压i/o接口。xpt2046能通过执行两次a/d转换查出被按下的屏幕位置,还可以测量出加在屏幕上的压力大小。内部自带2.5v参考电压可以作为辅助输入,温度测量和电池检测模式之用。xpt2046片内还集成一个温度传感器。
这里使用stm32驱动xpt2046和lcd实现一个触摸检测和字符显示的功能,当检测到特定位置” click“按下后,显示一个hello world 。.
xpt2046驱动: (lcd的驱动参见:stm32 驱动 tft lcd):
xpt2046.cxpt2046.h
触摸屏的触摸检测是通过连接xpt2046的引脚,映射为外部中断触发引脚,在有屏幕触摸时,触发外部中断,所以需要配置一个外部中断函数:
stm32f10x_it.c
#include“stm32f10x_it.h”#include“xpt2046.h”//中断,检测到pen脚的一个下降沿。//置位pen_point.key_sta为按下状态//中断线0线上的中断检测voidexti1_irqhandler(void){pen_point.key_sta=key_down;//按键按下exti-》pr=1《《1;//清除中断标志位使用库函数会出现问题,原因不详//exti_clearitpendingbit(exti_line1);//这两句清除中断顺序不能颠倒//exti_clearflag(exti_line1);//清除line1上的中断标志位}
在mian()函数中调用相关函数:
intmain(void){//stm32初始化rcc_configuration();nvic_configuration();usart_configuration();spi_configuration();exti_configuration();gpio_configuration();lcd_init();touch_init();point_color=black;//设置字体颜色delay(100000);lcd_showstring(180,0,“click”);//显示“click”字符按钮while(1){if(pen_point.key_sta==key_down)//触摸屏被按下{pen_int_set(0);//关闭中断do{convert_pos();pen_point.key_sta=key_up;if(pen_point.x0》180&&pen_point.y0《16)//判定按下的是否是“click”字符按钮区域{lcd_clear(white);lcd_showstring(3050,“hellodog.。”);}}while(touch_pen==0);//如果pen一直有效,则一直执行pen_int_set(1);//开启中断}}}
6款常用电源设计电路原理图
1000W高功率密度AC/DC机壳开关电源,解决大功率市场需求——LMF1000-20Bxx系列
什么是深孔?深孔加工的特点 深孔钻钻头的类型和结构
如何实现HART调制解调器功能?
4G DTU的数据透传是什么,它又是如何进行的
STM32单片机对智能手机触摸屏的驱动
看清中国LED芯片商主要产能及市场格局
中汽协:9月国内汽车产销完成256.5万辆
电子垃圾的来源与分类
ChatGPT的朋友们:大语言模型经典论文
关于家里的无线网络的网速问题
如何使用micro:bit制作一个简单的数字罗盘
燃料电池金属双极板腾空出世 电池系统的一大助力
电感和电容的区别在哪里?
纯电动汽车高压电气架构设计方案
美籍华人在纽约举办第二届孔子节
新型Wyze Lock Bolt智能锁的应用案例
介绍一种用于消除电力系统中谐波的装置
英伟达发布最新AI芯片H200:性能提升2倍,成本下降50%
Talkase 推新款T3卡片手机,售价仅99美元