AT89S51单片机超声波测距说明书 毕业论文.doc

上传人:小小飞 文档编号:26431 上传时间:2018-10-29 格式:DOC 页数:33 大小:2.14MB
返回 下载 相关 举报
AT89S51单片机超声波测距说明书 毕业论文.doc_第1页
第1页 / 共33页
AT89S51单片机超声波测距说明书 毕业论文.doc_第2页
第2页 / 共33页
AT89S51单片机超声波测距说明书 毕业论文.doc_第3页
第3页 / 共33页
AT89S51单片机超声波测距说明书 毕业论文.doc_第4页
第4页 / 共33页
AT89S51单片机超声波测距说明书 毕业论文.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《AT89S51单片机超声波测距说明书 毕业论文.doc》由会员分享,可在线阅读,更多相关《AT89S51单片机超声波测距说明书 毕业论文.doc(33页珍藏版)》请在三一文库上搜索。

1、0 目录 1.前言 .1 1.1 课题背景及研究的目的和意义 1 1.2基于单片机的超声波测距系统 1 1.3课题主要内容 1 2.系统设计技术参数要求 .3 2.1系统任务要求: 3 2.2系统设计的主要技术参数: 3 3.系统设计 .4 3.1系统设计总体框图 4 3.2系统模块设计 4 3.2.1 单片机系统与按键设计 .5 3.2.2 超声波发射和接收电路 .5 3.2.3显示电路 6 3.2.4 供电电路 .7 3.2.5报警输出电路 7 4.系统软件设计 9 4.1 主程序设计 .9 4.2 超声波测距子程序 .9 4.3产生超声波的子程序 10 4.4 超声波测距程序流程图 12

2、 4.5 超声波测距程子序流程图 13 5.系统操作说明 .14 参考文献 .15 致谢语 .16 附录 .17 1 1.前言 1.1 课题背景及研究的目的和意义 传感器技术是现代信息技术的主要内容之一。信息技术包括计算机技术、通信技术和传感器技术, 计算机技术相当于人的大脑,通信相当于人的神经,而传感器就相当于人的感官。比如温度传感器、 光电传感器、湿度传感器、超声波传感器、红外传感器、压力传感器等等,其中,超声波传感器在测 量方面有着广泛、普遍的应用。利用单片机控制超声波检测往往比较迅速、方便、计算简单、易于做 到实时控制,并且测量精度较高。 超声波测距系统主要应用于汽车的倒车雷达、机器人

3、自动避障行走、建筑施工工地以及一些工业 现场例如:液位、井深、管道长度等场合。因此研究超声波测距系统的原理有着很大的现实意义。对 本课题的研究与设计,还能进一步提高自己的电路设计水平,深入对单片机的理解和应用。 1.2基于单片机的超声波测距系统 基于单片机的超声波测距系统,是利用单片机编程产生频率为 40kHz的方波,经过发射驱动电路 放大,使超声波传感器发射端震荡,发射超声波。超声波波经反射物反射回来后,由传感器接收端接 收,再经接收电路放大、整形,控制单片机中断口。其系统框图如图 1-1所示。 图 1-1 基于单片机的超声波测距系统框图 这种以单片机为核心的超声波测距系统通过单片机记录超声

4、波发射的时间和收到反射波的时间。 当收到超声波的反射波时,接收电路输出端产生一个负跳变,在单片机的外部中断源输入口产生一个 中断请求信号,单片机响应外部中断请求,执行外部中断服务子程序,读取时间差,计算距离,结果 输出给 LED显示。 利用单片机准确计时,测距精度高,而且单片机控制方便,计算简单。许多超声波测距系统都采 用这种设计方法。 1.3课题主要内容 通过上节介绍我们知道,以单片机为核心的超声波测距系统设计简单、方便,而且测精度能达到 工业要求。本课题研究的测距系统就是用单片机控 制的。 2 通过超声波发射器向某一方向发射超声波,单片机在发射时刻同时开始计时,超声波在空气中传 播,途中碰

