当前位置:首页 > 单片机 > 单片机
[导读]1、概述模拟训练器激光靶是接收射击训练手枪发出的激光束,训练枪由真实手枪改造而成,子弹为空爆弹,即没有子弹头。射击过程膛内有压力,手枪有后坐力,因此和实弹射击没有不同的感觉,能够达到预期的训练效果。手枪

1、概述

模拟训练激光靶是接收射击训练手枪发出的激光束,训练枪由真实手枪改造而成,子弹为空爆弹,即没有子弹头。射击过程膛内有压力,手枪有后坐力,因此和实弹射击没有不同的感觉,能够达到预期的训练效果。手枪的不同之处是枪内加入一组小型纽扣电池和一个微型激光发生器,并利用膛内压力使激光器工作,其工作时间由膛内压力控制.激光靶由光敏二极管,模拟电路,数字电路,单片机和个人计算机系统组成,激光靶接收到激光信号后,经过信号处理,由单片机以串口通讯方式将信息发送给个人计算机,此时个人计算机显示胸靶图像,弹着点颜色不同与其它部分,并语音报靶,同时系统采用网络技术,在监控室可以实时的观看并统计各个激光靶的射击训练情况,及对训练效果进行评估.

2、硬件电路

2.1 激光信号采集处理电路

训练枪激光器发出的激光束波长为622~1500nm,激光靶采用光敏二极管作为传感器,而太阳光含有该波长范围内的光,特别是当阳光强烈时激光枪信号更显微弱.设计中采用完全补偿方案,即单独使用一个光敏二极管感应太阳光,再叠加微小电压作为基准电压,当激光打到靶面光敏二极管时,其输出高于基准电压,否则其输出低于基准电压,设计中采用CD4053将电平信号转换为开关信号.

由于激光器的工作时间较短,加之射击时的抖动,因此必须对CD4053的输出信号进行脉宽调制,以保证单片机读到有效的激光信号脉冲.激光信号采集处理电路如图1所示.

2.2 计算机实时通讯电路

8031单片机将采集到的数据处理完成后,将中靶位置信息通过RS232串口传送给个人计算机,由于单片机供电没有负电源,采用如图2所示的电路实现8031单片机与个人计算机的通信.


图1中V1和V2分别为激光接收电路电压和基准电压

2.3 数字信号编码采集电路

我们将激光靶的764 个光敏二极管分为64块,采用8位二进制编码处理,并将其组成8×8矩阵式键盘机构,使用8279完成对靶面位置的不断扫描,自动消抖,自动识别出位置并给出编码.采用8031单片机完成对8279的初始化和控制,以及数据的采集和处理,数字信号编码采集电路如图3所示


图3数字信号编码采集电路

3、单片机软件流程

单片机程序设计主要包括主程序,中断服务程序和数据传送子程序,其基本工作方式采用中断方式。单片机用8031CPU,它与PC机数据传送采用RS232串口通讯。单片机程序流程图如图4所示。

4、PC机软件设计

4.1 设计思想

软件使用VC++6.0设计,通过RS232串行接口接收下位机发来信息,然后显示并报环,同时记录做统计处理,产生报表。串行通讯采用MSCOMM32.OCX控件实现。

由于需要同时对对台下位机进行监控,软件采用多文档模式进行设计,硬件采用多串口卡PCL-858实现。系统结构如图1

4.2 关于MSCOMM32.OCX

MSCOMM32.OCX 控件是由微软提供,该控件提供了一系列标准通信命令的接口,它允许建立串口连接,可以连接到其他串行通信设备;可以发送命令、进行数据交换以及监视和响应在通信过程中可能发生的各种错误和事件,从而可以用它创建全双工的、事件驱动的、高效实用的通信程序。现将常用的属性列举如下:
CommPort:设置通信口号     Settngs:设置串行口参数
PortOpen:打开与关闭串行口    InputLen:读入输入数据长度
Input:读入数据          InBufferCount:输入缓冲区读入字节数
Output:输出数据         OutBufferCount:输出缓冲区读出字节数
InputMode:定义Input属性获得数据的方式。
Rthreshold:设置、返回在通信控件置ComEvRecieve并激发OnComm事件前要接收的字符数。
Sthreshold:设置、返回通信控件置ComEvSend并激发OnComm事件前发送缓冲区种的最小字符数。

