首页 > 范文大全 > 正文

浅谈4线电阻触摸屏和stm32的接口实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇浅谈4线电阻触摸屏和stm32的接口实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:很多LCD模块都采用了电阻式触摸屏,这些触摸屏等效于将物理位置转换为代表X、Y坐标的电压值的传感器。通常由4线、5线、7线和8线触摸屏来实现,文章探讨了如何用stm32系列MCU来驱动和读写4线电阻触摸屏

关键词:4线电阻触摸屏;stm32;接口实现;电阻式触摸屏

中图分类号:TP391文献标识码:A文章编号:1009-2374(2009)21-0046-02

触摸屏作为一种最新的输入设备,它是目前最简单、方便、自然的一种人机交互方式。它赋予了多媒体以崭新的面貌,是极富吸引力的全新多媒体交互设备。触摸屏在我国的应用范围非常广阔,主要是公共信息的查询;如电信局、税务局、银行、电力等部门的业务查询;城市街头的信息查询;此外应用于领导办公、工业控制、军事指挥、电子游戏、点歌点菜、多媒体教学、房地产预售等。将来,触摸屏还要走入家庭。

一、触摸屏操作原理

电阻触摸屏利用压力感应进行控制。电阻触摸屏的主要部分是一块与显示器表面非常配合的电阻薄膜屏,这是一种多层的复合薄膜,它以一层玻璃或硬塑料平板作为基层,表面涂有一层透明氧化金属(透明的导电电阻)导电层,上面再盖有一层外表面硬化处理、光滑防擦的塑料层,它的内表面也涂有一层涂层,在他们之间有许多细小的(小于1/1000英寸)的透明隔离点把两层导电层隔开绝缘。当手指触摸屏幕时,两层导电层在触摸点位置就有了接触,电阻发生变化,在X和Y两个方向上产生信号,然后送触摸屏控制器。控制器侦测到这一接触并计算出(X,Y)的位置,再根据模拟鼠标的方式运作。这就是电阻技术触摸屏的最基本的原理。

二、STM32的主要特性

2007年6月11日,半导体制造厂商意法半导体(ST)高调推出一个新的32位微控制器系列产品STM32。它采用的微处理器是ARM公司为要求高性能(1.25DhrystoneMIPS/MHz)、低成本、低功耗的嵌入式应用专门设计的ARMCortex-M3内核。多达128KB的嵌入式闪存、20KB的RAM和丰富的外设接口,包括两个12位模数转换器(1微秒的转换时间)、三个USART、两个SPI(18MHz主/从控制器)、两个I2C、三个16位定时器(每个定时器有4个输入捕获模块/4个输出比较器/4个PWM控制器),以及一个专门为电机控制向量驱动应用设计的内嵌死区时间控制器的6-PWM定时器、USB、CAN和7个DMA通道。内置复位电路包括上电复位、掉电复位和电压监控器,以及一个可用作主时钟的高精度工厂校准的8MHz阻容振荡器、一个使用外部晶振的4-16MHz振荡器和两个看门狗。

(一)用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_InitTypeDef ADC_InitStructure;

ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;

ADC_InitStructure.ADC_ScanConvMode = ENABLE;

ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;

ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_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 of ADC1 reset calibration register */

while(ADC_GetResetCalibrationStatus(ADC1));

/* Start ADC1 calibaration */

ADC_StartCalibration(ADC1);

/* Check the end of ADC1 calibration */

while(ADC_GetCalibrationStatus(ADC1));

}

四、结语

笔者设计采用基于 STM32的控制核心来实现和4线电阻触摸屏接口,已经成功的进行了应用,经检测可靠,而且实现比较容易。为系统中采用STM32微控制器和4线电阻触摸屏的接口应用提供了参考方案。

参考文献

[1]RM0008 Reference manual,,2008-02.

[2]STM3210E-EVAL firmware,,2008-03.

[3]4-wire and 8-wire resistive touch screen controller using msp430,.

作者简介:王骅(1978-),男,江苏无锡人,无锡机电高等职业技术学校助教,研究方向:自动控制;王晓忠(1981-),男,江苏无锡人,无锡机电高等职业技术学校助教,硕士,研究方向:控制工程。