5、到障碍物就立即反射回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的 传播速度为 V,根据计时器记录的时间 t,就可以计算出发射点距障碍物的距离。 本系统利用单片机控制超声波的发射和对超声波自发射至接收往返时间的计时。系统定时发射超 声波,在启动发射电路的同时启动单片机内部的定时器,利用定时器的计数功能记录超声波发射的时 间和收到反射波的时间。当收到超声波的反射波时,接收电路输出端产生一个负跳变,单片机检测到 这个负跳变信号后,停止内部计时器记时,读取时间,计算距离,测量结果输出给 LED显示。 利用本测距系统测量范围应在 40cm699cm,其误差 1cm。 3 2.系统设计技术参

6、数要求 2.1系统任务要求: 1.开机时数码管显示-; 2.无接受信号数码管显示 CCC; 3.若环境温度变化 15,测距精度变化 1%。 2.2系统设计的主要技术参数: 1.稳压直流电源 4.55.5V,交流电源 6V; 2.驱动电流:30-50mA; 3.盲区值为 40厘米,最远可测 699厘米。 4 3.系统设计 3.1系统设计总体框图 按照系统设计的功能的要求,初步确定设计系统由单片机主控模块、显示模块、超声波发射模块、 接收模块共四个模块组成。 单片机主控芯片使用 51系列 AT89S51单片机,该单片机工作性能稳定,同时也是在单片机课程设 计中经常使用到的控制芯片。 发射电路由单片

7、机输出端直接驱动超声波发送。接收电路使用三极管组成的放大电路,该电路简 单,调试工作小较小。 图 3-1 系统设计框图 硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波接收电路、报警输出 电路、供电电路等几部分。单片机采用 AT89S51,系统晶振采用 12MHz高精度的晶振,以获得较稳定 时钟频率,减小测量误差。单片机用 P2.7端口输出超声波换能器所需的 40kHz的方波信号,P3.5 端 口监测超声波接收电路输出的返回信号。显示电路采用简单实用的 3位共阳 LED数码管,段码输出端 口为单片机的 P2口,位码输出端口分别为单片机的 P3.4、P3.2、P3.3 口,数码

8、管位驱运用 PNP三极管 S9012三极管驱动。 3.2系统模块设计 本系统由单片机 AT89S51控制,包括单片机系统、发射电路与接收放大电路和显示电路几部分组 成,如图 3-1 所示。硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波接收 电路三部分。单片机采用 AT89S51。采用 12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误 差。单片机用 P2.7端口输出超声波换能器所需的 40kHz的方波信号,P3.5 端口监测超声波接收电路 超声波接收模 块 超声波发射模 块 单片机控制系统(AT89S51 ) 显示模块 键盘模块 供电单元 5 输出的返回信号。显示电路

9、采用简单实用的 3位共阳 LED数码管,段码输出端口为单片机的 P2口,位 码输出端口分别为单片机的 P3.4、P3.2、P3.3 口,数码管位驱运用 PNP三极管 S9012三极管驱动。 超声波接收头接收到反射的回波后,经过接收电路处理后,向单片机 P3.5输入一个低电平脉冲。 单片机控制着超声波的发送,超声波发送完毕后,立即启动内部计时器 T0计时,当检测到 P3.5由高 电平变为低电平后,立即停止内部计时器计时。单片机将测得的时间与声速相乘再除以 2即可得到测 量值,最后经 3位数码管将测得的结果显示出来。 3.2.1 单片机系统与按键设计 超声波测距单片机系统主要由:AT89S51 单

10、片机、晶振、复位电路、电源滤波部份构成。由 K1,K2 组成测距系统的按键电路。用于设定超声波测距报警值。如图 3-2。 图 3-2 超声波测距单片机系统 3.2.2 超声波发射和接收电路 超声波发射如图 3-3,接收电路如图 3-4。超声波发射电路由电阻 R1、三极管 BG1、超声波脉冲变 压器 B及超声波发送头 T40构成,超声波脉冲变压器,在这里的作用是提高加载到超声波发送头两产 端的电压,以提高超声波的发射功率,从而提高测量距离。接收电路由 BG1、BG2 组成的两组三级管放 大电路构成;超声波的检波电路、比较整形电路由 C7、D1、D2 及 BG3组成。 40kHz的方波由 AT89

