《電子工程師項(xiàng)目教學(xué)與訓(xùn)練》課件第8章_第1頁
《電子工程師項(xiàng)目教學(xué)與訓(xùn)練》課件第8章_第2頁
《電子工程師項(xiàng)目教學(xué)與訓(xùn)練》課件第8章_第3頁
《電子工程師項(xiàng)目教學(xué)與訓(xùn)練》課件第8章_第4頁
《電子工程師項(xiàng)目教學(xué)與訓(xùn)練》課件第8章_第5頁
已閱讀5頁,還剩67頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第8章超聲波測距儀設(shè)計

8.1引言

8.2超聲波測距儀設(shè)計任務(wù)8.3設(shè)計方案

8.4硬件電路設(shè)計8.5軟件設(shè)計8.6程序清單8.1引言距離測量與工農(nóng)業(yè)生產(chǎn)及人們的日常生活息息相關(guān),隨著科學(xué)技術(shù)的不斷進(jìn)步,人們對距離測量的方式、方法不斷創(chuàng)新,測量的精度和效率不斷提高,距離測量的應(yīng)用不斷擴(kuò)展。超聲波具有沿直線傳播、指向性強(qiáng)、繞射小、傳輸過程中衰減少、傳播的距離較遠(yuǎn)及遇到障礙面時會產(chǎn)生反射等特點(diǎn),應(yīng)用于距離測量可以解決現(xiàn)實(shí)中許多實(shí)際的難題,具有廣泛的應(yīng)用前景。8.2超聲波測距儀設(shè)計任務(wù)書

1.設(shè)計任務(wù)設(shè)計制作一臺以單片機(jī)為微控制器、以超聲波探頭為傳感器的超聲波測距儀,測量結(jié)果采用數(shù)碼管進(jìn)行顯示,并且可以通過按鍵控制測量方式。

2.設(shè)計要求

(1)超聲波探頭:采用兩個40kHz超聲波探頭進(jìn)行測量,其中一個探頭用于發(fā)射,一個探頭用于接收。

(2)系統(tǒng)構(gòu)成:采用單片機(jī)作為系統(tǒng)的主控制器,通過4位LED數(shù)碼管來顯示測量結(jié)果,可通過鍵盤靈活設(shè)置測距儀的工作方式。

(3)測量方式的設(shè)置:可通過鍵盤設(shè)置測距儀工作于四種工作方式,這四種方式為連續(xù)測量方式、單次測量方式、單次測量延時回零方式及對射測量方式。進(jìn)入某種方式后由LED指示相應(yīng)的方式。

(4)測量范圍及誤差:測量范圍為0.1~5.0m,誤差范圍為0.01m。

(5)電路輸入電壓:采用單一?+12V電源供電,系統(tǒng)內(nèi)部數(shù)字部分電源由?+12V電源變換得到。

(6)適用范圍:能夠用于較短距離、非接觸或者接觸條件下快速、準(zhǔn)確的距離測量。8.3設(shè)計方案

1.超聲波測距儀的基本原理超聲波測距儀進(jìn)行距離測量的基本原理是:超聲波發(fā)射探頭發(fā)射超聲波信號,然后由接收探頭接收發(fā)射波或反射波,測出超聲波在空氣中的傳播時間,由時間進(jìn)而計算出超聲波在空氣介質(zhì)中傳播的距離。具體測量方法可以分兩種:反射法測量和對射法測量。

1)反射法測量如圖8-1所示為反射法測量的原理示意圖。該方法是檢測超聲波從發(fā)射端發(fā)出到遇到障礙物反射產(chǎn)生回波被接收探頭測到的時間,由該時間計算超聲波發(fā)射端到障礙物之間的距離。設(shè)超聲波在空氣中的傳播速度為v,由圖8-1可以看出,超聲波由發(fā)射到被反射回來總的傳播時間為t?+?t1?+?t2,其中t為超聲波測距的盲區(qū)時間(當(dāng)超聲波測量距離小于該時間對應(yīng)的傳輸距離時測距離將無法測量,這稱為盲區(qū))。由超聲波的傳播時間可以計算出探頭與障礙物之間的距離S為在一定的溫度條件下,超聲波在空氣中傳播的速度為一常數(shù),因此只要測得超聲波的傳輸時間,就可以計算出距離。圖8-1反射法測量原理示意圖

