自動避障小車設(shè)計樣本_第1頁
自動避障小車設(shè)計樣本_第2頁
自動避障小車設(shè)計樣本_第3頁
自動避障小車設(shè)計樣本_第4頁
自動避障小車設(shè)計樣本_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

自動避障小車

技術(shù)報告

前百

設(shè)計背景:在科學(xué)摸索和緊急搶險中經(jīng)常會遇到對與某些危

險或人類不能直接到達(dá)地區(qū)探測,這些就需要用機(jī)器人來完

畢。而在機(jī)器人在復(fù)雜地形中行進(jìn)時自動避障是一項必不可

少也是最基本功能。因而,自動避障系統(tǒng)研發(fā)就應(yīng)運而生。

咱們自動避障小車就是基于這一系統(tǒng)開發(fā)而成。隨著科技發(fā)

展,對于未知空間和人類所不能直接到達(dá)地區(qū)摸索逐漸成為

熱門,這就使機(jī)器人自動避障有了重大意義。咱們自動避障

小車就是自動避障機(jī)器人中一類。自動避障小車可以作為地

區(qū)摸索機(jī)器人和緊急搶險機(jī)器人運動系統(tǒng),讓機(jī)器人在行進(jìn)

中自動避過障礙物。

目錄

一、設(shè)計目的:.................................3

二、方案設(shè)計:....................................................4

2.1直流調(diào)速系統(tǒng).................................錯誤!未定義書簽。

2.2檢測系統(tǒng).....................................錯誤!未定義書簽。

三硬件設(shè)計..............................................錯誤!未定義書簽。

3.1.SPCE061A單片機(jī)最小系統(tǒng).............................................5

3.1.1.SPCE061A時鐘電路.................................................8

3.1.2.PLL鎖相環(huán).........................................................9

3.1.3.看門狗Watchdog.........................................................................................................9

3.1.4.低電壓復(fù)位(LVR)................................................................................................10

3.1.5.I/O端口...........................................................10

3.1.6.時基與定期器......................................................11

3.1.7.SPCE061A定期器/計數(shù)器...........................................II

3.1.8.ADC.DAC......................................................................................................................12

3.2.超聲波傳感器........................................................12

四軟件設(shè)計.............................................錯誤!未定義書簽。

4.1軟件設(shè)計各模塊...............................錯誤!未定義書簽。

4.2速度控制.....................................錯誤!未定義書簽。

4.3障礙物檢測...................................錯誤!未定義書簽。

4.4看門狗.......................................錯誤!未定義書簽。

4.5基頻中斷.....................................錯誤!未定義書簽。

4.6程序設(shè)計流程圖...............................錯誤!未定義書簽。

五:測試數(shù)據(jù)、測試成果分析及結(jié)論........................................19

程序附錄.................................................錯誤!未定義書簽。

1.主程序:.....................................................21

2.中斷程序.....................................................24

3.測距程序28

1.一、設(shè)計目的:

2.小車從無障礙地區(qū)啟動邁進(jìn),感應(yīng)邁進(jìn)路線上障礙物后,

能自動避開障礙物。

3.依照障礙物位置選取下一步行進(jìn)方向,選取左拐還是右拐,

若障礙物在左邊則自動右拐,若障礙物在右邊則左拐,若

障礙物在正前方可任意選取左拐或者是右拐,以達(dá)到避開

障礙物目。

通過運用單片機(jī)內(nèi)時鐘源控制設(shè)定左拐和右拐時間,從而能

持續(xù)邁進(jìn)。

為達(dá)到速度可控性,需設(shè)立兩個獨立按鍵對小車進(jìn)行控速。

二、方案設(shè)計:

依照設(shè)計規(guī)定,擬定如下方案:在既有玩具電動車基本上,

加裝超聲波傳感器,實現(xiàn)對電動車運營狀況實時測量,并將

測量數(shù)據(jù)傳送至單片機(jī)進(jìn)行解決,然后由單片機(jī)依照所檢測

各種數(shù)據(jù)實現(xiàn)對電動車智能控制。

這種方案能實現(xiàn)對電動車運動狀態(tài)進(jìn)行實時控制,控制靈