11、S51单片机的 P2.7输出,经 BG1推动超声波脉冲变压器,在脉冲变压器次级 形成 60VPP的电压,加载到超声波发送头上,驱动超声波发射头发射超声波。发送出的超声波,遇到 障碍物后,产生回波,反射回来的回波由超声波接收头接收到。由于声波在空气中传播时衰减,所以 接收到的波形幅值较低,经接收电路放大,整形,最后输出一负跳变,输入单片机的 P3脚。 6 图 3-3 超声波测距发送单元 该测距电路的 40kHz方波信号由单片机 AT89S51的 P2.7发出。方波的周期为 1/40ms,即 25s, 半周期为 12.5s。每隔半周期时间,让方波输出脚的电平取反,便可产生 40kHz方波。由于单片

12、机系 统的晶振为 12M晶振,因而单片机的时间分辨率是 1s,所以只能产生半周期为 12s或 13s的方波 信号,频率分别为 41.67kHz和 38.46kHz。本系统在编程时选用了后者,让单片机产生约 38.46kHz的 方波。 图 3-4 超声波测距接收单元 由于反射回来的超声波信号非常微弱,所以接收电路需要将其进行放大。接收电路如图 3-4所示。 接收到的信号加到 BG1、BG2 组成的两级放大器上进行放大。每级放大器的放大倍数为 70倍。放大的 信号通过检波电路得到解调后的信号,即把多个脉冲波解调成多个大脉冲波。这里使用的是 I N 4148 检波二极管,输出的直流信号即两二极管之间

13、电容电压。该接收电路结构简单,性能较好,制作难度 小。 3.2.3显示电路 本系统采用三位一体 L E D 数码管显示所测距离值,如图 3-5。数码管采用动态扫描显示,段码 7 输出端口为单片机的 P2口,位码输出端口分别为单片机的 P3.4、P3.2、P3.3 口,数码管位驱运用 PNP 三极管 S9012三极管驱动。 图 3-5 显示单元图 3.2.4 供电电路 本测距系统由于采用的是 LED数码管用为显示方式,正常工作时,系统工作电流约为 30-45mA, 为保证系统统计的可靠正常工作,系统的供电方式主要交流 AC6-9伏,同时为调试系统方便,供电方 式考虑了第二种方式,即由 USB口供

14、电,调试时直接由电脑 USB口供电。6 伏交流是经过整流二极管 D1-D4整流成脉动直流后,经虑波电容 C1虑波后形成直流电,为保证单片机系统的可电,供电路中由 5伏的三端称压集成电路进行稳压后输出 5伏的真流电供整个系统用电,为进一步提高电源质量,5 伏 的直流电再次经过 C3、C4 滤波。 图3-6 供电单元电路图 3.2.5报警输出电路 为了提高测测距系统的实用性,本测距系统的报警输出提供开关量信号及声响信号两种方式。 8 方式一:报警信号由单片机 P3.1端口输出,继电器输出,可驱动较大的负载,电路由电阻 R6、 三极管 BG9、继电器 JDQ组成,当测量值低于事先设定的报警值时,继电

15、器吸合,测量值高于设定的 报警值时,继电器断开。 方式二:报警信号由单片机 P0.2口输出,提供声响报警信号,电路由电阻 R7、三极管 BG8、蜂鸣 器 BY组成,当测量值低于事先设定的报警值时,蜂鸣器发出“滴、滴、滴”报警声响信号,测量 值高于设定的报警值时,停止发出报警声响。报警输出电路如图 3-7。 图3-7 报警输出电路 9 4.系统软件设计 4.1 主程序设计 超声波测距的软件设计主要由主程序、超声波发生子程序、超声波接收程序及显示子程序组成。 超声波测距的程序既有较复杂的计算(计算距离时) ,又要求精细计算程序运行时间(超声波测距时) , 所以控制程序可采用 C语言编程。 主程序首

