北郵基于單片機的超聲波測距附源代碼_第1頁
北郵基于單片機的超聲波測距附源代碼_第2頁
北郵基于單片機的超聲波測距附源代碼_第3頁
北郵基于單片機的超聲波測距附源代碼_第4頁
北郵基于單片機的超聲波測距附源代碼_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

2013年小學(xué)期單片機設(shè)計實驗報告題目:基于單片機的超聲波測距班級:班內(nèi)序號:實驗組號:學(xué)生姓名:指導(dǎo)教師:實驗摘要本次實驗我們制作的超聲波測距儀主要實現(xiàn)的功能是非接觸式測距,應(yīng)用于測量環(huán)境處于黑暗、有灰塵,煙霧,有毒的情況下的距離測量,利用超聲波的直線傳播性,較低速性,便于發(fā)射和接收,有較高的分辨率和精準度。 整個系統(tǒng)中,微控制器采用了Microchip公司的PIC16F877,軟件設(shè)計中涉與Rc1、RB4用作超聲波發(fā)射和接收管腳和LCD1602液晶顯示屏用作顯示測量結(jié)果。本實驗用單片機RB4管腳產(chǎn)生高電平使發(fā)射電路使能發(fā)射超聲波,并開始計時,當(dāng)接收電路接收到超聲波后,電平由高變低,送入到單片機Rc1管腳,發(fā)送中斷請求,停止計時,計算出超聲波傳播距離,實現(xiàn)測距。其中發(fā)射電路由NE555電路40KHz超聲波發(fā)生模塊和由CD4069反相器構(gòu)成的信號推挽放大模塊組成,接收電路由CX20106模塊組成。 概括來說,本實驗就是用單片機通過記錄超聲波發(fā)射接收時間,并以此計算出距離。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.關(guān)鍵字單片機——microcontroller芯片——CMOSchip 超神波——Ultrasonicwave計時計算——Timingandcalculation實驗論證與比較1.超聲波發(fā)射模塊 超聲波測距的發(fā)射電路作用是有效發(fā)生較強的超聲波尋向被測物,以供接收電路接收,其由NE555電路40KHz超聲波發(fā)生模塊和由CD4069反相器構(gòu)成的信號推挽放大模塊組成。如圖1所示:圖11.1其中控制電路和震蕩電路由555基本電路組成,這基本電路能通過改變電阻和電容的值可以改變頻率和占空比。如圖2圖2555多諧振蕩電路的脈沖寬度TL由電容C的放電時間來決定:

TL≈0.7R2C

TH由電容C的充電時間來決定:

TH≈0.7(R1+R2)C

輸出振蕩信號的周期為:

T=TL+TH

頻率為:

輸出脈沖占空比為:若調(diào)整可調(diào)電阻VR1,可改變輸出矩形波的頻率和占空比。

當(dāng)調(diào)整VR1使得輸出為40kHz時,由于(VR1+R4)>>R3,輸出波形占空比約為50%,為近似理想對稱方波。

555的強制復(fù)位端4腳由另一個555低頻振蕩器的輸出取反后控制。若調(diào)整可調(diào)電阻VR1,可改變輸出矩形波的頻率和占空比。

當(dāng)調(diào)整VR1使得輸出為40kHz時,由于(VR1+R4)>>R3,輸出波形占空比約為50%,為近似理想對稱方波。