活、可靠,精度高,可滿足對系統(tǒng)各項規(guī)定。

2.1直流調(diào)速系統(tǒng)

采用脈寬調(diào)速系統(tǒng)

脈寬調(diào)速系統(tǒng)主電路采用脈寬調(diào)制式變換器,簡稱

PWM變換器。

脈寬調(diào)速也可通過單片機(jī)控制繼電器閉合來實現(xiàn),但是驅(qū)動

能力有限。為順利實現(xiàn)電動小汽車前行與倒車,本設(shè)計采用

了可逆PWM變換器??赡鍼WM變換器主電路構(gòu)造式有H

型、T型等類型。咱們在設(shè)計中采用了慣用雙極式H型變換

器,它是由4個三極電力晶體管和4個續(xù)流二極管構(gòu)成橋式

電路。如附錄一:

2.2檢測系統(tǒng)

檢測系統(tǒng)重要實現(xiàn)紅外傳感器,超聲波傳感,光電傳感器

對車運營進(jìn)行實時測量,即運用這種傳感器對電動車避障、

位置、行車狀態(tài)進(jìn)行測量。

行車開始、結(jié)束及超聲波檢測:

在車開始和結(jié)束階段,都是用紅外式光電傳感器,當(dāng)按下

此光電開頭,小車就開始行駛,在完畢任務(wù)后,再按下此

開關(guān),小車就停止邁進(jìn)。在邁進(jìn)過程中不斷發(fā)送超聲波,并

對接到進(jìn)行解決計算。如果解決得到成果是發(fā)現(xiàn)前面障礙時,

再行進(jìn)一次距離解決,當(dāng)距離小是40CM時,讓小車倒退一

段時間,再進(jìn)行避障解決,如果距離不不大于40CM,就直

接進(jìn)避障解決。

三硬件設(shè)計

3.1.SPCE061A單片機(jī)最小系統(tǒng)

咱們用是凌陽SPCE061A單片機(jī)最小系統(tǒng)其概述如下:

SPCE061A是繼『nSP?系列產(chǎn)品SPCE500A等之后凌陽科技

推出又一款16位構(gòu)造微控制器。與SPCE500A不同是,在存儲

器資源方面考慮到顧客較少資源需求以及便于程序調(diào)試等

功能,SPCE061A里只內(nèi)嵌32K字閃存(FLASH)。較高解決速

度使nSi,可以非常容易地、迅速地解決復(fù)雜數(shù)字信號。

因而,與SPCE500A相比,以u'nSPTM為核心SPCE061A微控制

器是合用于數(shù)字語音辨認(rèn)應(yīng)用領(lǐng)域產(chǎn)品一種最經(jīng)濟(jì)選取。

性能

□16位u'nSi微解決器;

□工作電壓(CPU)VDD為2.4~3.6V(I/O)VDDH為2.4~5.5V;

□CPU時鐘:0.32MHz~49.152MHz;

內(nèi)置2K字SRAM;

□內(nèi)置32KFLASH;

□可編程音頻解決;

□晶體振蕩器;

□系統(tǒng)處在備用狀態(tài)下(時鐘處在停止?fàn)顟B(tài)),耗電僅為2

u;

□2個16位可編程定期器/計數(shù)器(可自動預(yù)置初始計數(shù)值);

□2個10位DAC(數(shù)-模轉(zhuǎn)換)輸出通道;

□32位通用可編程輸入/輸出端口;

□14個中斷源可來自定期器A/B,時基,2個外部時鐘源

輸入,鍵喚醒;

□具備觸鍵喚醒功能;

□使用凌陽音頻編碼SACM_S240方式(2.4K位/秒),能容納

210秒語音數(shù)據(jù);

□鎖相環(huán)PLL振蕩器提供系統(tǒng)時鐘信號;

□32768Hz實時時鐘;

□7通道10位電壓模-數(shù)轉(zhuǎn)換器(ADC)和單通道聲音模-數(shù)轉(zhuǎn)

換器;

□聲音模-數(shù)轉(zhuǎn)換器輸入通道內(nèi)置麥克風(fēng)放大器和自動增

