基于ARM7和VC平台的高分辨率红外触摸屏设计

发布者:sigma28最新更新时间:2010-09-25 来源: 电子元器件应用关键字:高分辨率  红外触摸屏  ARM7 手机看文章 扫描二维码
随时随地手机看文章

  触摸屏是结合显示器使用的一种透明的绝对定位系统,透明和优良的定位原理是它的技术特征。目前应用在各场合的触摸屏主要有四种:电阻式触摸屏、电容式触摸屏、表面声波触摸屏和红外触摸屏。其中红外触摸屏的视觉效果和定位原理都优于其它触摸屏技术,而且不受电流、电压和静电干扰,可以适宜恶劣的环境条件。但是,与其它三种触摸屏相比,红外触摸屏也存在分辨率低的问题,这一点严重影响了红外触摸屏的实际应用。

  为此,本文采用ARM7和VC提出了一种高分辨率的红外触摸屏的实现方案。该方法通过ARM7对接收管和发射管的控制,来实时采集与发射管一一对应的接收管的光通量,然后计算鼠标位置,最后通过VC编程来实现在Windows下的鼠标驱动。

  1硬件平台

  1.1工作原理

  红外触摸屏主要基于在屏幕四边放置红外发射管和红外接收管。本系统中的微处理器控制驱动电路依次接通红外发射管并检查相应的红外接收管,从而形成横竖交叉的红外线阵列,并得到定位的信息。本文通过ARM7对移位锁存器的控制来对红外发射管进行逐个扫描,同时,ARM7通过地址线和数据线来寻址每个相应的红外接收管,从而得到相应的光通量值。其控制原理如图1所示。

控制原理

  本系统中的移位锁存器具有移位和存储两个时钟。ARM7通过IO口控制移位锁存器的这两个时钟以及数据输入端。通过数据输入端将一个脉冲写入移位寄存器后,在移位时钟的上升沿即可将写入的数据移人寄存器,并在存储时钟的上升沿将数据置入锁存器中。利用移位锁存器的这一特点,可在移位时钟的上升沿将脉冲移至发射管,并在存储时钟的上升沿点亮发射管。写入的脉冲会随移位时钟上升沿的到来不断的移位,直到从输出端移出。将第一个移位锁存器的输出端与下一级的输入端相连,可将写入的脉冲移人下一级。因此,通过移位锁存器的级联可实现ARM7对更多的发射管的驱动。结合以上特点,即可将发射管逐个点亮。

  在发射管被点亮的时刻,ARM7将通过地址线寻址与发射管位置上相对应的接收管,并将接收感应到的光通量通过放大器和AD转换器放大并转换成8位数据,再通过数据线传送给ARM7进行处理。通过这样处理可使发射管与接收管一一对应,从而为确定触摸位置奠定基础。红外触摸屏的具体工作流程如图2所示。

红外触摸屏的具体工作流程

  1.2高分辨率的实现

  早期的红外触摸屏的分辨率直接由红外对管数决定,对于接收管来说,只有接收到和没有接收到信号两种情况,触摸分辨率就等于屏的物理分辨率。因此其触摸屏的分辨率比较低。

  但如果将接收的信号强度进行量化分级,那么,对于接收的信号,不仅要判断是否被阻挡,还要判断出被阻挡的程度,触摸物的不同位置将决定是否有接收信号且接收信号的强度也有所不同,因此触摸物的位置与接收的红外信号强度有直接的对应关系,即使触摸物移动非常小的距离也会导致信号强度发生改变,从而可以得到极高的分辨率。该情况下的触摸屏分辨率主要由红外对管数和模数转换精度决定,其触摸屏分辨率为红外对管数与单对红外管能实现的分辨率的乘积。触摸屏坐标由红外管的物理坐标和触摸点在相应管中的坐标共同决定。基于以上原理,可以将每次采集到的红外接收管的光通量进行256级量化,这样,得到的最小分辨率就是接收管的宽度/256,从而大大提高了红外触摸屏的分辨率,该方法可以达到2046×768的精度。

  1.3触摸位置的计算

  为了得到准确的触摸位置,在计算触摸位置时必须排除周围环境光的干扰。为此,本文通过确定每对管子的域值来作为判断是否有手指触摸的依据。该域值的确定可通过对每对管子的“0”态和“1”态时的数据采样来实现。 “0”态,即将所有的发射管进行一次清零,此时的发射管都为熄灭状态,这样,采样得到的就是接收管接收到的周围光的光通量;“1”态,即将所有的发射管逐个点亮,此时的发射管在某一时刻只有一只被点亮,采样得到的是接收管接收对应发射管及周围光的光通量。

  本文中的红外触摸屏的触摸位置的计算主要是通过遮挡时与未遮挡时的光强比来得到的。在判断触摸位置时,可以先确定被遮挡的管子,计算得到被遮挡的大致位置。若被遮挡的管子为第N个管子,这个被遮挡的大致位置为Ld,则有:

  Ld=(N-1)×管子的宽度

  由于手指遮挡时有一定的区域,所以遮挡时有两种可能:其一是在被确定的管子的前面;其二是在被确定的管子处。图3所示为手指遮挡示意图。