2)對射法測量如圖8-2所示是對射法測量的原理示意圖。發(fā)射探頭發(fā)出的超聲波沿直線傳播并直接被接收探頭接收,超聲波在兩個探頭之間傳播的時間即代表了兩個探頭之間的距離。反射法和對射法測量的本質(zhì)沒有什么區(qū)別,但在具體應(yīng)用時卻有著較大的區(qū)別。反射法主要應(yīng)用于非接觸的距離測量,如汽車的倒車?yán)走_(dá)等;而采用對射法測量時,兩個探頭是分開安裝的,通常一個固定、另一個可以隨被測物體移動,多用于接觸式的測量。圖8-2對射法測量原理示意圖

2.超聲波信號的產(chǎn)生方式頻率為40kHz的方波可以由兩種方式產(chǎn)生:第一種方法是用門電路構(gòu)成可控多諧振蕩器,如圖8-3所示,只要電路中的各個元件的參數(shù)設(shè)置合適,在接通電源后,就會產(chǎn)生40kHz的方波,這種方法需要設(shè)置可控多諧振蕩電路,硬件電路成本高,頻率穩(wěn)定性較差;第二種方法是用單片機(jī)的定時/計數(shù)器直接控制產(chǎn)生40kHz的方波,這種方式在應(yīng)用時只要定時時間設(shè)置合適,就會產(chǎn)生標(biāo)準(zhǔn)的方波,而且硬件電路無需增加其他成本。綜合上面兩種方式,這里采用第二種方式來產(chǎn)生40kHz的方波。圖8-3可控多諧振蕩用單片機(jī)產(chǎn)生40kHz的方波可以有兩種選擇:第一種是用只有兩個定時計數(shù)器的51系列單片機(jī),第二種是用含有3個定時計數(shù)器的52系列單片機(jī)。相對于51系列單片機(jī)而言,52系列單片機(jī)含有3個定時計數(shù)器,除和51系列單片機(jī)相同的T0、T1外,還多了定時器T2,而且T2還可以工作于重載、時鐘輸出等多種模式下,可方便地產(chǎn)生標(biāo)準(zhǔn)40kHz的方波。綜合以上考慮,這里采用第二種選擇。

3.超聲波測距儀原理框圖圖8-4是超聲波測距儀的原理框圖。圖8-4超聲波測距儀原理框圖8.4硬件電路設(shè)計8.4.1主處理器及其外圍電路設(shè)計此次設(shè)計中的主控制器選用AT89S52。AT89S52是一種低功耗、高性能的8位CMOS微控制器,具有8KB在系統(tǒng)可編程Flash存儲器。該芯片使用Atmel公司的高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容,并且片上Flash允許程序存儲器在系統(tǒng)可編程,也可以用常規(guī)編程器編程。其主要性能如下:

(1)與MCS-51單片機(jī)產(chǎn)品兼容。

(2)?8KB字節(jié)在系統(tǒng)可編程Flash存儲器。

(3)?1000次擦寫周期。

(4)全靜態(tài)操作:0~33Hz。

(5)三級加密程序存儲器。

(6)?32個可編程I/O口線。

(7)三個16位定時器/計數(shù)器。

(8)八個中斷源。

(9)全雙工UART串行通道。

(10)低功耗空閑和掉電模式。

(11)空閑模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。

(12)看門狗定時器。

(13)雙數(shù)據(jù)指針。

(14)掉電標(biāo)識符。

(15)含片內(nèi)晶振及時鐘電路。圖8-5是主控制器及其外圍電路。圖8-5主控制器及其外圍電路該系統(tǒng)采用了外部晶振作為時鐘源,系統(tǒng)的復(fù)位電路采用了普通的按鍵復(fù)位電路。ISP接口是用來下載程序的,當(dāng)程序需下載到單片機(jī)內(nèi)部時,用下載線連接計算機(jī)與該接口,即可很快完成程序下載固化,無需專用的編程器,開發(fā)方便,節(jié)省成本。在下載程序時,占用單片機(jī)的并口即P1.5~P1.7,但是這并不影響P1口的正常使用。P1.0是定時計數(shù)器T2的時鐘輸出口,用來控制輸出40kHz的方波,該端口接在超聲波發(fā)送端的驅(qū)動反相器上。P2.0~P2.3接譯碼顯示電路,用來輸出顯示數(shù)據(jù),P1.1~P1.4是譯碼器的片選端。CS_S是超聲波的接收端口,P0.0~P0.3接控制按鍵,用來控制測量方式。P0.4~P0.7接LED發(fā)光二極管,可以用來指示測量距離的方式。PZ1是10kΩ的排阻,因?yàn)镻0口內(nèi)部本來不含有上拉電阻,當(dāng)把P0口作為一般I/O口使用時必須外接上拉電阻,以便P0口能正常工作。8.4.2超聲波發(fā)射與接收電路設(shè)計