益控制(AGC)功能;

□具備串行設(shè)備接口;

□具備低電壓復(fù)位(LVR)功能和低電壓監(jiān)測(LVD)功能;

內(nèi)置在線仿真電路ICE(In-CircuitEmulator)接口;

具備保密能力;

具備WatchDog功能;

16位u'nSFM微解決器硬件構(gòu)造圖

3.1.1.SPCE06IA時鐘電路

SPCE061A時鐘電路采用晶體振蕩器。下圖為SPCE061A時

鐘電路接線圖。外接晶振采用32768Hz。

3.1.2.PLL鎖相環(huán)

PLL電路作用是將系統(tǒng)提供實時時鐘基頻(32768Hz)進(jìn)行倍

頻,輸出系統(tǒng)時鐘Fosc

鎖相環(huán)(PLL)Fosc

32768Hz晶振系統(tǒng)時鐘發(fā)生器(默認(rèn)值24.576MHz)

頻率:20.48M,24.576M,

32.768M,40.96M,49.152M

1""X"Z1

b7b6b5

系統(tǒng)M鐘選頻P_SystemClock單元的第7,6,5位

3.1.3.看門狗Walchdog

SPCE061A清狗周期為0.75S;清看門狗操作寄存器:

P_Watchdog_Clear(0x7012H)

清狗操作:在每個0.75S清狗周期里P_Watchdog_Clear寫入

0x0001o

3.14低電壓復(fù)位(LVR)

通過某種方式,使單片機(jī)內(nèi)存各寄存器值變?yōu)槌跏疾僮鞣Q為

復(fù)位。SPCE061A復(fù)位方式為低電壓復(fù)位。

3.1.5.I/O端口

OA口:

IOAO-IOA6:7路普通AD輸入端口,IOAO-IOA7:觸鍵

喚醒功能

IOB口:

外部中斷輸入,串行接口、PWM輸出等復(fù)用端口

3.1.6.時基與定期器

時基信號可提供慣用、現(xiàn)成頻率信號,完畢某些定期器功能

3.1.7.SPCE061A定期器/計數(shù)器

遞增計數(shù)方式,自動重載定期器/計數(shù)器初始值,輸出4位可

調(diào)脈寬比PWM信號,溢出頻率/2方波輸出,各種時鐘源輸

入。

3.1.8.ADC.DAC

SPCE061A特色是其強大靈活語音功能;而單片機(jī)對語音解

決支持,除了其解決能力外,尚有片內(nèi)集成ADC、DAC;特

別是集成有AGC電路MIC通道。

ADC轉(zhuǎn)換過程:

―啟動自動方式RDY=OI

SAR=1000000000B

DAC0輸山VdacO

與Vin逐次比較

比較結(jié)束,RI)Y=1

結(jié)果存入結(jié)果寄存器

等待讀取結(jié)果寄存器

3.2.超聲波傳感器

1.基本特性與參數(shù)指標(biāo)

超聲波傳感器諧振頻率:40KHz;

模組傳感器工作電壓:4.5V~9V

模組接口電壓:4.5V~5.5V

2.重要功能

三種測距模式選取跳線J1(短距、中距、可調(diào)距):

短距:20cnT100cm左右(依照被測物表面材料決定),精度

1cm;

中距:70cnT400cm左右(依照被測物表面材料決定);

可調(diào):范疇由可調(diào)節(jié)參數(shù)擬定,當(dāng)調(diào)節(jié)在適當(dāng)值時,最遠(yuǎn)

測距700cm左右;

3.構(gòu)造示意圖

超聲波諧振載波調(diào)節(jié)電路

發(fā)射探頭

數(shù)蛆

接口

超聲波回波接受處理電路接收探頭

普通應(yīng)用時,只需要用兩條10PIN排線把J5與SPCE061AI0B

口低八位連接,J4與IOB口高八位連接,同步設(shè)立好JLJ2跳

線就完畢硬件連接了。不同測距模式選取只需變化測距模式

跳線J1連接辦法即可。模組工作性能與被測物表面材料有很

大關(guān)系,如毛料、布料對超聲波反射率很小,會嚴(yán)重影響測

