ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:168.96KB ,
资源ID:26568785      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26568785.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于52单片机的超声波测距系统方案.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于52单片机的超声波测距系统方案.docx

1、基于52单片机的超声波测距系统方案基于52单片机的超声波测距系统【课设名称】 基于52单片机的超声波测距系统【课设目的】 通过设计此系统对大学所学习的单片机系统、Keil软件和电路板焊接测试方法步骤进行综合应用和复习,了解设计一个简单硬件系统的基本步骤,为今后就业打好基础。【实验器材和工具】 器材:PC机,电路板,示波器,各种连线转接口等,单片机最小系统 工具:Keil软件 【工作原理】1.物理学原理 超声波的频率高于声波,这种机械波与声波相比具有很强的指向性,并且由于其波长较短,其绕射能力较差,反射能力较强。在遇到障碍物的情况下,超声波会被反射回来。根据发射波和反射波的时间差,就可以计算出探

2、头与障碍物之间的距离。在实际的电路中,使用单片机控制传感器发射和判断反射波。(原理如图1-1)图1-1:超声波测距物理原理图2.电路原理及数据: 从单片机的P37口产生一组40KHz 的超声波,经由发射模块的发射探头发出,紧接着超声波接受模块接收回波,经由CX20106A产生一个负跳变引起单片机得外部中断,通过计算发射到接收所经历的时间就可以很容易计算出超声波与目标之间的距离。其具体原理步骤见图1-2。相关参数:1.测量距离:501000mm2.载波频率:38KHz3.工作电压:DC5V4.工作电流 :30mA 典型,50mA 最大5.输出信号:5V方波6.回波信号 :负跳变产生的下降沿7.下

3、一次测量的延时:200 uS图1-2 系统工作流程图超声波测距系统是由硬件和软件两部分组成。硬件主要包括STC89C52RC单片机最小系统,超声波发射电路、超声波接收电路、温度检测电路、显示电路;软件部分主要包括系统初始化模块、超声波驱动及信号处理模块、显示模块等,软件采用模块化设计思想,可使程序设计思路消晰,便于调试。启动超声波测距系统进行测距时,首先由单片机发出38KHz的脉冲串,脉冲通过超声波发射电路驱动超声波发射换能器发出超声波。单片机在发送脉冲的同时开始计时:超声波遇到障碍物后的回波被超声波接收换能器接收,其输出的CX20106A处理后产生中断信号中断单片机的计时,这样就得到了超声波

4、的传输时间,然后在中断服务程序中根据测出的时间计算出距离并将标志位置1。中断返回后再发送下一串脉冲,如此反复。【系统设计】 1.硬件设计部分 本设计所做的超声液位测量系统以STC89C52RC型单片机为控制核心,其外围硬件电路包括超声波发射电路、超声波接收电路、显示电路、温度补偿电路等。它的各部分说明如下:(1)STC89C52RC单片机最小系统是超声波液位计的核心部分,其主要任务是:发出38KHz的脉冲串用来驱动超声波发射换能器发出超声波;通过定时器T0对超声波的传输时间进行计时;根据测出的时间从而计算与障碍物的距离。控制数据的显示。(2)超声波发送器包括超声波产生电路和超声波发射控制电路两

5、个部分,超声波探头选用CSB40T,可采用软件发生法和硬件发生法产生超声波。本设计利用单片机直接软件产生38kHz的超声波信号,通过输出引脚输入至比较器,经比较器推动探头产生超声波。(3)超声波接收电路的核心器件是红外解码芯片CX20106A。它是用来对接收到的回波进行放大和整形,并产生一个负跳变作为单片机的中断信号。(4)超声波温度补偿电路主要是由温度传感器DS18B20测量当前温度,并将采集到的数字信号直接传送到单片机中;然后单片机将该数值代入公式算法中进行相应的计算,从而输出经过温度补偿的较为准确的数值。(5)显示电路采用单片机直接驱动LED的方式。单片机将其计算好的数据,通过软件转换为

