




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、北京郵電大學(xué)信息與通信工程學(xué)院23班2014年小學(xué)期單片機(jī)設(shè)計(jì)實(shí)驗(yàn)報(bào)告題目:超聲波測(cè)距儀目錄實(shí)驗(yàn)摘要1一實(shí)驗(yàn)論證與比較21.超聲波發(fā)射電路22.超聲波接收電路33.單片機(jī)最小系統(tǒng)與顯示電路5二系統(tǒng)總體設(shè)計(jì)51.硬件總體框圖52.軟件流程圖6三硬件連接81.接收電路部分82.總電路83.焊接后的發(fā)射和接收電路9四調(diào)試過(guò)程9電路部分91.超聲波發(fā)射電路:92.超聲波接收電路:10程序部分:111.計(jì)算路程的優(yōu)化算法112.單片機(jī)的中斷123.定時(shí)器134.在線調(diào)試時(shí)發(fā)現(xiàn)計(jì)數(shù)器的值與理論指令執(zhí)行時(shí)間不一致135.最小量程146.實(shí)驗(yàn)誤差147.接收到的信號(hào)較弱14五實(shí)驗(yàn)心得和體會(huì)14六參考文獻(xiàn)16北
2、京郵電大學(xué)信息與通信工程學(xué)院23班實(shí)驗(yàn)摘要目前常用測(cè)量距離都采用波在介質(zhì)中的傳播速度和時(shí)間關(guān)系進(jìn)行測(cè)量。常用的技術(shù)有激光測(cè)距、微博測(cè)距和超聲波測(cè)距三種。前兩種測(cè)量精度很高,電路復(fù)雜,價(jià)格昂貴。而超聲波具有指向性強(qiáng)、能量消耗緩慢且在介質(zhì)中傳播的距離較遠(yuǎn)的優(yōu)點(diǎn),經(jīng)常用于距離的測(cè)量。超聲波測(cè)距主要應(yīng)用于建筑工地,以及一些工業(yè)現(xiàn)場(chǎng)和移動(dòng)機(jī)器人的研制上,可在超市高溫,多塵等惡劣環(huán)境下工作??捎糜跍y(cè)量液位、厚度、管道長(zhǎng)度等場(chǎng)合。相比于其他定位技術(shù)而言,超聲波定位技術(shù)成本低、精度高、操作簡(jiǎn)單、工作穩(wěn)定可靠,非常適合于短距離測(cè)量定位。PIC單片機(jī)為許多控制提供了高度靈活和低成本的解決方案,充分利用PIC單片機(jī)
3、的片內(nèi)資源,加上極少量的外圍電路就可以組成一個(gè)完整的超聲波測(cè)距系統(tǒng)。我們?cè)O(shè)計(jì)了以PIC16F877單片機(jī)為核心的低成本的超聲波測(cè)距系統(tǒng)。使用74HC04設(shè)計(jì)超聲波發(fā)射驅(qū)動(dòng)電路,提高輸出功率;使用運(yùn)算放大器和比較器構(gòu)成超聲波接受電路,使得超聲波能夠正確地被識(shí)別出來(lái);使用LCD1602液晶顯示屏顯示測(cè)出的距離。而單片機(jī)負(fù)責(zé)產(chǎn)生超聲波信號(hào)、記錄超聲波傳播的時(shí)間并計(jì)算距離。AbstractNow commonly used to measure distance using wave propagation velocity in the medium and the relationship bet
4、ween time measurement. Commonly used technology of laser ranging, microwave ranging and ultrasonic ranging. The first two measurement precision is high, circuit is complex, expensive. And ultrasound has strong directivity, energy consumption slow and the advantages of distance in the medium to sprea
5、d, often used for distance measurement. Ultrasonic ranging is mainly used in construction sites, as well as some industrial field and the development of the mobile robot can heat in the supermarket, dusty work under the bad environment, etc. Can be used to measure the liquid level, thickness, pipe l
6、ength, etc. Compared to other positioning technology, ultrasonic positioning technology of low cost, high precision, simple operation, stable and reliable work, is very suitable for short distance measurement.PIC microcontroller for many control provides a highly flexible and low cost solution, make
7、 full use of the PIC microcontroller chip resources, plus a small amount of peripheral circuit could form a complete ultrasonic ranging system.We have designed with PIC16F877 single-chip microcomputer as the core of low-cost ultrasonic ranging system. Using 74hc04 ultrasonic launch driver circuit de
8、sign, improve the output power; Using operational amplifier and a comparator ultrasonic receiving circuit, makes the ultrasonic were correctly identified; Use LCD1602 LCD display to measure the distance. And ultrasonic signal, generated by the microcontroller is responsible for the records of ultras
9、onic transmission time and calculate the distance.關(guān)鍵字單片機(jī)microcontroller芯片CMOS chip 超聲波探測(cè)infrared detector一 實(shí)驗(yàn)論證與比較1. 超聲波發(fā)射電路 超聲波發(fā)射電路主要由超聲波發(fā)射傳感器和超聲波功率放大驅(qū)動(dòng)電路構(gòu)成,電路如下圖。在圖中,由單片機(jī)輸出的方波信號(hào)分成兩路,一路經(jīng)過(guò)U2D和U2E并聯(lián)后的一級(jí)反向后加到超聲波傳感器的一個(gè)電極上;另一路先經(jīng)過(guò)U2A一級(jí)反向送到U2B和U2C并聯(lián)后的反向加到超聲波傳感器的另一個(gè)電極上。采用U2B、U2C以及U2D、U2E的并聯(lián)電路以目增加輸出功率,提高測(cè)量距
10、離。電容C1和C2起信號(hào)的耦合作用,同時(shí)也起到隔離直流作用。電阻R1和R2在此處用于提高超聲波傳感器的阻尼效果,以縮短阻尼振蕩的時(shí)間,同時(shí)也提高輸出驅(qū)動(dòng)能力。示波器中觀測(cè)到的輸出波形(輸入波形是峰峰值為5V的方波):2. 超聲波接收電路設(shè)計(jì)的超聲波接收電路如下圖所示。由超聲波傳感器RECV將接收到的返回波信號(hào)轉(zhuǎn)換成電信號(hào)由電容C1耦合到U1集成運(yùn)算放大器的反向輸入端,并由U1A和U1B運(yùn)算放大器構(gòu)成的兩級(jí)信號(hào)的同相放大,兩級(jí)總的放大倍數(shù)為440左右。放大后的返回波信號(hào)由U1B輸出,經(jīng)電壓比較器后輸出形成方波,當(dāng)檢測(cè)到第一個(gè)有效的返回波時(shí),就觸發(fā)單片機(jī)中斷進(jìn)行處理。由于一般返回的超聲波信號(hào)比較弱
11、,特別是在測(cè)量距離比較遠(yuǎn)的時(shí)候,返回的超聲波就更弱,要能夠檢測(cè)到有效的返回超聲波信號(hào),必須將返回波信號(hào)進(jìn)行足夠的放大,圖中采用了兩級(jí)放大。第一級(jí)放大倍數(shù)由R5和R3決定,放大倍數(shù)約為1+39/1=40。第二級(jí)放大倍數(shù)由R6和R4決定,放大倍數(shù)約為1+10/1=11。從而總的放大倍數(shù)約為440理論上來(lái)講,放大倍數(shù)越大,測(cè)量距離越遠(yuǎn),超聲波測(cè)距儀性能越好。但實(shí)際搭建電路后我們發(fā)現(xiàn),在放大倍數(shù)比較大時(shí)(如600),接收電路會(huì)產(chǎn)生自激現(xiàn)象,無(wú)法使單片機(jī)正確地進(jìn)入中斷,這一點(diǎn)在后面有詳細(xì)說(shuō)明。由multisim仿真結(jié)果可知:輸出是峰峰值為5V的方波,從而可以使單片機(jī)產(chǎn)生中斷。實(shí)際波形和仿真結(jié)果相似,波形
12、更好,但當(dāng)時(shí)忘記拍圖。3. 單片機(jī)最小系統(tǒng)與顯示電路上圖為單片機(jī)的最小系統(tǒng)與顯示電路圖。二 系統(tǒng)總體設(shè)計(jì)1. 硬件總體框圖單片機(jī)LCD顯示信號(hào)調(diào)理電路超聲波接收溫度測(cè)量電路40kHz功率放大超聲波發(fā)射電路開(kāi)始工作后,由單片機(jī)產(chǎn)生信號(hào)并開(kāi)始計(jì)時(shí),經(jīng)過(guò)功率放大電路后將超聲波發(fā)射出去,超聲波遇到障礙物后反彈回到超聲波接收器,經(jīng)過(guò)信號(hào)調(diào)理電路后觸發(fā)單片機(jī)中斷并停止計(jì)時(shí)。由單片機(jī)算出距離后送LCD顯示距離。2. 軟件流程圖 主程序流程圖如下圖。首先進(jìn)行變量的初始化,單片機(jī)每隔1s產(chǎn)生8個(gè)周期的信號(hào)。先判斷1s定時(shí)是否到了,如果到了則系統(tǒng)發(fā)射8個(gè)連續(xù)的超聲波脈沖,然后進(jìn)行約0.8ms的短延時(shí)并開(kāi)啟INT中
13、斷;否則繼續(xù)等待。使用短延時(shí)是為了消除余波的影響。發(fā)送出超聲波之后判斷接收時(shí)間是否超過(guò)2s,如果超過(guò)兩秒,說(shuō)明沒(méi)有接收到回波,此時(shí)返回1s定時(shí);如果2s內(nèi)接收到回波,則關(guān)閉中斷并取時(shí)間,計(jì)算距離然后送顯,再回到1s定時(shí)處。YNN延時(shí)一段時(shí)間啟動(dòng)語(yǔ)音播放距離送顯示緩沖器計(jì)算聲波傳輸時(shí)間計(jì)算聲波傳輸距離計(jì)算聲波速度測(cè)量當(dāng)前環(huán)境溫度接收超時(shí)短延時(shí)并開(kāi)INTO中斷發(fā)8個(gè)連續(xù)超聲波脈沖1s定時(shí)結(jié)束系統(tǒng)初始化YN中斷服務(wù)程序流程圖如下圖Y中斷服務(wù)程序入口NINT中斷關(guān)閉INT0中斷并置標(biāo)志YN定時(shí)器0溢出LED數(shù)碼管動(dòng)態(tài)掃描Y1s定時(shí)結(jié)束N置標(biāo)志并清秒計(jì)數(shù)秒計(jì)數(shù)變量加1Y接收超時(shí)N清標(biāo)志計(jì)數(shù)變量減1中斷返
14、回 進(jìn)入中斷程序后,首先判斷是否為INT產(chǎn)生的中斷,如果是說(shuō)明接收到有效的回波,此時(shí)清楚INT終端標(biāo)志位;否則直接去判斷是否為T(mén)MR0產(chǎn)生的中斷。如果是TMR0溢出產(chǎn)生的中斷,則接下來(lái)要判斷1s定時(shí)是否結(jié)束,如果1s定時(shí)結(jié)束,則清楚計(jì)數(shù)標(biāo)志并繼續(xù)判斷2s超時(shí)計(jì)時(shí)是否到了,如果1s定時(shí)未結(jié)束,則只需將相應(yīng)計(jì)數(shù)變量加1。如果超時(shí)計(jì)時(shí)結(jié)束,則清除相應(yīng)標(biāo)志,否則只需將相應(yīng)計(jì)數(shù)變量加1。三 硬件連接1. 接收電路部分 2. 總電路3. 焊接后的發(fā)射和接收電路四 調(diào)試過(guò)程電路部分我主要負(fù)責(zé)的部分是電路的設(shè)計(jì)和調(diào)試,以及最終的焊接工作。電路的設(shè)計(jì)主要包括兩個(gè)模塊:超聲波發(fā)射電路、超聲波接收電路;設(shè)計(jì)原理以及
15、電路圖都在前文中有詳細(xì)描述,在此不再贅述。但是電路的搭建和調(diào)試過(guò)程卻遇到了很多問(wèn)題:1. 超聲波發(fā)射電路:我們采用的是型號(hào)為74HC04N的芯片,此芯片的作用是用于放大單片機(jī)產(chǎn)生的超聲波信號(hào)的功率。一開(kāi)始使用multisim做仿真,但是搭建好電路之后仿真出錯(cuò),始終找不到解決方法,所以直接進(jìn)行實(shí)測(cè),幸運(yùn)的是實(shí)測(cè)結(jié)果還比較滿(mǎn)意。2. 超聲波接收電路: 在用multisim仿真第一級(jí)放大電路的過(guò)程中,一開(kāi)始將信號(hào)從放大芯片TL082CM的同相輸入端輸入,但是始終沒(méi)有波形輸出,多次查找資料后發(fā)現(xiàn)是電路設(shè)計(jì)的錯(cuò)誤,信號(hào)需要從放大器的反向輸入端輸入,從而將問(wèn)題解決。 設(shè)計(jì)放大倍數(shù)上,初始設(shè)定為101
16、15;11=1111倍,但是經(jīng)過(guò)仿真發(fā)現(xiàn)第一級(jí)放大倍數(shù)始終達(dá)不到101,于是我就去上網(wǎng)查找芯片的參數(shù),后來(lái)我從芯片的使用資料中發(fā)現(xiàn)單級(jí)放大倍數(shù)達(dá)不到101,但是為了滿(mǎn)足上千倍的放大倍數(shù)要求,經(jīng)過(guò)多次仿真及測(cè)試,我們將放大倍數(shù)定為40×31=1240倍。 在面包板上將電路搭建好之后,發(fā)現(xiàn)第二級(jí)放大電路不起作用,多番檢查電路也沒(méi)有找到原因,但是在multisim仿真中是有作用的;在老師的幫助下,發(fā)現(xiàn)沒(méi)有對(duì)第二個(gè)芯片進(jìn)行供電。因?yàn)樾酒琓L082CM內(nèi)部有兩個(gè)放大器,而我在電路中卻用了兩個(gè)TL082CM,每一個(gè)只用其中一個(gè)放大器,但是在multisim中仿真卻用了一個(gè)芯片中的兩個(gè)放大器,所以
17、在原理圖中可以發(fā)現(xiàn)第二級(jí)放大電路的芯片沒(méi)有進(jìn)行直流供電。我對(duì)著multisim中的電路直接在面包上進(jìn)行搭建,所以導(dǎo)致沒(méi)有對(duì)第二個(gè)芯片進(jìn)行供電。 進(jìn)行兩級(jí)放大之后需要將正弦波形整形成方波,我一開(kāi)始的設(shè)想是用兩個(gè)二極管和一個(gè)三極管構(gòu)成對(duì)檢波電路,但是在實(shí)測(cè)中發(fā)現(xiàn)整形效果很差,不能認(rèn)定為方波,所以將其放棄了;并使用一個(gè)型號(hào)為L(zhǎng)M393的芯片設(shè)計(jì)了一個(gè)電壓比較器電路(理論輸出高電平為5V,低電平為0V),實(shí)際輸出波形非常完美(比仿真結(jié)果要好很多),誤差為100mV 左右,在誤差允許范圍內(nèi)。 在我們編寫(xiě)完程序并調(diào)試完成后,我們開(kāi)始整機(jī)調(diào)試,發(fā)現(xiàn)輸出結(jié)果總是294mm !我們嘗試了很多方法都沒(méi)有檢測(cè)出原因
18、所在,后來(lái)在老師的幫助下,發(fā)現(xiàn)是接收電路出現(xiàn)了自激現(xiàn)象。出現(xiàn)的原因是放大倍數(shù)太大(一開(kāi)始設(shè)計(jì)為1200倍左右,實(shí)測(cè)為900倍左右)。為了解決自激問(wèn)題,我們嘗試了以下辦法:.將放大倍數(shù)縮小,從一開(kāi)始的1200倍一直往下降,并不斷地測(cè)試是否產(chǎn)生自激,雖然降到100左右的時(shí)候自激現(xiàn)象消失了,但是如此小的放大倍數(shù)并不足以滿(mǎn)足電路的實(shí)際要求,經(jīng)過(guò)計(jì)算,我們認(rèn)為放大倍數(shù)需要400倍左右才能滿(mǎn)足電路的設(shè)計(jì)要求,于是我們將電路的放大倍數(shù)改為440倍左右。.設(shè)計(jì)了最簡(jiǎn)單的電容濾波,將一個(gè)電容直接接地,發(fā)現(xiàn)所有信號(hào)都被過(guò)濾了;后來(lái)我們從示波器中發(fā)現(xiàn),自激信號(hào)的頻率為170kHz的倍頻信號(hào),而超聲波信號(hào)為40kHz
19、,于是我就嘗試設(shè)計(jì)了一個(gè)二階低通濾波器并將截止頻率設(shè)為70kHz,理論上可行,在multisim上仿真時(shí)效果一般,但是實(shí)測(cè)效果更差,自激現(xiàn)象仍然存在,于是我們就放棄了這個(gè)方法。.我們又發(fā)現(xiàn),自激信號(hào)的最小值為2.5V 左右,所以我們就用了另一種辦法,將電壓比較器的比較電壓降低,從而使得自激信號(hào)經(jīng)過(guò)電壓比較器之后編程高電平,這樣就不會(huì)有上升沿使得單片機(jī)產(chǎn)生中斷。經(jīng)過(guò)計(jì)算,我將比較電壓設(shè)置為1.47V 左右(由原理圖可以計(jì)算),從而解決了自激的問(wèn)題。程序部分:1. 計(jì)算路程的優(yōu)化算法我們選擇計(jì)算距離的方法是用乘除法進(jìn)行計(jì)算(距離×時(shí)間=路程),但是匯編語(yǔ)言中并不能直接調(diào)用乘除法,于是我們
20、不得不自己編寫(xiě)乘除法的程序,由于涉及數(shù)值較大,所以我們需要實(shí)現(xiàn)16×16的乘法算法,即將每一個(gè)數(shù)分高8位低8位分別存在兩個(gè)寄存器中,然后進(jìn)行操作,具體實(shí)現(xiàn)過(guò)程不再贅述。除法也是類(lèi)似的原理,只不過(guò)我們的除法是實(shí)現(xiàn)的整數(shù)除法,將余數(shù)直接舍棄了,雖然損失了最終結(jié)果的精度,但極大地簡(jiǎn)化了程序設(shè)計(jì)過(guò)程,而且只要對(duì)最終結(jié)果修正,那么最終結(jié)果的誤差也是可以接受的。編寫(xiě)好乘除法程序之后,我就對(duì)其進(jìn)行調(diào)試,乘法程序沒(méi)有問(wèn)題,但是除法程序?qū)τ谝恍?shù)的計(jì)算總是出錯(cuò),在調(diào)試過(guò)程中發(fā)現(xiàn)是寄存器的溢出問(wèn)題:由于程序?qū)崿F(xiàn)的是對(duì)有符號(hào)數(shù)進(jìn)行乘法運(yùn)算,就意味著有寄存中的最高位成為符號(hào)位,但是從乘法運(yùn)算的結(jié)果存在4個(gè)寄
21、存器中,符號(hào)位存在高16位寄存器的最高位,而我只需要低16位就足以滿(mǎn)足我們計(jì)算要求,所以沒(méi)有遇到問(wèn)題。但是在除法中,除法運(yùn)算的結(jié)果只保存在2個(gè)寄存器中,而對(duì)于有符號(hào)數(shù),就意味著最大數(shù)值只能為32767(65536的一半),為了滿(mǎn)足這個(gè)要求,同時(shí)為了減小精度的損失,我們經(jīng)過(guò)計(jì)算,決定對(duì)路程的計(jì)算過(guò)程進(jìn)行改動(dòng)。首先將單片機(jī)TIMER1計(jì)算的時(shí)間進(jìn)行除以100,然后乘以聲速191ms(原因稍后解釋?zhuān)?,然后除?0,得到的結(jié)果單位就為mm 了。經(jīng)我們計(jì)算發(fā)現(xiàn),這種辦法既可以避免在乘以191之后的數(shù)值超過(guò)32767,從而使得除以10調(diào)用除法程序的時(shí)候寄存器產(chǎn)生溢出的情況,也可以最大限度地減小計(jì)算誤差,經(jīng)
22、過(guò)計(jì)算,這種算法最大誤差為 2cm ,如果直接對(duì)時(shí)間T除以1000再乘以聲速191ms ,最大誤差可能打到19.1cm !這個(gè)誤差使我們不能接受的,而我們的方法極大地減小了誤差!將聲速定為191ms 的原因:室溫下聲速為346ms,我們將其折半為173ms,這樣就免去了對(duì)時(shí)間T進(jìn)行折半,減小了調(diào)用除法程序帶來(lái)的誤差,同時(shí)為了修正最終的結(jié)果(路程),我們將聲速定為173ms×1.1=191ms ,這樣最終的結(jié)果誤差就在可以接受范圍內(nèi)了。2. 單片機(jī)的中斷 由于之前一直學(xué)習(xí)的都是高級(jí)語(yǔ)言的程序設(shè)計(jì),在學(xué)習(xí)單片機(jī)之前我并沒(méi)有接觸過(guò)中斷這個(gè)概念,所以第一次使用這個(gè)功能的時(shí)候還是出現(xiàn)了很多的問(wèn)
23、題。我們的程序原本設(shè)定的時(shí)候是使用三個(gè)中斷,一是用TIMER1計(jì)時(shí)溢出時(shí)產(chǎn)生的中斷,我們將TIMER1用于超聲波發(fā)出到接收所花的時(shí)間;二是當(dāng)單片機(jī)接收到外來(lái)超聲波的上升沿時(shí)產(chǎn)生的外部中斷(INT0);三是用TIMER0產(chǎn)生的中斷。相對(duì)來(lái)說(shuō),外部中斷和TIMER0產(chǎn)生的中斷我們的處理方式都沒(méi)有問(wèn)題,但是TIMER1產(chǎn)生的中斷著實(shí)讓我們無(wú)法理解。我們?cè)谡{(diào)試程序過(guò)程中發(fā)現(xiàn),TIMER1中斷不受控制,總是在不該進(jìn)入中斷的時(shí)候卻進(jìn)入中斷請(qǐng)求程序,這就意味著我們無(wú)法準(zhǔn)確地進(jìn)行路程的計(jì)算。我們嘗試了多種解決辦法,并和老師進(jìn)行了長(zhǎng)達(dá)一個(gè)多小時(shí)的探討,發(fā)現(xiàn)都無(wú)法解決這個(gè)問(wèn)題。然后我們又一次通過(guò)計(jì)算解決了這個(gè)問(wèn)題
24、!我們發(fā)現(xiàn),TIMER1計(jì)時(shí)溢出意味著用時(shí)達(dá)到65536s ,也就是路程達(dá)到了11245m ,但實(shí)際上,我們遠(yuǎn)遠(yuǎn)達(dá)不到這個(gè)距離,也就是說(shuō),我們需要的時(shí)間遠(yuǎn)遠(yuǎn)達(dá)不到65536s ,即TIMER1不會(huì)產(chǎn)生溢出中斷!于是我們決定將TIMER1的中斷服務(wù)程序去掉,以免造成不可控制的誤差。 進(jìn)入中斷恢復(fù)現(xiàn)場(chǎng)的問(wèn)題:一開(kāi)始的時(shí)候,我們調(diào)試發(fā)現(xiàn),程序進(jìn)入中斷之后再次跳出時(shí)我們的計(jì)時(shí)器便不能重新開(kāi)始計(jì)時(shí),有時(shí)候又可以。經(jīng)過(guò)單步調(diào)試發(fā)現(xiàn),由于個(gè)別中斷程序的出口沒(méi)有對(duì)計(jì)數(shù)器器進(jìn)行恢復(fù),導(dǎo)致計(jì)數(shù)器工作異常。在修改程序之后這個(gè)問(wèn)題得到了解決。3. 定時(shí)器從流程圖中可以看出,我們的程序有兩個(gè)地方需要定時(shí)器,一是每次發(fā)超
25、聲波之前需要等待1s ;二是每次超聲波發(fā)出之后,程序會(huì)有一個(gè)2s 的等待時(shí)間,若超出這個(gè)時(shí)間則認(rèn)為此次超聲波接收超時(shí),準(zhǔn)備下一次超聲波的發(fā)射。為了降低程序設(shè)計(jì)的難度,我們用TIMER0產(chǎn)生一個(gè) 8ms 的定時(shí)器,然后用兩個(gè)變量控制TIMER0產(chǎn)生 8ms 的次數(shù)。例如:當(dāng)一個(gè)變量的值打到128時(shí),我們就認(rèn)為時(shí)間到了1s;同理,當(dāng)另一個(gè)變量達(dá)到256時(shí),我們就認(rèn)為時(shí)間到了2s。雖然不太準(zhǔn)確,但這不影響程序的結(jié)果,但是降低了難度,因?yàn)榕袛嗍欠竦搅?28或者256時(shí),我們只需要判斷bit7或者進(jìn)位標(biāo)志位,避免了對(duì)兩個(gè)數(shù)進(jìn)行直接比較的情況,極大地減小了代碼的復(fù)雜程度。同時(shí),這樣一種設(shè)計(jì)思路,也實(shí)現(xiàn)了計(jì)
26、數(shù)器的高效率使用,避免了使用兩個(gè)計(jì)數(shù)器實(shí)現(xiàn)兩個(gè)定時(shí)器的代碼重復(fù)現(xiàn)象,同時(shí)降低程序設(shè)計(jì)的難度,減小了程序出錯(cuò)的可能性,便于調(diào)試。我們認(rèn)為這是一種很便捷的設(shè)計(jì)思路,值得大家去借鑒。4. 在線調(diào)試時(shí)發(fā)現(xiàn)計(jì)數(shù)器的值與理論指令執(zhí)行時(shí)間不一致在不接單片機(jī)進(jìn)行調(diào)試時(shí),我們用STOPWATCH窗口查看程序運(yùn)行的時(shí)間,觀察發(fā)現(xiàn)每條指令的執(zhí)行時(shí)間為1s 或 2s ,與老師提供的學(xué)習(xí)資料中的介紹一致。但接了單片機(jī)之后,我們?cè)诰€單步調(diào)試時(shí)卻發(fā)現(xiàn)跳轉(zhuǎn)指令執(zhí)行后計(jì)數(shù)器(未分頻)的值有大幅跳變,與不接單片機(jī)調(diào)試時(shí)的情況不同!讓我們一度以為程序出了bug,經(jīng)過(guò)和老師的探討以及老師耐心地解釋?zhuān)覀兊弥蔷幾g器本身的問(wèn)題,與程序
27、本身無(wú)關(guān)。5. 最小量程正如前面所說(shuō),當(dāng)出現(xiàn)自激時(shí)液晶屏的顯示結(jié)果總是294mm ,我們一度以為是超聲波接收和發(fā)射探頭的最小反應(yīng)時(shí)間,但是我們經(jīng)過(guò)對(duì)代碼的仔細(xì)推敲之后發(fā)現(xiàn),這并不是硬件的限制,是我們的代碼決定了這個(gè)理論測(cè)量的最小值!原因如下:在我們的程序中,發(fā)射超聲波的程序結(jié)束之后設(shè)計(jì)了一個(gè)約 1.7ms 的延時(shí),目的是減少回波造成的影響,但也正因這個(gè)延時(shí),導(dǎo)致了我們所測(cè)量的距離有最小值。這個(gè)最小值應(yīng)該為173ms×1.7ms=294mm ,也正是我們一直出現(xiàn)的最小值294mm ?。ㄒ?yàn)檎`差修正是在整個(gè)程序無(wú)誤之后才進(jìn)行的,所以在我們調(diào)試過(guò)程中我們的聲速都是設(shè)置為173ms)我們發(fā)現(xiàn)
28、問(wèn)題之后,我的隊(duì)友就將延時(shí)降低到了1.1ms,從而減小了最小量程。6. 實(shí)驗(yàn)誤差前面提到,我們將計(jì)算路程的算法優(yōu)化之后理論誤差最大為2cm,但實(shí)際測(cè)量發(fā)現(xiàn),誤差較大,這是由于不僅僅有計(jì)算誤差,還有單片機(jī)本身的計(jì)時(shí)誤差(振蕩頻率不是4MHz),以及聲速的誤差等等。經(jīng)過(guò)我們反復(fù)測(cè)量不同的距離,發(fā)現(xiàn)測(cè)量值與實(shí)際距離相差約0.113倍,我們將1.1乘以聲速173ms 得到191ms ,用該值作為修正值參與運(yùn)算,結(jié)果卻是當(dāng)實(shí)際距離小于800mm 時(shí)誤差不超過(guò)2cm,這也說(shuō)明我們的分析是沒(méi)錯(cuò)的!7. 接收到的信號(hào)較弱前面提到,為了解決自激現(xiàn)象,我們降低了放大倍數(shù),導(dǎo)致接收到的信號(hào)難以有效放大,從而導(dǎo)致整套
29、裝置的反應(yīng)時(shí)間較長(zhǎng),經(jīng)常出現(xiàn)無(wú)法測(cè)量的情況。正當(dāng)我們愁眉苦展之時(shí),我發(fā)現(xiàn)實(shí)驗(yàn)室有一個(gè)金屬盒子(其實(shí)就是路由器),我嘗試將其當(dāng)作障礙物(之前都是拿書(shū)本當(dāng)障礙物),效果非常明顯!我們用這個(gè)裝置發(fā)現(xiàn)測(cè)距的最大距離達(dá)到1.3m !五 實(shí)驗(yàn)心得和體會(huì)六 參考文獻(xiàn)PIC單片機(jī)實(shí)用教程基礎(chǔ)篇 (五號(hào) 宋體)李學(xué)海北京航空航天大學(xué)出版社PIC單片機(jī)實(shí)用教程提高篇李學(xué)海北京航空航天大學(xué)出版社1. 孫安青. PIC系列單片機(jī)開(kāi)發(fā)實(shí)例精解M. 中國(guó)電力出版社:孫安青, 2011. 380-399附上代碼: LIST p=16f877 INCLUDE "p16f877.inc"VARIABLE D
30、EFINITION;TIMER1HIGHCOUNTER EQU 20HSECONDOKFLAGEQU21HSECONDCOUNTEREQU22HRECEIVEOKFLAGEQU23HTIMERINTERVALEQU24HTIMERENABLEEQU25HWTEMPEQU26HSTATUSTEMPEQU27HCOUNT1EQU28H ; 產(chǎn)生40KHZ時(shí)所用的計(jì)數(shù)器DINGSHI EQU 29H ;1MS延時(shí)程序定時(shí)器 ACCALOEQU30;存放乘數(shù)低8位ACCAHIEQU31;存放乘數(shù)高8位ACCBLOEQU33;存放被乘數(shù)低8位和乘積第16-23位ACCBHIEQU34;存放被乘數(shù)高8位和
31、乘積第24-31位ACCCLOEQU36;存放乘積低8位ACCCHIEQU37;存放乘積高8位ACCDLOEQU38;臨時(shí)寄存器ACCDHIEQU39;臨時(shí)寄存器TEMPEQU3A;臨時(shí)寄存器SIGNEQU3B;存放乘積符號(hào);*BCCALOEQU40BCCAHIEQU41BCCBLOEQU42BCCBHIEQU43BCCCLOEQU44BCCCHIEQU45BCCDLOEQU46BCCDHIEQU47TEMP_BEQU48SIGN_BEQU49YCCBLOEQU50HYCCBHIEQU51HYCCCLOEQU52HYCCCHIEQU53HYCCDLOEQU54HYCCDHIEQU55HTEMP
32、1EQU56HSIGN1EQU57HCOUNT2EQU58HBCD_LEQU 59HBCD_HEQU 5AHASCII_HEQU 5BHASCII_LEQU 5CHTAB_TEMEQU5DHBCDEQU5EHFINAL1_HEQU5FHFINAL1_LEQU60HFINAL2_HEQU61HFINAL2_LEQU62HFINAL3_HEQU63HFINAL3_LEQU64HdelMequ65h;定義兩個(gè)延時(shí)變量寄存器delNequ66hdelKequ67h;定義一個(gè)內(nèi)層循環(huán)延時(shí)常數(shù)ORG0X0000STARTGOTOMAIN;INTERRUPT PROGRAM;ORG0X004ZHONGDUA
33、NNOP MOVWF WTEMP ;protect the original conditionMOVF STATUS,0MOVWF STATUSTEMP ;最外層3個(gè)if;CHECKTIMER1 ;檢查if(1=PIR1bits.TMR1IF);BTFSC PIR1,0 ;if(1=PIR1bits.TMR1IF);GOTO TIMER1IF ;1=PIR1bits.TMR1IF時(shí)進(jìn)入TIMER1IF,否則繼續(xù)檢查if(1=INTCONbits.INT0IF)CHECKINT0 ;檢查if(1=INTCONbits.INT0IF)BTFSC INTCON,1 ;if(1=INTCONbits
34、.INT0IF)GOTO INT0IF ;1=INTCONbits.INT0IF時(shí)進(jìn)入INT0IF,否則繼續(xù)檢查if(1=INTCONbits.TMR0IF)CHECKTIMER0 ;檢查if(1=INTCONbits.TMR0IF)BTFSC INTCON,2 ;if(1=INTCONbits.TMR0IF)GOTO TIMER0IF ;1=INTCONbits.TMR0IF時(shí)進(jìn)入TIMER0IF,否則if全部檢查完,恢復(fù)現(xiàn)場(chǎng),結(jié)束中斷S1MOVF STATUSTEMP,0MOVWF STATUSMOVF WTEMP,0 ;恢復(fù)現(xiàn)場(chǎng)RETFIE ;結(jié)束中斷;TIMER1IF ;1=PIR1b
35、its.TMR1IF時(shí)進(jìn)入該語(yǔ)句塊;BCF PIR1,0 ;PIR1bits.TMR1IF=0;INCF TIMER1HIGHCOUNTER,1 ;TMR1HighCounter+;GOTO CHECKINT0 ;if(1=PIR1bits.TMR1IF)結(jié)束,繼續(xù)檢查if(1=INTCONbits.INT0IF)INT0IF ;1=INTCONbits.INT0IF時(shí)進(jìn)入該語(yǔ)句塊MOVLW 00H ;T1CON=0x00MOVWF T1CON BCF INTCON,INTF ;INTCONbits.INT0IF=0BCF INTCON,INTE ;INTCONbits.INT0IF=0MOV
36、LW 01H ;ReceiveOKFlag=1MOVWF RECEIVEOKFLAGGOTO CHECKTIMER0 ;if(1=INTCONbits.INT0IF)結(jié)束,繼續(xù)檢查if(1=INTCONbits.TMR0IF)TIMER0IF ;1=INTCONbits.TMR0IF時(shí)進(jìn)入該語(yǔ)句塊BCF INTCON,2 ;INTCONbits.TMR0IF=0BTFSS SECONDOKFLAG,0 ;if(0=SecondOKFlag)GOTO SECONDOK ;0=SecondOKFlag時(shí)進(jìn)入SECONDOKCHECKTIMERENABLE ;檢查if(1=TimerEnable)B
37、TFSC TIMERENABLE,0 ;if(1=TimerEnable)GOTO INTIMERENABLE ;1=TimerEnable時(shí)進(jìn)入INTIMERENABLES2MOVLW 009H ;賦初值,由于已經(jīng)存在一些語(yǔ)句,因此取TMR0=9略大于6MOVWF TMR0 BSF INTCON,T0IEGOTO S1 ;返回SECONDOK ;0=SecondOKFlag時(shí)進(jìn)入該語(yǔ)句塊INCF SECONDCOUNTER,1 ;SecondCounter+BTFSC SECONDCOUNTER,7 ;if(128=SecondCounter)GOTO INSECONDCOUNTER ;12
38、8=SecondCounter時(shí)進(jìn)入INSECONDCOUNTERGOTO CHECKTIMERENABLE ;否則直接去檢查if(1=TimerEnable)INSECONDCOUNTER ;128=SecondCounter時(shí)進(jìn)入該語(yǔ)句塊MOVLW 00H ;SecondCounter=0MOVWF SECONDCOUNTER MOVLW 01H ;SecondOKFlag=1MOVWF SECONDOKFLAGGOTO CHECKTIMERENABLE ;去檢查if(1=TimerEnable)INTIMERENABLE ;1=TimerEnable時(shí)進(jìn)入該語(yǔ)句塊DECF TIMERIN
39、TERVAL,1 ;TimerInterval-BTFSC STATUS,Z ;if(0=TimerInterval)GOTO INTIMERINTERVAL ;0=TimerInterval時(shí)進(jìn)入INTIMERINTERVALS3GOTO S2 ;返回INTIMERINTERVAL ;0=TimerInterval時(shí)進(jìn)入該語(yǔ)句塊MOVLW 00H ;TimerEnable=0MOVWF TIMERENABLEGOTO S3 ;40KHZ ULTROSOUND WAVE GENERATOR;ORG0X200GENERATOR BSF STATUS,RP0 ;選體1 MOVLW 00H ;設(shè)置C
40、口為輸出 MOVWF TRISC BCF STATUS,RP0 ;恢復(fù)體0 MOVLW 000H ;初始化計(jì)數(shù)器 MOVWF COUNT1 MOVLW b'00000010' ;負(fù)責(zé)改變輸出電平LOOP ;延時(shí)12us XORWF PORTC,1 NOP NOP NOP NOP NOP NOP NOP INCF COUNT1,1 BTFSS COUNT1,4 GOTO LOOPMOVLW 00HMOVWF COUNT1RETURN;1MS延時(shí)程序;ORG0X300GENERATOR1MSMOVLW 00HMOVWF DINGSHILOOP1MSNOPNOPNOPNOP;NOP;
41、NOP;NOP;NOPINCFSZ DINGSHIBTFSS DINGSHI,7GOTO LOOP1MSRETURN;MAIN FUNCTION;MAIN;INITIAL FUNCTION;BCFPIE1,TMR1IE;MOVLW001H;MOVWFPIE1;BSF STATUS,RP0MOVLW 00FHIORWF ADCON1,1MOVLW 00HMOVWF TRISDMOVWF TRISEMOVLW 0F9HMOVWF TRISCBCF OPTION_REG,7BCF STATUS,RP0 calllcdinitGENERATOR8MS BSF STATUS,RP0 ;選體1,配置OPT
42、ION_REG使分頻比為1:32 MOVLW 04H MOVWF OPTION_REGBCF OPTION_REG,T0CS BCF STATUS,RP0 ;恢復(fù)體0DELAYBCF INTCON,2 ;清除TMR0溢出標(biāo)志MOVLW 009H ;賦初值,由于已經(jīng)存在一些語(yǔ)句,因此取TMR0=9略大于6MOVWF TMR0BSF INTCON,T0IEBCF INTCON,T0IFBSF OPTION_REG,INTEDGBCF INTCON,INTFBCF INTCON,INTEMOVLW 0C0HIORWF INTCON,1;VARIABLE INITIALIZATION;MOVLW 00
43、HMOVWFSECONDOKFLAGMOVWFSECONDCOUNTERGOTO LOOP1SECONDFLAGIF ;if(1=SecondOKFlag)MOVLW000H ;TMR1HighCounter=0MOVWFTIMER1HIGHCOUNTERMOVWFTMR1H ;TMR1H=0MOVWFTMR1L ;TMR1L=0MOVLW001H ;T1CON=0x01MOVWFT1CONCALLGENERATOR ;Send40KHZWave調(diào)用發(fā)射程序,已編寫(xiě)CALLGENERATOR1MS ;Delay1KTCYx(1*DLY_1MS),調(diào)用延時(shí)1MS程序,已編寫(xiě)B(tài)CFINTCON,I
44、NTF ;INTCONbits.INT0IF=0BSFINTCON,INTE ;INTCONbits.INT0IE=0MOVLW000H ;ReceiveOKFlag=0MOVWFRECEIVEOKFLAG MOVLW0FFHMOVWFTIMERINTERVALMOVLW001HMOVWFTIMERENABLELOOP_1BTFSSRECEIVEOKFLAG,0 ;等待接收GOTOLOOP_2GOTOCHECKTIMERLOOP_2BTFSCTIMERENABLE,0GOTOLOOP_1GOTOCHECKTIMER;*if(1 = TimerEnable)*CHECKTIMER;MOVLW00
45、1H;MOVWFTIMERENABLEBTFSCTIMERENABLE,0GOTOTIMERENABLEIFGOTOTIMERENABLEELSETIMERENABLEIF;*計(jì)算距離*;MOVLW000H ;T1CON=0x01;MOVWFT1CON;MOVLW000HMOVWFTIMERENABLEMOVFTMR1H,0;MOVLW030HMOVWFBCCBHIMOVFTMR1L,0;MOVLW039HMOVWFBCCBLOMOVLW064HMOVWFBCCALOMOVLW000HMOVWFBCCAHICALLD_div ;先對(duì)us除以100MOVFBCCBLO,0MOVWFACCBLOMOVFBCCBHI,0MOVWFACCBHIMOVLW0BFHMOVWFACCALOMOVLW000HMOVWFACCAHICALLD_mpy;算出距離,單位為1e04mMOVFACCCLO,0MOVWFBCCBLOMOVFACCCHI,0MOVWFBCCBHIMOVLW00AHMOVWFBCCALOMOVLW000HMOVWFBCCAHICALLD_div;對(duì)距離除以100,單位變?yōu)閏m;*數(shù)碼管顯示*;數(shù)碼管代碼GOTODISPLAYBTOBCDCLRFSIGN1LOOP1YBCFSTATUS,CMOVLW.16MOVWFCOUNT2CLRFYCCCHICLRF
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鳳求凰協(xié)議模板
- 二零二五年抖音短視頻內(nèi)容審核規(guī)范合同
- 2025年度水溝蓋板行業(yè)技術(shù)交流與合作合同
- 員工住房補(bǔ)貼及安置協(xié)議(二零二五)
- 二零二五年度城市廣場(chǎng)公共設(shè)施無(wú)償場(chǎng)地使用協(xié)議書(shū)
- 二零二五年度新能源項(xiàng)目合伙人股權(quán)共享與合作協(xié)議
- 2025年度綠色環(huán)保型個(gè)人倉(cāng)儲(chǔ)租賃服務(wù)合同
- 二零二五年度安全培訓(xùn)效果評(píng)估合同
- 2025年度設(shè)備拆除與安全責(zé)任與施工保障合同
- 二零二五年度商業(yè)秘密保護(hù)與競(jìng)業(yè)禁止協(xié)議
- 六年級(jí)心理健康ppt名師優(yōu)質(zhì)課獲獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件
- 四川輕化工大學(xué)
- 六西格瑪質(zhì)量管理在口腔科器械管理中的作用
- 高中心理健康教育-認(rèn)識(shí)自我悅納自我教學(xué)課件設(shè)計(jì)
- 素材合集-扁平化圖標(biāo)素材(彩色)
- (全)電梯安全風(fēng)險(xiǎn)管控清單
- 中國(guó)思想史 馬工程329P
- 《網(wǎng)店美工》教案-商品詳情頁(yè)設(shè)計(jì)
- 原始狩獵圖哀郢楚商
- 新版冀教版(冀人版)科學(xué)五年級(jí)下冊(cè)全冊(cè)教案
- 烏茲別克斯坦
評(píng)論
0/150
提交評(píng)論