量成果

實物圖:

J1為選取工作模式,J2選取電源接口

4.電路原理圖簡介:

超聲波諧振頻率調(diào)理電路

由單片機(jī)產(chǎn)生40KHz方波,并通過模組接口(J4)送到模組

CD4049,而背面CD4049則對40KHz頻率信號進(jìn)行調(diào)理,以

使超聲波傳感器產(chǎn)生諧振。

超聲波回波接受解決電路

VCC.5

超聲波接受解決某些電路前級采用NE5532構(gòu)成10000倍放

大器,對接受信號進(jìn)行放大;后級采用LM311比較器對接受

信號進(jìn)行調(diào)節(jié),匕較電壓為LM3113管腳輸入,可由J1跳線

選取不同比較電壓以選取不同測距模式。

測距程序流程圖

超聲波測距功能函數(shù)流程圖如圖。顧客只需進(jìn)行六次測距操

作,這六次測量成果需要通過解決后才可得到最后測距返回

值,然后將返回值化成距離。

軟件設(shè)計

4.1軟件設(shè)計各模塊

voidRunTime2Hz(void);

設(shè)立2HZ基頻中斷向量函數(shù)。

voidOffTime2Hz(void);

清2Hz基頻中斷向量函數(shù)。

voidClear_WatchDog(void);

清看門狗函數(shù)

unsignedintSP_GetCh(void);

取鍵值函數(shù)

voiddelay2s(inttimer)

可調(diào)延遲函數(shù)

4.2速度控制

速度控制用TIMERAPWM輸出控制,當(dāng)它邁進(jìn)時設(shè)PWM為

12/16,當(dāng)它轉(zhuǎn)彎時設(shè)為8/16o其代碼為:

*P_TimerA_Ctrl=0x0333;

*P_TimerA_Data=0xff9f;

4.3障礙物檢測

用TIMERBTONT輸出給超聲波提供出射頻率,并給它延遲

一段時間,發(fā)射完時,清TIMERB,讓它工作在計時方式,當(dāng)

計到10000時!沒有收到回波,則闡明前在無障礙。如果有

收到同波則闡明有障礙。

4.4看門狗

看門狗只要一定期間給其喂狗,就可以保證程序不會跑飛,

跑飛就會自動復(fù)位。其代碼就只有一句:

*PWatchdogClear=0x0001;

4.5基頻中斷

采用2Hz基頻中斷,實現(xiàn)實時控制;一次中斷,中斷時間為

0o5S,其代碼如卜:

[P_INT_Ctrl]=rl;

INTIRQ;〃開中斷

4.6程序設(shè)計流程圖

五:測試數(shù)據(jù)、測試成果分析及結(jié)論

測試辦法與儀器:

1.測試儀器

測試儀器涉及數(shù)字萬用表、信號發(fā)生器、示波器、直流

穩(wěn)壓電源等。

2.測試辦法

數(shù)字萬用表重要用來測試各個10口狀態(tài);

信號發(fā)生器與示波器用于測試超聲波傳感器信號接受

與傳播;

實驗測試能不能完畢固定避障。

結(jié)論:

通過了咱們努力,咱們基本上能完上避障功能!固然咱們之

后尚有很長路要走,

在之后咱們會自己做一種最小系統(tǒng),本次咱們更側(cè)重于軟件

方面設(shè)計。同步咱們還要設(shè)計更多外圍電路,實現(xiàn)更多功能。

其中涉及:紅外光電檢測用來檢測旁邊物體:尚有紅外遙控

器,用來控制小車運營與停止;再加一種顯示屏,用來顯示

路程和時間等等。

附錄一:

程序附錄:

程序設(shè)計中涉及:主程序,測距程序,中斷程序構(gòu)成;

1.主程序:

include"SPCE06IA.hH

#include"ceju.h"

unsignedcharINTflag:〃定期標(biāo)記

unsignedintsum://2hz計數(shù)器1次為0。5秒

voidRunTime2Hz(void);

voidOffTime2Hz(void);

voidClear_WatchDog(void);

voiddelay2s(inttimer)〃設(shè)立基頻為2HZ中斷就是一次定期

