资讯详情

STM32单片机对智能手机触摸屏的驱动

描述

由于智能手机的发展和大屏幕的兴起,触摸屏得到了广泛的应用。触摸屏有两种:电阻触摸屏 俗称软屏;电容触屏俗称硬屏。

电阻触摸屏的屏幕部分是由一层玻璃或有机玻璃组成的导电层,表面涂有透明的电阻材料(ITO膜),上面覆盖一层外表面硬化光滑防刮的塑料层。它的内表面也涂有一层ITO,在两层导电层之间有许多细小(小于千分之一英寸)的透明隔离点把它们隔开。当手指接触屏幕时,两层 ITO当接触和电阻发生变化时,控制器根据检测到的电阻变化计算接触点的坐标,然后根据该坐标进行相应的操作。因此,该技术必须应用于屏幕才能获得触摸效果。

f5c0a41fc5916cfa27182ef0fb84b6c7.png

所有电阻触摸屏都使用分压器原理来产生代表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参考电压可用作辅助输入、温度测量和电池检测模式。XPT温度传感器也集成在2046片。

这里使用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中断检测为按下状态///中断线0voidEXTI1_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.Y016//判断是否按Click字符按钮区域{LCD_Clear(WHITE);LCD_ShowString(3050,“HelloDog.。”);}}while(TOUCH_PEN==0);/如果PEN一直有效,一直执行Pen_Int_Set(1)//打开中断}}

打开APP阅读更多精彩内容

点击阅读全文

标签: ak1分压电阻电容触摸屏桌

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台