版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、自動(dòng)避障小車(chē)技術(shù)報(bào)告前言設(shè)計(jì)背景:在科學(xué)探索和緊急搶險(xiǎn)中經(jīng)常會(huì)遇到對(duì)與一些危險(xiǎn)或人類不能直接到達(dá)的地域的探測(cè),這些就需要用機(jī)器人來(lái)完成。而在機(jī)器人在復(fù)雜地形中行進(jìn)時(shí)自動(dòng)避障是一項(xiàng)必不可少也是最基本的功能。因此,自動(dòng)避障系統(tǒng)的研發(fā)就應(yīng)運(yùn)而生。我們的自動(dòng)避障小車(chē)就是基于這一系統(tǒng)開(kāi)發(fā)而成的。隨著科技的發(fā)展,對(duì)于未知空間和人類所不能直接到達(dá)的地域的探索逐步成為熱門(mén),這就使機(jī)器人的自動(dòng)避障有了重大的意義。我們的自動(dòng)避障小車(chē)就是自動(dòng)避障機(jī)器人中的一類。自動(dòng)避障小車(chē)可以作為地域探索機(jī)器人和緊急搶險(xiǎn)機(jī)器人的運(yùn)動(dòng)系統(tǒng),讓機(jī)器人在行進(jìn)中自動(dòng)避過(guò)障礙物。目錄一、 設(shè)計(jì)目標(biāo):3二、 方案設(shè)計(jì):42.1直流調(diào)速系統(tǒng)42
2、.2檢測(cè)系統(tǒng)5三 硬件設(shè)計(jì)53.1、SPCE061A單片機(jī)最小系統(tǒng)53.1.1SPCE061A時(shí)鐘電路83.1.2PLL鎖相環(huán)93.1.3看門(mén)狗Watchdog93.1.4低電壓復(fù)位(LVR)103.1.5I/O端口103.1.6時(shí)基與定時(shí)器113.1.7SPCE061A的定時(shí)器/計(jì)數(shù)器113.1.8ADC、DAC123.2、超聲波傳感器12四 軟件設(shè)計(jì)164.1軟件設(shè)計(jì)各模塊164.2速度控制174.3障礙物檢測(cè)174.4看門(mén)狗174.5基頻中斷184.6程序設(shè)計(jì)流程圖19五:測(cè)試數(shù)據(jù)、測(cè)試結(jié)果分析及結(jié)論19程序附錄211主程序:212中斷程序243、測(cè)距程序28一、 設(shè)計(jì)目標(biāo):1. 小車(chē)從
3、無(wú)障礙地區(qū)啟動(dòng)前進(jìn),感應(yīng)前進(jìn)路線上的障礙物后,能自動(dòng)避開(kāi)障礙物。2. 根據(jù)障礙物的位置選擇下一步行進(jìn)方向,選擇左拐還是右拐,若障礙物在左邊則自動(dòng)右拐,若障礙物在右邊則左拐,若障礙物在正前方可任意選擇左拐或者是右拐,以達(dá)到避開(kāi)障礙物的目的。3. 通過(guò)利用單片機(jī)內(nèi)時(shí)鐘源的控制設(shè)定左拐和右拐的時(shí)間,從而能持續(xù)前進(jìn)。4. 為達(dá)到速度的可控性,需設(shè)置兩個(gè)獨(dú)立按鍵對(duì)小車(chē)進(jìn)行控速。二、 方案設(shè)計(jì):根據(jù)設(shè)計(jì)要求,確定如下方案:在現(xiàn)有玩具電動(dòng)車(chē)的基礎(chǔ)上,加裝超聲波傳感器,實(shí)現(xiàn)對(duì)電動(dòng)車(chē)的運(yùn)行狀況的實(shí)時(shí)測(cè)量,并將測(cè)量數(shù)據(jù)傳送至單片機(jī)進(jìn)行處理,然后由單片機(jī)根據(jù)所檢測(cè)的各種數(shù)據(jù)實(shí)現(xiàn)對(duì)電動(dòng)車(chē)的智能控制。這種方案能實(shí)現(xiàn)對(duì)電
4、動(dòng)車(chē)的運(yùn)動(dòng)狀態(tài)進(jìn)行實(shí)時(shí)控制,控制靈活、可靠,精度高,可滿足對(duì)系統(tǒng)的各項(xiàng)要求。2.1直流調(diào)速系統(tǒng)采用脈寬調(diào)速系統(tǒng)脈寬調(diào)速系統(tǒng)的主電路采用脈寬調(diào)制式變換器,簡(jiǎn)稱PWM變換器。脈寬調(diào)速也可通過(guò)單片機(jī)控制繼電器的閉合來(lái)實(shí)現(xiàn),但是驅(qū)動(dòng)能力有限。為順利實(shí)現(xiàn)電動(dòng)小汽車(chē)的前行與倒車(chē),本設(shè)計(jì)采用了可逆PWM變換器??赡鍼WM變換器主電路的結(jié)構(gòu)式有H型、T型等類型。我們?cè)谠O(shè)計(jì)中采用了常用的雙極式H型變換器,它是由4個(gè)三極電力晶體管和4個(gè)續(xù)流二極管組成的橋式電路。如附錄一:2.2檢測(cè)系統(tǒng)檢測(cè)系統(tǒng)主要實(shí)現(xiàn)紅外傳感器,超聲波傳感,光電傳感器對(duì)車(chē)的運(yùn)行進(jìn)行實(shí)時(shí)測(cè)量,即利用這種傳感器對(duì)電動(dòng)車(chē)的避障、位置、行車(chē)狀態(tài)進(jìn)行測(cè)量。
5、行車(chē)開(kāi)始、結(jié)束及超聲波檢測(cè):在車(chē)的開(kāi)始和結(jié)束階段,都是用紅外式的光電傳感器,當(dāng)按下此光電開(kāi)頭,小車(chē)就開(kāi)始行駛,在完成任務(wù)后,再按下此開(kāi)關(guān),小車(chē)就停止前進(jìn)。在前進(jìn)的過(guò)程中不斷的發(fā)送超聲波,并對(duì)接到的進(jìn)行處理計(jì)算。如果處理得到的結(jié)果是發(fā)現(xiàn)前面的障礙時(shí),再行進(jìn)一次距離的處理,當(dāng)距離小是40CM時(shí),讓小車(chē)倒退一段時(shí)間,再進(jìn)行避障處理,如果距離大于40CM,就直接進(jìn)避障處理。三 硬件設(shè)計(jì)3.1、SPCE061A單片機(jī)最小系統(tǒng)我們用的是凌陽(yáng)的SPCE061A單片機(jī)最小系統(tǒng)其概述如下:SPCE061A 是繼nSP系列產(chǎn)品SPCE500A等之后凌陽(yáng)科技推出的又一款16位結(jié)構(gòu)的微控制器。與SPCE500A不同的
6、是,在存儲(chǔ)器資源方面考慮到用戶的較少資源的需求以及便于程序調(diào)試等功能,SPCE061A里只內(nèi)嵌32K字的閃存(FLASH)。較高的處理速度使nSP能夠非常容易地、快速地處理復(fù)雜的數(shù)字信號(hào)。因此,與SPCE500A相比,以nSP為核心的SPCE061A微控制器是適用于數(shù)字語(yǔ)音識(shí)別應(yīng)用領(lǐng)域產(chǎn)品的一種最經(jīng)濟(jì)的選擇。 性能 16位nSP微處理器; 工作電壓(CPU) VDD為2.43.6V (I/O) VDDH為2.45.5V ; CPU時(shí)鐘:0.32MHz49.152MHz ; 內(nèi)置2K字SRAM; 內(nèi)置32K F
7、LASH; 可編程音頻處理; 晶體振蕩器; 系統(tǒng)處于備用狀態(tài)下(時(shí)鐘處于停止?fàn)顟B(tài)),耗電僅為2A3.6V; 2個(gè)16位可編程定時(shí)器/計(jì)數(shù)器(可自動(dòng)預(yù)置初始計(jì)數(shù)值); 2個(gè)10位DAC(數(shù)-模轉(zhuǎn)換)輸出通道; 32位通用可編程輸入/輸出端口; 14個(gè)中斷源可來(lái)自定時(shí)器A / B,時(shí)基,2個(gè)外部時(shí)鐘源輸入,鍵喚醒; 具備觸鍵喚醒的功能; 使用凌陽(yáng)音頻編碼SACM_S240方式(2.4K位/秒),能容納2
8、10秒的語(yǔ)音數(shù)據(jù); 鎖相環(huán)PLL振蕩器提供系統(tǒng)時(shí)鐘信號(hào); 32768Hz實(shí)時(shí)時(shí)鐘; 7通道10位電壓模-數(shù)轉(zhuǎn)換器(ADC)和單通道聲音模-數(shù)轉(zhuǎn)換器; 聲音模-數(shù)轉(zhuǎn)換器輸入通道內(nèi)置麥克風(fēng)放大器和自動(dòng)增益控制(AGC)功能; 具備串行設(shè)備接口; 具有低電壓復(fù)位(LVR)功能和低電壓監(jiān)測(cè)(LVD)功能; 內(nèi)置在線仿真電路ICE(In- Circuit Emulator)接口; 具有保密能力; 具有WatchDog功能;16位nSP微處理器硬件結(jié)構(gòu)圖
9、3.1.1SPCE061A時(shí)鐘電路SPCE061A時(shí)鐘電路采用晶體振蕩器。下圖為SPCE061A時(shí)鐘電路的接線圖。外接晶振采用32768Hz。3.1.2PLL鎖相環(huán)PLL電路的作用是將系統(tǒng)提供的實(shí)時(shí)時(shí)鐘的基頻(32768Hz)進(jìn)行倍頻,輸出系統(tǒng)時(shí)鐘Fosc3.1.3看門(mén)狗WatchdogSPCE061A的清狗周期為0.75S;清看門(mén)狗操作寄存器:P_Watchdog_Clear(0x7012H)清狗操作:在每個(gè)0.75S的清狗周期里P_Watchdog_Clear寫(xiě)入0x0001。3.1.4低電壓復(fù)位(LVR)通過(guò)某種方式,使單片機(jī)內(nèi)存各寄存器的值變?yōu)槌跏嫉牟僮鞣Q為復(fù)位。SPCE061A的復(fù)位
10、方式為低電壓復(fù)位。3.1.5I/O端口OA口:IOA0IOA6:7路普通AD輸入端口,IOA0IOA7:觸鍵喚醒功能 IOB口:外部中斷輸入,串行接口、PWM輸出等復(fù)用端口3.1.6時(shí)基與定時(shí)器時(shí)基信號(hào)可提供常用的、現(xiàn)成的頻率信號(hào),完成部分定時(shí)器的功能3.1.7SPCE061A的定時(shí)器/計(jì)數(shù)器遞增計(jì)數(shù)方式,自動(dòng)重載定時(shí)器/計(jì)數(shù)器初始值,輸出4位可調(diào)脈寬比PWM信號(hào),溢出頻率/2的方波輸出,多種時(shí)鐘源輸入。3.1.8ADC、DACSPCE061A的特色是其強(qiáng)大靈活的語(yǔ)音功能;而單片機(jī)對(duì)語(yǔ)音處理的支持,除了其處理能力外,還有片內(nèi)集成的ADC、DAC;特別是集成有AGC電路的MIC通道。ADC轉(zhuǎn)換過(guò)
11、程:3.2、超聲波傳感器1基本特性與參數(shù)指標(biāo) 超聲波傳感器諧振頻率:40KHz; 模組傳感器工作電壓:4.5V9V 模組接口電壓:4.5V5.5V2主要功能三種測(cè)距模式選擇跳線J1(短距、中距、可調(diào)距): 短距:20cm100cm左右(根據(jù)被測(cè)物表面材料決定),精度1cm; 中距:70cm400cm左右(根據(jù)被測(cè)物表面材料決定); 可調(diào):范圍由可調(diào)節(jié)參數(shù)確定,當(dāng)調(diào)節(jié)在合適的值時(shí),最遠(yuǎn)測(cè)距700cm左右;3結(jié)構(gòu)示意圖 一般應(yīng)用時(shí),只需要用兩條10PIN排線把J5與SPCE061A的IOB口低八位連接,J4與IOB口高八位連接,同時(shí)設(shè)置好J1、J2跳線就完成硬件的連接了。不同測(cè)距模式的選擇只需改變
12、測(cè)距模式跳線J1的連接方法即可。模組工作的性能與被測(cè)物表面材料有很大關(guān)系,如毛料、布料對(duì)超聲波的反射率很小,會(huì)嚴(yán)重影響測(cè)量結(jié)果實(shí)物圖:J1為選擇工作模式,J2選擇電源接口4電路原理圖介紹:超聲波諧振頻率調(diào)理電路由單片機(jī)產(chǎn)生40KHz的方波,并通過(guò)模組接口(J4)送到模組的CD4049,而后面的CD4049則對(duì)40KHz頻率信號(hào)進(jìn)行調(diào)理,以使超聲波傳感器產(chǎn)生諧振。超聲波回波接收處理電路超聲波接收處理部分電路前級(jí)采用NE5532構(gòu)成10000倍放大器,對(duì)接收信號(hào)進(jìn)行放大;后級(jí)采用LM311比較器對(duì)接收信號(hào)進(jìn)行調(diào)整,比較電壓為L(zhǎng)M311的3管腳的輸入,可由J1跳線選擇不同的比較電壓以選擇不同的測(cè)距模
13、式。測(cè)距程序流程圖超聲波測(cè)距的功能函數(shù)流程圖如圖。用戶只需進(jìn)行六次測(cè)距操作,這六次的測(cè)量結(jié)果需要經(jīng)過(guò)處理后才可得到最終的測(cè)距返回值,然后將返回值化成距離。四 軟件設(shè)計(jì)4.1軟件設(shè)計(jì)各模塊void RunTime2Hz(void);設(shè)置2HZ基頻中斷向量函數(shù)。void OffTime2Hz(void);清2HZ基頻中斷向量函數(shù)。void Clear_WatchDog(void);清看門(mén)狗函數(shù)unsigned int SP_GetCh(void);取鍵值函數(shù)void delay2s(int timer)可調(diào)的延遲函數(shù)4.2速度控制速度控制用TIMERA的PWM輸出控制,當(dāng)它前進(jìn)時(shí)設(shè)PWM為12/1
14、6,當(dāng)它轉(zhuǎn)彎時(shí)設(shè)為8/16。其代碼為:*P_TimerA_Ctrl=0x0333;*P_TimerA_Data=0xff9f; 4.3障礙物檢測(cè)用TIMERB的TONT輸出給超聲波提供出射頻率,并給它延遲一段時(shí)間,發(fā)射完時(shí),清TIMERB,讓它工作在計(jì)時(shí)方式,當(dāng)計(jì)到10000時(shí)!沒(méi)有收到回波,則說(shuō)明前在無(wú)障礙。如果有收到回波則說(shuō)明有障礙。4.4看門(mén)狗看門(mén)狗只要一定時(shí)間給其喂狗,就可以保證程序不會(huì)跑飛,跑飛就會(huì)自動(dòng)復(fù)位。其代碼就只有一句:*P_Watchdog_Clear = 0x0001;4.5基頻中斷采用2HZ的基頻中斷,實(shí)現(xiàn)實(shí)時(shí)控制;一次中斷, 中斷時(shí)間為0。5S,其代碼如下: P_INT
15、_Ctrl = r1; INT IRQ; /開(kāi)中斷4.6程序設(shè)計(jì)流程圖五:測(cè)試數(shù)據(jù)、測(cè)試結(jié)果分析及結(jié)論測(cè)試方法與儀器:1.測(cè)試儀器 測(cè)試儀器包括數(shù)字萬(wàn)用表、信號(hào)發(fā)生器、示波器、直流穩(wěn)壓電源等。2.測(cè)試方法 數(shù)字萬(wàn)用表主要用來(lái)測(cè)試各個(gè)IO口的狀態(tài);信號(hào)發(fā)生器與示波器用于測(cè)試超聲波傳感器信號(hào)的接收與傳輸;試驗(yàn)測(cè)試能不能完成固定避障。結(jié)論:經(jīng)過(guò)了我們的努力,我們基本上能完上避障的功能!當(dāng)然我們之后還有很長(zhǎng)的路要走,在之后我們會(huì)自己做一個(gè)最小系統(tǒng),此次我們更側(cè)重于軟件方面的設(shè)計(jì)。同時(shí)我們還要設(shè)計(jì)更多的外圍電路,實(shí)現(xiàn)更多的功能。其中包括:紅外光電檢測(cè)用來(lái)檢測(cè)旁邊的物體;還有紅外遙控器,用來(lái)控制小車(chē)的運(yùn)行
16、與停止;再加一個(gè)顯示器,用來(lái)顯示路程和時(shí)間等等。附錄一: 程序附錄:程序設(shè)計(jì)中包括:主程序,測(cè)距程序,中斷程序組成;1主程序:#include "SPCE061A.h"#include "ceju.h"unsigned char INTflag; /定時(shí)標(biāo)識(shí)unsigned int sum; /2hz 計(jì)數(shù)器 1次為0。5秒void RunTime2Hz(void);void OffTime2Hz(void);void Clear_WatchDog(void);void delay2s(int timer) /設(shè)置基頻為2HZ的中斷,就是一次定時(shí)0。5S
17、 sum=timer; RunTime2Hz(); /運(yùn)行中斷 while(!INTflag) Clear_WatchDog();/清看門(mén)狗 INTflag = 0; OffTime2Hz(); /結(jié)束中斷void delay2s(int timer);int main(void)unsigned int Back_data; /裝距離*P_IOB_Dir=0x1f00;/初始化IOB,IOB812同向輸出*P_IOB_Attrib=0x1f00;*P_IOB_Data=0x0000;INTflag = 0;Clear_WatchDog(); /清看門(mén)狗while(1) *P_TimerA_C
18、trl=0x0373; *P_TimerA_Data=0xff9f; /設(shè)前進(jìn)PWM這14/16Back_data = measure_Times(0);/測(cè)距if(Back_data=0) /判斷是否為0,為0則為前進(jìn) *P_TimerA_Ctrl=0x0373; *P_TimerA_Data=0xff9f;else if(Back_data<=40) /判斷是否小于40CM,小于則進(jìn)行倒車(chē)*P_TimerA_Ctrl=0x006; *P_IOB_Data=0x1000; /倒車(chē)delay2s(0);*P_IOB_Data=0x0100; /前進(jìn)delay2s(3);else if(B
19、ack_data<=100) /判斷是否小于1M,小于則進(jìn)行避障 *P_TimerA_Ctrl=0x0333; *P_IOB_Data=0x0400; /左轉(zhuǎn) delay2s(1); *P_IOB_Data=0x0800; /右轉(zhuǎn) delay2s(1); *P_IOB_Data=0x0400; /左轉(zhuǎn) delay2s(1); *P_TimerA_Ctrl=0x006; /停止PWM運(yùn)行 *P_IOB_Data=0x0000;/停車(chē) while(1) ; else Clear_WatchDog(); 2中斷程序:#include "SPCE061A.h"#include
20、 "ceju.h"void IRQ3(void)_attribute_(ISR); /IRQ中斷服務(wù)程序void IRQ3(void)*P_INT_Clear = 0x0100;/EXT1_IRQ_ult();/調(diào)用超聲波測(cè)距的外部中斷服務(wù)程序.TEXT.include SPCE061A.inc;.external _sum;.external _INTflag;.public _IRQ5;_IRQ5: /定時(shí)3秒的中斷程序push r1,r4 to sp;r1 =0x0008; test r1,P_INT_Ctrl;jnzL_4Hz; / Timer A FIQ entr
21、ence r1 = 0x0004; P_INT_Clear = r1; /清中斷 r1 = _sum /取時(shí)基信號(hào)量 r1 += 1; cmp r1,4; je loop0; _sum=r1 /保存時(shí)基信號(hào)量 pop r1,r4 from sp; reti; loop0: r1 = 0x0001; _INTflag = r1; /設(shè)置中斷標(biāo)識(shí) r1 = 0 _sum = r1pop r1,r4 from sp; reti; L_4Hz: r1 = 0x0008; P_INT_Clear = r1; /清中斷 pop r1,r4 from sp;reti;.external _sum;.incl
22、ude SPCE061A.inc;.CODE.public _Clear_WatchDog;_Clear_WatchDog: .PROCR1=0x0001; P_Watchdog_Clear=R1; /清看門(mén)狗retf;.ENDP.public _RunTime2Hz; /初始化中斷為2HZ定時(shí)中斷源_RunTime2Hz: .procr1 = 0x0004; P_INT_Ctrl = r1; INT IRQ; /開(kāi)中斷 retf .endp;.public _OffTime2Hz;_OffTime2Hz: .proc r1 = P_INT_Ctrl r1 &= 0xfffb; P_I
23、NT_Ctrl = r1; r1 = 0x0000 _sum = r1; retf; .endp;3、測(cè)距程序#include "SPCE061A.h"#define LONG_SEND_TIMER1000/中距測(cè)距時(shí)的40KHz信號(hào)發(fā)射時(shí)長(zhǎng)#define LONG_SEND_TIMER23000/中距測(cè)距的補(bǔ)充測(cè)距時(shí)的40KHz信號(hào)發(fā)射時(shí)長(zhǎng)#define LONG_WAIT_DELAY600/中距測(cè)距的防余波干擾延時(shí)時(shí)長(zhǎng)#define LONG_WAIT_DELAY21500/中距測(cè)距的補(bǔ)充測(cè)距時(shí)的防余波干擾延時(shí)時(shí)長(zhǎng)#define LONG_RES_ADD0x00B0/中
24、距測(cè)距的結(jié)果補(bǔ)償值#define LONG_RES_ADD20x0220/中距測(cè)距的補(bǔ)充測(cè)距時(shí)的結(jié)果補(bǔ)償值#define LOW_SEND_TIMER250/短距測(cè)距時(shí)的40KHz信號(hào)發(fā)射時(shí)長(zhǎng)#define LOW_SEND_TIMER21000/短距測(cè)距的補(bǔ)充測(cè)距時(shí)的40KHz信號(hào)發(fā)射時(shí)長(zhǎng)#define LOW_WAIT_DELAY180/短距測(cè)距的防余波干擾延時(shí)時(shí)長(zhǎng)#define LOW_WAIT_DELAY2400/短距測(cè)距的補(bǔ)充測(cè)距時(shí)的防余波干擾延時(shí)時(shí)長(zhǎng)#define LOW_RES_ADD0x0034/短距測(cè)距的結(jié)果補(bǔ)償值#define LOW_RES_ADD20x00B0/短距測(cè)距
25、的補(bǔ)充測(cè)距時(shí)的結(jié)果補(bǔ)償值unsigned int Counter_buf;/超聲波測(cè)距當(dāng)中,用于保存TimerB計(jì)數(shù)的變量,相當(dāng)于時(shí)長(zhǎng)unsigned int EXT1_IRQ_flag=0;/外部中斷標(biāo)志變量,用于EXT1的IRQ中斷程序和測(cè)距程序同步void Delay_ult(unsigned int timers)unsigned int i;for(i=0;i<timers;i+)_asm("nop");unsigned int Resoult_ult(unsigned int Counter) /計(jì)算距離unsigned int uiTemp;unsign
26、ed long ulTemp;ulTemp = (unsigned long)Counter*33500; /*以聲音的速度,以厘米為單位ulTemp = ulTemp/196608; ulTemp = ulTemp>>1;/除二uiTemp = (unsigned int)ulTemp;return uiTemp;unsigned int measure2_ult(unsigned int type);unsigned int measure_ult(unsigned int type) / 超聲波測(cè)距模組的測(cè)距程序,完成一次測(cè)距unsigned int Exit_flag =
27、1;unsigned int uiTemp;unsigned int uiResoult;unsigned int uiSend_Timer,uiWait_Timer,uiRes_Add;unsigned int uiSystem_Clock;uiSystem_Clock = *P_SystemClock;/將當(dāng)前的系統(tǒng)時(shí)鐘設(shè)置暫時(shí)保存起來(lái)*P_SystemClock = 0x0088;/將系統(tǒng)時(shí)鐘設(shè)置為49MHz,分頻比為1,強(qiáng)振模式if(type)/根據(jù)type即測(cè)距類型,選擇不同的測(cè)距參數(shù)uiSend_Timer = LONG_SEND_TIMER;uiWait_Timer = LONG
28、_WAIT_DELAY;uiRes_Add = LONG_RES_ADD;elseuiSend_Timer = LOW_SEND_TIMER;uiWait_Timer = LOW_WAIT_DELAY;uiRes_Add = LOW_RES_ADD;*P_TimerB_Data = 0xfed2;*P_TimerB_Ctrl = 0x03c0;/發(fā)40KHz的信號(hào)觸發(fā)超聲波傳感器Delay_ult(uiSend_Timer);/等待發(fā)送*P_TimerB_Ctrl = 0x0006;/關(guān)定時(shí)器B*P_TimerB_Data = 0x0000;*P_TimerB_Ctrl = 0x0001;/T
29、rB 工作在192KHz頻率while(*P_TimerB_Data<uiWait_Timer)/等待一定時(shí)間后再打開(kāi)TimerA的計(jì)數(shù)(來(lái)源于EXT1)/以避開(kāi)余波的干擾*P_Watchdog_Clear = 0x0001;*P_INT_Clear = 0x0100;/開(kāi)中斷前先清中斷*P_INT_Ctrl = *P_INT_Ctrl_New|0x0100;*P_INT_Clear = 0xffff;/清除中斷發(fā)生標(biāo)志_asm("IRQ ON");/打開(kāi)總中斷使能EXT1_IRQ_flag = 0;/TimerA的溢出中斷的標(biāo)志變量置0while(Exit_flag
30、)if(EXT1_IRQ_flag=1)/當(dāng)該變量在timerA的FIQ中斷中被置1時(shí)表示接收到了回波Exit_flag = 0;/退出標(biāo)示Counter_buf = Counter_buf+uiRes_Add;/計(jì)數(shù)值加上一定的調(diào)整數(shù)據(jù)uiResoult = Resoult_ult(Counter_buf);/對(duì)計(jì)數(shù)值進(jìn)行處理,得出距離值if(*P_TimerB_Data>10000)/如計(jì)數(shù)值大于10000,表示超時(shí)Exit_flag = 0;uiResoult = measure2_ult(type);/再進(jìn)行一次補(bǔ)充的測(cè)距,將會(huì)加長(zhǎng)40KHz信號(hào)發(fā)射的量*P_TimerB_Ctr
31、l = 0x0006;/停止定時(shí)器BuiTemp = *P_TimerB_Data;*P_Watchdog_Clear = 0x0001;*P_INT_Ctrl = *P_INT_Ctrl_New&(0x0100);/關(guān)掉外部中斷_asm("IRQ OFF");/關(guān)掉總中斷*P_SystemClock = uiSystem_Clock;/恢復(fù)系統(tǒng)時(shí)鐘的設(shè)置return uiResoult;void EXT1_IRQ_ult(void) /超聲波測(cè)距模組的測(cè)距程序的EXT1中斷服務(wù)程序Counter_buf = *P_TimerB_Data;*P_TimerB_Ctr
32、l = 0x0006;*P_INT_Ctrl = *P_INT_Ctrl_New&(0x0100);/關(guān)掉外部中斷*P_INT_Clear = 0xffff;/清除中斷發(fā)生標(biāo)志EXT1_IRQ_flag = 1;/通知測(cè)距程序,外部中斷已發(fā)生unsigned int measure2_ult(unsigned int type) /補(bǔ)充進(jìn)行一次遠(yuǎn)距的測(cè)量,以保證能夠獲取測(cè)量結(jié)果unsigned int Exit_flag = 1;unsigned int uiResoult;unsigned int uiSend_Timer,uiWait_Timer,uiRes_Add;*P_Time
33、rB_Ctrl = 0x0006;*P_INT_Ctrl = *P_INT_Ctrl_New&(0x0100);/關(guān)掉外部中斷_asm("IRQ OFF");/關(guān)掉總中斷*P_INT_Clear = 0xffff;/清除掉中斷發(fā)生標(biāo)志if(type)/根據(jù)type即測(cè)距類型,選擇不同的測(cè)距參數(shù)uiSend_Timer = LONG_SEND_TIMER2;uiWait_Timer = LONG_WAIT_DELAY2;uiRes_Add = LONG_RES_ADD2;elseuiSend_Timer = LOW_SEND_TIMER2;uiWait_Timer =
34、 LOW_WAIT_DELAY2;uiRes_Add = LOW_RES_ADD2;*P_TimerB_Data = 0xfed2;*P_TimerB_Ctrl = 0x03c0;Delay_ult(uiSend_Timer);*P_TimerB_Ctrl = 0x0006;*P_TimerB_Data = 0x0000;*P_TimerB_Ctrl = 0x0001;while(*P_TimerB_Data<uiWait_Timer)/等待一定時(shí)間,以避開(kāi)余波的干擾*P_Watchdog_Clear = 0x0001;*P_INT_Ctrl = *P_INT_Ctrl_New|0x01
35、00;/打開(kāi)外部中斷*P_INT_Clear = 0xffff;/清除中斷發(fā)生標(biāo)志_asm("IRQ ON");/打開(kāi)總中斷使能EXT1_IRQ_flag = 0;/TimerA的溢出中斷的標(biāo)志變量置0while(Exit_flag)if(EXT1_IRQ_flag=1)/當(dāng)該變量在timerA的FIQ中斷中被置1時(shí)表示接收到了回波Exit_flag = 0;/exitCounter_buf = Counter_buf+uiRes_Add;/計(jì)數(shù)值加上一定的調(diào)整數(shù)據(jù)uiResoult = Resoult_ult(Counter_buf);/對(duì)計(jì)數(shù)值進(jìn)行處理,得出距離值if(*P_TimerB_Data>10000)/如計(jì)數(shù)值大于1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 全面詳盡裝飾工程勞務(wù)分包合同
- 物流配送服務(wù)合同書(shū)
- 重返校園學(xué)習(xí)保證
- 電信使用協(xié)議
- 民間貸款合同范本模板
- 牛飼料購(gòu)銷合同模板
- 個(gè)人借款協(xié)議書(shū)模板
- 橋梁工程腳手架分包協(xié)議分析
- 奶粉代理合同范本
- 電力線路工程分包協(xié)議
- 低空經(jīng)濟(jì)公司的投融資方案
- 2022年注冊(cè)消防工程師繼續(xù)教育測(cè)試題
- 2024年《高等教育心理學(xué)》教師崗前培訓(xùn)考試復(fù)習(xí)題庫(kù)(含答案)
- 七年級(jí)歷史上冊(cè)第一學(xué)期期末綜合測(cè)試卷(人教版 2024年秋)
- 2024年首屆全國(guó)“紅旗杯”班組長(zhǎng)大賽考試題庫(kù)800題(含答案)
- CJJ101-2016 埋地塑料給水管道工程技術(shù)規(guī)程
- 2024河北石油職業(yè)技術(shù)大學(xué)教師招聘考試筆試試題
- 2022-2023學(xué)年廣東省廣州市增城區(qū)教科版(廣州)六年級(jí)上冊(cè)期末測(cè)試英語(yǔ)試卷(含聽(tīng)力音頻) 【帶答案】
- 2024-2030年中國(guó)七氟丙烷行業(yè)市場(chǎng)現(xiàn)狀調(diào)查及發(fā)展前景研判報(bào)告
- GB/T 43868-2024電化學(xué)儲(chǔ)能電站啟動(dòng)驗(yàn)收規(guī)程
- 人際傳播能力智慧樹(shù)知到期末考試答案章節(jié)答案2024年復(fù)旦大學(xué)
評(píng)論
0/150
提交評(píng)論