电子器件市场调研与系统设计实践报告1基于单片机的超声波测距仪设计1系统要求我们组选择制作了一套超声波测距系统,功能有:倒车雷达测量的显示距离在手机APP上显示,设定阈值,若小于设定的距离数值,蜂鸣器发出报警声。2研究目的为了深层次的巩固学习的单片机的知识,更加熟悉的使用Proteus和KeilC51这两个软件。能够综合所学的单片机的知识进行系统设计,将所学习的知识运用到生活中。我们组选择制作了这样一套超声波测距系统。3设计方案及原理框图3.1系统概述在汽车倒车中存在的困难之一也会影响到驾驶员的驾驶情况,在驾驶员在驾驶座位上无法完全了解到四周特别是后方环境时,只能依赖后视镜来观察后方障碍物,而这种环境因素也会限制驾驶员的视野狭窄和清晰度,从而驾驶员导致倒车会遇到危险。其二是驾驶员在进行倒车过程中,要观察左右环境,同时也要兼顾到汽车后侧与障碍物的距离,这样会使驾驶员过于分心和费力费神。其三是驾驶员会依赖自己长久以来的驾驶技术,以此来停靠车位,这样会引起驾驶员无法准确的倒入准确位置。解决这种问题是在汽车生产行业中重中之重要解决的一个技术性难题,我们可在汽车内部安置一个汽车倒车预报警系统,显示器可装置在汽车内部,驾驶员能看到的有利位置,而感应器则可以装置在汽车后侧内部,从而接受到后方的障碍物情况,传输到显示器当中。这个设计可避免驾驶员在倒车时候频繁看后视镜去判断汽车与障碍物的距离,从而避免发生事故发生。汽车倒车预报警系统在很大程度上解决了汽车倒车的难题,同时也为驾驶员的驾驶提供了安全的保障。该设计由超声波传感器、STC89C52系列单片机、HC-SR04超声波传感器模块、蜂鸣器组成。总体设计方案如图1所示。障碍物超声波发射传感器发射电路超声波接收传感器接收电路STC89C52单片机电源电路APP显示报警电路图1总体设计方案电子器件市场调研与系统设计实践报告23.2系统总体电路图单片机系统的电路图如图2所示。图2系统设计图4硬件实现4.1STC89C52单片机STC89C52是基于51系列的单片机发展过来的。C52单片机功能为8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz。此最小系统,包括一个主控芯片,还有一个复位电路和一个晶振电路。其晶振为11.0592MHz。本系统基于此芯片之上,通过P2.0口连接蜂鸣器,外接一个PNP,低电平导通,高电平截止。4.2超声波传感器电路HC-SR04超声波测距模块。超声波传感器是将超声波信号转成其他能量信号的传感器。超声波是振动频率高1于20KHz的机械波。它具有频率高、波长短、绕射现象小,特别是方向性好、能够成为射线而定向传播等特点。根据图3,我们可以看出它的工作原理:电子器件市场调研与系统设计实践报告3图3HC-SR04时序图以上时序图表明只需要提供一个10uS以上脉冲触发信号,该模块内部发出信号是8个40KHz的脉冲周期电平并检测回拨。如果检测到有回拨信号的话,则会输出回响信号。回响的电平输出与检测距离成正比。由此可通过发射出去的信号接收到回响信号时间间隔。4.3超声波原理及组成部分原理:超声波传感器是利用超声波的特性研制而成的传感器。超声波是一种振动频率高于声波的机械波,由换能晶片在电压的激励下发生振动产生的,它具有频率高、波长短、绕射现象小,特别是方向性好、能够成为射线而定向传播等特点。超声波对液体、固体的穿透本领很大,尤其是在阳光不透明的固体中,它可穿透几十米的深度。超声波碰到杂质或分界面会产生显著反射形成反射成回波,碰到活动物体能产生多普勒效应。因此超声波检测广泛应用在工业、国防、生物医学等方面。以超声波作为检测手段,必须产生超声波和接收超声波。完成这种功能的装置就是超声波传感器,习惯上称为超声换能器,或者超声探头。组成部分:超声波探头主要由压电晶片组成,既可以发射超声波,也可以接收超声波。小功率超声探头多作探测作用。它有许多不同的结构,可分直探头(纵波)、斜探头(横波)、表面波探头(表面波)、兰姆波探头(兰姆波)、双探头(一个探头反射、一个探头接收)等。本次设计中使用的是双探头。工作频率:工作频率就是压电晶片的共振频率。当加到它两端的交流电压的频率和晶片的共振频率相等时,输出的能量最大,灵敏度也最高。5.软件的实现5.1流程图流程图如图4所示:电子器件市场调研与系统设计实践报告4初始化定时器启动超声波传感器,发出信号判断ECHO位是否为1开启定时器判断ECHO位是否为0关闭定时器计算距离,发送到手机是是否否开始图4主程序流程图根据图4主程序流程图中,可知道首先开始初始化定时器,然后启动超声波传感器并发出信号波。判断ECHO线是否为1,若为假,则等待继续判断,若为真,则继续下一步。开启定时器,判断ECHO线是否为0,若为假,则等待继续判断,若为真,则进行下一步。关闭定时器,计算距离并发送到手机。这样就完成了一次距离测量。5.2蓝牙模块是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换(使用2.4—2.485GHz的ISM波段的UHF无线电波)。它的优势在于便于携带、数据传输方便、低功耗,性价比高,试用范围广,速度快。劣势在于匹配速度慢,传输文件容易中毒,耗电量过大,有效传输的距离太近,一般距离是10米左右。5.3安卓端APP设计电子器件市场调研与系统设计实践报告5本次设计使用到了安卓端APP设计。而传输的数据是通过蓝牙模块接收数值。本意是把硬件部分的1602显示频替换成蓝牙APP显示。从硬件接收到的数值会通过蓝牙模块传输到APP,接收到的数值会显示在APP上面。通过手机蓝牙连接到蓝牙APP上。配对成功后,读取数值。6系统调试系统实物图如图5所示。图5系统实物图7元器件清单及价格元器件清单及价格见附录1。8市场调研根据市场调查,传感器主要按用途、原理、输出信号、制造工艺、测量目、构成、作用形式等进行分类,目前市面上的传感器价格从1、2元到16000元左右不等,AQUAFINE传感器42601就需要16000元左右,而较为便宜的日本尼赛拉电子器件市场调研与系统设计实践报告6红外传感器只需要2元左右,经过多方面考虑,我们在这次课设中使用了性价比较高的超声波传感器,售价4元。9总结通过这次课题设计,我能更好的应用Proteus和KeilC515软件,提高了自己的动手能力,对系统的理解也更加深刻。对利用单片机进行控制系统的设计与开发以及对系统的分析和问题的解决有了切身的认识和体会。要在实践中检验所学习的知识。其次,这次设计其实也是我们所学知识的一次综合运用,让我深深的认识到了学习单片机要有一定的基础,要有电子技术方面的数字电路和模拟电路等方面的理论基础,特别是数字电路;也要有编程语言的汇编语言或C语言。要想成为单片机高手,我们首先要学好汇编语言,然后转入C语言学习,所以我们不能学到后面就忘了前面的知识,更应该将所学的知识紧紧的结合在一起,综合运用,所谓设计,就是要求创新,只有将知识综合运用起来才能真正的设计好。参考文献[1]王思明,张鑫等.单片机原理及应用系统设计[M].北京.科学出版社.2012[2]姜香菊.传感器原理及应用,北京:机械工业出版社.2015.[3]童诗白.模拟电子技术基础[M].成都:高等教育出版社.2010.45-48[4]陈中,朱代忠.基于STC89C52单片机的控制系统设计,北京:清华大学出版社,2015电子器件市场调研与系统设计实践报告7附录1器件名称价格(元)STC89C52/C51单片机4.510uF电解电容110K色环电阻11K色环电阻122pF瓷片电容211.0592Mhz晶振2DIP40单片机插座27cm*9cm万孔板0.52.5mm排针0.5自复位按键1DC5V的电源座1.2DC5V的USB电源线0.5小的LED电源指示灯1焊接跳线14.7K排阻2蓝牙串口模块15杜邦线3超声波传感器模块4PNP驱动三极管0.5DC5V有源蜂鸣器2电子器件市场调研与系统设计实践报告8附录2程序源代码:#includereg51.h#includeintrins.h#includeSTDIO.H#defineucharunsignedchar#defineuintunsignedintsbitRX1=P1^0;sbitTX1=P1^1;sbitRX2=P1^2;sbitTX2=P1^3;sbitbeer=P2^0;unsignedinttime=0;unsignedinttimer=0;floatS=0;bitflag=0;//发送十六进制字节数据voidSendByte(unsignedchardat){SBUF=dat;while(!TI);TI=0;}/********************************************************/voidConut(void){time=TH0*256+TL0;TH0=0;TL0=0;S=(time*1.87)/100;//算出来是CMif(flag==1)//超出测量{flag=0;//printf(-----\n);}SendByte(S);电子器件市场调研与系统设计实践报告9if(S20){beer=1;}if(S20){beer=0;}//printf(S=%f\n,S);}/********************************************************/voiddelayms(unsignedintms){unsignedchari=100,j;for(;ms;ms--){while(--i){j=10;while(--j);}}}/********************************************************/voidzd0()interrupt1//T0中断用来计数器溢出,超过测距范围{flag=1;//中断溢出标志}/********************************************************/voidStartModule1()//T1中断用来扫描数码管和计800MS启动模块{TX1=1;//800MS启动一次模块_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();电子器件市场调研与系统设计实践报告10_nop_();TX1=0;}voidStartModule2()//T1中断用来扫描数码管和计800MS启动模块{TX2=1;//800MS启动一次模块_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();TX2=0;}/********************************************************/voidmain(void){TMOD=0x21;//设T0为方式1,GATE=1;SCON=0x50;TH