1.超聲波發(fā)射電路超聲波的發(fā)射電路如圖8-6所示。超聲波發(fā)射電路的功能是把40kHz的信號轉(zhuǎn)換為同頻率的超聲波信號并發(fā)射出去。為了取得較好的發(fā)射效果,要求加在超聲波發(fā)射探頭上的信號頻率與探頭本身的固有頻率一致,并且驅(qū)動信號具有一定的強(qiáng)度。圖8-6中,JP為一個跳線座,當(dāng)2、3腳短接時,超聲波的信號源由硬件構(gòu)成的多諧振蕩器產(chǎn)生;當(dāng)1、2腳短接時,信號源由單片機(jī)產(chǎn)生。在實(shí)際的制作中采用了后一種方案,即由單片機(jī)的定時器T2來產(chǎn)生40kHz的時鐘源。為了取得較強(qiáng)的驅(qū)動信號,40kHz的發(fā)射信號先經(jīng)三個并聯(lián)的CMOS反相器驅(qū)動,再由達(dá)林頓管T1推動加在超聲波發(fā)射探頭的兩端,探頭諧振產(chǎn)生超聲波并發(fā)射出去。由于功率管導(dǎo)通時流過電阻R35的電流較大,因此R35必須選擇功率電阻。CS_F是40kHz的超聲波發(fā)射探頭,其兩引腳跨接在功率管的集電極和發(fā)射極。當(dāng)達(dá)林頓管T1飽和導(dǎo)通時,超聲波探頭上的驅(qū)動電壓接近為零;而當(dāng)達(dá)林頓管T1截止時,超聲波探頭上的為12V;當(dāng)T1輸入端加40kHz的驅(qū)動信號后,在超聲波探頭上即產(chǎn)生同頻的驅(qū)動電壓。圖8-6超聲波發(fā)射電路

2.超聲波接收電路超聲波的接收電路如圖8-7所示。由超聲波接收探頭接收到的信號是非常弱的電信號,該信號必須通過放大、整形及變換才能被單片機(jī)識別。從圖8-7中可以看出,由集成運(yùn)算放大器4558構(gòu)成兩級比例積分電路,其作用是對接收到的信號進(jìn)行放大。在本系統(tǒng)中采用?+12V的電壓為放大器供電。為了使放大器有一個合適的工作點(diǎn),兩級放大電路通過分壓的方式為每一級放大器產(chǎn)生近似+6V的直流工作點(diǎn)。接收信號經(jīng)過兩級放大之后變成具有較強(qiáng)幅度的正弦波信號,該信號被接到由LM311構(gòu)成的比較器的同相輸入端,經(jīng)比較之后變換為方波信號,進(jìn)而該方波信號經(jīng)兩級反相器變換為幅值為?+5V的方波信號送單片機(jī),供單片機(jī)處理。圖8-7超聲波接收電路8.4.3顯示與按鍵電路設(shè)計

1.顯示電路顯示電路如圖8-8所示。該電路是由4片譯碼驅(qū)動芯片CD4511構(gòu)成的4位靜態(tài)顯示電路。CD4511具有4位顯示數(shù)據(jù)輸入端A、B、C、D以及一個數(shù)據(jù)鎖存控制端LE。當(dāng)需要向CD4511送入顯示數(shù)據(jù)時,先將要送入的數(shù)據(jù)加載到數(shù)據(jù)輸入端A、B、C、D,然后在LE端加鎖存脈沖,輸入端的數(shù)據(jù)被鎖存并譯碼驅(qū)動數(shù)碼管顯示。單片機(jī)P2口的低4位被用做顯示數(shù)據(jù)的輸出口,與4片CD4511的數(shù)據(jù)輸入端相并接,單片機(jī)的P1.1~P1.4被用做4片CD4511的數(shù)據(jù)鎖存控制。當(dāng)進(jìn)行數(shù)據(jù)顯示時,4位數(shù)碼管的顯示數(shù)據(jù)代碼被依次送到CD4511的輸入端,并由鎖存信號依次鎖存。最高位的數(shù)碼管小數(shù)點(diǎn)一直點(diǎn)亮,顯示數(shù)據(jù)格式為0.000,即1位整數(shù)、3位小數(shù)。圖8-8顯示電路

