首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 电子技术 > 光电应用
采用视频的无线激光定位设备的设计
来源:本站整理  作者:佚名  2009-04-01 13:43:32




准确分离视频信号对系统的成功至关重要,在该系统中视频信号同步分离可以选用芯片LM1881来实现,输入为满足CCIR标准的视频信号,输出有复合同步信号、场同步信号、奇偶场标志信号。其中,复合同步信号中包含了周期为64μs的行同步信号和场回扫期间的周期为32μs的场均衡信号、场同步信号[2]。
2.3计数电路
2.3.1光信号行计数
选择20MHz的晶振作为行计数器的计数时钟脉冲输入,计数器的时钟频率实际上决定了视频信号每一行的采样点的数量,即每行水平的数字分辨率。行周期64μs,频率15625Hz,每行的采样点为20M/15625=1280,除去行消隐和行同步的时间,每行的有效采样点可达1000点以上。为了保证计数器不会溢出,需用二进制地址10位,因此我们选择采用12位计数器。由光信号和场同步脉冲通过与非门接到计数器的清零引脚,由20MHz时钟信号和行同步脉冲通过与非门接到计数器时钟脉冲输入引脚。当光信号到来时计数器开始计数,下一行同步脉冲到来时,会停止计数,同时触发锁存器,存储计数器中的数值,至此就获得了光点的行坐标。下一场同步脉冲到来时,会将计数器清零,开始新一行的点坐标测量[3]。图4是实现行计数的波形示意图。
 

2.3.2 光信号场计数
场计数的工作原理与行计数类似,只是计数器时钟脉冲输入改为行同步脉冲。光信号到来时开始计数,当场同步脉冲到来时停止计数,触发锁存器,存储计数器中的数值,至此就获得了光点的场坐标。同时场同步脉冲会将计数器清零,开始新一场的点坐标测量。
由于摄像头采用隔行扫描方式,两场构成一帧画面,奇数场扫奇数行,偶数场扫偶数行,所以此时得到的场坐标与实际值之间有较大误差。为了提高精度,需要确定当前扫描的是奇数场还是偶数场。如果场计数器中的值为n,LM1881的奇偶场标志脚输出0,则表明当前扫描的是偶数场,光点实际应在第2n行;若输出1,表明扫描的是奇数场,光点实际应在第2n-1行。
3.单片机串口通信流程
在本系统中使用的单片机是陵阳SPCE061A,它的UART模块提供了一个全双工标准的通信口,用于与外设之间的串行通信。在使用SPEC061A的异步串行端口UART实现与PC通信时,由于SPEC061A的I/O电平和PC不一致,要采用一片MAX232进行电平转换,MAX232的RXD和TXD分别接SPCE061A的IOB10(TX)和1OB7(RX)。
根据RS-232的标准,SPCE061A单片机是按字节传输数据的。利用IOB口的特殊功能和UART IRQ中断,可以同时完成UART接口数据的接收和发送。SPCE061A单片机串行通信帧结构为:1位启动位,8位数据位,1位奇偶校验位,1位停止位。使用UART模块进行通信时,必须事先分别将管脚I0B7设置为输入状态,IOB10设置为输出状态。将波特率设置为9600b/s即可满足本系统实时数据传输要求。
初始化的代码为:
*P_IOB_Dir=0x0400;             //IOB0~IOB7初始化为输入,IOB10为输出
 *P_IOB_Attrib=0x0480;
 *P_UART_BaudScalarHigh=0x05;    //波特率设置为9600bps
 *P_UART_BaudScalarLow=0x00;
 *P_UART_Command1=0x0000;     //允许接收、发送
 *P_UART_Command2=0x00C0;
单片机数据发送程序代码片段为:
      Ret=*P_UART_Command2;       //检查标志位,查看上次数据是否发送完毕
      Ret=Ret&0x0040;
      while(Ret==0)      //若没有等待继续发送
     {
       Ret=*P_UART_Command2;
       Ret=Ret&0x0040;
       *P_Watchdog_Clear=C_WDTCLR;
     }
      m1=m&0x000f;                   //将16进制m1转ASCLL码传送上位机
      Hex_ASC(m1);
       *P_UART_Data=m1;          
4.PC机软件设计
在计算机接收端,由串口1接收单片机发来的数据,采用VB 6.0设计软件程序,串行通讯利用MSCOMM控件实现[4]。MSCOMM能十分方便地开发出使用计算机串口的计算机通信程序。在本系统中MSCOMM控件采用事件驱动方式从端口获取数据,软件处理流程为:打开串口开始接收单片机发送来的数据,首先判断数据帧的开始字节,是则关闭OnComm接收事件,然后接收数据字节,判断数据最大最小值,采用坐标转化算法将接收的坐标转化为屏幕坐标,最后打开OnComm接收事件,等待下一次OnComm事件产生。
Windows SDK中函数SetCursorPos()可以实现将鼠标光标显示在投影大屏幕上的激光点处,该函数带有两个参数x和y,表示鼠标在屏幕上的坐标。函数mouse_event()可以模拟一次鼠标事件,例如可用如下命令模拟左键单击:mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0。这样就实现了利用激光笔光点控制目标大屏幕的鼠标指针定位,移动和单双击。
5.结束语
试验表明,装备设计合理,满足设计技术指标要求,工作稳定可靠,且具有较强的可扩充性,只需做少许改动即可适应用户更高的要求,若要求进一步提高光标定位的精度,可选择更高的晶振作为行计数器脉冲的输入,必要时对计数器加以扩展。这相当于将像素点加以细化,因而精度提高。
本装置是配合计算机,投影仪而用于产品演示、电化教学及学术会议等场合的理想演示用工具。经过改装后,还可用于警员、军队枪械的模拟训练,有着广阔的应用前景。

上一页  [1] [2] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:190,203.10000 毫秒