• 基于89C2051单片机的激光打靶信号处理系统设计


    目 录
    1 引言 1
    2 概述 2
    2.1 激光打靶系统概述 2
    2.2 本设计方案思路 3
    2.3 研发方向和技术关键 3
    2.4 主要技术指标 3
    3 总体设计 4
    3.1 激光的检测 4
    3.2 靶位的划分 4
    3.3 编码标准 5
    3.4 成绩的传送和处理 5
    3.5 其他说明 5
    4 硬件设计 6
    4.1 信号放大电路 6
    4.2 整形电路 8
    4.3 编码电路 9
    4.4 串行传送 11
    4.5 电平转换 13
    5 软件设计 14
    5.1 总体方案 14
    5.2 程序流图 14
    5.3 模块说明 15
    6 制作与调试 18
    6.1 硬件电路的布线与焊接 18
    6.2 调试 18
    7 结论 20
    参考文献 21
    致谢 22
    附录 23
    2.2 本设计方案思路
    本设计以实现信号的良好检测和数据转换、传输为主要目的;以信号检测,信号编码和数据传输为主要设计内容。
    在信号检测方面设计单脉冲小信号的放大电路和信号整形电路;在信号编码方面,要解决多路信号的编码问题,还要考虑到编码的优先选择问题;在脱靶问题的处理方法上,对打靶和信号采集传送进行同步化处理(详见第二章的硬件设计部分),把脱靶的情况与中靶的情况归为一类处理;数据传输采用UART串口通信。
    2.3 研发方向和技术关键
    (1)合理划分激光靶的光电探测器,提高系统的精度;
    (2)单脉冲小信号的放大和整形;
    (3)多路优先编码器的扩展;
    (4)与微机进行数据传输,方便成绩的统计、保存、显示和查询。
    2.4 主要技术指标
    (1)激光脉宽: 大于1ms
    (2)激光脉冲响应幅度:约10 mv
    (3)打靶距离: 30米
    (4)串行输出帧格式: 射击次数 + 所击中的光电探测器的编号
    3 总体设计
    激光打靶系统是一种集光、电于一体的系统,其工作原理是激光枪发出的激光束,打到光电传感器上,经光电传感器将光信号转换为电信号,电信号经过信号处理后由单片机发送到计算机的串行口,然后在计算机上完成成绩显示、查询和保存等功能。
    激光打靶系统结构的组成框图如图3-1所示。该系统包括半导体激光枪、模块式探测器、数字信号处理和发送电路、计算机数据处理程序等四部分。
    3.1 激光的检测[7,8]
    每次打靶,激光枪发出一个激光脉冲。如果激光脉冲击中光电靶,利用光生伏特效应,光电靶上的探测器把光信号转换成电信号,因此激光的检测就是对探测器响应电信号的检测。光电探测器的响应是一个单脉冲小信号,整个检测过程包括:信号放大、波形整形,检测输出是标准的脉冲数字信号。
    3.2 靶位的划分
    把一个激光靶划分为38块探测器,中心10环为一块探测器;9.8.7.6环分别有8块探测器;5环有5块探测器。根据不同靶位上的探测器来判断所击中的位置,包括环数:10.9.8.7.6.5;偏离方向:上.下.左.右.左上.左下.右上.右下。
    若信号击中两块或四块探测器的交界,则只取其中一块为有效,记为有效的探测器满足以下条件:
    (1)环数高;
    (2)偏离方向为斜向(例如:上和右上两方向,选择右上)。
    根据上述要求,本文转载自http://www.biyezuopin.vip/onews.asp?id=13236以及硬件电路设计的需要,对不同的探测器进行编码,见图3-2(右)。
    在这里插入图片描述
    图3-2 靶位划分与编号

    1)主程序:
    MAIN:
    MOV SP,#0X60  ;堆栈初始化
     CALL INIT     ;各寄存器参数设置
    MOV 40H,#0x01 ;打靶次数置1  
    AJMP $        ;等待中断
    (2)初始化程序:
    INIT:            
    MOV TMOD,#0X21;波特率发生器
    MOV TL1,#0XFD ;波特率 9600bps
    MOV TH1,#0XFD
    CLR ET1       ;禁止timer1 
    SETB PT1      ;时钟1 优先级:高          
    MOV SCON,#0x40;串口工作模式1,SM2=0,REN=0
    MOV PCON,#0   ;波特率 9600bps
    SETB EA       ;中断允许
    CLR PS        ;关闭串口中断
    CLR ES        ;串口优先级:低     
    SETB EX0      ;开外部中断INT0 SETB IT0      ;下降沿有效
    CLR PX0       ;INT0 优先级:低
    SETB TR1      ;时钟1 开始计数
    RET
    (3)中断服务程序:
    _INT0:         ;ISR中断服务程序
    NOP
    CALL DELAY_2MS ;同步延时
    MOV P1,#0xff  ;读P1口前先置1
    MOV A,P1      ;读P1口
    CALL INT0_SEND
    RET
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    什么是SQL 语句中相关子查询与非相关子查询
    ElasticSearch ( 一 ) 安装启动
    hive元数据的mysql迁移和升级的流程方案
    Unity 接口对接-时间戳
    Ansible之Playbooks的when语句
    2018的第一篇 博客,总结下半年来的变化吧
    kafka-- 安装kafka manager及简单使用
    windows下mysql的数据主主同步
    【JavaSE】抽象类和接口
    基于贝塞尔曲线(Bézier Curve)与硬约束的轨迹优化方法
  • 原文地址:https://blog.csdn.net/newlw/article/details/127405241