2.按鍵電路按鍵電路如圖8-9所示。該電路采用獨(dú)立式鍵盤,外接上拉電阻后接在P0口的低四位。圖8-9按鍵電路8.5軟件設(shè)計8.5.1系統(tǒng)程序結(jié)構(gòu)系統(tǒng)的主程序結(jié)構(gòu)如圖8-10所示。系統(tǒng)上電之后先進(jìn)行必要的初始化操作,然后讀取按鍵的狀態(tài),再通過按鍵來設(shè)置測距儀距離測量的模式。在初始化程序中先設(shè)置狀態(tài)指示燈全部點(diǎn)亮,數(shù)碼管顯示0.000,設(shè)置相關(guān)的I/O端口狀態(tài)以及進(jìn)行內(nèi)部寄存器、定時計數(shù)器及中斷初始化等。初始化完成之后系統(tǒng)即進(jìn)入到鍵掃描、處理程序中。程序中定義了全局變量key,用于存放按鍵值,按鍵值的對應(yīng)關(guān)系為:0x01表示按鍵S1,0x02表示按鍵S2,0x03表示按鍵3,0x04表示按鍵S4。在按鍵處理程序中根據(jù)不同的按鍵值執(zhí)行相應(yīng)的處理程序,以完成相應(yīng)的測量要求。圖8-10程序主流程圖8.5.2按鍵1處理程序設(shè)計如圖8-11所示為按鍵1處理程序流程。在初始化完成之后,如果按下按鍵1,則系統(tǒng)進(jìn)入循環(huán)測試模式,在該模式下系統(tǒng)不斷檢測被測距離,并把結(jié)果送LED數(shù)碼管進(jìn)行顯示。為了提高測量的準(zhǔn)確度和穩(wěn)定性,循環(huán)測試中采用了簡單的數(shù)字平均濾波算法,即進(jìn)行連續(xù)5次測量,然后求5次測量的平均值,再把該平均值送顯示口顯示。每次測量時發(fā)射出去的超聲波信號可能無法被接收探頭檢測到,這樣用于計時的定時器將一直計數(shù),檢測接收信號的外中斷也無法被觸發(fā),這樣就可能造成測距儀的死鎖而無法正常工作。為了防止這種情況的發(fā)生設(shè)置了超時標(biāo)志位f_over,當(dāng)正常測量時,定時器不會溢出,f_over位不會置位,否則,如果超聲波探頭不能接收到有效的信號,定時器將溢出,f_over被置位,當(dāng)前的一次測量將被作為無效測量處理。進(jìn)入到循環(huán)測量模式之后,如果再次按下按鍵1則程序退出循環(huán)測試模式。圖8-11按鍵1處理程序流程8.5.3其他按鍵處理程序設(shè)計

1.按鍵2處理程序按鍵2的處理程序?qū)嶋H上就是單次測量程序。在系統(tǒng)初始化完成后,如果按下按鍵2,則系統(tǒng)進(jìn)入單次測量模式,在該模式下只進(jìn)行一次距離測量,并把測量結(jié)果顯示出來,如果再次按下按鍵2則重新進(jìn)行測量并顯示結(jié)果。在該模式下,測量結(jié)束后系統(tǒng)實(shí)際上已經(jīng)回到主循環(huán),但測量結(jié)果一直顯示,直到有新的鍵命令被輸入。

2.按鍵3處理程序按鍵3的處理程序與按鍵2的處理程序相似,不同點(diǎn)在于每次測量完成后顯示結(jié)果僅保留1s,然后顯示回零,因此該模式成為單次測量延遲回零模式。

3.按鍵4處理程序按鍵4用來設(shè)置測距儀工作于反射工作模式還是對射工作模式,上電初始化為反射工作模式,如果按鍵4被按下就可以切換到對射工作模式,當(dāng)然再次按下按鍵4也可以從對射工作模式切換回反射工作模式。8.5.4子程序及中斷服務(wù)程序設(shè)計

1)按鍵掃描程序該程序?qū)崿F(xiàn)按鍵掃描功能,如果有按鍵按下則帶回相應(yīng)的按鍵值,如果無按鍵按下則帶回的按鍵值為0xff。按鍵值為0xff。/**********按鍵掃描*********/uchar key_scan(){uchar i,j=0xFF;kd|=0x0F;key_led=kd;_nop_();_nop_();i=key_led;i=~i;i&=0x0F;if(i!=0){delay(10); //消抖

i=key_led;i=~i;i&=0x0F;if(i!=0){switch(i) //按鍵判斷

{case0x01:j=0x01;break;case0x02:j=0x02;break;case0x04:j=0x03;break;case0x08:j=0x04;break;default:break;}do{i=key_led;i=~i;i&=0x0F; }while(i); //等待按鍵釋放

}}returnj;}