手指遮挡示意图

  为了精确计算,需要计算这两种情况下位置的偏移量△L1和△L2。则有:

精确计算

  其中,L为第N个管子被遮挡时的位置。△L1为手指在被确定的管子的前面时的偏移量。△L2为手指在被确定的管子处时的偏移量,XN为扫描时采样第N个管子接收到的数据,XNmax为“1”态时采样第N个管子接收到的数据.XNmin为“0”态时采样第N个管子接收到的数据。

   2鼠标驱动

  ARM7作为硬件上的核心控制芯片,只能进行采集以得到触摸位置信息,而无法实现相应的鼠标动作。所以,必须通过主机端的驱动程序来实现。本文中的驱动程序可通过VC++编程来实现串口通信和鼠标动作,从而完成软件结合硬件对鼠标的驱动。

  2.1  串口通信

  为了使主机能够接收ARM7通过串口传送的触摸位置,可利用Microsoft公司提供的AcTIveX控件Microsoft Communications Control,并通过VC++编程来实现串口通信。通过在该控件中的设置可指定通信串口号,同时可设置波特率、校验位、停止位、数据位等通信参数,以及接收OnComm事件门限值。其具体代码如下:

具体代码

  由于传统的鼠标是一种相对定位系统,它只和前一次鼠标的位置坐标有关。而触摸屏则是一种绝对坐标系,与相对定位系统有着本质的区别。因此,本文通过主机从串口接收到的触摸点坐标数据并进行转换来得到屏幕坐标,即触摸屏的坐标范围为(0,0)到(2048,768)。而ARM7只能通过串口发送字节,且只能发送小于256的数据,所以很难实现直接传输。因此,在数据发送时,应将采集得到的位置数据的每个位上的数分别进行传送。与此同时,主机端从串口接收缓冲区并取出数据,然后在驱动程序中将这些数据重新组合起来以得到触摸位置信息。另外,为了实现鼠标的不同动作,也应分别发送不同的控制字。每次串口通信的数据格式如下:

数据格式

  其中,X为触摸位置的横坐标,X1为X百位上的数,X2为X十位上的数,X3为X个位上的数;Y为触摸位置的纵坐标,Y1为Y百位上的数,Y2为Y十位上的数,Y3为Y个位上的数。

由于刚接收的数据为VARIANT类型,故需将其转化为int型变量来进行以上坐标的组合。该转换过程是先将VARIANT类型变量赋值COle- SafeArray类,再利用COleSafeArray类中的成员函数将数据写入BYTE型数组中,最后将BYTE型数据转化为int型。

  2.2鼠标动作

  鼠标动作在触摸屏的应用中甚为重要。它主要包括鼠标的定位,鼠标的移动,鼠标的左键单击和双击,以及鼠标的右键单击。在VC++编程中,可通过使用API函数中的mouse_event来模拟鼠标事件,以实现以上的鼠标动作。其实现代码如下:

  定位:SetCursorPos(X,Y);

  左键单击:mouse_event((MOUSEEVENTF_LEFYDOWN,0,0,0,0);

  mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);

  在模拟鼠标动作的同时,一个很重要的处理步骤是屏蔽采集数据时受到的干扰。另外,使鼠标运动平滑化也不容忽视。

  图4是通过matlab软件对鼠标运动过程中的各坐标绘制的曲线图。通过曲线可以看到,硬件上的干扰会造成采集的坐标数据出现突变点,曲线上有很多毛刺。这也合理的解释了鼠标在运动过程会出现回跳和抖动,不能平滑运动的现象,因此必须屏蔽这些干扰。

