4线电阻触摸屏和STM32的接口实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、触摸屏操作原理
电阻触摸屏利用压力感应进行控制。
电阻触摸屏的主要部分是一块与显示器表面非常配合的电阻薄膜屏,这是一种多层的复合薄膜,它以一层玻璃或硬塑料平板作为基层,表面涂有一层透明氧化金属(透明的导电电阻)导电层,上面再盖有一层外表面硬化处理、光滑防擦的塑料层,它的内表面也涂有一层涂层,在他们之间有许多细小的(小于1/1000英寸)的透明隔离点把两层导电层隔开绝缘。
当手指触摸屏幕时,两层导电层在触摸点位置就有了接触,电阻发生变化,在X 和Y两个方向上产生信号,然后送触摸屏控制器。
控制器侦测到这一接触并计算出(X,Y)的位置,再根据模拟鼠标的方式运作。
这就是电阻技术触摸屏的最基本的原理。
二、STM32驱动电阻触摸屏的实现
(一)用STM32检测触摸
STM32系列MCU的I/O口可以编程配置成带上拉电阻的模式,这个特点可以用来检测有无触摸。
STM32的GPIO管脚连接触摸屏的Y+和X- ,连接Y+的管脚配置成内部电阻上拉模式,连接X- 的管脚配置成推挽输出低电平。
如果Y+为高电平,那么就是没有触摸。
如果Y+为低电平,触摸屏被压下。
从高到低电平的跳变可以检测触摸,用到外部中断。
(二)用STM32读触摸屏参数
分两步读取X,Y坐标值。
第一步,驱动Y+为高电平,Y-为低电平,接X+管脚配置成AD输入模式,检测X+的电压,此电压与驱动电压的比例即Y坐标和整个屏的高度比率。
X坐标的检测也是同样。
驱动X+为高电平,X-为低电平,接
Y+的管脚配置成AD输入模式,检测Y+的电压,此电压与驱动电压的比例即X坐标和整个屏的宽度比率。
Y=Ux/Vdrive*触屏高度
X=Uy/Vdrive*触屏宽度
三、软件设计
(一)线电阻触摸屏检测软件流程
软件流程如图4所示:
(二)STM32配置AD程序
void ADC_Configuration(void)
{
ADC_InitTypeDefADC_InitStructure;
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = ENABLE;
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_External-TrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 2;
ADC_Init (ADC1,&ADC_InitStructure);
/* ADC1 regular channel14 configuration */
ADC_RegularChannelConfig(ADC1,ADC_Channel_10,1,ADC_SampleTime_55Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_11,2,ADC_SampleTime_55Cycles5);
/* Enable ADC1 DMA*/
ADC_DMACmd(ADC1,ENABLE);
/* Enable ADC1 external trigger */
ADC_ExternalTrigConvCmd(ADC1,ENABLE);
/* Enable ADC1 */
ADC_Cmd(ADC1,ENABLE);
/* Enable ADC1 reset calibaration register */
ADC_ResetCalibration(ADC1);
/* Check the end ofADC1 reset calibration register */ while(ADC_GetResetCalibrationStatus(ADC1));
/* Start ADC1 calibaration */
ADC_StartCalibration(ADC1);
/* Check the end ofADC1 calibration */
while(ADC_GetCalibrationStatus(ADC1));
}。