2)超聲波發(fā)送程序先發(fā)送20個方波的脈沖,發(fā)射完成后延時10個方波的時間來避開盲區(qū),以防超聲波未經(jīng)反射直接進(jìn)入接收探頭,最后打開計時、接收中斷。

/******發(fā)送脈沖*****/

voidsend()

{

flag=0;

time_end=0;

T0_init();

T2_init();

while(time_end==0);

time_end=0;

T00_init();

TR0=1;

while(TF0==0);

TR0=1;

TF0=0;

TH1=0;

TL1=0;

IE1=0;

EX1=1;

EA=1;

ET1=1;

TR1=1;}

3)定時器T0的中斷程序定時器T0被用來控制發(fā)射超聲波脈沖的數(shù)目。每次測量時發(fā)送20個40kHz的脈沖信號,當(dāng)脈沖發(fā)送開始時同時啟動定時器T0,當(dāng)T0中斷時表示20個脈沖發(fā)送完畢。在中斷處理程序中關(guān)閉定時器T2,將停止超聲波信號的發(fā)射。

4)接收和溢出中斷外部中斷INT1作為超聲波脈沖接收中斷,在初始化時被設(shè)置為下降沿觸發(fā)。當(dāng)接收到超聲波信號后INT1中斷,在該中斷處理程序中將定時器T1的計數(shù)值保存,并關(guān)閉INT1和定時器T1的定時中斷,最后置位接收中斷標(biāo)志位flag后返回,flag表示成功地接收到了超聲波信號。當(dāng)INT1直到定時計數(shù)器T1的溢出中斷已經(jīng)發(fā)生還沒有觸發(fā),則說明發(fā)射的超聲波信號未被接收到,可能是探頭未對準(zhǔn)障礙物沒有足夠強(qiáng)的信號被反射回來或測量超范圍,此時可以調(diào)整重新測量。當(dāng)T1溢出中斷發(fā)生時,在其中斷程序中會設(shè)置f_over=1,表示測量超時,中斷返回后依據(jù)此標(biāo)志的置位終止當(dāng)前的一次測量,這樣就能防止程序發(fā)生死鎖現(xiàn)象。8.6程序清單

1.頭文件

typedef unsignedchar uchar;

typedef unsignedchar code ucharc;

typedef unsignedint uint;

typedef unsignedlongint ulong;

/*****位變量定義******/

sbit

clk=P1^0;

sbit

le1=P1^1;

sbit

le2=P1^2;

sbit

le3=P1^3;

sbit

le4=P1^4;

sbit

fmq=P3^7;sbit led1=P0^4;sbit led2=P0^5;sbit led3=P0^6;sbit led4=P0^7;sbit CS_F=P3^6;/******全局變量定義*******/uchar bdatakd;sbitls1=kd^4;sbitls2=kd^5;sbitls3=kd^6;sbitls4=kd^7;bitflag,time_end,f_over,f_h;ucharkey;ulong temp;ulongdis[5]={0,0,0,0,0};uchar tl=0,th=0;uchardisbuf[4]={0,0,0,0};

2.程序文件

/*************************/

/******超聲波測距儀*******/

/*************************/

#include<regx52.h>

#include<intrins.h>

#include<chaoshengbo.h>

#definedateportP2

#definekey_ledP0

/******函數(shù)定義*******/

voiddelay(uint);

voidT0_init(void);

voidT00_init(void);

voidT1_init(void);voidT2_init(void);voidINT1_init(void);voidT0_ON();voidT1_ON();voidINT1_ON();voidMCU();voidsend();voidadd();voiduFiliter();voiddate_div();voiddisplay(uint,uint,uint,uint);ucharkey_scan();voidkey1();voidkey2();voidkey3();voidkey4();/******延時Zms******/voiddelay(uintz){uinti,j;for(i=0;i<z;i++)for(j=0;j<200;j++);}/******發(fā)脈沖定時******///用于定時發(fā)送10個超聲波信號所用的時間//超聲波周期為25μs,20×25=500μsvoidT0_init(void){uchari;i=TMOD;i|=0x01;TMOD=i;TH0=(65536-1000)/256;TL0=(65536-1000)%256;//N=(1/40000)*1000000*20*0.5TF0=0;TR0=0;ET0=0;EA=0;}/********定時延時********/voidT00_init(void){uchari;i=TMOD;i|=0x01;TMOD=i;TH0=(65536-500)/256;TL0=(65536-500)%256;//N=(1/40000)*1000000*10*0.5TF0=0;TR0=0;ET0=0;EA=0;}/*****T2發(fā)脈沖并開定時中斷******/voidT2_init(void){T2MOD=0x02; //T2OE=1,T2的允許輸出位

