最简单的基于AT89C2051单片机超声波测距系统设计报告(3)

2019-06-02 14:08

图3-4:显示单元图

3.2.4报警声响电路单元

本单元采用,一只5伏的蜂鸣器作为报警声响输出,由三极管BG7进行驱动,当测量距离小于1.00m时,蜂鸣器发出:滴、滴、滴??的报警声响。

图3-4:报警声响单元图

11

四.系统软件设计

4.1 主程序设计

超声波测距的软件设计主要由主程序、超声波发生子程序、超声波接收程序及显示子程序组成。超声波测距的程序既有较复杂的计算(计算距离时),又要求精细计算程序运行时间(超声波测距时),所以控制程序可采用C语言编程。

主程序首先是对系统环境初始化,设定时器0为计数,设定时器1定时。置位总中断允许位EA。进行程序主程序后,进行定时测距判断,当测距标志位cl==1,即进行测量一次,程序设计中,超声波测距频度是2次/秒。测距间隔中,整个程序主要进行循环显示测量结果。当调用超声波测距子程序后,首先由单片机产生6-8个频率为38.46kHz超声波脉冲,加载的超声波发送头上。超声波头发送完送超声波后,立即启动内部计时器T0进行计时,为了避免超声波从发射头直接传送到接收头引起的直射波触发,这时,单片机需要延时约1.5 -2ms时间(这也就是超声波测距仪会有一个最小可测距离的原因,称之为盲区值)后,才启动对单片机P3.7脚的电平判断程序。当检测到P3.7脚的电平由高转为低电平时,立即停止T0计时。由于采用单片机采用的是12 MHz的晶振,计时器每计一个数就是1μs,当超声波测距子程序检测到接收成功的标志位后,将计数器T0中的数(即超声波来回所用的时间)按式(2)计算,即可得被测物体与测距仪之间的距离。

设计时取15℃时的声速为340 m/s则有: d=(c×t)/2=172×T0/10000cm其中,T0为计数器T0的计算值。 测出距离后结果将以十进制BCD码方式送往LED显示约0.5s,然后再发超声波脉冲重复测量过程。 4.2 超声波测距子程序 void csbcj()

//超声波测距子程序

{ if(cl==1) {

TR1=0; TH0=0x00; TL0=0x00; i=20;

//超声波脉冲个数10个

12

while(i--) { csbout=!csbout; } TR0=1; i=15; while(i--) { } i=0; while(csbint) { i++; if(i>=1000) 出接收回波处理程序 csbint=0; } TR0=0; TH1=0x9E; TL1=0x57; t=TH0; t=t*256+TL0; s=t*csbc/2;

TR1=1; cl=0; } }

//判断接收回路是否收到超声波的回波

//如果达到一定时间没有收到回波,则将csbint置零,退

//计算测量结果

13

4.3 超声波测距程序流程图

初始化 开始

14 显示 显示值= - - - 距离>上限值 启动定时器 =1 测量标志 =0 超声波测距 Y =N 距离<盲区值 显示值= C C C =N测量段码转换 设定段码转换 N 距离<报警值 Y 报警输出

4.4 超声波测距程子序流程图

发送超声波 N 时间=1s? Y超声波测距

N 延时避开盲区 启动计时器T0

收到回波否? Y预设时间? N Y

停止计时

计算测量值

结束 五.调试及性能分析

5.1调试步骤

我们的步骤是先焊接各个模块,焊接完每个模块以后,再进行模块的单独测试,以确保在整个系统焊接完能正常的工作,原件安装完毕后,将写好程序的AT89C2051

机装到测距板上,通电后将测距板的超声波头对着墙面往复移动,看数码管的显示结果会不会变化,在测量范围内能否正常显示。如果一直显示“- - -”,

15


最简单的基于AT89C2051单片机超声波测距系统设计报告(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中级育婴师理论试卷资料1

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: