毕业论文,基于单片机的超声波检测系统 联系客服

发布时间 : 星期一 文章毕业论文,基于单片机的超声波检测系统更新完毕开始阅读f3109a67f5335a8102d22045

XXX大学学士学位论文

生某种输出状态。MSP430的捕获是靠触发沿来控制捕获定时器的计数值,根据计数值来处理事物如前后两次你可以测量外部事物发声的时间间隔,因此需要有捕获不同信号的能力,要提供捕获的标志和判断现象的依据(即将计数值复制到捕获寄存器中),要有允许捕获和停止捕获的功能。

4.2 程序设计

系统软件是在硬件功能实现的基础上,针对整个系统功能的实现和数据的处理与应用由编程语言来实现具体的任务。根据系统的硬件设计和所设定的目标,该系统软件需要实现以下功能:

(l) 信号控制:在硬件中,己经完成了发射单元部分、接收单元部分的设计,在软件中,要完成发射定周期数脉冲信号、接收信号控制,以及对信号的处理和显示结果。

(2) 数据存储:为了得到发射信号和接收信号的时间差,要读出此时刻计数器的计数值,然后存储到RAM中,而且每次测量前都要对计数器清零,以备后续数据的处理。

(3) 数据处理:RAM中存储的计数值不能作为比重值直接显示输出,因此要对其进行计算值与比重值的换算、十六进制与十进制的转换。

(4) 数据传输与显示:由于比重值的得出及显示是在中断子程序中完成,因此在初始化发射程序后进入中断响应的等待。在中断响应之后,要经十六进制与十进制转换程序后显示输出。

本系统采用的是IAR编程工具。其C/C++交叉编译器和调试器是今天世界最完整的和最容易使用专业嵌入式应用开发工具。EW对不同的微处理器提供一样直观用户界面,是一个真正的集成开发环境,它提供的产品和服务涉及到嵌入式系统的设计、开发和测试的每一个阶段,包括:带有C/C++编译器和调试器的集成开发环境(IDE)、实时操作系统和中间件、开发套件、硬件仿真器以及状态机建模工具。本文用JATG模块单元来测试软件功能,以此来跟踪程序的运行情况,包括程序运行的中间状态和运行的结果示。

本系统的软件采用模块化设计,由以下子程序构成:主程序、定时器计时子程序、温度采集子程序、计算子程序、数值转换子程序、液晶显示子程序等,其中主程序部分包括初始化和各子程序的调用。

32 佳木斯大学信息电子技术学院 XXX大学学士学位论文

4.2.1 主程序部分

主程序是实现测量的软件载体,对本系统的实现具有重要的作用。在测量中首先由开关SWl对系统进行上电,也就是开始触发,同时允许方波脉冲驱动发射换能器,控制发射单元连续发出的方波脉冲,并且同时开始计时,当接收换能器接收到接收波后,对每个周期的时间进行由小到大的排序,排序完成后去掉最大和最小传播时间,并计算剩余的传播平均值,并计算出此液体的比重,经DS18B20得到的温度进行温度校正,再由1602显示出来。

具体程序流程如图4-1所示,在发射端,由分频器CD4013的4引脚出来的信号传送到单片机的P6.0/A0/OA0|0作为关中断和计时器TA、TB的启动信号;在接收端,接收到的信号经放大、比较整形,最后由LM119的12引脚出来的信号接到单片机的P1.0/TA0,作为中断信号,当检测到测量完毕后,停止定时器TA、TB,并将结果存储在RAM中,再算出比重的平均值,并利用温度补偿进行修正,最后对该数据进行处理后在液晶上显示输出。

开始系统初始化 调用计算子程序对时间差与比重值转换 按下复位SW1,启动TA、TB?N调用数制转换程序将十六进制转换为十进制Y 由TB控制发射20个驱动脉冲驱动发射头 读取DSI8B20并对传播时间进行修正是否发射完毕Y 停止TA、TB,锁存计数器TAN1602显示输出是否继续测量,按下SW2?NY 去掉最大和最小传播时间计算8周期传播的平均时间结束

图4-1主程序流程图

33 佳木斯大学信息电子技术学院 XXX大学学士学位论文

4.2.2 中断服务程序部分

中断服务程序用来响应单片机的外部中断,系统的发射单元部分发射的1MHz的电压方波脉冲信号经被测液体介质传播后,由接收单元部分经检波滤波产生外中断传送到单片机。在中断程序中,应该把进入中断服务程序处的计算值读出并保存在RAM中,然后经原始数据与比重换算子程序和十六进制与十进制转换子程序后,将结果送到1602进行显示输出。如图4-2,具体流程为,首先是端口的初始化,然后循环发方波脉冲,直至方波脉冲发射完毕,此中断结束。

定时中断入口定时器初始化发射驱动脉冲N是否发射完毕?Y停止发射返回

图4-2中断流程图

4.2.3 温度传感器程序部分

34 佳木斯大学信息电子技术学院 XXX大学学士学位论文

超声波作为一种纵波在液体中传播时,其声压随液体分子产生周期性的变化,促使液体的折射率也相应地做周期性的变化,形成疏密波。不同温度的电解液的比重有一定的误差,需要对测得的电解液比重值进行修正。电解液比重以15℃时为基准。故测量时,若电解液温度高于或低于15℃时,每高1℃,应从实际测得的比重数值加上0.0007;反之低于15℃时,每低1℃,应减去0.0007;若温度差较大时,可按下式进行修正:

实际电解液比重=测量电解液比重+0.0007(实际温度-15)(4-1)此系统采用一个DS18B20测量温度值,其测量范围为-55℃~+125℃,并且可以直接显示,不需要外在的A/D转换,测量精度为0.5℃。因为单片机只与一个温度传感器通信,所以程序可以简化有关读取DS18B20序列号的命令,但当建立多个从机时,要注意加入读取序列号的有关操作。图4-3为DS18B20在工作时的流程图。首先是对传感器的初始化,然后发测量指令,并将测量结果放入存储器,最后读取温度值,并进行数制和码制的转换。

开始传感器初始化读取温度值发送SKIP ROM命令转换为显示代码发送温度转换命令显示发送存储器命令

图4-3温度测量程序流程图

35 佳木斯大学信息电子技术学院