C_T2=0; //定時模式

TH2=(65536-150)/256;TL2=(65536-150)%256;RCAP2H=(65536-150)/256;RCAP2L=(65536-150)%256;TR0=1; //定時器T0定時250μs開始

TR2=1; //定時器T2使能,開始發(fā)送超聲波

ET0=1;EA=1;}/*****傳播時間計時設(shè)置******/voidT1_init(void){uchari;i=TMOD;i|=0x10;TMOD=i;TF1=0;TR1=0;ET1=0;}/*****脈沖接收中斷初始化設(shè)置******/voidINT1_init(void){IT1=1;EX1=0;IE1=0;}/********T0脈沖發(fā)完********/voidT0_ON()interrupt1using1{clk=1;TR0=0;TR2=0;ET0=0;EA=0;time_end=1;}/*****脈沖發(fā)完,開始計時和接收中斷******/voidINT1_ON()interrupt2using2{TR1=0;TF1=0;ET1=0;EA=0;EX1=0;

IE1=0;th=TH1;tl=TL1;flag=1;}//voidT1_ON()interrupt3using3{TR1=0;TF1=0;

ET1=0;EA=0;EX1=0;IE1=0;

f_over=1;}/******發(fā)送脈沖*****/voidsend(){flag=0;time_end=0;T0_init();T2_init();while(time_end==0);time_end=0;T00_init();TR0=1;while(TF0==0);TR0=1;

TF0=0;TH1=0;TL1=0;IE1=0;EX1=1;EA=1;ET1=1;TR1=1;}

/******計算******/voidadd(){temp=th*256+tl;temp=temp+1500;temp-=150;temp/=2;if(f_h==0)temp/=2;temp*=34;temp/=100;}/*********算術(shù)平均濾波**********/voiduFiliter(){

temp=0;temp+=dis[0];temp+=dis[1];temp+=dis[2];temp+=dis[3];temp+=dis[4];temp/=5;}/******數(shù)據(jù)分離******/voiddate_div(){ulongi;i=temp;disbuf[0]=i/1000;i%=1000;disbuf[1]=i/100;i%=100;disbuf[2]=i/10;i%=10;disbuf[3]=i;}/*****顯示******/voiddisplay(uintq,uintb,uints,uintg){le1=0;dateport=q;le1=1;le2=0;dateport=b;le2=1;le3=0;

dateport=s;le3=1;le4=0;dateport=g;le4=1;}/**********按鍵掃描*********/ucharkey_scan(){uchari,j=0xFF;kd|=0x0F;key_led=kd;_nop_();_nop_();i=key_led;i=~i;i&=0x0F;if(i!=0){delay(10);//消抖

i=key_led;i=~i;i&=0x0F;if(i!=0){switch(i)//按鍵判斷

{case0x01:j=0x01;break;case0x02:j=0x02;break;case0x04:j=0x03;break;case0x08:j=0x04;break;default:break;}do{i=key_led;i=~i;i&=0x0F; }while(i); //等待按鍵釋放

}}returnj;}/*********按鍵1處理********///循環(huán)測試模式voidkey1(){ucharj=0;bitrep_end;ls1=0;ls2=1;ls3=1;key_led=kd;do{/*****循環(huán)測試5次求平均值*****/do{send();do{if(flag==1)break; //計時到時flag=1if(f_over==1)break; //計數(shù)器溢出時f_over=1}while(1);if(flag==1){flag=0;add();dis[j++]=temp; //存放測量的五個數(shù)據(jù)

}if(f_over==1){f_over=0;}delay(50);}while(j!=5);j=0;uFiliter(); //測量的五個數(shù)據(jù)求平均值

date_div();display(disbuf[0],disbuf[1],disbuf[2],disbuf[3]);delay(1000);key=key_scan(); //掃描有無跳出按鍵

if(key==0x01)rep_end=1;if(rep_end==1) //有跳出按鍵時返回

{ls1=1;ls2=1;ls3=1;key_led=kd;d

溫馨提示

  • 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

提交評論