采用视频的无线激光定位设备的设计
由于摄像头采用隔行扫描方式,两场构成一帧画面,奇数场扫奇数行,偶数场扫偶数行,所以此时得到的场坐标与实际值之间有较大误差。为了提高精度,需要确定当前扫描的是奇数场还是偶数场。如果场计数器中的值为n,LM1881的奇偶场标志脚输出0,则表明当前扫描的是偶数场,光点实际应在第2n行;若输出1,表明扫描的是奇数场,光点实际应在第2n-1行。
本文引用地址:https://www.eepw.com.cn/article/82920.htm3.单片机串口通信流程
在本系统中使用的单片机是陵阳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]. 俞斯乐等编著.电视原理 (第五版).北京: 国防工业出版社,2000
[2]. LM1881, LM1881-X Video Sync Separator General Description. National Semiconductor, June 2003
[3]. 胡敦辉等. 采用视频方式的点坐标测量方法[J]. 电子技术应用,2003,(3):33-35www.51kaifa.com
[4]. 李光明等. 用VB实现S7-300 PLC与PC机的普通串口通信[J].微计算机信息,2005, (09):38-40
评论