16、先是对系统环境初始化,设定时器 0为计数,设定时器 1定时。置位总中断允许位 EA。 进行程序主程序后,进行定时测距判断,当测距标志位 ec=1时,测量一次,程序设计中,超声波测距 频度是 4-5次/秒。测距间隔中,整个程序主要进行循环显示测量结果。当调用超声波测距子程序后, 首先由单片机产生 4个频率为 38.46kHz超声波脉冲,加载的超声波发送头上。超声波头发送完送超声 波后,立即启动内部计时器 T0进行计时,为了避免超声波从发射头直接传送到接收头引起的直射波触 发,这时,单片机需要延时约 1.5 -2ms时间(这也就是超声波测距仪会有一个最小可测距离的原因, 称之为盲区值)后,才启动对

17、单片机 P3.5脚的电平判断程序。当检测到 P3.5脚的电平由高转为低电 平时,立即停止 T0计时。由于采用单片机采用的是 12 MHz的晶振,计时器每计一个数就是 1s,当 超声波测距子程序检测到接收成功的标志位后,将计数器 T0中的数(即超声波来回所用的时间)按式 (2)计算,即可得被测物体与测距仪之间的距离。 设计时取 15时的声速为 340 m/s则有:d=(ct)/2=172T0/10000cm 其中,T0 为计数器 T0的 计算值。测出距离后结果将以十进制 BCD码方式送往 LED显示约 0.5s,然后再发超声波脉冲重复测量 过程。 4.2 超声波测距子程序 Void wdzh()

18、 TR0=0; TH1=0x00; TL1=0x00; csbint=1; sx=0; 10 delay(1700); csbfs(); csbout=1; TR1=1; i=yzsj; while(i-) i=0; while(csbint)/判断接收回路是否收到超声波的回波 i+; if(i=3300) csbint=0; TR1=0; s=TH1; s=s*256+TL1; TR0=1; csbint=1; jsz=s*csbc;/计算测量结果 jsz=jsz/2; 4.3产生超声波的子程序 为了方便程序移置及准确产生超声波信号,本测距的超声波产生程序是用汇编语言编写的进退声 波产生程序

19、。产生的超声波个数为 UCSBFS SEGMENT CODE RSEG UCSBFS PUBLIC CSBFS CSBFS: mov R6,#8h ;超声波发射的完整波形个数:共计四个 11 here: cpl p2.7 ;输出 40kHz 方波 nop nop nop nop nop nop nop nop nop djnz R6,here RET END 12 4.4 超声波测距程序流程图 Y YN =N0 =0 =1 开始 初始化 测量标志 启动定时器 超声波测距 距离上限值 距离 = 显示值= C C C 显示值= - - - 测量段码转换 显示 设定段码转换 距离 |= =报警输出

20、=N 13 4.5 超声波测距程子序流程图 Y 标志=1? 发送超声波 延时避开盲区 收到回波否? 预设时间? 启动计时器 T0 停止计时 计算测量值 超声波测距 结束 N N Y Y N 14 5.系统操作说明 将写好程序的 AT89S51机装到测距板上,通电后将测距板的超声波头对着墙面往复移动,看数码 管的显示结果会不会变化,在测量范围内能否正常显示。如果一直显示“- - -”,则需将下限值增大 (调节高频变压器旋钮) 。本测距板 1s测量 4-5次,超声波发送功率较大时,测量距离远,则相应的 下限值(盲区为 40厘米)应设置为高值,本测距测出距离上限值为 699厘米,超出测值或超声波接收