6、BCD码直接输出到LED上,这样做比较方便,而且可以减少制作成本。发射电路的设计发射电路的主要目的是驱动超声波发射探头的压电晶片振动,使之发出超声波,并且发射的超声波具有一定的能量,可传播较远的距离,实现测量的目的。驱动超声发射探头工作的方式很多,只要在探头上施加一串其频率与探头中心频率一致且能量足够大的脉冲即可。发射脉冲可以由单片机或振动器来实现。本设计中采用的是由单片机发出38kHz的方波,单片机P37输出的 38kHz方波信号一路经一级反向器后送到超声波换能器的一个电极。另一路经两级反向器后送到超声波换能器的另一个电极。用这种推挽形式将方波信号加到超声波换能器两端,可以提高超声波的发射强

7、度。输出端采用两个反向器并联。用以提高驱动能力。上拉电阻R5、R10一方面可以提高反向器74HC04AN输出高电平的驱动能力。另一方面可以增加超声波换能器的阻尼效果 ,缩短其自由振荡的时间。具体方案见图1-3所示。图1-3 发射部分电路图接收电路的设计图1-4 接收部分电路图超声波接收器包括超声波接收探头、CX20106A处理两部分。超声波探头必须采用与发射探头对应的型号,关键是频率要一致,否则将因无法产生共振而影响接收效果,甚至无法接收。由于经探头变换后的正弦波电信号非常弱,经过CX20106A处理后产生负跳变,引起单片机的外部中断。显示电路设计超声波测距系统的显示要求比较简单,测量结果采用

8、十进制数字显示。只需能显示0-9的数字,且显示稳定无闪烁即可。因此显示部分采用七段半导体数码管即LED。根据各管的极管接线形式,可分为共阴极型和共阳极型。在共阴极接法中,LED数码管的g-a七个发光二极管因加正电压而发亮,因加零电压而不发亮。而在共阳极接法中,刚好与共阴极接法向反。LED数码管具有亮度大,响应速度快等优点。LED显示器有静态显示和动态显示两种。本设计中采用动态显示方式,以实时显示液位变化。电路结构图如图1-5所示。本设计采用单片机直接驱动LED的方法,通过软件的编译来实现由二进制到BCD码的转化,从而简化了显示电路。但是,在制作超声波测距系统的过程中,我发现由单片机直接驱动LE

9、D显示,电流较小,LED虽然有显示但是比较暗,因此我用了三极管来对电流进行放大,解决了这个问题。图1-5显示电路图串行通讯接口电路设计单片机执行信息检测任务,然后把检测结果传送到计算机中去,这就需要在单片机和计算机之间建立一种通信结构。这种通信结构可以在单片机和计算机之间进行有效而正确的信息传输。RS-232 是目前最常用的串行接口标准,用来实现计算机和计算机之间、计算机和外设之间的数据传输。RS-232 串行接口总线适用于设备之间通信距离在 15 米以而且速度不高于 20Kbps 的场合中。完整的 RS-232 接口需要 22 根线,采用标准的 25 芯插头。现在计算机最常用的是 9 芯的

10、D 型 RS-232 连接器。在本设计中选用了 9 针的 D 型连接器,实际使用中仅使用2、3、5三个引脚如图3.5所示,并给出了 9个引脚的功能说明:引脚 1:DCD,方向 I,载波检引脚 2:RXD,方向 I, 数据输入引脚 3:TXD,方向 O,数据输出引脚 4:DTR , 方向 O,数据终端就绪引脚 5:GND , 地引脚 6:DSR, 方向 I,数据设备就绪引脚 7:KTS, 方向 O,请求发送引脚 8:CTS, 方向 I,清除发送引脚 9:RI , 方向 I, 振铃指示 图1-6 9针D型连接器数据输出,地线。由于单片机提供的电平是 TTL 的,而计算机提供的是 RS232 电平,

11、要实现单片机与计算机的通信,必须对它们的电平进行转换,可用MAX232 芯片来实现。如上图所示。2.软件设计部分软件设计运用模块化程序设计思想,对不同功能的程序进行分别编程,这样不但使得整个软件的层次和结构比较清晰,而且有利于软件的调试和修改。单片机的设定超声波测距系统的控制核心是单片机,软件主要完成测量过程控制、精确计时、数据计算及结果处理等功能。单片机具有开发技术成熟、应用广泛等优点,本设计中选用的STC89C52RC型单片机是一种低功耗、高性能、采用CMOS工艺的8位微处理器,与工业标准型80C51单片机的指令系统和引脚完全兼容。片8K Flash存储器可在线重新编程,或使用通用的非易失

