APP下载

基于MSP430的大面积电阻式触摸屏信号检测电路的设计

2016-12-01

传感器世界 2016年6期
关键词:触摸屏上位蓝牙

北京信息科技大学信息获取与检测实验室,北京 100101

一、引言

计算机技术和电子技术改变着我们的生活生产方式,触摸屏技术就是其中之一,它逐渐代替按钮、按键等传统控制输入装置,起着人与机器之间交流的桥梁作用。触摸屏具有的轻便和操作简单的特点,是传统键盘所不具有的,而电阻式触摸屏的低价格、高清晰度和高耐久等特点,让电阻屏成为了人机交互设备中应用最为广泛的一种触摸屏[1,2]。

本文对大面积电阻式触摸屏信号检测电路进行硬件设计和软件编程,分析了电阻屏的工作原理,结合电阻屏专用控制芯片,研究了电阻屏的线性化算法;通过蓝牙模块设计计算机接口,实现了下位机与上位机的无线短距离通讯;在MATLab的环境下,应用GUI工具完成串口的数据接收,完成了显示界面的实时绘图以及保存功能。

二、信号检测电路总体设计

1、系统设计目的

设计方案是通过测量四线式电阻屏的触点电路参数,把该参数经过A/D转换,送给单片机,在单片机上实现从数字参数到坐标转换,然后把坐标通过蓝牙送到上位机,上位机接到坐标信息后在上位机界面通过坐标信息作图[3]。

2、系统硬件设计

系统需要用到的硬件部分有:四线式电阻屏、ADS7846芯片、MSP430单片机和蓝牙模块。通过各个模块的有机连接,组成系统的硬件部分。大面积电阻式触摸屏用于系统的输入。由于是电阻屏,可笔触、手写等多种输入法。触摸屏控制器为ADS7846芯片,一旦笔或手指触摸在屏上,芯片采集触摸屏上的坐标。核心控制器MSP430实现对数据的处理,并结合上位机软件一起实现定位[4]。蓝牙模块代替USB线连接单片机和上位机[5]。

3、系统软件实现

软件部分分为上位机软件实现和单片机软件编程。

上位机软件主要功能是显示,应用MATLab的GUI和MATLab自带的串口通信函数serial,设计一个人机交互可控友好界面,通过蓝牙串口模块,实现数据的实时接收,并利用MATLab的科学计算功能,实时处理接收到的数据并绘图。

单片机软件部分主要是算法的设计,控制数据的接收、处理和发送。接收的数据是由电阻屏控制芯片传送的,处理数据主要是对数据进行转换和优化,数据发送由单片机控制串口与上位机进行通信。

三、硬件电路设计

1、下位机系统接口设计

电阻屏控制器ADS7846具有四线制触摸屏接口,将电阻屏四根导线与ADS7846的四个数据接口分别对应连接[6]。电阻触摸屏与ADS7846连接电路图如图1所示。对ADS7846芯片的控制由MSP430F149单片机完成。对MSP430F149编程时启用P1脚中断功能,P1.0为外部中断输入。

2、单片机与上位机接口设计

单片机与上位机通过蓝牙模块进行数据传输。设置好蓝牙模块传输波特率,此波特率分别与单片机波特率和上位机波特率一致,设置两个蓝牙模块一个为主模块一个为从模块,分别把两个模块与单片机和上位机连接。

无线蓝牙模块采用的是HC-05 嵌入式蓝牙串口通讯模块,它具有两种工作模式:命令响应工作模式和自动连接工作模式,在自动连接工作模式下模块又可分为主(Master)、从(Slave)和回环(Loopback)三种工作角色。

在这里我们采用的是自动连接模式,和蓝牙连接的MSP430单片机是主角色,和蓝牙连接的上位机是从角色,进而根据事先设定的方式进行数据传输。

由于蓝牙模块的接口为串口模式,蓝牙模块与单片机可直接串口连接,分别将蓝牙模块的RXD和TXD引脚与单片机的TXD和RXD引脚连接,连接关系表如图1所示。

蓝牙模块与上位机连接时,需要将串口转为USB接口,设计用到芯片PL2303将串口转为USB口。蓝牙模块与上位机连接图如图1所示。

四、软件实现

软件实现部分可以分为单片机软件部分和上位机软件部分。单片机软件部分主要是数据的接收、处理和发送,上位机软件部分在接收数据后主要是显示[7]。

1、单片机软件

单片机软件部分负责数据的接收、处理和发送。

