陈翎 潘中良
摘要:电容式触摸屏是多种类型的触摸屏中的一种主要类型,它在智能终端和手机等产品中得到了广泛使用。对电容式触摸屏进行测试是保证它的质量与性能的一个关键步骤。本文首先给出了电容触摸屏测试系统的结构,其次,对激励信号的软件程序设计进行了阐述,给出了相关的设计方法与步骤,通过与硬件电路的结合,实现了对多种类型的激励信号波形的产生。
关键词:电容式触摸屏 参数测试 软件设计 激励信号 波形产生
中图分类号:TP334.2 文献标识码:A 文章编号:1007-9416(2016)06-0169-02
Abstract:The capacitive touch panel is one of main types of touch panels, it has been applied in intelligent terminals and mobile telephone. The testing of capacitive touch panel is a key process step in order to ensure the quality and performance. First of all, the structure of the test system for capacitive touch panel is given in the paper. Secondly, the software program design of excitation signal is investigated, the design methods and design steps are given. The many types of excitation signal waveforms are generated by the combination of the software program and hardware circuits.
Key Words:Capacitive touch panel;parameters testing; software design;excitation signal;waveform generation
1 引言
触摸屏作为一种人机交互的输入设备,是目前人与机器设备进行沟通的界面中最简单的一种。使用者可以不必再通过键盘和鼠标,而是利用触摸方式来进行输入。触摸屏的优点主要有坚固耐用、反应速度快、易于交互等[1-3]。对触摸屏的操作过程是:以手指直接接触面板,接触点经由内部机构计算出接触点位置或接触点所在的区域,之后把结果传送到信息处理设备,达到输入的目的。
目前,触摸屏已广泛应用于人们的日常生活的各个领域,例如,手机、数码相机、售票终端系统等。在手机方面,人们对手机的智能化和便捷程度的要求越来越高,使得触摸屏作为一种便捷的人机接口在手机上的应用越来越普及;在汽车电子领域,人们对汽车的娱乐信息系统的要求也不断增加,车载导航系统、车内影音娱乐系统等得到了普及,由于触摸屏是比较方便的人机交互界面,因此迅速占领了车内用人机交互设备的市场。
触摸屏的类型主要有如下五种:表面声波式、红外线式、电阻式、表面电容式、投射电容式等。前两种触摸屏的体积大而且价格较高,适合于在一些大型的设备上使用;后三种具有体积小价格低,适合于移动设备和消费电子产品,其中的电容触摸屏具有响应时间短和透过率高等特点,已成为市场的主流触摸屏[4,5]。
电容触摸屏的制造是一个复杂而又精细的过程,包括了许多生产工序,主要的有镀膜工艺、曝光显影工艺、蚀刻工艺等。为了确保触摸屏产品的质量,必需在生产过程中的多个工序进行测试。本文所针对的是对电容触摸屏的参数测试。
2 电容触摸屏测试系统的结构
对电容触摸屏进行测试的测试系统主要包含如下模块:激励信号模块、控制模块、检测模块、探针模块、存储电路、LCD显示、键盘输入模块、接口模块等,如图1所示。对激励信号模块,我们采用直接数字频率合成(DDS)来进行设计,使用专用的DDS芯片AD9954来产生多种频率的信号波形。对AD9954的数据传送与控制,使用Altera公司Cyclone系列FPGA芯片EP1C3T144C8。对控制模块,使用STC90单片机来进行设计,并用它来实现对整个硬件部分的控制。
主要的工作流程是:在控制模块的作用下,由激励信号模块产生激励信号波形,通过探针模块将激励信号施加到电容触摸屏的扫描线上,由检测模块对扫描线间的电容进行测试,之后把测得的电容值保存到存储电路模块,并在LCD显示屏上进行显示,通过接口模块传送到微型计算机。
控制模块是对各种测试过程进行控制、进行测试数据的处理;接口模块是实现USB接口、并口、RS232串口、GPIB接口和以太网接口等,并完成它们的集成。激励信号模块是根据需要产生多种频率的信号(方波、三角波、正弦波等),并施加到电容触摸屏的扫描线上,以完成对扫描线间的电容进行检测;该模块是整个测试系统的一个关键部分,本文下面给出对它的软件程序设计。
3 激励信号的软件程序设计
本文的激励信号发生器的软件系统是采用MFC(Microsoft Foundation Classes)和Visual C++进行设计的,图2是软件的主界面。
在主界面的菜单栏中有“文件”、“初始化”、“波形类型设置”、“波形参数设置”、“发送波形数据”、“帮助”等菜单项。
3.1 主界面的设计
在菜单项“文件”中有“新建”、“打开”、“保存”、“另存为”、“打印”、“退出”等菜单命令,它们是用于对信号波形的说明文件的创建、保存、修改、打印等。菜单项“初始化”的功能是实现对信号发生器的硬件电路中的DDS芯片、FPGA芯片、以及通信接口例如USB接口、并口、RS232串口、GPIB接口和以太网接口等的初始参数配置,以保证后续工作过程的正确性。菜单项“波形类型设置”的功能是选择所要生成的信号波形的类型,例如方波、三角波、正弦波等。菜单项“波形参数设置”是给信号波形的一些参数赋值,例如频率与幅度等。菜单项“发送波形数据”是把前面的“波形类型设置”和“波形参数设置”中所指定的相关数据发送给信号发生器的硬件电路部分,之后由硬件电路来产生对应的信号波形。
对主界面的设计,主要采用MFC,它是微软公司提供的类库,是以类的形式封装了API函数。利用MFC的类库可以完成对消息的自动化处理,同时通过控件与消息的对应关系,把消息映射到类的成员函数,从而完成对多种事件的处理。在进行MFC程序设计时编程者不需要详细了解每个API函数的实现与调用过程,只需要首先对这些类进行实例化,然后再调用其中的成员函数,就能获得相应的功能。
3.2 初始化即驱动程序的设计
激励信号发生器的软件系统的初始化,主要是对硬件电路中的DDS芯片、FPGA芯片、以及通信接口的参数配置与数据一致性等进行处理,这是通过编制如下的通信驱动程序、FPGA驱动程序和AD驱动程序等多个驱动程序来实现的。
通信驱动程序是用于微型计算机与信号发生器硬件电路的数据通信,它提供了在两者之间进行通信时的初始化功能和接口函数,主要的函数有:初始化函数void Initial(int brate),其中参数 brate为设置的波特率。数据发送函数:void Send(*datasend),其中参数datasend为发送的数据,它可以是字节数据或保存在一个缓冲区中的数据。数据接收函数:void Receive(*datarec),其中参数datarec为接收的数据,是把它存放在一个缓冲区中。
对USB接口、并口、RS232串口、GPIB接口和以太网接口等,由于它们是采用各自的数据通信协议,因此对它们中的每一种,这三个函数Initial( ), Send( ) 和Receive( ) 都有其对应的实现方式。
FPGA驱动程序的主要功能是通过单片机来对FPGA芯片进行控制,并实现对波形类型的选取、波形频率和波形幅度等的设置。主要的函数有:波形选择函数 void Selectwave(char wav),其中wav参数是代表波形的类型,以字符的方式来表达。设置波形频率的函数 void Freqset(int fre),其中fre参数是代表频率参数,以整型数的方式来表示。设置波形幅度的函数 void Amplset(float amp),其中amp参数是代表幅度参数,以浮点数的方式来表达。
AD驱动程序是实现对AD9954芯片输入数据、读写与更新它的寄存器等,以使得它在这些数据信息的作用下,产生相应的激励信号波形,并通过它的输出引脚传出。主要的函数有:读写寄存器函数 void Readwrite(unsigned char address, unsigned char *buff, unsigned char mb, unsigned char sel),其中 address为寄存器的地址,buff 为指向读回数据的指针,mb为读回的数据的字节长度,sel为读写选择,此时用1表示读,用0表示写。更新寄存器函数 void Update(void),它的功能是将寄存器的当前值清除,为后续的操作例如向寄存器中写入数据做准备。
3.3 发送波形数据的程序设计
波形数据是需要通过微型计算机与信号发生器的接口传送到DDS的存储器RAM中。在我们所设计的硬件电路中,波形RAM的存储深度为1024个单元,每个单元的字长是12比特,因此,对波形的一个周期的采样点数为1024个。由于所采用的数模转换芯片支持如下两种输入格式:直接二进制码和二进制补码,因此为方便就使用直接二进制码作为输入,此时把波形点的幅度值量化为0至4095之间的无符号整数。发送波形数据的函数为void Sendwd( ),若是使用USB接口进行波形数据的传送,则该函数的主要代码为:
void Sendwd( )
{ int j, char sdata[2048];
m_UsbPort.InitPort( ); // 对USB口进行初始化
m_UsbPort.StartControl( ); // 启动USB的监视线程
m_bUsb_Open = TRUE; // 打开USB口
for(j = 0; j { sdata[2*i]=(8*DATA[i])%256; // 对波形数据的低8位进行发送 sdata[2*i+1]=((8*DATA[i])/256)%256; // 对波形数据的高8位进行发送 } m_UsbPort.WriteToPort(sdata,2048); m_UsbPort.ClosePort( ); // 关闭USB口 } 4 激励信号波形的实验结果 使用所设计的激励信号发生器的软件系统,并在硬件电路的配合下,在设置了所需生成的信号波形的参数例如频率和幅度之后,就可以通过硬件电路中的DDS芯片AD9954来产生所需的波形。这里所产生的信号类型为方波、三角波、正弦波等,信号波形的频率为100Hz、1KHz、10KHz等。图3是使用所设计的硬件电路来产生的这几种信号波形,它们的频率都为10KHz。 5 结语 在对触摸屏进行测试的过程中,精确的激励信号的产生是一个关键的因素,它会对整个测试系统的测试精度产生影响。对激励信号的产生,主要涉及电路硬件和软件程序设计两个方面,本文对它的软件程序设计进行了讨论,给出了相关的设计方法与步骤,通过与硬件电路的结合,实现了对多种信号波形的产生,能较好地满足对电容触摸屏的参数进行测试的要求。 参考文献 [1]潘中良.系统芯片SoC的设计与测试[M].科学出版社,2009. [2]夏厚胤,吴亮,黄子强.新型并行扫描抗强光红外触摸屏模块设计[J].液晶与显示,2015,30(3):472-483. [3]吕燚,邓春健,李文生.高分辨率多点触控红外触摸屏设计[J].液晶与显示,2015,30(1):77-82. [4]Y.Hsiang,S.T.Ying.A pseudo-differential measuring approach for implementing microcontroller-based capacitive touch sensing in low-power quality situation[J].IEEE Sensors Journal,2016,16(2):390-399. [5]L.C.Lung,C.Y.Ming.Position estimation and smooth tracking with a fuzzy-logic-based adaptive strong tracking Kalman filter for capacitive touch panels[J].IEEE Trans.on Industrial Electronics, 2015,62(8):5097-5108.