21、 头无信号数码管将显示“CCC” 。试验板中的声速没有进行温度补偿,声速值为 340m/s,该值为 15时 的超声波值。 15 参考文献 1薛园园.51单片机开发与应用技术详解.北京:电子工业出版社,2009. 2 沈红卫.基于单片机智能系统设计与实现.北京:电子工业出版社,2005. 3 杨国田.白焰.董玲.51单片机实用C语言程序设计.中国电力出版社,2009. 4 李群芳,黄建.单片机微型计算机与接口技术.北京:电子工业出版社,2001. 5 楼然苗,李光飞.51系列单片机设计实例.北京:北京航空航天大学出版社,2003. 6 王守中.51单片机开发入门与典型实例.北京:人民邮电出版社,

22、2009. 16 致谢语 离别在即,站在人生的又一个转折点上,心中难免思绪万千,一种感恩之情油然而生。生我者父 母。感谢生我养我,含辛茹苦的父母。是你们,为我的学习创造了条件;是你们,一如既往的站在我 的身后默默的支持着我。没有你们就不会有我的今天。谢谢你们,我的父亲母亲! 在这三年中,老 师的谆谆教导、同学的互帮互助使我在专业技术和为人处事方面都得到了很大的提高。感谢湄职院在 我三年的大学生活当中对我的教育与培养,感谢湄职院电子系所有专业老师,没有你们的辛勤劳动, 就没有我们今日的满载而归,感谢大学三年曾经帮助过我的所有同学。在制作毕业设计过程中郑老师 的耐心指导、帮助下,我才能顺利完成毕业

23、设计,郑老师指导了我的设计的结构、思路、同时提供了 一些专业知识的帮助。老师们的热情解答和同学们的热心帮助才使我的毕业设计能较为顺利的完成。 在此我向你们表示最衷心的感谢。 感谢在毕设中帮助过我的所有同学和师兄师姐们。 最后感谢我的家人、朋友对我的支持。 17 附录 附录一 系统总原理图 BG6 9 012 BG7 9 012 BG5 9 012 C5 22P C6 22P Y11 2M C1220u C3220u VCC R12 4.7K R10 4.7K R11 4.7K BG2 9 013 BG4 9 013 R3 150k R4 4.7K C7 104 BG3 9 013 R51 50

24、k R2 4.7K C8 104 D6 IN 4148 D5 1N 4148 BG1 9 012 R1 4.7K T40 R40 K2 K1 1A F2 3B ED HC G LED R6 4.7K D7 1N4001 BG9 9 012 VCC 5 21 6 34 J DQ D1-D 4 1N4 001 C2104 C4104 Vin 1 GND 2Vout 3 IC37 805 P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 M OSI 6 P1.6 M ISO 7 P1.7 S CK 8 RST 9 P3.0 10 P3.1 11 P3.2 12 P3.3

25、 13 P3.4 14 P3.5 15 P3.6 16 P3.7 17 XTAL 2 18 XTAL 1 19 GND 20 P2.0 21 P2.1 22 P2.2 23 P2.3 24 P2.4 25 P2.5 26 P2.6 27 P2.7 28 PSEN 29 ALE 30 EA 31 P0.7 32 P0.6 33 P0.5 34 P0.4 35 P0.3 36 P0.2 37 P0.1 38 P0.0 39 Vcc 40 IC1 AT89 S51/A T89S5 2 R8 10KC9 10 u 2 VCC 4 GND 6 GND 8 GND 10 GND 1 MOSI 3 CN 5

26、 RST 7 SCK 9 MISO JP2 P0.2 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 VCC VCC VCC VCC VCC VCC P2.7 P3.1 P3.5 P3.4 P3.2 P3.3 P3.1 P3.2 P3.3 BG8 9 013BY R7 4.7K P0.2 OUT1 OUT2 1 2 3 4JP1 AC1 AC2 OUT1 OUT2 AC6V OUT AC1 AC2AC6V B 1 2 3 4USB +5V GND P3.5P3.4 18 附录二 系统印刷电路的

27、制作图 19 附录三 C 语言程序 / 晶振:12M / / 盲区值(最小可测距离):40 厘米 / / 测量上限:699 厘米 / #include #include #define uchar unsigned char #define uint unsigned int #define k1 P3_7 /k1 功能键 #define k2 P3_6 /k2 数值调整键 #define bjh P3_1 /定值输出 #define sx P0_2 /报警值输出(声音) #define csbout P2_7 /超声波发送 #define csbint P3_5 /超声波接收 uchar e