4.3 串口通讯的实现

在ClassWizard中为新创建的通信控件定义成员对象:CMSComm m_Serial。以下是通过设置控件属性对串口进行初始化的源代码:
CString m_set;
  m_CommDpj.SetCommPort(m_pDoc->m_dpjComm.m_uPort); // 指定串口号
  m_set.Format("%d,n,8,1",m_pDoc->m_dpjComm.m_uBps);
  m_CommDpj.SetSettings(m_set); // 通信参数设置
m_CommDpj.SetInBufferSize(1024);// 指定接收缓冲区大小
m_CommDpj.SetInBufferCount(0);// 清空接收缓冲区
m_CommDpj.InputMode(1);// 设置数据获取方式
m_CommDpj.SetInputLen(0);// 设置读取方式


图5  系统结构图

m_CommDpj.SetRThreshold(10);//设置OnComm事件的响应

m_Opened=m_CommDpj.SetPortOpen(m_Port);// 打开指定的串口

打开所需串口后,使用OnComm事件和CommEvent属性捕捉并检查通信事件和错误的值。发生通信事件或错误时将触发OnComm事件,CommEvent属性的值将被改变,应用程序通过检查CommEvent属性值并作出相应的反应。以下为OnComm事件的源代码:
  VARIANT m_input1;
  COleSafeArray m_input2;
  long length,i;
  if(m_CommDpj.GetCommEvent()==2)//接收缓冲区内有字符
  {
     m_input1=m_CommDpj.GetInput();//读取缓冲区内的数据
     m_input2=m_input1;//将VARIANT型变量转换为ColeSafeArray型变量
     length=m_input2.GetOneDimSize();//确定数据长度
     for(i=0;i<length;i++)
     m_input2.GetElement(&i,m_Data+i);//将数据转换为BYTE型数组
     FromDpj();//进行事件处理
     DpjLock=false;
}

4.4 数据文件的生成

数据文件才文本形式进行存储。在数据文档中建立如下结构体:
struct ShotData{
unsigned int m_uNum;//编号
unsigned int m_uSNum;//站号
unsigned int m_uPlot;//射击点
 CTime  m_Curtime;//当前时间};

数据记录的源代码如下:
void CJGBDoc::GetFileName()//获取记录文件名
{
CString m_str;
GetCurrentDirectory(128,m_str.GetBuffer(128));
m_str.ReleaseBuffer(-1);
CFileDialog dlg(false,"Txt",m_str+"\*.Txt",NULL,"记录文件(*.Txt)");
if(dlg.DoModal()==IDOK)
{
     if(file.Open(dlg.GetPathName(),CFile::modeRead)!=0)
     {
         if(AfxMessageBox("文件已存在,是否覆盖?",MB_YESNO)==IDNO)
         {
AfxMessageBox("文件保存失败!");
             return;
}
file.Close();
     }
     if(file.Open(dlg.GetPathName(),CFile::modeWrite|CFile::modeCreate)==0)
     {
         AfxMessageBox("文件保存失败!");
     }
}
else
     AfxMessageBox("文件保存失败!");
}

实时记录函数:
{
---
CString  m_record;
m_record.Format("%d,%d,%d,%s",m_pDoc-> ShotData.m_uNum,
m_pDoc-> ShotData.m_uNum, m_pDoc-> ShotData.m_uNum
m_pDoc-> ShotData.m_CurTime.Format ("%y-%m-%d %H:%M:%S"));
file.Write(m_record);
---
}

5、结论

激光靶研制出样机后,与模拟射击训练用手枪进行了联调,试验表明,激光靶设计合理,满足设计技术指标要求,工作稳定可靠。通过采用模拟射击训练,一方面可以降低训练成本,另一方面也可消除意外事故,因此模拟射击训练器有很好的应用前景。

参考文献
[1] 王福瑞. 单片微机测控系统设计大全.北京航空航天大学出版社,1998.4
[2] 李大友.微型机算计接口技术.清华大学出版社,1998.5
[3] David J.Kruglinski,Scot Wingo,George Shepherd ,Programming Visual C++ 6.0技术内幕
1999.5
 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