首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

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

触摸屏是结合显示器使用的一种透明的绝对定位系统,透明和优良的定位原理是它的技术特征。目前应用在各场合的触摸屏主要有四种:电阻式触摸屏、电容式触摸屏、表面声波触摸屏和红外触摸屏。其中红外触摸屏的视觉效果和定位原理都优于其它触摸屏技术,而且不受电流、电压和静电干扰,可以适宜恶劣的环境条件。但是,与其它三种触摸屏相比,红外触摸屏也存在分辨率低的问题,这一点严重影响了红外触摸屏的实际应用。
为此,本文采用ARM7和VC
提出了一种高分辨率的红外触摸屏的实现方案。该方法通过ARM7对接收管和发射管的控制,来实时采集与发射管一一对应的接收管的光通量,然后计算鼠标位置,最后通过VC编程来实现在Windows下的鼠标驱动。
1硬件平台
1.1工作原理
红外触摸屏主要基于在屏幕四边放置红外发射管和红外接收管。本系统中的微处理器控制驱动电路依次接通红外发射管并检查相应的红外接收管,从而形成横竖交叉的红外线阵列,并得到定位的信息。本文通过ARM7对移位锁存器的控制来对红外发射管进行逐个扫描,同时,ARM7通过地址线和数据线来寻址每个相应的红外接收管,从而得到相应的光通量值。其控制原理如图1所示。

本系统中的移位锁存器具有移位和存储两个时钟。ARM7通过IO口控制移位锁存器的这两个时钟以及数据输入端。通过数据输入端将一个脉冲写入移位寄存器后,在移位时钟的上升沿即可将写入的数据移人寄存器,并在存储时钟的上升沿将数据置入锁存器中。利用移位锁存器的这一特点,可在移位时钟的上升沿将脉冲移至发射管,并在存储时钟的上升沿点亮发射管。写入的脉冲会随移位时钟上升沿的到来不断的移位,直到从输出端移出。将第一个移位锁存器的输出端与下一级的输入端相连,可将写入的脉冲移人下一级。因此,通过移位锁存器的级联可实现ARM7对更多的发射管的驱动。结合以上特点,即可将发射管逐个点亮。
在发射管被点亮的时刻,ARM7将通过地址线寻址与发射管位置上相对应的接收管,并将接收感应到的光通量通过放大并转换成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事件门限值。其具体代码如下:
返回列表