AT89S51单片机超声波测距说明书毕业论文_第1页
AT89S51单片机超声波测距说明书毕业论文_第2页
AT89S51单片机超声波测距说明书毕业论文_第3页
AT89S51单片机超声波测距说明书毕业论文_第4页
AT89S51单片机超声波测距说明书毕业论文_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、湄洲湾职业技术学院at89s51单片机超声波测距说明书 系 别: 电子工程系 年 级: 092班 专 业: 电气自动化技术 姓 名: 学 号: 导师姓名: 职 称: 2012年06月10日目录1.前言1 1.1 课题背景及研究的目的和意义1 1.2基于单片机的超声波测距系统1 1.3课题主要内容12.系统设计技术参数要求3 2.1系统任务要求:3 2.2系统设计的主要技术参数:33.系统设计4 3.1系统设计总体框图4 3.2系统模块设计43.2.1 单片机系统与按键设计53.2.2 超声波发射和接收电路53.2.3显示电路63.2.4 供电电路73.2.5报警输出电路74.系统软件设计94.

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

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

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

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

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

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

8、.3口,数码管位驱运用pnp三极管s9012三极管驱动。3.2系统模块设计 本系统由单片机at89s51控制,包括单片机系统、发射电路与接收放大电路和显示电路几部分组成,如图3-1 所示。硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波接收电路三部分。单片机采用at89s51。采用12mhz高精度的晶振,以获得较稳定时钟频率,减小测量误差。单片机用p2.7端口输出超声波换能器所需的40khz的方波信号,p3.5端口监测超声波接收电路输出的返回信号。显示电路采用简单实用的3位共阳led数码管,段码输出端口为单片机的p2口,位码输出端口分别为单片机的p3.4、p3.2、p3.3口

9、,数码管位驱运用pnp三极管s9012三极管驱动。 超声波接收头接收到反射的回波后,经过接收电路处理后,向单片机p3.5输入一个低电平脉冲。单片机控制着超声波的发送,超声波发送完毕后,立即启动内部计时器t0计时,当检测到p3.5由高电平变为低电平后,立即停止内部计时器计时。单片机将测得的时间与声速相乘再除以2即可得到测量值,最后经3位数码管将测得的结果显示出来。3.2.1 单片机系统与按键设计 超声波测距单片机系统主要由:at89s51单片机、晶振、复位电路、电源滤波部份构成。由k1,k2组成测距系统的按键电路。用于设定超声波测距报警值。如图3-2。图3-2 超声波测距单片机系统3.2.2 超

10、声波发射和接收电路 超声波发射如图3-3,接收电路如图3-4。超声波发射电路由电阻r1、三极管bg1、超声波脉冲变压器b及超声波发送头t40构成,超声波脉冲变压器,在这里的作用是提高加载到超声波发送头两产端的电压,以提高超声波的发射功率,从而提高测量距离。接收电路由bg1、bg2组成的两组三级管放大电路构成;超声波的检波电路、比较整形电路由c7、d1、d2及bg3组成。 40khz的方波由at89s51单片机的p2.7输出,经bg1推动超声波脉冲变压器,在脉冲变压器次级形成60vpp的电压,加载到超声波发送头上,驱动超声波发射头发射超声波。发送出的超声波,遇到障碍物后,产生回波,反射回来的回波

11、由超声波接收头接收到。由于声波在空气中传播时衰减,所以接收到的波形幅值较低,经接收电路放大,整形,最后输出一负跳变,输入单片机的p3脚。图3-3 超声波测距发送单元 该测距电路的40khz方波信号由单片机at89s51的p2.7发出。方波的周期为1/40ms,即25s,半周期为12.5s。每隔半周期时间,让方波输出脚的电平取反,便可产生40khz方波。由于单片机系统的晶振为12m晶振,因而单片机的时间分辨率是1s,所以只能产生半周期为12s或13s的方波信号,频率分别为41.67khz和38.46khz。本系统在编程时选用了后者,让单片机产生约38.46khz的方波。图3-4 超声波测距接收单