12、性存储器编程器。由于一般的距离测量中,距离的变化速度并不太快,而且单片机的机器周期可达s级,则其计时精度为s级,完全可以满足系统测量的要求,并且成本较低,所以本设计中选用STC89C52型号的单片机。系统采用单片机部自带的定时器/计数器T0中断功能,对发射到接收的时间进行精确计时。而且为了节约硬件成本,系统采用单片机发出38kHz方波信号,由方波输出程序控制单片机管脚P37输出方波信号。外部中断请求有两种信号方式电平方式和脉冲方式。电平方式的中断请低电平有效。只要在INTO或INT1引脚上出现有效低电平时,就激活外部中断标志。脉冲方式的中断请求则是脉冲的负跳变有效。在这种方式下,在两个相邻机器

13、周期,INT0或INT1引脚电平状态发生变化,即在第一个机器周期为高电平,第二个机器周期为低电平,就激活外部中断标志。由此可见,在脉冲方式下,中断请求信号的高电平和低电平状态都应至少维持1个机器周期,以使采样到电平状态的变化。本设计中用单片机的定时器/计数器0来对发射到接收的时间进行精确计时。因此需在程序中设定定时器/计数器的工作模式。定时器/计数器0、1的工作模式的设定和定时器的控制由工作模式寄存器TMOD和控制寄存器TCON来完成。TMOD用于设置T0和T1的工作方式,低4位用于定时器/计数器0,高4位用于定时器/计数器1,其值由软件设定。超声波测距系统的软件流程 图1-7软件流程图按照超

14、声波测距系统的需要,超声波驱动与数据处理模块主要任务是用单片机产生 38kHz 的脉冲,以驱动超声波传感器发射超声波,同时采用计数器计时;当超声波接收器接收到回波信号时停止计时。由此得出超声波的传输时间T,利用公式(2-1)进行温度补偿,即可求出在当前温度下的声速;再利用公式(2-3),就可以计算出当前的液位高度。【数据处理】 实际的检测数据如下表格:测量次数实际距离X(cm)测量距离Y(cm)15.005.02210.0010.03315.0015.04420.0020.03525.0025.05630.0030.04735.0035.03840.0040.04945.0045.051050

15、.0050.04最远测量距离: 65.03cm , 对应实际最远距离为:65.00cm 。【课设总结】 通过本次课程设计,我了解了超声波的一些基础知识,同时也熟悉了超声波模块,了解了其工作原理和电路构成。在课程设计的实验过程中,我遇到了不少的困难,主要集中在C52单片机的程序设计上,经过同学和指导教师的帮助我总算是完成了实验,由此可见我在软件设计上确实存在短板,以后需要进一步提高。本次课程设计让我回顾了以前学习到的各种知识,锻炼了动手能力和团队合作能力,是对今后走出学校步入工作岗位的一次对基础的巩固,对于以后找工作是相当有帮助的经历。附录:附件1:发射模块软件程序TMOD=0x12; /T0、

16、模式1;T1、模式2EA=1;ET0=1;TH0=0XF4;TL0=0XF4;for(i=1;i60000;i+) /主循环 TL0=0XF4; TR0=1; /开始发射脉冲 TH1=0;TL1=0; TR1=1; /启动定时器开始计时 可以看出,本设计的定时器和计数器分别工作在模式1和模式2下,通过定义定时器的初值来发射脉冲波,同时启动计时器开始计时。 接收模块程序如下:while(INPUT) ; /循环等待直到监测到回波 TR1=0; /计时结束 TIME=TH1*256+TL1; TR0=0; TIME=0.1856*TIME-25; display(TIME); 显示部分由单片机直接

17、将二进制数据转化为BCD码,程序如下: a0=0x82; a1=0xfa; a2=0xa4; a3=0xb0; a4=0xd8; a5=0x91; a6=0x81; a7=0xba; a8=0x80; a9=0x90;附件2:程序设计#include#definek1P3_4#definecsboutP3_5/超声波发送#definecsbintP3_7/超声波接收#define wendu P2_5;/温度控制通信端口#definecsbc=0.034#definebgP3_3unsignedcharcsbds,opto,digit,buffer3,xm1,xm2,xm0,key,jpjs;