28、c,cls;cs;xl,mq,xm0,xm1,xm2,sec20,sec,sec1,buffer3,BitCounter,temp,Number8=1,2,3,4,5,6,7,8; uchar temp1,convert10=0x81,0xED,0xA2,0xA8,0xCC,0x98,0x90,0xAD,0x80,0x88;/09 段码 uint zzz,dz,zzbl,i,jsz,yzsj,kk,s,ss; static uchar bdata ke,kw; /可位寻址的状态寄存器 float csbc,wdz; sbit LED1 = P34; /数码管位驱动 sbit LED2 = P3

29、2; /数码管位驱动 sbit LED3 = P33; /数码管位驱动 sbit k11=ke0; sbit k12=ke1; 20 sbit k22=ke2; sbit k21=ke3; sbit b=ke4; sbit c=ke5; sbit d=ke6; sbit e=ke7; sbit w=kw0; sbit zj1=kw1; sbit zj2=kw2; void delay(i); /延时函数 void scanLED(); /显示函数 void timeToBuffer(); /显示转换函数 void time(); void jpcl(); void jy(); void wdz

30、h(); void bgcl(); void jpzcx(); void mqjs(); void csbfs(); void csbsc(); void clcs(); void offmsd(); void main() EA=1; /开中断 21 TMOD=0x11; /设定时器 0 为计数,设定时器 1 定时 ET0=1; /定时器 0 中断允许 TH0=0xD8; TL0=0xF0; /设定时值为 20000us(20ms) TR0=1; csbout=1; d=0; TR1=0; temp1=15; zzz=699; mq=40; dz=100; cls=5; xl=temp1;

31、csbsc(); mqjs(); /盲区设定 k12=1; k1=1; k2=1; k22=1; bjh=1; d=1; sx=0; clcs(); /测量次数 while(1) if (ec=1) ec=0; wdzh(); /调用超声波测量 22 bgcl(); /调用报警处理程序 timeToBuffer(); /调用转换段码功能模块 offmsd(); /调用显示转换程序 scanLED(); /调用显示函数 if(jszzzz) buffer0=0x93; buffer1=0x93; buffer2=0x93; else if (jsz=cs) / 50 * 10 ms = 0.5

32、s sec20=0; ec+; e=e; if (ec3) 25 ec=0; sec1+; if (sec1100) sec1=0; sec+; /秒计时 if (sec=3) sec=0; void jpcl() /按键处理程序 k11=k1; if (!k12 k12=k11; k11=k1; k21=k2; if (b=1) sx=0; while(b) 26 buffer0=0x84; buffer1=0x84; buffer2=0x84; sec=0; c=0; while(!c) if (sec=2) c=1; scanLED(); c=0; zzbl=jsz; jsz=dz; t

33、imeToBuffer(); jpzcx(); dz=kk; if (dz699) dz=200; if (dz6) xm0=0; if (e=1) buffer2=0xFF; else buffer2=convertxm0; scanLED(); if (!k12 k22=k21; k12=k11; buffer2=convertxm0; c=0; 28 while(!c) k11=k1; k21=k2; if (!k22 if (xm19) xm1=0; if (e=1) buffer1=0xFF; else buffer1=convertxm1; scanLED(); if (!k12

34、k22=k21; k12=k11; buffer1=convertxm1; c=0; while(!c) k11=k1; k21=k2; if (!k22 if (xm29) xm2=0; 29 if (e=1) buffer0=0xFF; else buffer0=convertxm2; scanLED(); if (!k12 b=0; kk=xm0*100+xm1*10+xm2; k22=k21; k12=k11; void wdzh() TR0=0; TH1=0x00; TL1=0x00; csbint=1; sx=0; delay(1700); csbfs(); csbout=1; TR1=1; i=yzsj; while(i-)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1