12、元 由于反射回来的超声波信号非常微弱,所以接收电路需要将其进行放大。接收电路如图3-4所示。接收到的信号加到bg1、bg2组成的两级放大器上进行放大。每级放大器的放大倍数为70倍。放大的信号通过检波电路得到解调后的信号,即把多个脉冲波解调成多个大脉冲波。这里使用的是i n 4148检波二极管,输出的直流信号即两二极管之间电容电压。该接收电路结构简单,性能较好,制作难度小。3.2.3显示电路 本系统采用三位一体l e d 数码管显示所测距离值,如图3-5。数码管采用动态扫描显示,段码输出端口为单片机的p2口,位码输出端口分别为单片机的p3.4、p3.2、p3.3口,数码管位驱运用pnp三极管s9

13、012三极管驱动。图3-5 显示单元图3.2.4 供电电路 本测距系统由于采用的是led数码管用为显示方式,正常工作时,系统工作电流约为30-45ma,为保证系统统计的可靠正常工作,系统的供电方式主要交流ac6-9伏,同时为调试系统方便,供电方式考虑了第二种方式,即由usb口供电,调试时直接由电脑usb口供电。6伏交流是经过整流二极管d1-d4整流成脉动直流后,经虑波电容c1虑波后形成直流电,为保证单片机系统的可电,供电路中由5伏的三端称压集成电路进行稳压后输出5伏的真流电供整个系统用电,为进一步提高电源质量,5伏的直流电再次经过c3、c4滤波。图3-6 供电单元电路图3.2.5报警输出电路

14、为了提高测测距系统的实用性,本测距系统的报警输出提供开关量信号及声响信号两种方式。 方式一:报警信号由单片机p3.1端口输出,继电器输出,可驱动较大的负载,电路由电阻r6、三极管bg9、继电器jdq组成,当测量值低于事先设定的报警值时,继电器吸合,测量值高于设定的报警值时,继电器断开。 方式二:报警信号由单片机p0.2口输出,提供声响报警信号,电路由电阻r7、三极管bg8、蜂鸣器by组成,当测量值低于事先设定的报警值时,蜂鸣器发出“滴、滴、滴”报警声响信号,测量值高于设定的报警值时,停止发出报警声响。报警输出电路如图3-7。图3-7 报警输出电路4.系统软件设计4.1 主程序设计 超声波测距的

15、软件设计主要由主程序、超声波发生子程序、超声波接收程序及显示子程序组成。超声波测距的程序既有较复杂的计算(计算距离时),又要求精细计算程序运行时间(超声波测距时),所以控制程序可采用c语言编程。 主程序首先是对系统环境初始化,设定时器0为计数,设定时器1定时。置位总中断允许位ea。进行程序主程序后,进行定时测距判断,当测距标志位ec=1时,测量一次,程序设计中,超声波测距频度是4-5次/秒。测距间隔中,整个程序主要进行循环显示测量结果。当调用超声波测距子程序后,首先由单片机产生4个频率为38.46khz超声波脉冲,加载的超声波发送头上。超声波头发送完送超声波后,立即启动内部计时器t0进行计时,

16、为了避免超声波从发射头直接传送到接收头引起的直射波触发,这时,单片机需要延时约1.5 -2ms时间(这也就是超声波测距仪会有一个最小可测距离的原因,称之为盲区值)后,才启动对单片机p3.5脚的电平判断程序。当检测到p3.5脚的电平由高转为低电平时,立即停止t0计时。由于采用单片机采用的是12 mhz的晶振,计时器每计一个数就是1s,当超声波测距子程序检测到接收成功的标志位后,将计数器t0中的数(即超声波来回所用的时间)按式(2)计算,即可得被测物体与测距仪之间的距离。 设计时取15时的声速为340 m/s则有:d=(ct)/2=172t0/10000cm其中,t0为计数器t0的计算值。测出距离

17、后结果将以十进制bcd码方式送往led显示约0.5s,然后再发超声波脉冲重复测量过程。4.2 超声波测距子程序void wdzh()tr0=0;th1=0x00;tl1=0x00;csbint=1;sx=0;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产生超声波的子程序 为了方

