《基于单片机的超声波测距.doc》由会员分享,可在线阅读,更多相关《基于单片机的超声波测距.doc(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、. .机电信息工程学院单片机系统课程设计报告系:电子工程系专 业:通信工程班 级:071班设计题目:超声波测距学生XX:指导教师:完成日期:2010年5月28日. .word. .目 录一、设计任务和性能指标21.1设计任务21.2性能指标2二、设计方案3三、系统硬件设计43.1单片机最小系统43.2 超声波发射电路43.3 超声波检测接收电路53.4.温度补偿电路63.5显示电路7四.系统软件设计84.1 主程序设计84.2 温度补偿子程序8五.调试及性能分析105.1调试步骤105.2 性能分析10六.心得体会11参考文献12附录1 系统硬件电路图13附录2 程序清单14. .word.
2、.一、设计任务和性能指标1.1设计任务利用单片机及外围接口电路(键盘接口和显示接口电路)设计制作一个含有温度补偿的超声波测距仪器,用LED把环境温度和测距仪距被测物的距离显示出来。要求用AD6.0 画出系统的电路原理图,印刷电路板,绘出程序流程图,并给出程序清单。1.2性能指标1. 距离显示:用三位LED数码管进行显示(单位是CM)。2. 环境温度:用三位数码管进行显示温度(绝对温度)。3. 测距X围:5CM到 300CM之间。4. 键位:复位键 、便携电源开关、USB供电开关,温度显示距离显示. .word. .二、设计方案按照系统设计的功能的要求,初步确定设计系统由单片机主控模块、电源模块
3、、显示模块、键扫描模块、超声波发射模块,超声波接收模块,温度补偿模块共七个模块组成。主控芯片使用51系列STC89C52单片机,该单片机工作性能稳定,同时也是在单片机课程设计中经常使用到的控制芯片。本设计在接受模块采用了由索尼公司生产的CX2016A红外接收芯片来实现超声波的接收。CX2016A是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。考虑到红外遥控常用的载波频率38KHz与测距超声波频率40KHz较为接近,可以利用它作为超声波检测电路。实验证明其具有很高的灵敏度和较强的抗干扰能力。同时通过改变部分参数来改变接受电路的灵敏度和抗干扰能力,所以我们采用该芯片作为接收模块主要组成
4、部分。发射电路主要采用差分放大电路来实现的,由反相器74LS04和超声波发射换能器T构成,输出的40kHz的方波信号一路经一级反向器后送到超声波换能器的一个电极,另一路经两级反向器后送到超声波换能器的另一个电极,用这种推挽形式将方波信号加到超声波换能器的两端。之所以采用该方案是因为通过差分放大电路可以提高超声波的发射强度,进而增加了发送距离,最终扩大了设备的测量X围。系统设计框图如图2-1超声波接收模块超声波发射模块单片机控制系统(AT89C52RC)显示模块键盘模块温度补偿模块(DS18B20)图2-1系统设计框图 . .word. .三、系统硬件设计硬件电路的设计主要包括单片机系统及显示电
5、路、温度补偿电路,超声波发射电路和超声波检测接收电路四部分。单片机采用AT89C52或其兼容系列。采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。单片机用P1.0端口输出超声波换能器所需的40kHz的方波信号,利用外中断0口监测超声波接收电路输出的返回信号。显示电路采用简单实用的3位共阳LED数码管,段码用74LS273驱动,位码用PNP三极管8550驱动。3.1单片机最小系统5l系列单片机中典型芯片(AT89C51)采用40引脚双列直插封装(DIP)形式,内部由CPU,4kB的ROM,256 B的RAM,2个16b的定时计数器TO和T1,4个8 位的全双工IO端P0,P1,P
6、2,P3,一个全双功串行通信口等组成。特别是该系列单片机片内的Flash可编程、可擦除只读存储器(EPROM),使其在实际中有着十分广泛的用途,在便携式、省电及特殊信息保存的仪器和系统中更为有用。该系列单片机所组成的最小系统如图3-1所示。、图3-1单片机最小系统原理图 3.2 超声波发射电路超声波发射电路原理图如图2-2所示。发射电路主要由反相器74LS04和超声波发射换能器T构成,单片机P1.0端口输出的40kHz的方波信号一路经一级反向器后送到超声波换能器的一个电极,另一路经两级反向器后送到超声波换能器的另一个电极,用这种推换形式将方波信号加到超声波换能器的两端,可以提高超声波的发射强度
7、。输出端采两个反向器并联,用以提高驱动能力。上位电阻R1O、R11一方面可以提高反向器74LS04输出高电平的驱动能力,另一方面可以增加超声波换能器的阻尼效果,缩短其自由振荡时间。如图3-2。图3-2 超声波发射电路原理图 压电式超声波换能器是利用压电晶体的谐振来工作的,超声波换能器内部有两个压电晶片和一个换能板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片会发生共振,并带动共振板振动产生超声波,这时它就是一个超声波发生器;反之,如果两电极问未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收换能器。超声波发射换能器与接
8、收换能器在结构上稍有不同,使用时应分清器件上的标志。3.3 超声波检测接收电路集成电路CX20106A是一款红外线检波接收的专用芯片,常用于电视机红外遥控接收器。考虑到红外遥控常用的载波频率38 kHz与测距的超声波频率40 kHz较为接近,可以利用它制作超声波检测接收电路(如图2-3)。实验证明用CX20106A接收超声波(无信号时输出高电平),具有很好的灵敏度和较强的抗干扰能力。适当更改电容C4的大小,可以改变接收电路的灵敏度和抗干扰能力。如图3-3图3-3 超声波接收电路原理图 3.4.温度补偿电路温度传感器使用了DSl8B20数字温度计提供可选择的12位(二进制)温度读数来指示周围环境
9、的温度信息。经过单线接口DQ与单片机进行数据交互。从主机CPU到DSl8B20仅需一条数据接线(和地线)。DSl8B20的电源可以由数据线本身提供而不需要接外部电源。由于每一个DSl8B20在出厂时已经给定了唯一的序号因此任意多个DSl8B20可以存放在同一条单线总线上实现多点温度测量。温度传感器DSl8B20的测温X围从-55摄 氏度到+125摄氏度增量值为0.5度可在l s(典型值)内把温度变换成数字量,因此采用DS18B20实现温度补偿电路的设计。图3-4 温度补偿电路原理图 3.5显示电路 显示电路主要由74ls273芯片驱动,用PNPC8550三级管进行位选,七段共阳极数码管显示,硬
10、件电路图如图3-5所示:图3-5 显示电路原理图 . .word. .四.系统软件设计4.1 主程序设计图4-1 主程序流程图 图4-1 程序流程图 主程序中包括温度补偿子程序,计算子程序,显示子程序 ,如图4-1所示:. .word. .在主程序设计中,我们采用了汇编编程。首先进行系统初始化。其次利用循环产生4个40KHZ的方波,由输出口进行输出,并开始计时。第三读取外界环境的温度,由该温度确定环境中的超声波传输速度。第四等待中断,若超声波被接收探头捕捉到,那么通过中断可测得超声波在环境中的传播时长。第五进行计算,求得测距仪到被测物的距离。第六进行距离显示。4.2 温度补偿子程序图4-2 D
11、S18B20时序图 DS18B20正常工作需要严格的工作时序,操作起来很复杂,图4-2给出的是DS18B20的时序图,其控制程序如下:. .word. .TEMP: SETB DQ NOP CLR DQ MOV R0,#0FBH TSR1: DJNZ R0,TSR1 SETB DQ MOV R0,#25H ; TSR2: JNB DQ TSR3 DJNZ R0,TSR2 ; TSR3: SETB FLAG1 CLR P2.0 AJMP TSR5 TSR4: CLR FLAG1 LJMP TSR7 TSR5: MOV R0,#06BH TSR6: DJNZ R0,TSR6 TSR7:SETB D
12、Q RET*读转换后的温度值*GET_TEMPER: SETB DQ LCALL TEMP FLAG1,TSS2 RET TSS2:MOVA,#0CCH LCALL WRITE_18B20 MOVA,#44H LCALL WRITE_18B20 LCALL TEMP MOV A,#0CCH LCALL WRITE_18B20 MOV A,#0BEH ; LCALL WRITE_18B20 LCALL READ2_18B20 ;RET*写ds18b20汇编程序* WRITE_18B20: MOV R2,#8 CLR C WR1:CLR DQ MOV R3,#6 DJNZ R3,$ RRC A M
13、OV DQ,C MOV R3,#23 DJNZ R3,$ SETB DQ NOP DJNZ R2,WR1 SETB DQ RET ;*读18B20程序,读出两个字节的温度* READ2_18B20: MOV R4,#2 ; MOV R1,#29H RE00: MOV R2,#8 RE01: CLR C SETB C NOP NOP CLR DQ NOP NOP NOP SETB DQ MOV R3,#7 DJNZ R3,$ MOV C,DQ MOV R3,#23 DJNZ R3,$ RRC A DJNZ R2,RE01 MOV R1,A DEC R1 DJNZ R4,RE00 RET*读出的温
14、度进行数据转换*CHANGE: MOV A,29H ; MOVC,28H.0 RRC A MOV C,28H.1 RRC A MOV C,28H.2 RRC A MOV C,28H.3 RRC A MOV 29H,A. .word. .五.调试及性能分析5.1调试步骤我们的步骤是先焊接各个模块,焊接完每个模块以后,再进行模块的单独测试,以确保在整个系统焊接完能正常的工作,首先焊接的是电源模块,其中包括USB供电和电池供电两种方式,电源模块焊接完以后,进行电源模块的测试,当插上USB以后电源指示灯并没有亮,说明电源模块有问题,后来发现稳压芯片发烫,得出一定是电源和地短了,接下来就开始检查USB的
15、地和电源是不是接反了,然后开始检查PCB和电路图,发现确实是封装错了,USB解决以后测试,发现电源指示灯还是没有亮,不过7805还是发热,经检查知道,7805的封装也错了,经改装电源模块可以正常工作了,接下来是单片机最小系统的测试,焊接完以后发现系统没有问题,程序可以正常下载,然后是超声波发送模块的焊接,焊接完以后,编写一个专门的发射超声波的程序,然后用示波器测试通过,在测试显示程序的时候数码管不能正常工作,不亮,后来发现是驱动芯片74LS273的CLK没有和单片机的控制端连接上,不能将数据锁存到数码管中,后来用跳线连接上了。接下来是软件的调试过程,在软件的调试过程中,遇到了很多的问题 ,每个
16、问题也解决了。经过3,4天的调试终于将程序调试通过了。5.2 性能分析虽然结果和预想的有很大的差距,但总体来说已经基本上达到了要求,理想上超声波测距能达到5到7米左右,而我们所能实现的最大距离只有3米,造成这种原因我想有以下几点:1.由于我们采用的是11.0592MHZ的晶振,理论上是按照12MHZ的晶振计算的,所以对系统造成了一定的误差。2.由于温度传感器DS18B20距离单片机较近,所采集到的温度严重受到单片机的影响,造成系统误差。3.单片机接收端其中有个电阻是4.7欧姆的,由于种种原因没有找到4.7欧姆的,就找了个5.5欧姆的代替,造成系统误差。六.心得体会俗话说“好的开始是成功的一半”
17、。通过这次实习,我们学到了很多东西。在进行课程设计时,我们应该做到以下三点:首先,我认为最重要的就是认真的研究老师给的题目。其次,在老师讲解的基础上认真研究硬件电路的设计,和软件流程的设计。最后,重点实现软硬结合的综合调试。 这次的实习算起来一共进行了三周,在这三周的时间里我们进行了硬件电路图设计,PCB板的设计,以及软件的编程实现,软硬件的综合调试。最终一个完整的课程设计成果出来了,很高兴它能按着设计的思想与要求运作起来。当然,这其中也有很多问题,第一、不够细心。比如在PCB制作过程中没有建立网络报表导致了部分连线没有倒入PCB板中,还有部分封装出现了错误。第二,实践环节上,这次课设是对我所
18、学的理论课程的一次检验,对于这次单片机综合课程实习,使我们的动手能力得到提升,同时纠正我们对“系统”这一概念以往的错误理解。就实现功能来说,设计结果能够符合题意,成功完成了此次实习要求,我们不只在乎这一结果,更加在乎的,是这个过程。这个过程中,我们花费了大量的时间和精力,更重要的是,我们在学会创新的基础上,同时还懂得合作精神的重要性,学会了与他人合作。在已度过的大学时间里,我们大多数接触的是理论课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?如何把我们所学的专业基础课理论知识运用到实践中去呢?我想做类似实习就为我们提供了良好的实践平台。同时这次实习给我们带来前所未有的的
19、启发:首先,查阅资料的必要性。在做本次实习的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。我们是在做单片机实习,但我们不是艺术家,他们可以抛开实际尽情在幻想的世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计,我们能做的就是理论结合实际。 其次,在这次课程设计中,我们运用到了以前所学的专业课知识,如:模拟和数字电路知识等。虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。再次,在实习之前,我们要对所用单片机的内部结构有
20、一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在实习过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。但是从中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力提高都会受益于我在以后的学习、工作和生活中最后,我们在这次实习中我们使用了分模块焊接,分模块测试的方法进行硬件电路的焊接和测
21、试,这是我们最宝贵的收获,这样做可以避免走很多弯路。使得调试也条理分明。总体上说,这次实习中收获很多,感触也很多。. .word. .参考文献1 X维祥、X旭敏. 单片微型机原理及应用. :XX理工大学,19962 李光飞、楼然苗、胡佳文、谢象佐. 单片机课程设计与实例指导. : 航空航天大学,2004 3 余永权. 89系列FLASH单片机原理及应用. :电子工业,20024 李群芳,黄建. 单片机微型计算机与接口技术. :电子工业,20015 楼然苗、李光飞. 51系列单片机设计实例. :航空航天大学,20036 王守中 51单片机开发入门与典型实例. :人民邮电,2009附录1 程序清单
22、. .word. . VOUT EQU P1.0 TEMP1 EQU 36H TEP1 EQU 37H DQ EQU P1.7FLAG1 EQU 38H ORG 0000H JMP START ORG 0003H JMP PINT0;*主程序*START:MOV P3,0FFH MOV P0,0FFH MOV P1,0FFH MOV P2,0FFH MOV TMOD,#01H MOV TH0,#00H MOV TL0,#00H CLR IE0 SETB PX0 SETB EA SETB EX0 CLR IT0 MOV R4,#4 SETB TR0 k: CPL P1.0 NOP NOP NOP
23、 NOP NOP NOP NOP NOP NOP DJNZ R4,K JNB IE0,$ LCALL TEMP LCALL GET_TEMPER LCALL CHANGE LCALL WORK LCALL DISPLAY1 LJMP STARTPINT0:CLR TR0 CLR EX0 MOV 30H,TL0 MOV 31H,TH0 RETI TEMP: SETB DQNOPCLR DQ MOV R0,#0FBH ;给延时程序赋初值 TSR1: DJNZ R0,TSR1 ;延时 SETB DQ MOV R0,#25H ;给延时程序赋初值 TSR2: JNB DQ ,TSR3 ;S18B20是否
24、存在,存在就跳转到TSR3DJNZ R0,TSR2 ;不存在等待 TSR3: SETB FLAG1 ;置标志位,表明DS18B20存在; CLR P2.0 ;二极管指示 AJMP TSR5 TSR4: CLR FLAG1 LJMP TSR7TSR5: MOV R0,#06BH TSR6: DJNZ R0,TSR6 ;延时 TSR7:SETB DQ ;表明不存在 RET*读转换后的温度值*GET_TEMPER: SETB DQ LCALL TEMP FLAG1,TSS2 RET ;若不存在则返回 TSS2: MOV A,#0CCH ;跳过ROM LCALL WRITE_18B20 MOV A,#
25、44H ;发出温度转换命令 LCALL WRITE_18B20 LCALL TEMP MOV A,#0CCH ;跳过ROM LCALL WRITE_18B20 MOV A,#0BEH ;发出读温度换命令 LCALL WRITE_18B20 LCALL READ2_18B20 ;读两个字节的温度 RET ;*写ds18b20汇编程序* WRITE_18B20: MOV R2,#8 CLR C WR1:CLR DQ MOV R3,#6 DJNZ R3,$ RRC A MOV DQ,C MOV R3,#23 DJNZ R3,$ SETB DQ NOP DJNZ R2,WR1 SETB DQ RET
26、;*读18B20程序,读出两个字节的温度* READ2_18B20: MOV R4,#2 ;低位存在29 H,高位存在28H MOV R1,#29H RE00: MOV R2,#8 RE01: CLR C SETB C NOP NOP CLR DQ NOP NOP NOP SETB DQ MOV R3,#7 DJNZ R3,$ MOV C,DQ MOV R3,#23 DJNZ R3,$ RRC A DJNZ R2,RE01 MOV R1,A DEC R1 DJNZ R4,RE00 RET ;*读出的温度进行数据转换*CHANGE: MOV A,29H ; MOV C,28H.0 ;将28H中的
27、最低位移入C RRC A MOV C,28H.1 RRC A MOV C,28H.2 RRC A MOV C,28H.3 RRC A MOV 29H,A LCALL CONVERSE RET ;*DISPLAY*CONVERSE: MOV A,29H;将29H中的十六进制数转换成10进制MOV DPTR,#TABLE MOVC A,A+DPTRMOV TEMP1,ATABLE: DB 165D,165D,165D,166D,166D,166D,167D,167D,167D,167D DB 168D,168D,168D,169D,169D,169D,170D,170D,170D,171D DB
28、171D,171D,172D,172D,172D,173D,173D,173D,174D,174D DB 174D,174D,175D,175D,175DRET;*计算子程序*WORK: ; MOV PSW, #18h ;选择3区R系列寄存器 MOV R3, 31H MOV R2, 30H MOV R1, #00D MOV R0, TEMP1 LCALL MUL2BY2 MOV R3, #27H MOV R2, #10H LCALL DIV4BY2 LCALL HBCD RET*两字节无符号数乘法程序*; R7R6R5R4 = R3R2 * R1R0 速度X时间/2MUL2BY2: CLR A MOV R7, A MOV R6, A MOV R5, A MOV R4, A MOV 46H, #10HMULLOOP1: CLR C MOV A, R4 RLC A MOV R4, A MOV A, R5 RLC A MOV R5, A MOV A, R6 RLC A MOV R6, A MOV A, R7 RLC A MOV R7, A