555的強制復(fù)位端4腳由另一個555低頻振蕩器的輸出取反后控制。1.2本電路采用CMOS六反相器CD4069構(gòu)成驅(qū)動電路,為了增大驅(qū)動電流,可以采用CD4069中兩個甚至三個方向器并聯(lián)的方式實現(xiàn)。此電路結(jié)構(gòu)稱為橋式驅(qū)動方式,由于超聲波傳感器具有高阻特性,其正常工作時需要一定的驅(qū)動電流,而每個反相器的輸出電流(負載能力)是一定的。兩個并聯(lián),輸出電流加倍,驅(qū)動能力提高此電路結(jié)構(gòu)稱為橋式驅(qū)動方式,由于超聲波傳感器具有高阻特性,其正常工作時需要一定的驅(qū)動電流,而每個反相器的輸出電流(負載能力)是一定的。兩個并聯(lián),輸出電流加倍,驅(qū)動能力提高圖3超聲波接收模塊接收模塊是通過cx20106a芯片和相應(yīng)的的接收電路實現(xiàn)的。其電路如圖4圖4Cx20106a的各管腳功能如下圖圖6以上資料摘自cx20106a的使用資料。在以上網(wǎng)上提供的電路參數(shù)基礎(chǔ)上,我們通過使用示波器調(diào)整R的阻值,使其接收的中心頻率為40KHz左右二.系統(tǒng)總體設(shè)計系統(tǒng)模塊總體框圖如下:發(fā)射電路發(fā)射電路接收電路單片機系統(tǒng)液晶顯示障礙物障礙物整個系統(tǒng)開始工作后,發(fā)射電路向障礙物發(fā)射1ms的超聲波,間歇64ms后再發(fā)射一次,如此循環(huán)發(fā)射電磁波。而接受電路一旦接收到障礙物反射回來的超聲波,輸出管腳7電位由高變低,單片機跳入中斷,根據(jù)所計時計算出距離,并在顯示屏上顯示。軟件設(shè)計框圖如下:NN若接收到超聲波,計時停止,寄存器將TMR0的值儲存RB4賦值為1,開始發(fā)射超聲波,tmr0開始計時Y是否按下總開關(guān)? 若接收到超聲波,計時停止,寄存器將TMR0的值儲存RB4賦值為1,開始發(fā)射超聲波,tmr0開始計時Y是否按下總開關(guān)?數(shù)據(jù)經(jīng)過乘法器和編碼轉(zhuǎn)換器,轉(zhuǎn)換成8421BCD碼送顯數(shù)據(jù)經(jīng)過乘法器和編碼轉(zhuǎn)換器,轉(zhuǎn)換成8421BCD碼送顯三.硬件連接=1\*GB1⒈發(fā)射接收模塊連接整個發(fā)射接收電路在面包板上撘出,各個元器件的值起初都用電路圖所示的值。然后進行調(diào)試,根據(jù)發(fā)射電路原理,利用示波器,調(diào)試R1和R2的值,使發(fā)射的超聲波頻率為40khz,占空比為50%。根據(jù)接收電路,利用信號發(fā)生器發(fā)射40khz信號,調(diào)測接收電路輸出端由高電位變成地點位。然后進行整體調(diào)試,與發(fā)射電路發(fā)射超聲波,接收電路接收,并輸出低電平。=2\*GB1⒉發(fā)射接收模塊和單片機連接 本實驗中應(yīng)用單片機RB4管腳產(chǎn)生高電平使發(fā)射電路使能發(fā)射超聲波,并開始計時,當(dāng)接收電路接收到超聲波后,電平由高變低,送入到單片機Rc1管腳,發(fā)送中斷請求,停止計時,計算出超聲波傳播距離,實現(xiàn)測距。整個系統(tǒng)連接模塊如下:單片機PIC16F877單片機PIC16F877發(fā)射模塊 RB4 液晶顯示發(fā)射模塊液晶顯示接收模塊 RC1接收模塊四.調(diào)試過程這部分是由搭檔林負責(zé),摘自他報告。⒈開始軟仿真時RB0總是無法清0在剛開始做軟仿真時,出現(xiàn)了RB0無論用任何語句,在WATCHWINDOW下觀察均無法使之清0的麻煩,后經(jīng)過詢問老師問題得到解決,原來是在設(shè)置為輸入管腳的前提下,外部語句是無法對寄存器值進行修改的。2.單片機始終無法下載在開始階段用單片機仿真時,總是出現(xiàn)OPERATIONPROBLEM相關(guān)的字樣,導(dǎo)致下載不成功。更有一次單片機不停發(fā)熱,最終導(dǎo)致單片機損壞。后來發(fā)現(xiàn)是單片機與插槽接觸不良,經(jīng)過不斷斷電調(diào)整問題得到解決。3.軟仿真沒問題,但硬仿真總是莫名其妙的跳到中斷這個問題困擾了我整整一上午,這個問題很難被察覺,因為在軟仿真上沒有出現(xiàn)任何邏輯錯誤,但在硬仿真時卻連總開關(guān)的作用都沒起到就跳到了中斷。后來經(jīng)過反復(fù)排查,發(fā)現(xiàn)是單片機的RB6和RB5兩腳損壞,電平不穩(wěn)導(dǎo)致單片機跳到RB中斷,經(jīng)過更換單片機問題得到解決。4.在跳出中斷是總是馬上又回到中斷在軟仿真時,出現(xiàn)了永遠在中斷中循環(huán),無法進行后面語句的問題。后來經(jīng)過排查反思,發(fā)現(xiàn)是中斷標志位一直賦值為1,經(jīng)過軟件清0,問題得到解決。5.在送往顯示器時遇到了一定困擾因為計算出的數(shù)字在寄存器內(nèi)是以2進制數(shù)的形式表示的,而在液晶屏的代碼中僅與相應(yīng)數(shù)字的十進制有關(guān),這對送顯造成了極大的困擾。后來經(jīng)過查閱資料,想到了先把二進制碼轉(zhuǎn)化為8421BCD碼然后通過篩選前后四位來分別送顯,問題得以解決。五.參考文獻:PIC單片機實用教程——基礎(chǔ)篇北京航空航天大學(xué)出版社使用說明:的確是一本不可或缺的教材,本書列舉了很多實用的具有實戰(zhàn)意義的例子,單片機入門就是通過把這本書里的好例子一字一行敲進電腦去來實現(xiàn)的。PIC單片機實用教程——提高篇李學(xué)海北京航空航天大學(xué)出版社使用說明:繼承了前面基礎(chǔ)篇的風(fēng)格,例子也具有實戰(zhàn)意義,主要講RA、TMR2的使用和CCP模塊的PWM脈寬調(diào)制功能。六.實驗心得體會 整個實驗過程歷時15天左右,剛剛開始的時候,對單片機沒什么概念,不得頭緒,無從下手。聽學(xué)長學(xué)姐們介紹說,單片機實驗其實很有趣,也比較“熱血”,想想自己能親手做出一個能實現(xiàn)簡單功能的小應(yīng)用產(chǎn)品,對于我們以前只是從課本中得來而不常動手實踐的來說,絕對是一件增長知識,鍛煉能力的事。后經(jīng)過老師們對實驗的簡單介紹,我們有了一個初步了解,也表現(xiàn)的信心滿滿。在確定要做的實驗題目時,我和我的搭檔有些分歧,我堅持做這個超聲波測距,而林小斐覺得做電子琴或音樂發(fā)生器什么的比較簡單,容易完成,而超聲波測距容易受外界干擾,不易出結(jié)果。于是我和他交流,說簡單的人人都愿意做,就沒有什么挑戰(zhàn)性,并且對于這個小學(xué)期,我對自己還是很有期望的,希望能做的比較好,不能應(yīng)付了事。最后我們達成一致意見,決定做這個實驗。我主要負責(zé)實驗中硬件的部分,設(shè)計電路,搭電路,調(diào)試電路,焊電路。等等一體手工工作由我負責(zé),而林小斐負責(zé)程序部分,前期我們雙管齊下,很快就把電路和程序都給弄出來了,到了調(diào)試的時候,發(fā)現(xiàn)接收電路出現(xiàn)一個問題,就是通過信號發(fā)生器發(fā)生的信號加在接收電路中有正?,F(xiàn)象出現(xiàn),即能輸出方波,然而整機調(diào)試時就是接收不到超聲波信號,經(jīng)過多次嘗試,多次更換元器件,仍然沒有效果。在這個問題上我們停滯了兩天,由于時間的原因,我們與時改變方案,轉(zhuǎn)換了思路,采用cx20106a芯片作為接收電路。雖然,我們沒有找出先前的接收電路有什么問題,但我們嘗試了在有問題時另辟蹊徑,與時找到替代方案。我們體會到在解決問題是要多方面考慮多角度入手,只要能符合工程要求就可以,具體什么途徑都是可行的,不能拘泥一條路,要綜合考慮時效性,工作量,選擇最佳途徑。到后期,實驗進程就比較順利了。焊電路,幾乎是一次就成功了,加上單片機調(diào)試時,也更是一次就成功了,雖然結(jié)果,所測距離不太盡人意。但是還是很讓我們鼓舞,我們從這里深深體會到,合作分工,每個人都要認真負責(zé),專注做好自己的那部分,這樣才能馬到成功,如果兩個人都很敷衍,出現(xiàn)問題互相指責(zé)對方,那一定得不到結(jié)果的。還有就是遇到問題要冷靜,要讓問題成竹于胸,如果出現(xiàn)問題都不知道如何入手,那就說明前面的工作都是不靠譜的,不值得信賴的,因為你壓根不知道自己在做一些什么。在這個兩個禮拜里,兩位老師也辛苦了,對待學(xué)生非常和藹,非常耐心。有時候連我們自己拿著問題去問老師時,自己都要覺得老師應(yīng)該要被我們問毛了,可誰知老師們態(tài)度非常好,非常耐心的給我們解決問題,而且兩位老師在教學(xué)上非常專業(yè),所以一直很欽佩兩位老師。我想對你們說一句,你們辛苦了,謝謝老師。驗收時,由于操作不當(dāng),在我手上壞了一個顯示屏,一個單片機。真是不應(yīng)該,細心點也就不會了,不過我還在心里調(diào)侃自己,小學(xué)期嘛,不壞幾個東西,也學(xué)不到什么東西,呵呵。不過還是要吸取教訓(xùn),下次實踐時,注意些,多留點心??偟膩碇v,小學(xué)期還是學(xué)到了很多的,不僅僅是單片機的簡單應(yīng)用。還學(xué)會了如何合作,如何找到問題,解決問題。還親自自己動手焊了一塊像樣的板子,自己感覺還是不錯的。小學(xué)期,受益匪淺吶!附匯編語言源代碼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;整個子程序結(jié)束ADJDEC1MOVLWSOUMOVWFFSRCALLADJBCD1;調(diào)整RLTMOVLWSOUHMOVWFFSRCALLADJBCD1;調(diào)整RLTHMOVLWRLTMOVWFFSRCALLADJBCD1;調(diào)整TEMP1GOTOLOOPC1;********************調(diào)整BCD********************ADJBCD1MOVLW03HADDWFINDF,0;低四位加3MOVWFTEMP1;暫存BTFSCTEMP1,3;結(jié)果大于7,MOVWFINDF;則存起來MOVLW30HADDWFINDF,0;高四位加3MOVWFTEMP1BTFSCTEMP1,7;結(jié)果大于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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論