0o5S

(

sum=timer;

RunTime2Hz();〃運營中斷

while(!INTflag)

Clear_WatchDog();〃清看門狗

INTflag=0;

OffTime2Hz();〃結(jié)束中斷

voiddelay2s(inttimer);

intmain(void)

(

unsignedintBack_data;〃裝距離

*PJOB_Dir=0xlf0();//初始化

IOBJOB8-12同向輸出

*PJOB_Attrib=OxlfOO;

*PIOBData=0x0000;

INTflag=0;

Clear_WatchDog();〃清看門狗

while(l)

*P_TimerA_Ctrl=0x0373;

*P_TimerA_Data=0xff9f;//設(shè)邁進(jìn)PWM這

14/16

Back_data=measure_Times(O);〃測距

if(Back_data==O)〃判斷與否為o,

為。則為邁進(jìn)

(

^P_TimerA_Ctrl=OxO373;

*P_TimerA_Data=0xff9f;

)

elseif(Back_data<=40)//判斷與否不大

于40CM,不大于則進(jìn)行倒車

(

^P_TimerA_Ctrl=0x006:

*PJOB_Data=0xl()00;〃倒車

delay2s(0);

*PJOB_Data=0x0100;〃邁進(jìn)

delay2s(3);

)

elseif(Back_data<=100)〃判斷與否不大于

IM,不大于則進(jìn)行避障

(

*P_TimerA_Ctri=0x0333;

*P_IOB_Data=0x0400;〃左轉(zhuǎn)

delay2s(l);

*P_IOB_Data=0x0800;〃右轉(zhuǎn)

delay2s(l);

*PJOB_Data=0x0400:〃左轉(zhuǎn)

delay2s(l);

*P_TimerA_Ctrl=0x006;〃停止PWM運

*PJOB_Data=OxOOOO;//停車

while(l)

{;}

)

else

Clear_WatchDog();

2.中斷程序:

includeHSPCE061A.h"

#include"ceju.h"

voidIRQ3(void)—attribute—((ISR));//IRQ中斷服務(wù)程序

voidIRQ3(void)

*P_INT_Clear=0x0100;//

EXTl_IRQ_ult();〃調(diào)用超聲波測距外部中斷

服務(wù)程序

.TEXT

.includeSPCE061A.inc;

.external_sum;

.external_INTflag;

.public_IRQ5;

」RQ5:〃定期3秒中斷程序

pushrl,r4to[sp];

rl=0x0008;

testrl,[P_INT_Ctrl];

jnzL_4Hz;//TimerAFIQentrence

rl=0x0004;

LPJNT_Clear]=rl;〃清中斷

rl二[_sum]//取時基信號量

rl+=1;

cmprl,4;

jeloopO;

[_sum]=rl〃保存時基信號量

poprl,r4from[spj;

reti;

loopO:

rl=0x0001;

[JNTflag]=rl;//設(shè)立中斷標(biāo)記

rl=0

[_sum]二rl

poprl,r4from[sp];

reti;

L_4Hz:

rl=0x0008;

LPJNT_Clear]=rl;〃清中斷

poprl,r4from[sp];

reti;

.external_sum;

.includeSPCE061A.inc;

.CODE

.public_Clear_WatchDog;

_Clear_WatchDog:.PROC

RI=0x0001;

[P_Watchdog_Clear]=R1;〃清看門狗

retf;

.ENDP

.public_RunTime2Hz;〃初始化中斷為2HZ定期中斷源

_RunTime2Hz:.proc

rl=0x0004;

[P_INT_Ctrl]=rl;

INTIRQ;〃開中斷

retf

.endp;

.public_OffTime2Hz;

_OflTime2Hz:.proc

rl=LP_INT_CtrlJ

rl&=Oxfffb;

[PJNT_Ctrl]=rl;

rl=0x0000

[_sum]=rl;

retf;

.endp;

3.測距程序

include"SPCE061A.h"

#defineLONG_SEND_TIMER1000//中距測距時

40KHz信號發(fā)射時長

#defineLONG_SEND_TIMER23000//中距測距補充測

距時40KHz信號發(fā)射時長

#defineLONG_WAIT_DELAY600//中距測距

防余波干擾延時時長

#defineL0NG_WAIT_DELAY21500〃中距測距補充測

距時防余波干擾延時時長

#defineLONG_RES_ADDOxOOBO〃中距測距成果補

償值

#defineLONG_RES_ADD20x0220〃中距測距補充

測距時成果補償值

#defineLOW_SEND_TIMER250〃短距測距時

40KHz信號發(fā)射時長

#defineLOW_SEND_TIMER21000〃短距測距補充

測距時40KHz信號發(fā)射時長

#defineLOW_WAIT_DELAY180〃短距測距防余

波干擾延時時長

#defineLOW_WAIT_DELAY2400//短星巨測是巨

補充測距時防余波干擾延時時長

#defineLOW_RES_ADD0x0034//短距測距成果

補償值

#defineLOW_RES_ADD2OxOOBO〃短總巨測星巨補充測

距時成果補償值

unsignedintCounter_buf;〃超聲波測距當(dāng)中,用于

保存TimerB計數(shù)變量,相稱于時長

unsignedintEXTl_IRQ_flag=O;〃外部中斷標(biāo)志變量,

用于EXT1IRQ中斷程序和測距程序同步

voidDelay_ult(unsignedinttimers)

(

unsignedinti;

for(i=0;i<timers;i++)

(

—asm(nnopH);

)

)

unsignedintResoult_ult(unsignedintCounter)〃計算距離

(

unsignedintuiTemp;

unsignedlongulTemp;

ulTemp=(unsignedlong)Counter*33500;//*以聲音速度,

以厘米為單位

ulTemp=ulTemp/196608;

ulTemp=ulTemp?1;〃除二

uiTemp=(unsignedint)ulTemp;

returnuiTemp;

unsignedintmeasure2_ult(unsignedinttype);

unsignedintmeasure_ult(unsignedinttype)//超

聲波測距模組測距程序,完畢一次測距

(

unsignedintExit_flag=1;

unsignedintuiTemp;

unsignedintuiResoult;

unsignedintuiSend_Timer,uiWait_Timer,uiRes_Add;

unsignedintuiSystem_Clock;

uiSystem_Clock=*P_SystemClock;//將當(dāng)前系統(tǒng)時鐘設(shè)

立暫時保存起來

*P_SystemClock=0x0088;〃將系統(tǒng)時鐘設(shè)立為

49MHz,分頻比為1,強振模式

if(type)〃依照type即測距類型,選取

不同測距參數(shù)

(

uiSend_Timer=LONG_SEND_TIMER;

uiWait_Timer=LONG_WAIT_DELAY;

uiRes_Add=LONG_RES_ADD;

)

else

uiSend_Timer二LOW_SEND_TIMER;

uiWaitTimer=LOWWAITDELAY;

uiRes_Add=LOW_RES_ADD;

*P_TimerB_Data=0xfed2;

*P_TimerB_Ctrl=0x03c0;〃發(fā)40KHz信號觸發(fā)超聲

波傳感器

Delay_ult(uiSend_Timer);〃等待發(fā)送

*P_TimerB_Ctrl=0x0006;〃關(guān)定期器B

*PTimerBData=0x0000;

*P_TimerB_CtrI=0x0001;//TrB工作在192KHz頻

while(*P_TimerB_Data<uiWait_Timer)〃等待一定期間后

再打開TimerA計數(shù)(來源于EXT1)

(〃以避開余波干擾

*P_Watchdog_Clear=0x0001;

)

*P_INT_Clear=0x0100;〃開中斷前先清中

*P_INT_Ctrl=*P_INT_Ctrl_New|OxO100;

*P_INT_Clear=Oxffff;〃清除中斷發(fā)生標(biāo)志

_asm(HIRQON");〃打開總中斷使能

EXTlJRQ_flag=0;//TimerA溢出中斷標(biāo)

志變量置0

while(Exit_flag)

(

if(EXTl_IRQ_flag==1)〃當(dāng)該變量在timerAFIQ

中斷中被置1時表達(dá)接受到了回波

(

Exit_flag=0;〃退出標(biāo)示

Counter_buf=Counter_buf+uiRes_Add;〃計?數(shù)值力口上

一定調(diào)節(jié)數(shù)據(jù)

uiResoult二Resoult_ult(Counter_buf);〃對計數(shù)值進(jìn)行

解決,得出距離值

)

if(*P_TimerB_Data>1()000)〃如計數(shù)值不不大于

10000,表達(dá)超時

(

Exit_flag=0;

uiResoult=measure2_ult(type);〃再進(jìn)行一次補充測

距,將會加長40KHz信號發(fā)射量

*P_TimerB_Ctrl=0x()()06;〃停止定期器B

uiTemp=*P_TimerB_Data;

*P_Watchdog_Clear=0x0001;

*P_INT_Ctrl=*P」NT_CW_New&(?0x0100);〃關(guān)掉夕卜部

中斷

_asm("IRQOFF");〃關(guān)掉總中斷

*P_SystemClock=uiSystem_Clock;//恢復(fù)系統(tǒng)時鐘設(shè)立

returnuiResoult;

)

voidEXTlJRQ_ult(void)〃超聲波測距模

組測距程序EXT1中斷服務(wù)程序

(

Counter_buf=*P_TimerB_Data;

*P_TimerB_Ctrl=0x0006;

*P_INT_Ctrl=*P_INT_Ctrl_New&(-0x0100);〃關(guān)掉外部

中斷

*P_INT_Clear=Oxffff;〃清除中斷發(fā)生標(biāo)志

EXTl_IRQ_flag=1;〃告知測距程序,外部

中斷已發(fā)生

)

unsignedintmeasure2_ult(unsignedinttype)〃補

充進(jìn)行一次遠(yuǎn)距測量,以保證可以獲取測量成果

unsignedintExit_flag=1;

unsignedintuiResoult;

unsignedintuiSend_Timer,uiWait_Timer,uiRes_Add;

*P_TimerB_CtrI=0x0006;

*P_INT_Ctrl=*PJNT_Ctrl_New&(-0x0100);//關(guān)掉夕卜部

中斷

_asm(”IRQOFF");〃關(guān)掉總中斷

*PJNT_Clear=Oxffff;〃清除掉中斷發(fā)生標(biāo)志

if(type)//依照type即測距類型,選取

不同測距參數(shù)

(

uiSend_Timer=LONG_SEND_TIMER2;

uiWait.Timer=LONG_WAIT_DELAY2;

uiRes_Add=LONG_RES_ADD2;

)

else

(

uiSend_Timer=LOW_SEND_TIMER2;

uiWait_Timer=LOW_WAIT_DELAY2;

uiRes_Add二LOW_RES_ADD2;

*P_TimerB_Data=0xfed2;

*P_TimerB_Ctrl=OxO3cO;

Delay_ult(uiSend_Timer);

*P_TimerB_Ctrl=0x0006;

*P_TimerB_Data=0x0000;

*P_TimerB_Ctrl=0x0001;

while(*P_TimerB_Data<uiWait_Timer)〃等待一定期間,

以避開余波干擾

(

*P_Watchdog_Clear=0x0001;

)

*P_INT_Ctrl=*P」NT_Ctrl_New|0x0100;//打開外部中斷

*PJNT_Clear=Oxffff;〃清除中斷發(fā)生標(biāo)志

_asm(HIRQON");〃打開總中斷使能

EXTl_IRQ_flag=0;//TimerA溢出中斷標(biāo)

志變量置()

while(Exit_flag)

if(EXT!JRQ_flag==l)〃當(dāng)該變量在timerAFIQ

中斷中被置1時表達(dá)接受到了回波

Exit_flag=0;//exit

Counter_buf=Counter_buf+uiRes_Add;〃計數(shù)值力口上

一定調(diào)節(jié)數(shù)據(jù)

uiResoult=Resoult_ult(Counter_buf);〃對計數(shù)值進(jìn)行

解決,得出距離值

)

if(*P_TimerB_Data>10000)〃如計數(shù)值不不大于

10000,表達(dá)超時

(

Exit_flag=0;

uiResoult

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論