18、便程序移置及准确产生超声波信号,本测距的超声波产生程序是用汇编语言编写的进退声波产生程序。产生的超声波个数为 ucsbfs segment code rseg ucsbfs public csbfscsbfs: mov r6,#8h ;超声波发射的完整波形个数:共计四个 here: cpl p2.7 ;输出40khz方波 nop nop nop nop nop nop nop nop nop djnz r6,here ret end4.4 超声波测距程序流程图 yyn=n0=0=1开始初始化测量标志启动定时器超声波测距距离上限值距离=显示值= c c c显示值= - - -测量段码转换显示设定

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

20、速没有进行温度补偿,声速值为340m/s,该值为15时的超声波值。参考文献1薛园园.51单片机开发与应用技术详解.北京:电子工业出版社,2009.2 沈红卫.基于单片机智能系统设计与实现.北京:电子工业出版社,2005.3 杨国田.白焰.董玲.51单片机实用c语言程序设计.中国电力出版社,2009.4 李群芳,黄建.单片机微型计算机与接口技术.北京:电子工业出版社,2001.5 楼然苗,李光飞.51系列单片机设计实例.北京:北京航空航天大学出版社,2003.6 王守中.51单片机开发入门与典型实例.北京:人民邮电出版社,2009.致谢语 离别在即,站在人生的又一个转折点上,心中难免思绪万千,一

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

22、热心帮助才使我的毕业设计能较为顺利的完成。在此我向你们表示最衷心的感谢。 感谢在毕设中帮助过我的所有同学和师兄师姐们。 最后感谢我的家人、朋友对我的支持。附录附录一 系统总原理图附录二 系统印刷电路的制作图附录三 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

23、sx p0_2 /报警值输出(声音)#define csbout p2_7 /超声波发送#define csbint p3_5 /超声波接收uchar ec,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

24、ke,kw; /可位寻址的状态寄存器float csbc,wdz;sbit led1 = p34; /数码管位驱动sbit led2 = p32; /数码管位驱动sbit led3 = p33; /数码管位驱动sbit k11=ke0;sbit k12=ke1;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();

25、/显示转换函数void time();void jpcl();void jy();void wdzh();void bgcl();void jpzcx();void mqjs();void csbfs();void csbsc();void clcs();void offmsd();void main() ea=1; /开中断 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; m

26、q=40; dz=100; cls=5; xl=temp1; 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(); /调用超声波测量 bgcl(); /调用报警处理程序 timetobuffer(); /调用转换段码功能模块 offmsd(); /调用显示转换程序 scanled(); /调用显示函数 if(jszzzz) buffer0=0x93; buffer1=0x93; buffer2=0x93; else if

27、(jsz=cs) / 50 * 10 ms = 0.5 s sec20=0; ec+; e=e; if (ec3) ec=0; sec1+; if (sec1100) sec1=0; sec+; /秒计时 if (sec=3) sec=0; void jpcl() /按键处理程序 k11=k1; if (!k12&k11) b=1; k12=k11; k11=k1; k21=k2; if (b=1) sx=0; while(b) buffer0=0x84; buffer1=0x84; buffer2=0x84; sec=0; c=0; while(!c) if (sec=2) c=1; sca

28、nled(); c=0; zzbl=jsz; jsz=dz; timetobuffer(); jpzcx(); dz=kk; if (dz699) dz=200; if (dz6) xm0=0; if (e=1) buffer2=0xff; else buffer2=convertxm0; scanled(); if (!k12&k11) c=1; k22=k21; k12=k11; buffer2=convertxm0; c=0; while(!c) k11=k1; k21=k2; if (!k22&k21) xm1+; if (xm19) xm1=0; if (e=1) buffer1=0

29、xff; else buffer1=convertxm1; scanled(); if (!k12&k11) c=1; k22=k21; k12=k11; buffer1=convertxm1; c=0; while(!c) k11=k1; k21=k2; if (!k22&k21) xm2+; if (xm29) xm2=0; if (e=1) buffer0=0xff; else buffer0=convertxm2; scanled(); if (!k12&k11) c=1; 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-) i=0; while(csbint) /判断接收回路是否收到超声波的回波 i+; i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论