当触摸屏被触摸时,单片机产生中断信号,向ADS7846写控制字,控制相应I/O口产生测量X、Y坐标的时序,等待A/D转换完成后读取数据。

电阻式触摸屏的电阻分布是近线性的,但不是理想的线性关系,经过A/D转换后的坐标值不能直接用于显示坐标,那样就会出现转换后的坐标值与实际坐标值差别很大的情况,这时需要用算法处理接收到的数据,就是电阻屏的线性化处理。

设计用到4点定位方法,得到坐标变换公式的算法来减小随机干扰,然后再对数据结果求算术平均值,进一步减少误差[8]。

然后将得到的X、Y值再次处理:取N个一组求算术平均值,经测试,可以得出当N等于15时,既能消除误差又不至于传输速度过慢。

MSP430F149有不同的USART通讯端口,可以串口异步或同步通讯,两种方式具有不同的帧格式和不同的控制寄存器。

本文采用串口异步通讯,波特率为9600。软件流程图如图2所示。

2、上位机软件

软件设计利用MATLab的串口通信函数serial函数通过串口接收数据,利用MATLab GUI设计绘图界面[9]。

MATLab GUI中断方式的串口通信优点是实现实时处理数据的目的。MATLab中的中断方式就是事件回调驱动。在编写程序时,首先设置驱动事件的方式,是字节驱动还是其他方式驱动,然后再设置事件驱动方式的触发条件。当串口上的数据缓冲区有满足设置的字节数目的数据或者数据缓冲区内的字节和设定好的字节相同,MATLab会调用回调函数里已设计好的程序。在回调函数里写好需要回调的内容,这样当中断发生时,在回调函数里的函数就会被调用。MATLab实现实时串口通信的流程图如图3所示。

五、功能测试

首先测试芯片ADS7846,测试过程如下:在触摸屏上用笔触摸,如果在LCD1602上有反应,不管数据正确与否,都说明芯片ADS7846可能在工作,然后触摸另一些点,数据又有所变化,则芯片ADS7846是工作的。图4为系统应用的电阻式大面积触摸屏,图5为部分硬件连接图。

在下位机测试完成后,然后测试蓝牙模块。在上位机软件没有完成前,先用串口助手接收数据,由于串口助手没有画图功能,因此显示的还是坐标。这时候就可以测试电阻屏线性化的好坏了,虽然不是很精确,但是可以看出大致趋势。图6为串口助手接收到的数据,数据是一组一组上传的,即测一组X、Y坐标上传一次,括号内第一个数为X坐标,第二个数为Y坐标。此次测量为画一条垂直于X轴的直线,设计时使触摸屏的左下角为坐标原点。从测试数据可以看出,测试的直线横坐标为12,纵坐标从13降到3,从数据可以看出这一段电阻呈线性化。

MATLab GUI显示模块可以简单的设置串口号、波特率、停止位和数据位,另外还具有储存上一次图像的功能,以及清除图像的功能。选择上位机识别的串口号,设置波特率与下位机一致,然后打开串口就可以接收数据实时作图,图7为在电阻屏上书写数字8和9在GUI界面的显示效果。由于电阻屏制作工艺比较粗糙,线性化的程度也受到了限制。

六、结论

本文主要对大面积电阻式触摸屏检测信号电路进行了硬件设计和软件实现。分析了电阻屏的工作原理,结合电阻屏专用控制芯片,研究了电阻屏的线性化算法;通过蓝牙模块设计计算机接口,实现了下位机与上位机的无线短距离通讯;在MATLab的环境下,应用GUI工具完成串口的数据接收,完成了显示界面的实时绘图以及保存功能;设计了系统整体硬件电路。

经过系统测试,该系统可以简单作图,可实现少量储存功能,可靠性比较好。限于个人能力,基本完成了系统的硬件设计和软件实现,但仍有一些不足之处,例如界面功能过于简单,电阻屏线性化不足,反应速度慢等。

猜你喜欢

触摸屏上位蓝牙
蓝牙音箱的直线之美
PLC和触摸屏在卫生间控制系统的应用
简单、易用,可玩性强Q AcousticsBT3蓝牙音箱
特斯拉 风云之老阿姨上位
皮肤“长”出触摸屏
适合自己的才是最好的 德生(TECSUN) BT-50蓝牙耳机放大器
紧急:蓝牙指尖陀螺自燃!安全隐患频出
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
以新思路促推现代农业上位