《课程设计(论文)基于单片机的超声波测距系统的设计.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)基于单片机的超声波测距系统的设计.doc(22页珍藏版)》请在三一办公上搜索。
1、基于单片机的超声波测距系统的设计摘 要:这是一种可应用于倒车雷达的超声波测距系统。本系统采用单片机为核心,结合发射和接受模块构成整个的测距系统。倒车雷达是用来探测车身和周围的障碍物并显示其距离,以帮助驾驶员安全倒车或泊车的辅助电子设备,在纵多的汽车中逐渐普及应用,而且较多的应用了本系统设计采用的无源探头。采用无源探头能够降低整个系统的设计成本,为能够更广泛的应用超声波测距系统打了坚实的基础。因此,本系统的设计具有广泛的运用价值和意义。关键字:超声波测距; 倒车雷达; 运用价值 Abstract: This is a reversing radar can be used in ultrason
2、ic ranging system. The system uses a single-chip microcomputer as the core, Combination of transmitting and receiving modules constitute the entire ranging system. Reversing radar is used to detect obstacles in and around the body and displays its distance, in order to help driver safety reversing o
3、r parking and ancillary electronic equipment, in many longitudinal vehicle gradually wider application, and more applications of the system design Passive probe used. Passive probe can reduce overall design cost, in order to be able to the wider use of ultrasonic ranging system playing a solid found
4、ation. Therefore, the design of the system has a broad application of the value and significance. Keyword: Ultrasonic Ranging; reversing radar; use Value目 录引言4一、 超声波测距系统主要功能的概述4二、 超声波测距系统的主要技术指标4三、 超声波测距系统的原理4四、 超声波测距系统的硬件组成5五、 超声波测距系统的软件设计9六、 超声波测距系统的测试数据和测试结果分析10七、 总结11谢辞11参考文献12附录一 超声波测距系统原理图13附录
5、二超声波测距系统的PCB图14附录三超声波测距系统的源程序15引言: 本系统以STC89C52单片机控制为核心、发出40K发波信号,经发射电路升压后驱动超声波换能器,然后再由超声波接收头接受信号,送到单片机处理后,由液晶显示模块显示测量数据。此外,本系统还包括了测温系统,测温工作由DS18B20完成,由本系统构成的超声波测距系统具有测量准确,显示便捷,操作灵活,反应迅速,系统工作稳定,耗电低,报警提示等特点。一、 超声波的主要功能概述: 实时显示当前测量距离; 实时显示当前测量温度; 具有近距离和远距离两种测量模式; 能够实时报警功能; 具有开机系统自检功能;二、超声波测距仪的主要技术指标测量
6、距离:0.20m-10.00m测温范围:0-125测量距离精度:1cm实时功率:0.05W系统发射功率:1mW(max)工作电流:80mA(min)、90mA(max)输入电源电压:DC5V三、 超声波测距系统的原理 超声波测距的方法有很多种,如相位检测法,声波幅值检测法和往返时间检测法等。相位检测法虽然精度高,但检测范围有限:声波幅值检测法容易受反射波的映像。本系统采用超声波往返时间检测法,其原理是:检测从超声波发生器发出的超声波,经气体介质的传播到接收器的时间即往返时间。往返时间与气体介质中的声速相乘再除以2就是检测的距离。即有: L=V*T/2想要通过时间测量超声波传播的时间的准确性确定
7、距离,声速V就必须要准确测定。实际上声速虽介质的温度,压力等变化而变化。一般条件下,由于大气压力变化很小,因此传播速度就主要受温度的影响。在我们的设计测距系统中采用测量温度的方法来补偿声速,即用测温元件测量实际环境的温度来修正声速。空气中的声速与温度的关系近似用下式表示: V=331.4+0.607T m/s T 此外,准确的测量目标还要能够精确的计算出超声波传播的时间,显然能够确定的时间的单位越小越好,本系统采用的单片机的定时器0来计算时间,单片机采用12M 的晶振,那么本系统可精确到1US 的最小时间单位,计算所测量的距离可精确到0.0001M,显然这已经能够完全地满足我们的设计要求。超声
8、波测距系统的总电路的组成部分有:单片机控制电路,超声波发射电路,超声波接受电路,测温电路,液晶显示电路以及报警电路等共同组成。单片机控制电路负责发生40K的方波信号,经一反向器器后分别送到MAX232的两TTL电平输入端,然后产生+/-9V的方波信号驱动超声波换能器。再由超声波接受回来,此时,就可利用单片机定时出发射和接收的时间差。那么单片机就可计算出实际的距离,并将其显示出来。具体的硬件原理框图如下: 微控制器显示报警信号产生驱动信号放大整型发生器接收器四、 超声波测距系统的硬件组成 4.1单片机控制系统 单片机控制系统以单片机STC89C52为核心,结合其本身的一些外围器件构成。STC89
9、C52单片机是一款应用很普及的89系列的单片机,该单片机具有四个8位的I/O口,内部集成了8K的程序存储器,两个外部中断,两个定时器,支持串口的程序下载,具有应用简单,操作简便,价格便宜等许多优点。因此我们选用这一型号的单片机作为控制器。单片机的晶振频率为12M,这样有利于我们更准确地计算超声波的往返时间,是后面距离精确计算的基础。 图一:超声波控制电路 4.2 超声波发射电路超声波发射电路采用基于MAX232的方波发射电路,电路的前级用74LS04非门输出正反相的40KHz方波信号驱动MAX232后实现从TTL电平到RS232电平的DC-DC转换,输出+/-9V的电压方波,驱动超声波换能器,
10、电路图如下图2所示。由于发射到换能器的电压高,波形完整,因此可以达到很高的发射功率与效率,可以测量到比较远的距离,同时用这个电路发射方波,电路工作稳定,电路功耗很小,也适合单电源供电。所以我们采用这个方案作为发射电路。图2:基于MAX232的超声波发射电路4.3 超声波接受电路超声波接收电路采用集成接收芯片对超声波回波信号进行放大与整形,在这里我们采用SONY公司生产的红外接收专用芯片CX20106A(电路如图3所示),由于它的接收频率在40KHz左右,而且它的外部电路简单易于实现,同时减少了生产调试的麻烦,因此我们采用这个接收方案。CX20106A内部集成了前置放大与限幅放大,总增益可达80
11、dB,带通滤波电路,峰值检波,噪声抑制电路,自动增益控制电路和波形整形电路。可以通过调整外部的电容C2调整它的接收灵敏度,调整外部电阻R6可以的调整它的接收中心频率与增益,它工作稳定,灵敏度高,功耗小,接收回波能力强,所以我们采用这个方案作为接收电路。 图3:基于CX20106A的超声波接受电路 4.4 LCD液晶显示电路 LCD液晶显示电路采用LCD1602液晶显示模块,它可以显示2行*16个字符,完全可以满足我们的设计要求。它独有的蓝色背光电路可以在环境光线较弱的条件下应用,显示清晰,颜色靓丽,价格便宜的特点,是很好的显示设备。同时,还能够根据情况来调节显示的亮度。由于本系统可以不用显示汉
12、字,介于设计成本上的需要,我们采用了这个显示方案。 图4:1602液晶显示模块4.5 温度检测模块检测模块是以数字温度传感器DS18B20为核心,它是DALLAS 公司生产的1Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计。DS18B20 产品的特点(1)、只要求一个I/O 口即可实现通信。(2)、在DS18B20 中的每个器件上都有独一无二的序列号。(3)、实际应用中不需要外部任何元器件即可实现测温。(4)、测量温度范围在55 到125摄氏度之间。(5)、数字温度计的分辨率用户可以从9 位到12 位选择。
13、(6)、内部有温度上、下限告警设置。DS18B20 详细引脚功能描述1、GND 地信号;2、DQ数据输入出引脚。开漏单总线接口引脚。当被用在寄生电源下,也可以向器件提供电源;3、VDD可选择的VDD 引脚。当工作于寄生电源时,此引脚必须接地。DS18B20 的使用方法。由于DS18B20 采用的是1Wire 总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S52 单片机来说,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传
14、输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。本系统采用外部电源供电方式,即:DS18B20的1脚和3脚分别接地和VCC电源.2脚接一个5K的上拉电阻到VCC.这样接法的好处是传感器的检测范围更大.在温度检测时,无需强上拉。 图5:基于DS18B20的温度检测电路五、 超声波测距系统的软件设计本系统的软件设计采用了目前比较流行的编程语言C语言,由于C语言是面
15、对使用者的高级语言,它通俗易懂,书写方便,给我们的编程设计带有很大的方便,我们的编程速度与效率与得到了很大的提高。尤其是在数据运算处理方面,C语言显示出了巨大的优越性。程序首先要初始化要用到的寄存器,内存单元,设置中断触发方式,并初始DS18B20和1602液晶模块,然后控制P3.1口输出12US的高电平,再输出13US的低电平,循环15次便可发射15个频率为40K的方波信号,此后单片机马上启动定时器计时,经过一段时间的延时后,CPU开放中断。当中断产生后,马上关闭定时器,并由单片机处理数据,并将计算结果显示出来。以下是程序设计的流程图:开始系统初始化发射方波脉冲计时中断数据处理报警执行报警L
16、CD显示返回结束程序设计见附录三六、 超声波测距系统的测试数据和测试结果分析对多种测试物体进行测试:测试物体一:纸箱 48cm*46cm;测试物体二:木板 43cm*35cm测试物体三:铜板36cm*34cm测试物体四:硬塑料板40cm*33cm1、距离测试:测试一:测试地点:男生宿舍24#205 测试时间:3月25日 10:00-11:00实际测试距离范围:0.12m5.15m 测试者:刘振河、王坤单位:cm测试物体纸箱木板铜板硬塑料测试距离1231231231232020202121212121202121212110010110110199999910099991001001002502
17、44244243244245245244245244244244244500498498498499499499501501502测试二: 测试地点:信息与通信学院创新基地 测试时间:3月25日 12:00-13:00实际测试距离范围:0.12m5.30m 测试者:刘振河、王坤单位:cm 测试物体纸箱木板铜板硬塑料测试距离123123123123202019192021202019191920201001001011011009999991009910210210125024724724624924824824624624624925024950049949950150050150150050
18、1501注: 1、铜板上分布着许多不规则的小孔; 2、在测试小于40cm距离时,发射头要并接一104瓷片电容;3、由于接收头在接收到超声波后转化成的电信号极小,幅值在UV级别,因此无法在实验室的示波器上显示。2、工作电流:100mA 3、LCD显示清晰,亮度高,内容丰富4、各LED指示灯均能正常工作,指示正常5、测量温度精度:0.0625以上各项技术指标均满足了设计的要求,电路各种参数设计合理,工作稳定,性能良好。七、 总结经过十几天的不断设计制作,我们终于完成了我们的设计。总体上讲,这一系统测量结果在一定的误差范围内较为准确,测试数据较稳定,我们觉得这是本系统中最为成功的地方之一,为此我们也
19、十分的满意!当然,我们这次的设计也存在很多的不足之处,比如我们的这个设计在运动中测试的结果不够准确,测量数据变化很大,而且反应时间较长。我们认为这是本系统中最大的不足之处,同时也是我们在设计制作之初欠缺考虑的地方。为此,我们查阅相关的资料,了解到相关的一些信息。据了解,目前高性能的倒车雷达大都采用有源探头,接收的回波信号在探头内部放大整形后输出,发射信号也在探头内部耦合驱动传感器,其抗干扰性更强,探头的互换性、一致性也更高。同时采用多个探头以保证测试结果的质量。总之,虽然我们这次超声波测距系统的制作存在一些不足,但总体上还是取得令人满意的结果!为此,我们会再接再励,在电子制作过程中不断吸收各方
20、面的知识、提高我们的实践能力,让我们再一次感觉到了辛苦忙碌之后收获的喜悦,同时也引起了我们对电子制作的更加广泛的兴趣和热情!谢 辞:经过本小组所有成员的共同努力,我们终于完成这次设计制作,在设计中我们遇到各种各样的困难,但我们全小组齐心协力,共同攻关,献言献策,凭着严谨认真的科研态度,创新求实的科学精神,克服了种种困难。同时,多得各位老师和同学的耐心分析和指导,尤其是何宁老师给予了我们很大的帮助!为此,我们要向我们的指导老师何宁老师,廖欣老师表示由衷的感谢,在他们的耐心帮助下,我们终于顺利地完成我们的这次设计制作!参考文献:1 徐爱钧 彭秀华.Keil Cx51 V7.0单片机高级语言编程与u
21、Vision2应用实践 电子工业出版社 20042 张毅刚 彭喜源 潭晓昀等.MCS-51单片机应用设计.哈尔滨工业大学出版社 20003 杨振江 杜铁军 李群.流行单片机实用子程序及应用实例. 西安:西安电子科技大学出版社,20024 李群芳 张士军 黄建.单片微型计算机与接口技术(第三版) 电子工业出版社 20085 李光飞.单片机C程序设计实例.北京航空航天大学出版社 20026 广州周立功单片机发展有限公司.DS18B20芯片资料附 录附录一:超声波测距系统原理 附录二:超声波测距PCB 附录三:超声波测距系统源程序#include#define uchar unsigned char
22、#define uint unsigned intsbit d8=P27;sbit d1=P20;sbit d2=P22;sbit d3=P24;sbit fang=P31;sbit ds=P14; /define ds18b20sbit lcden=P10;sbit lcdrs=P12;uchar table=TMP:;uchar table1=distance:;uchar table2=0123456789.CM;double TT;float S6;uint temp,temp1,time,V,S;uint S53,temp23;uchar A1,A2,A3,S1,S2,S3,S4,t
23、imeh,timel,flag;/*延时*/void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); /*初始化DS18B20*/void dsreset()uint i;ds=0;i=103;while(i0) i-;ds=1;i=4;while(i0) i-;/*read a bit*/bit tmpreadbit()uint i;bit dat;ds=0;i+;ds=1;i+;i+;dat=ds;i=8;while(i0) i-;return(dat);/*read a byte*/uchar tmpread()uchar
24、 i,j,dat;dat=0;for(i=1;i=8;i+)j=tmpreadbit();dat=(j1);return(dat);/* write a byte */void tmpwritebyte(uchar dat)uint i;uchar j;bit testb;for(j=1;j1;if(testb)ds=0;i+;i+;ds=1;i=8;while(i0) i-; elseds=0;i=8;while(i0) i-;ds=1;i+; i+;/*temchange 温度转换命令*/void tmpchange()dsreset();delay(1);tmpwritebyte(0xc
25、c);tmpwritebyte(0x44);/*get tmp*/uint gettmp()float tt;uchar a,b;dsreset();delay(1);tmpwritebyte(0xcc);tmpwritebyte(0xbe);a=tmpread();b=tmpread();temp=b;temp=8;temp=temp|a;tt=temp*0.0625;temp=tt*10+0.5;return temp;/* fen li*/void display1(uint temp)A1=temp/100;A2=(temp%100)/10;A3=temp%10;void displa
26、y2(uint S)S1=S/1000;S2=S%1000/100;S3=S%100/10; S4=S%10;/*write a data*/void write_data(uchar date)lcdrs=1; /rs =1P0=date;delay(5); lcden=1; /EN 一个高脉冲写入delay(5);lcden=0;/*write a command*/void write_com(uchar com) /液晶写指令lcdrs=0; /RS =0P0=com; /送指令delay(5); lcden=1; /EN 一个高脉冲写入delay(5);lcden=0; /*init
27、 lcd*/void init() /初始化液晶uchar i;lcden=0;i+;i+;write_com(0x38); i+; i-;write_com(0x0e); /光标不闪烁指令 i+;i-;write_com(0x06); i+;i-;write_com(0x01); /清除所有指令 i+;i-;void xianshi()uchar a;init();write_com(0x80+3);delay(5);for(a=0;a4;a+)write_data(tablea);delay(5);write_com(0x80+11);delay(5);for(a=11;a13;a+)wr
28、ite_data(table2a);delay(5);write_com(0x80+9);delay(5);write_data(table210);delay(5);write_com(0xc0);delay(5);for(a=0;a0)write_com(0xc0+9);delay(5);write_data(table2S1);delay(5);write_data(table2S2);delay(5);write_com(0xc0+12);delay(5);write_data(table2S3);delay(5);write_data(table2S4);delay(5);elsew
29、rite_com(0xc0+10);delay(5);write_data(table2S2);delay(5);write_com(0xc0+12);delay(5);write_data(table2S3);delay(5);write_data(table2S4);delay(5);void send()uchar i,j,k;EX1=0;TH0=0; TL0=0x01; for(i=15;i0;i-) fang=1;j=5; while(j0) j-; fang=0;j=4; while(j0) j-; TR0=1; /启动定时器0j=250; while(j0) j-; IE1=0;
30、 EX1=1; /开外部中断1 for(k=2;k0;k-) /等待中断回波for(i=255;i0;i-)for(j=255;j0;j-);void baojing()if(S6=1.0)d1=1;d2=0;if(S6=0.5)d1=1;d2=1;if(S60.5)d2=1;d1=0;void exter1(void) interrupt 2EX1=0;TR0=0;timeh=TH0;timel=TL0;TH0=0;TL0=0x01;d8=0;flag=1;void main()uchar i;EA=1;/开总中断TMOD=0x01;/设置T0为工作方式1TH0=0;TL0=0x01; /赋
31、初值EX1=0;/开外部中断1IT1=1; /设置为下降沿触发中断IE1=0; xianshi();while(1)for(i=0;i3;i+) /连续测量3次ss:send();if(flag=0) goto ss;EX1=0;flag=0;time=timeh*256;time=time+timel;TT=(time*(0.0001);tmpchange(); /发送温度转换命令temp2i=gettmp(); /获得温度V=(33240+(6*temp2i);V=(V/200+0.5);S5i=(V*TT)+(0.5);V=0;TT=0;delay(200);for(i=0;i3;i+)temp1=(temp1)+temp2i;S=S+S5i;temp1=(temp1)/3+0.5; /求平均值 S=S/3+0.5;S=S+3; /3是修正值S6=S*(0.01);display1(temp1);display2(S); /分离d8=1;xianshi1(); /刷新测量数据baojing();temp1=0;S=0;delay(200);