各坐标绘制的曲线图

  针对突变点,本文采用了比较法来克服。所谓比较法,就是将后一次接收到的坐标数据与前一次接收到的坐标数据做比较,并设置一定的域值范围。当比较得到的绝对值在该域值范围内时,则认为所作的动作是有效的。与此同时,还需比较前后数据的变化趋势是否一致,只有当数据的变化趋势一致,才认为鼠标的移动是有效的。

  针对毛刺,本文采用平均法和比较法来克服。所谓平均法,是将从第N组到第2N组的N组数据进行平均,然后将其作为第N组数据。这样可以有效的减少毛刺干扰。另外,也可以对前后两组数据进行比较,只有当比较得到的绝对值大于触摸屏的最小分辨率时,才认为鼠标发生移动,否则原地不动。通过这样的处理,可以解决鼠标抖动的问题。经过处理后的鼠标运动曲线如图5所示。

经过处理后的鼠标运动曲线

  3结束语

  本文介绍了基于ARM7控制器和VC实现的红外触摸屏设计方案,该方案以ARM7作为硬件的核心控制芯片,并通过其利用IO口对移位锁存器的控制来实现对发射管的驱动,利用地址线和数据线来实现对接收管的寻址和采样,以形成红外定位阵列,从而从硬件上完成了位置数据的采集。该方法可实现2046×768 的高分辨率。而在软件上,通过VC++编程则可实现主机端的串口通信,模拟鼠标动作,并结合比较法和平均法对鼠标运动进行平滑化处理。

关键字:高分辨率  红外触摸屏  ARM7 引用地址:基于ARM7和VC平台的高分辨率红外触摸屏设计

上一篇:基于ARM的系列处理器介绍
下一篇:机场导航站综合监控系统的前端采集装置设计

推荐阅读最新更新时间:2024-03-16 12:30

