《单片机课程设计超声波测距.doc》由会员分享,可在线阅读,更多相关《单片机课程设计超声波测距.doc(20页珍藏版)》请在三一办公上搜索。
1、单片机课程设计课题: 超声波测距系 别: 电气与电子工程系专 业: 电子信息工程姓 名: 学 号: 0河南城建学院2011年12 月 28 日成绩评定一、指导教师评语(根据学生设计报告质量、答辩情况及其平时表现综合评定)。二、评分评分项目设计报告评分答辩评分平时表现评分合 计 (100分)任务完成情 况(20分)课程设计报告质量(40分)表达情况(10分)回答问题情 况(10分)工作态度与纪律(10分)独立工作能力(10分)得分课程设计成绩评定班级 0934091 姓名 赵月 学号093409174成绩: 分(折合等级 )指导教师签字 年 月 日一、设计目的由于超声测距是一种非接触检测技术,不
2、受光线、被测对象颜色等的影响,较其它仪器更卫生,更耐潮湿、粉尘、高温、腐蚀气体等恶劣环境,具有少维护、不污染、高可靠、长寿命等特点。因此可广泛应用于纸业、矿业、电厂、化工业、水处理厂、污水处理厂、农业用水、环保检测、食品(酒业、饮料业、添加剂、食用油、奶制品)、防汛、水文、明渠、空间定位、公路限高等行业中。可在不同环境中进行距离准确度在线标定,可直接用于水、酒、糖、饮料等液位控制,可进行差值设定,直接显示各种液位罐的液位、料位高度。因此,超声在空气中测距在特殊环境下有较广泛的应用。利用超声波检测往往比较迅速、方便、计算简单、易于实现实时控制,并且在测量精度方面能达到工业实用的指标要求。由于超声
3、波测距系统具有以上的这些优点,因此在汽车倒车雷达的研制方面也得到了广泛的应用二、设计要求1、设计一个超声波测距器,用于汽车倒车、建筑施工工地以及一些工业现场的位置控制;2、要求测量范围在0.104.00米,测量精度1厘米,测量时与被测物体无直接接触,能够清晰稳定地显示测量结果。三、总体设计3.1 超声波测距的基本原理谐振频率高于20kHz的声波被称为超声波。超声波为直线传播方式,频率越高,绕射能力越弱,但反射能力越强。利用超声波的这种性能就可制成超声传感器,或称为超声换能器,它是一种既可以把电能转化为机械能、又可以把机械能转化为电能的器件或装置。换能器在电脉冲激励下可将电能转换为机械能,向外发
4、送超声波;反之,当换能器处在接收状态时,它可将声能(机械能)转换为电能。3.1.1 超声波发生器 为了研究和利用超声波,人们已经设计和制成了许多超声波发生器。总体上讲,超声波发生器可以分为两大类:一 类是用电气方式产生超声波,一类是用机械方式产生超声波。电气方式包括压电型、磁致伸缩型和电动型等;机械方式有加尔统笛、液哨和气流旋笛等。它们所产生 的超声波的频率、功率和声波特性各不相同,因而用途也各不相同。目前较为常用的是压电式超声波发生器。 3.1.2 压电式超声波发生器原理 压电式超声波发生器实际上是利用压电晶体的谐振来工作的。超声波发生器内部结构如图1所示,它有两个压电晶片和一个共振板。当它
5、的两极外加脉冲信 号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两电极间未外加电压,当共振板接收到超声波 时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。图超声波换能器内部结构图 3.1.3超声波测距原理 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停 止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2最常用的超声测距的方法是回声探测法,
6、超声波发射器向某一方向发射超声波,在发射时刻的同时计数器开始计时,超声波在空气中传播,途中碰到障碍物面阻挡就立即反射回来,超声波接收器收到反射回的超声波就立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物面的距离s,即:s=340t/2。 由于超声波也是一种声波,其声速V与温度有关。在使用时,如果传播介质温度变化不大,则可近似认为超声波速度在传播的过程中是基本不变的。如果对测距精度要求很高,则应通过温度补偿的方法对测量结果加以数值校正。声速确定后,只要测得超声波往返的时间,即可求得距离。这就是超声波测距仪的基本原理。如图3-1所示: 超声波
7、发射 障碍物 S H 超声波接收图 超声波的测距原理 (3-1) (3-2)式中:L-两探头之间中心距离的一半.又知道超声波传播的距离为: ( 3-3)式中:v超声波在介质中的传播速度; t超声波从发射到接收所需要的时间.将(32)、(33)代入(3-1)中得: ( 3-4)其中,超声波的传播速度v在一定的温度下是一个常数(例如在温度T=30度时,V=349m/s);当需要测量的距离H远远大于L时,则(34)变为 ( 3-5) 所以,只要需要测量出超声波传播的时间t,就可以得出测量的距离H.超声波测距器的系统框图图超声波测距器的系统框图.主程序框图图主程序框图四、各部分电路设计.超声波发射电路
8、图超声波发射电路超声波发射电路主要由反向器74和超声波发射换能器构成,如图7所示。图中为超声波发射器。输出端采用两个反向器并联,用以提高驱动能力。上拉电阻R2,R3一方面可以提高反向器74输出高电平的驱动能力,另一方面可以增加超声波换能器的阻尼效果,缩短其自由振荡的时间。工作时,单片机的定时器T0产生信号,从P1.3端口输出,一路经过一级反向器后送到超声波发射器的一个电极,另一路经过两极反向器后送到超声波发射器的另一个电极,从而将40 KHz电脉冲信号加到超声波发射器,使发射超声波。电路采用推挽形式,向超声波发射器提供电脉冲信号,可以提高超声波的发射强度。.超声波接收电路图超声波接收电路超声波
9、接收电路主要由超声波接收换能器和超声波检测接收模块构成,如图8所示。图中为超声波接收器。U是超声波检测接收模块,设计时选用了红外线检波接收专用集成电路芯片。电路中设置的电容C,适当更改其大小,可以改变接收电路的抗干扰能力;适当改变电路中的电容C,可改变电路的灵敏度。.数码管显示电路图数码管显示电路显示电路采用LED数码管显示。LED数码管显示有静态显示方式和动态显示方式,本系统采用并行输出的动态显示方式。(1)动态显示原理七段LED显示器由8个发光二极管组成,通常构成字形“日”,其中有一个发光二极管用来显示小数点。各段LED显示器由驱动电路驱动,控制相应的二极管导通,相应的一个笔画或一个点就发
10、光,由此就能显示出对应字符。通常将各段发光二极管的阴极或阳极连在一起作为公共端;将各段发光二极管阳极连在一起的叫共阳极显示器,用低电平驱动;将阴极连在一起的叫共阴极显示器,用高电平驱动。.单片机最小系统图单片机最小系统单片机最小系统是单片机能正常工作的最小外接电路单元,是设计电路的核心部分,也是整个作品最关键的最重要的部分。单片机最小系统包括:复位电路、晶振电路五、整体电路图图整体电路图六、设计总结由于是第一次做实物,刚看到题目觉得无从下手。后来请教一下同学,又上网搜了一些资料,开始静下心来,按照步骤开始做课程设计,先是按照功能需要设计原理图,同时上网搜了一些程序做参考,然后按照需求,结合课本
11、来编写程序。然后做仿真,这之中出现了很多错误,经过多次请教与修改才仿真成功。仿真成功后,按照要求做出了图。接下开始焊接电路板,本来以为是很简单的事,真正去做的时候才发现它的困难,好不容易焊好后发现竟然不能用,原来是焊锡用多了,有个地方短路了,经过修改,终于能够显示出数据了,过了一天再去测试的时候竟然数据不会动了,多次检查发现原来是电池老化,用电压表测,发现只有.。重新换上电池才能正常工作,电压不稳定也成了这个设备的一个缺点,如果条件允许,改成稳定供电的效果会比较好,总之在老师和同学们的帮助下,又翻阅大量的资料,终于完成了我的课程设计。通过这次的课程设计在很大程度上提高了我的动手能力,加深了我对
12、理论知识的理解和应用。参考文献(1)单片机原理及应用 杨恢先 黄辉先主编 人民邮电出版社附:部分源程序/*-MCU AT89C52 XAL 12MHz-*/#include #include#include #define uchar unsigned char#define uint unsigned int#define ulong unsigned longbit symbol;uchar dispbit13=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x00,0xff,0x7f;uchar scanbit4=0xfe,0xfd,
13、0xfb,0xf7;sbit transmit=P33; data uchar testok;void display(uchar *temp) uchar i; for(i=0;i4;i+) if(i=2&symbol=1) P0=dispbit*temp&0x7f; else P0=dispbit*temp; P2=scanbiti; delayus(200); temp+; P0=0xff; P2=0xff; void cs_t() uchar i; transmit=1; TH0=0; TL0=0; TR0=1; for(i=0;i6;i+) _nop_(); _nop_(); _no
14、p_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); transmit=transmit; transmit=1; /void main(void) uchar data dispram5=0x0a,0x0a,0x0a,0x0a,0x0a; data uint i; data ulong time; data ulong_temp; symbol=0; P0 = 0xff; P2=0xff; TMOD = 0x11; IE = 0x80; while (1) cs_t(); delayus(10); testok = 0; EX
15、0 = 1; ET0 = 1; while (!testok) display(dispram); if ( testok=1 ) time = TH0; time = (time8) | TL0; time *=174; time /= 10000; dispram0 = (uchar) (time % 10); time /= 10; dispram1 = (uchar) (time % 10); time /= 10; dispram2 = (uchar) (time % 10); dispram3 = (uchar) (time / 10); if(dispram2!=0)|(dispram3!=0)symbol=1; else symbol=0; else dispram0 = 10; dispram1 = 10; dispram2 = 10; dispram3 = 10; for (i=0; i10; i+) display(dispram); /void cs_r(void) interrupt 0 TR0 = 0; ET0 = 0; EX0 = 0; testok = 1;void overtime(void) interrupt 1 EX0 = 0; TR0 = 0; ET0 = 0; testok = 2;