18、/显示标识unsignedcharconvert10=0x3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/09段码unsignedints,t,i,xx,j,sj1,sj2,sj3,mqs,sx1;bitcl;voidcsbcj();voiddelay(j);/延时函数voidscanLED();/显示函数voidtimeToBuffer();/显示转换函数voidkeyscan();voidk1cl();voidk2cl();voidk3cl();voidk4cl();voidoffmsd();voidmain()/主函数EA=1;/开中断T

19、MOD=0x11;/设定时器0为计数,设定时器1定时ET0=1;/定时器0中断允许ET1=1;/定时器1中断允许TH0=0x00;TL0=0x00;TH1=0x9E;TL1=0x57;csbds=0;csbint=1;csbout=1;cl=0;opto=0xff;jpjs=0;sj1=45;sj2=200;sj3=400;k4cl();TR1=1;while(1)keyscan();if(jpjssj3)buffer2=0x76;buffer1=0x76;buffer0=0x76;elseif(ssj1)buffer2=0x40;buffer1=0x40;buffer0=0x40;elset

20、imeToBuffer();elsetimeToBuffer();/将值转换成LED段码offmsd();scanLED();/显示函数if(s0;k-)DQ=0;/给脉冲信号dat=1;DQ=1;/给脉冲信号if(DQ)dat|=0x80;delay(4);return(dat);voidscanLED()/显示功能模块digit=0x04;for(i=0;i=1;/循环右移1位voidtimeToBuffer()/转换段码功能模块xm0=s/100;xm1=(s-100*xm0)/10;xm2=s-100*xm0-10*xm1;buffer2=convertxm2;buffer1=conv

21、ertxm1;buffer0=convertxm0;voiddelay(i)while(-i);voidtimer1int(void)interrupt3using2TH1=0x9E;TL1=0x57;csbds+;if(csbds=40)csbds=0;cl=1;voidcsbcj()if(cl=1)TR1=0;TH0=0x00;TL0=0x00;i=10;while(i-)csbout=!csbout;TR0=1;i=mqs;/盲区while(i-)i=0;while(csbint)i+;if(i=2450)/上限值csbint=0;TR0=0;TH1=0x9E;TL1=0x57;t=TH

22、0;t=t*256+TL0;s=t*csbc/2;TR1=1;cl=0;voidk1cl()sj1=sj1+5;if(sj1100)sj1=30;s=sj1;voidk2cl()sj2=sj2+5;if(sj2500)sj2=40;s=sj2;voidk3cl()sj3=sj3+10;if(sj3500)sj3=100;s=sj3;voidk4cl()sx1=sj1-1;sx1=sx1/csbc;mqs=sx1/4.5;voidoffmsd()if(buffer0=0x3f)buffer0=0x00;#include#definek1P3_4#definecsboutP3_5/超声波发送#de

23、finecsbintP3_7/超声波接收#define wendu P2_5;/温度控制通信端口#definecsbc=0.034#definebgP3_3unsignedcharcsbds,opto,digit,buffer3,xm1,xm2,xm0,key,jpjs;/显示标识unsignedcharconvert10=0x3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/09段码unsignedints,t,i,xx,j,sj1,sj2,sj3,mqs,sx1;bitcl;voidcsbcj();voiddelay(j);/延时函数void

24、scanLED();/显示函数voidtimeToBuffer();/显示转换函数voidkeyscan();voidk1cl();voidk2cl();voidk3cl();voidk4cl();voidoffmsd();voidmain()/主函数EA=1;/开中断TMOD=0x11;/设定时器0为计数,设定时器1定时ET0=1;/定时器0中断允许ET1=1;/定时器1中断允许TH0=0x00;TL0=0x00;TH1=0x9E;TL1=0x57;csbds=0;csbint=1;csbout=1;cl=0;opto=0xff;jpjs=0;sj1=45;sj2=200;sj3=400;k4cl();TR1=1;while(1)keyscan();if(jpjssj3)buffer2=0x76;buffer1=0x76;buffer0=0x76;elseif(ssj1)buffer2=0x40;buffer1=0x40;buffer0=0x40;elsetimeToBuffer();elsetimeToBuffer();/将值转换成LED段码offmsd();scanLED();/显示函数if(ssj2)bg=0;bg=1;void delay(unsigned int j) while(j-);Init_DS18B20(void) /初始化函

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1