数字万用表实现高分辨率高带宽高采样率数字化功能
3458A万用表可实现高带宽高分辨率及高采样率对模拟信号数字化的功能。区别于其它的较之低端的数字万用表,3458A不仅有积分器路径(Intergator),还特有跟踪和保持(Track-and-Hold)路径来实现高达12M带宽16bit分辨率/50K采样率的功能。 首先来看看其整个数字化的结构,如下图: **分析软件option-005已经停产,可使用上位机进行二次开发做数据处理。 标准的DCV路径可实现18 bits @ 50 kSamples/s到16 bits @ 100 kSamples/s的数字化过程。在10V量程下,底噪在这两种分辨和采样率下分别达到0.005%和0.05%。为了捕获脉冲信号,需要将孔径时
[测试测量]
数字万用表实现<font color='red'>高分辨率</font>高带宽高采样率数字化功能
基于TMS320VC5409和Cygnal单片机构成的移动数据处理传输系统
1 引言   移动数据处理传输系统主要应用在小型或便携仪器上。它能够采集、处理和并通过无线移动网传送和接收数据。由于无线移动网的费用,应使移动数据处理传输系统有较强的实时数据处理和数据压缩功能,以减少通过移动网传送和接收数据量。另外由于仪器具有体积小、便于携带、较长的工作时间,电池供电等特点,因而要求移动数据处理传输系统有较低的功耗。为达到上述目的,本文设计了一种基于Ti公司低功耗DSP芯片和Cygnal低功耗的混合信号系统级单片机移动数据处理传输系统。 500)this.style.width=500;" border=0>   该移动数据处理传输系统(见图1)由三个主要DSP单元、CPU单元,GSM单元组成。经放大、滤
[单片机]
基于TMS320<font color='red'>VC</font>5409和Cygnal单片机构成的移动数据处理传输系统
ARM7S3C44b0看门狗作延时函数
static int delayLoopCount=400; void Delay(int time) { int i,adjust=0; if(time==0)//校准 { time=200; adjust=1; delayLoopCount=400; rWTCON=((MCLK/1000000-1) 8)|(2 3); //MCLK/1M,Watch-dog disable,1/64,interrupt disable,reset disable rWTDAT=0xffff;//for first update rWTCNT=0xffff;//resolution=64us
[单片机]
研究人员开发高分辨率雷达传感器 使十字路口更安全更高效
据外媒报道,亚利桑那大学(University of Arizona)研究人员开发了高分辨率雷达传感器,结合了摄像头和雷达的最佳效果,可解决智能多模式交通监控面临的问题。在能见度较好的环境下,摄像头可以很好地运作。但在下雨、黑暗或多雾的条件下,其性能会受到限制。而传统雷达虽然提供运动和位置数据,但无法有效区分各种接近的物体,如汽车、自行车和行人。 (图片来源:https://electronics360.globalspec.com/ ) 该传感器可区分车辆和行人,并可在所有光照和天气条件下,提供移动目标物体的数量、速度和方向信息。与传统雷达相比,该传感器原型中使用的高分辨率毫米波(mmWave)雷达传感器可提供更丰富的
[汽车电子]
研究人员开发<font color='red'>高分辨率</font>雷达传感器 使十字路口更安全更高效
USB接口小区电话报警平台在VC++下的实现
  引言   在现今社会中,电话网络报警以其快捷有效的优点得到普遍的应用。已逐步成为计算机的主流接口的通用串行总线USB很好地适应了现代计算机多媒体功能的拓展。目前通用的报警平台的接口是采用PCI卡价格贵,且不能即插即用。采用USB接口代替PCI卡,不仅降低了成本,而且可以提高管理平台的易用性和可维护性。本文在VC++下实现的小区报警管理平台的主要功能为:接收从用户报警系统通过电话网络传输来的报警信息(包括用户信息以及具体警报类型等),再将报警信息通过USB接口传入监控主机,与预先存入ADO(Activex Data Objects)数据库的用户信息进行查找,确定具体用户信息,以便及时对小区内警情进行处理。系统主要由接收报警信息预处
[嵌入式]
全球最大尺寸、最高分辨率,视涯科技硅基OLED显示屏落合肥
7月9日,合肥视涯信息科技有限公司(以下简称“视涯科技”)的两款产品正式点亮。 据合肥日报报道,其中一款是1.03寸、分辨率为Real RGB2.5Kx2.5K的高亮度半导体显示产品,是全球最大尺寸、最高分辨率的硅基OLED显示屏,可有效解决VR显示应用中的纱窗效应、拖尾及眩晕等等痛点,适用于近眼显示设备对大视场角 (Field of View, FOV) 的需求,配合光学透镜可以实现100°以上的FOV。另一产品则是尺寸为0.72寸、分辨率为1920 x1200、MIPI接口的微显示屏。 视涯硅基OLED微型显示器项目于2017年9月签约,该项目位于合肥市新站区合肥综合保税区内,主要应用于头盔显示、智能眼镜、电子取景器、VR
[手机便携]
如何编写ARM7的启动代码(LPC2119为例)
随着生活水平的提高和IT技术的进步,8位处理器的处理能力已经不能满足嵌入式系统的需要了;而16位处理器在性能和成本上都没有很大的突破。并且在8位机的开发中,大多使用汇编语言来编写用户程序。这使得程序的可维护性、易移植性等都受到了极大的挑战。正是基于此,ARM公司适时的推出了一系列的32位嵌入式微控制器。目前广泛使用的是ARM7和ARM9系列,ARM7TDMI内核的ARM7处理器广泛应用于工业控制、仪器仪表、汽车电子、通讯、消费电子等嵌入式设备。本文主要以philips公司ARM7TDMI核的LPC2119为例来分析如何编写ARM7的启动代码。 1、启动代码 在嵌入式系统软件的开发中,应用程序通常是在嵌入式操作系统的开发平台上采
[单片机]
ARM7系统中实现CF卡存储的文件系统设计
  随着微控制器性能的不断提高,嵌入式应用越来越广泛。但是目前市场上的大型商用嵌入式实时系统,价格昂贵,而且都针对特定的硬件平台。对于中小型系统开发,购买商用实时系统并不划算。   目前我们正着手将嵌入式系统软件应用于汽车卫星导航仪系统的一步开发。传统的嵌入式应用并不包括文件系统,而我们要实现的文件系统需要在车辆导航系统中实现地图数据文件的读写。因此它既要支持与MS-DOS兼容的文件系统也要支持其它类型的文件系统。 另一方面,从数码相机到MP3播放机,从掌上电脑到数码摄像机,CF(CompactFlash)卡由于具有体积小、兼容性强、价格相对低廉等诸多优点,在数码设备上的应用越来越广泛。但若想在CF卡与PC之间传递数据,通常不得
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved