北邮基于单片机的超声波测距附源代码_第1页
北邮基于单片机的超声波测距附源代码_第2页
北邮基于单片机的超声波测距附源代码_第3页
北邮基于单片机的超声波测距附源代码_第4页
北邮基于单片机的超声波测距附源代码_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2013年小学期单片机设计实验报告题目:基于单片机的超声波测距班级:班内序号:实验组号:学生姓名:指导教师:实验摘要本次实验我们制作的超声波测距仪主要实现的功能是非接触式测距,应用于测量环境处于黑暗、有灰尘,烟雾,有毒的情况下的距离测量,利用超声波的直线传播性,较低速性,便于发射和接收,有较高的分辨率和精准度。 整个系统中,微控制器采用了Microchip公司的PIC16F877,软件设计中涉与Rc1、RB4用作超声波发射和接收管脚和LCD1602液晶显示屏用作显示测量结果。本实验用单片机RB4管脚产生高电平使发射电路使能发射超声波,并开始计时,当接收电路接收到超声波后,电平由高变低,送入到单片机Rc1管脚,发送中断请求,停止计时,计算出超声波传播距离,实现测距。其中发射电路由NE555电路40KHz超声波发生模块和由CD4069反相器构成的信号推挽放大模块组成,接收电路由CX20106模块组成。 概括来说,本实验就是用单片机通过记录超声波发射接收时间,并以此计算出距离。Abstract Inthisexperimentweproduceultrasonicrangefinderfunctionsofthemainnon-contactdistance,usedinthemeasurementenvironmentisdark,dust,smoke,toxiccaseofdistancemeasurement,usinganultrasonicwavetransmissionlineresistance,lowspeed,easeoftransmittingandreceiving,ahigherresolutionandaccuracy.Throughoutthesystem,themicrocontrollerusesMicrochip'sPIC16F877,softwaredesigninvolvesRc1,RB4fortransmittingandreceivingultrasonicLCD1602LCDmonitorasapinanddisplaythemeasurementresults.TheexperimentalchipproduceshighRB4pinenablestheemissionofultrasonictransmittercircuitandstartthetimer,whenthereceivingcircuitreceivestheultrasonicwaves,thelevelfromhightolow,Rc1fedtothemicrocontrollerpininterruptrequestissent,stoptime,calculatedfromtheultrasonicwavepropagation,toachieveranging.

Whereinthetransmissioncircuitfrom40KHzultrasonicNE555circuitCD4069invertermoduleandconstitutedbyapush-pullsignalamplificationmodule,thereceivingcircuitbytheCX20106modules.Insummary,thepresentstudyistousethemicrocontrollerthroughtherecordingultrasonictransmittingandreceivingtime,andthuscalculatethedistance.关键字单片机——microcontroller芯片——CMOSchip 超神波——Ultrasonicwave计时计算——Timingandcalculation实验论证与比较1.超声波发射模块 超声波测距的发射电路作用是有效发生较强的超声波寻向被测物,以供接收电路接收,其由NE555电路40KHz超声波发生模块和由CD4069反相器构成的信号推挽放大模块组成。如图1所示:图11.1其中控制电路和震荡电路由555基本电路组成,这基本电路能通过改变电阻和电容的值可以改变频率和占空比。如图2图2555多谐振荡电路的脉冲宽度TL由电容C的放电时间来决定:

TL≈0.7R2C

TH由电容C的充电时间来决定:

TH≈0.7(R1+R2)C

输出振荡信号的周期为:

T=TL+TH

频率为:

输出脉冲占空比为:若调整可调电阻VR1,可改变输出矩形波的频率和占空比。

当调整VR1使得输出为40kHz时,由于(VR1+R4)>>R3,输出波形占空比约为50%,为近似理想对称方波。

555的强制复位端4脚由另一个555低频振荡器的输出取反后控制。若调整可调电阻VR1,可改变输出矩形波的频率和占空比。

当调整VR1使得输出为40kHz时,由于(VR1+R4)>>R3,输出波形占空比约为50%,为近似理想对称方波。

555的强制复位端4脚由另一个555低频振荡器的输出取反后控制。1.2本电路采用CMOS六反相器CD4069构成驱动电路,为了增大驱动电流,可以采用CD4069中两个甚至三个方向器并联的方式实现。此电路结构称为桥式驱动方式,由于超声波传感器具有高阻特性,其正常工作时需要一定的驱动电流,而每个反相器的输出电流(负载能力)是一定的。两个并联,输出电流加倍,驱动能力提高此电路结构称为桥式驱动方式,由于超声波传感器具有高阻特性,其正常工作时需要一定的驱动电流,而每个反相器的输出电流(负载能力)是一定的。两个并联,输出电流加倍,驱动能力提高图3超声波接收模块接收模块是通过cx20106a芯片和相应的的接收电路实现的。其电路如图4图4Cx20106a的各管脚功能如下图图6以上资料摘自cx20106a的使用资料。在以上网上提供的电路参数基础上,我们通过使用示波器调整R的阻值,使其接收的中心频率为40KHz左右二.系统总体设计系统模块总体框图如下:发射电路发射电路接收电路单片机系统液晶显示障碍物障碍物整个系统开始工作后,发射电路向障碍物发射1ms的超声波,间歇64ms后再发射一次,如此循环发射电磁波。而接受电路一旦接收到障碍物反射回来的超声波,输出管脚7电位由高变低,单片机跳入中断,根据所计时计算出距离,并在显示屏上显示。软件设计框图如下:NN若接收到超声波,计时停止,寄存器将TMR0的值储存RB4赋值为1,开始发射超声波,tmr0开始计时Y是否按下总开关? 若接收到超声波,计时停止,寄存器将TMR0的值储存RB4赋值为1,开始发射超声波,tmr0开始计时Y是否按下总开关?数据经过乘法器和编码转换器,转换成8421BCD码送显数据经过乘法器和编码转换器,转换成8421BCD码送显三.硬件连接=1\*GB1⒈发射接收模块连接整个发射接收电路在面包板上撘出,各个元器件的值起初都用电路图所示的值。然后进行调试,根据发射电路原理,利用示波器,调试R1和R2的值,使发射的超声波频率为40khz,占空比为50%。根据接收电路,利用信号发生器发射40khz信号,调测接收电路输出端由高电位变成地点位。然后进行整体调试,与发射电路发射超声波,接收电路接收,并输出低电平。=2\*GB1⒉发射接收模块和单片机连接 本实验中应用单片机RB4管脚产生高电平使发射电路使能发射超声波,并开始计时,当接收电路接收到超声波后,电平由高变低,送入到单片机Rc1管脚,发送中断请求,停止计时,计算出超声波传播距离,实现测距。整个系统连接模块如下:单片机PIC16F877单片机PIC16F877发射模块 RB4 液晶显示发射模块液晶显示接收模块 RC1接收模块四.调试过程这部分是由搭档林负责,摘自他报告。⒈开始软仿真时RB0总是无法清0在刚开始做软仿真时,出现了RB0无论用任何语句,在WATCHWINDOW下观察均无法使之清0的麻烦,后经过询问老师问题得到解决,原来是在设置为输入管脚的前提下,外部语句是无法对寄存器值进行修改的。2.单片机始终无法下载在开始阶段用单片机仿真时,总是出现OPERATIONPROBLEM相关的字样,导致下载不成功。更有一次单片机不停发热,最终导致单片机损坏。后来发现是单片机与插槽接触不良,经过不断断电调整问题得到解决。3.软仿真没问题,但硬仿真总是莫名其妙的跳到中断这个问题困扰了我整整一上午,这个问题很难被察觉,因为在软仿真上没有出现任何逻辑错误,但在硬仿真时却连总开关的作用都没起到就跳到了中断。后来经过反复排查,发现是单片机的RB6和RB5两脚损坏,电平不稳导致单片机跳到RB中断,经过更换单片机问题得到解决。4.在跳出中断是总是马上又回到中断在软仿真时,出现了永远在中断中循环,无法进行后面语句的问题。后来经过排查反思,发现是中断标志位一直赋值为1,经过软件清0,问题得到解决。5.在送往显示器时遇到了一定困扰因为计算出的数字在寄存器内是以2进制数的形式表示的,而在液晶屏的代码中仅与相应数字的十进制有关,这对送显造成了极大的困扰。后来经过查阅资料,想到了先把二进制码转化为8421BCD码然后通过筛选前后四位来分别送显,问题得以解决。五.参考文献:PIC单片机实用教程——基础篇北京航空航天大学出版社使用说明:的确是一本不可或缺的教材,本书列举了很多实用的具有实战意义的例子,单片机入门就是通过把这本书里的好例子一字一行敲进电脑去来实现的。PIC单片机实用教程——提高篇李学海北京航空航天大学出版社使用说明:继承了前面基础篇的风格,例子也具有实战意义,主要讲RA、TMR2的使用和CCP模块的PWM脉宽调制功能。六.实验心得体会 整个实验过程历时15天左右,刚刚开始的时候,对单片机没什么概念,不得头绪,无从下手。听学长学姐们介绍说,单片机实验其实很有趣,也比较“热血”,想想自己能亲手做出一个能实现简单功能的小应用产品,对于我们以前只是从课本中得来而不常动手实践的来说,绝对是一件增长知识,锻炼能力的事。后经过老师们对实验的简单介绍,我们有了一个初步了解,也表现的信心满满。在确定要做的实验题目时,我和我的搭档有些分歧,我坚持做这个超声波测距,而林小斐觉得做电子琴或音乐发生器什么的比较简单,容易完成,而超声波测距容易受外界干扰,不易出结果。于是我和他交流,说简单的人人都愿意做,就没有什么挑战性,并且对于这个小学期,我对自己还是很有期望的,希望能做的比较好,不能应付了事。最后我们达成一致意见,决定做这个实验。我主要负责实验中硬件的部分,设计电路,搭电路,调试电路,焊电路。等等一体手工工作由我负责,而林小斐负责程序部分,前期我们双管齐下,很快就把电路和程序都给弄出来了,到了调试的时候,发现接收电路出现一个问题,就是通过信号发生器发生的信号加在接收电路中有正常现象出现,即能输出方波,然而整机调试时就是接收不到超声波信号,经过多次尝试,多次更换元器件,仍然没有效果。在这个问题上我们停滞了两天,由于时间的原因,我们与时改变方案,转换了思路,采用cx20106a芯片作为接收电路。虽然,我们没有找出先前的接收电路有什么问题,但我们尝试了在有问题时另辟蹊径,与时找到替代方案。我们体会到在解决问题是要多方面考虑多角度入手,只要能符合工程要求就可以,具体什么途径都是可行的,不能拘泥一条路,要综合考虑时效性,工作量,选择最佳途径。到后期,实验进程就比较顺利了。焊电路,几乎是一次就成功了,加上单片机调试时,也更是一次就成功了,虽然结果,所测距离不太尽人意。但是还是很让我们鼓舞,我们从这里深深体会到,合作分工,每个人都要认真负责,专注做好自己的那部分,这样才能马到成功,如果两个人都很敷衍,出现问题互相指责对方,那一定得不到结果的。还有就是遇到问题要冷静,要让问题成竹于胸,如果出现问题都不知道如何入手,那就说明前面的工作都是不靠谱的,不值得信赖的,因为你压根不知道自己在做一些什么。在这个两个礼拜里,两位老师也辛苦了,对待学生非常和蔼,非常耐心。有时候连我们自己拿着问题去问老师时,自己都要觉得老师应该要被我们问毛了,可谁知老师们态度非常好,非常耐心的给我们解决问题,而且两位老师在教学上非常专业,所以一直很钦佩两位老师。我想对你们说一句,你们辛苦了,谢谢老师。验收时,由于操作不当,在我手上坏了一个显示屏,一个单片机。真是不应该,细心点也就不会了,不过我还在心里调侃自己,小学期嘛,不坏几个东西,也学不到什么东西,呵呵。不过还是要吸取教训,下次实践时,注意些,多留点心。总的来讲,小学期还是学到了很多的,不仅仅是单片机的简单应用。还学会了如何合作,如何找到问题,解决问题。还亲自自己动手焊了一块像样的板子,自己感觉还是不错的。小学期,受益匪浅呐!附汇编语言源代码N EQU 20H ;defineNM EQU 21H ;define MCOUNT EQU 22H ;define COUNTtmr0 EQU 01Hoption_regEQU 81Hintcon EQU 0BHmulcndequ30h;8bitmultiplicandmulplrequ31h;8bitmultiplierH_byteequ32h;Highbyteofthe16bitresultL_byteequ33h;Lowbyteofthe16bitresultstepcounterequ34h;loopcounterporta EQU 05htrisa EQU 85hportb EQU 06htrisb EQU 86hportc EQU 07htrisc EQU 87hstatus EQU 03hrp0 EQU 5flag EQU 23HCNT EQU 43HTEMP2 EQU 44HTEMP3 EQU 45HINDF EQU 00HFSR EQU 04HTEMP1 EQU 46HR2 EQU 47HRLT EQU 40HSOUH EQU 41HSOU EQU 42Hshowport1 EQU 50Hshowport2 EQU 51Hshowport3 EQU 52Hshowport4 EQU 53Hshowport5 EQU 54Hshowport6 EQU 55Hporte equ 09h trise equ89hportd equ08htrisd equ88hadcon1 equ9fhcount1 equ60hcount4 equ61h;**********************fuwei***************************** org 000h nop goto main;************************zhongduan******************** org 004h btfss intcon,0 retfie bcf intcon,0 movf tmr0,0 movwf COUNT goto calculate retfie ;**********************zhuchengxu************************org 0010hmain bsf status,rp0 ;ti1 movlw 000h movwf trisb bcf status,rp0 ;ti0 movlw 000h movwf portb bsf status,rp0 ;ti1 movlw 007h movwf option_reg movlw 0FFh movwf trisb movlw 0 movwf trisc movlw 0 movwf trisd movlw 0 movwf trise bcf status,rp0 ;ti0 bcf intcon,5 bcf intcon,0 bcf intcon,4 bsf intcon,3 bcf intcon,6 movlw000h movwf portc callinitnopcheck btfsc portb,0 ;ifrb0=0,stepover goto check CLRF COUNT movlw 000h movwf tmr0 bcf intcon,0 bcf intcon,0 bsf intcon,7 bsf portc,1 a goto acalculate movf COUNT,0 movwf mulcnd movlw d'43' movwf mulplr callmpy_S;*********************chengfa****************************mpy_SclrfH_byteclrfL_bytemovlw8movwfstepcountermovfmulcnd,0bcfstatus,0;ClearthecarrybitinthestatusReg.looprrfmulplrbtfscstatus,0addwfH_byte,1rrfH_byte,1rrfL_byte,1decfszstepcountergotoloopgoto bianhuanretlw0;***************************bianhuan***********************************bianhuan movf H_byte,0 movwf SOUH movf L_byte,0 movwf SOUDBTBCDMOVFSOU,0MOVWFTEMP2MOVFSOUH,0MOVWFTEMP3CLRFSOUCLRFSOUHCLRFRLTBCFstatus,0MOVLW.16MOVWFCNTLOOPC1RLFTEMP2,1RLFTEMP3,1RLFSOU,1RLFSOUH,1RLFRLT,1DECFSZCNT,1GOTOADJDEC1 nopGOTOgetshowport;整个子程序结束ADJDEC1MOVLWSOUMOVWFFSRCALLADJBCD1;调整RLTMOVLWSOUHMOVWFFSRCALLADJBCD1;调整RLTHMOVLWRLTMOVWFFSRCALLADJBCD1;调整TEMP1GOTOLOOPC1;********************调整BCD********************ADJBCD1MOVLW03HADDWFINDF,0;低四位加3MOVWFTEMP1;暂存BTFSCTEMP1,3;结果大于7,MOVWFINDF;则存起来MOVLW30HADDWFINDF,0;高四位加3MOVWFTEMP1BTFSCTEMP1,7;结果大于7,MOVWFINDF;则存起来RETLW0getshowport movf RLT,0 ANDLW 00FH IORLW 030H movwf showport2 SWAPF RLT,0 ANDLW 00FH IORLW 030H movwf showport1 movf SOUH,0 ANDLW 00FH IORLW 030H movwf showport4 SWAPF SOUH,0 ANDLW 00FH IORLW 030H movwf showport3 movf SOU,0 ANDLW 00FH IORLW 030H movwf showport6 SWAPF SOU,0 ANDLW 00FH IORLW 030H movwf showport5 goto showshowmovlwd'8'movwfcount1movlwd'1'movwfcount4bsfstatus,5clrftrisdclrftrisemovlw0x06movwfadcon1bcfstatus,5bcfporte,0calldelay10mscallinitcircle1callvshowcalldelay10mscallsshowcalldelay10msgotocircle1initbcfporte,0calldelay10msmovlwb'00110000'movwfportdcalldowncalldelay10msmovlwb'00110000'movwfportdcalldowncalldelay10msmovlwb'00110100'movwfportdcalldowncalldelay10msmovlwb'00001000'movwfportdcalldowncalldelay10msmovlwb'00000001'movwfportdcalldowncalldelay10msmovlwb'00001100'movwfportdcalldowncalldelay10msreturndownbsf porte,1 nop nop nop nop bcf porte,1 returnvshow bcf porte,0 movlw b'10000000' movwf portd call down calldelay10ms bsfporte,0movlw b'01100100' movwfportdcalldowncalldelay10ms movlw b'00111101' movwfportdcalldowncalldelay10msmovfshowport1,0movwfportdcalldowncalldelay10msmovfshowport2,0movwfportdcalldowncalldelay10msmovfshowport3,0movwfportdcalldowncalldelay10ms movlw b'00101110' movwfportdcalldowncalldelay10ms

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论