基于單片機(jī)的超聲波測(cè)距系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)報(bào)告重(共31頁(yè))_第1頁(yè)
基于單片機(jī)的超聲波測(cè)距系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)報(bào)告重(共31頁(yè))_第2頁(yè)
基于單片機(jī)的超聲波測(cè)距系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)報(bào)告重(共31頁(yè))_第3頁(yè)
基于單片機(jī)的超聲波測(cè)距系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)報(bào)告重(共31頁(yè))_第4頁(yè)
基于單片機(jī)的超聲波測(cè)距系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)報(bào)告重(共31頁(yè))_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、指導(dǎo)教師評(píng)定(pngdng)成績(jī): 審定(shndng)成績(jī): 自 動(dòng) 化 學(xué) 院計(jì)算機(jī)控制技術(shù)課程設(shè)計(jì)報(bào)告(bogo) 設(shè)計(jì)題目:基于單片機(jī)的超聲波測(cè)距系統(tǒng)設(shè)計(jì)單位(二級(jí)學(xué)院): 學(xué) 生 姓 名: 專 業(yè): 班 級(jí): 學(xué) 號(hào): 指 導(dǎo) 教 師: 負(fù) 責(zé) 項(xiàng) 目: 設(shè)計(jì)時(shí)間:二一四 年 五 月自動(dòng)化學(xué)院制目錄(ml)TOC o 1-3 u 一、設(shè)計(jì)(shj)題目 PAGEREF _Toc26366 1 基于(jy)51單片機(jī)的超聲波測(cè)距系統(tǒng)設(shè)計(jì) PAGEREF _Toc23396 1 設(shè)計(jì)要求 PAGEREF _Toc9984 1摘要 PAGEREF _Toc1779 2二、設(shè)計(jì)報(bào)告正文 PA

2、GEREF _Toc10035 3 2.1 超聲波測(cè)距原理 PAGEREF _Toc11479 3 2.2系統(tǒng)總體方案設(shè)計(jì) PAGEREF _Toc13492 4 2.3主要元件選型及其結(jié)構(gòu) PAGEREF _Toc12017 5 2.4硬件實(shí)現(xiàn)及單元電路設(shè)計(jì)9 2.5系統(tǒng)的軟件設(shè)計(jì) PAGEREF _Toc13868 13三、設(shè)計(jì)總結(jié)17四、參考文獻(xiàn)17五、附錄18 附錄一:總體電路圖18 附錄二:系統(tǒng)源代碼18 一、設(shè)計(jì)(shj)題目基于(jy)51單片機(jī)的超聲波測(cè)距系統(tǒng)(xtng)設(shè)計(jì)設(shè)計(jì)要求1、以51系列單片機(jī)為核心,控制超聲波測(cè)距系統(tǒng);2、測(cè)量范圍為:2cm4m,測(cè)量精度:1cm;3

3、、通過(guò)鍵盤電路設(shè)置報(bào)警距離,測(cè)出的距離通過(guò)顯示電路顯示出來(lái);4、當(dāng)所測(cè)距離小于報(bào)警距離時(shí),聲光報(bào)警裝置報(bào)警加以提示;5、設(shè)計(jì)出相應(yīng)的電子電路和控制軟件流程及源代碼,并制作實(shí)物。摘要(zhiyo) 超聲波具有傳播距離遠(yuǎn)、能量耗散少、指向性強(qiáng)等特點(diǎn),在實(shí)際應(yīng)用中常利用這些特點(diǎn)進(jìn)行距離測(cè)量。超聲波測(cè)距具有非接觸式、測(cè)量快速、計(jì)算簡(jiǎn)單、應(yīng)用性強(qiáng)的特點(diǎn),在汽車倒車?yán)走_(dá)系統(tǒng)、液位測(cè)量等方面應(yīng)用廣泛。本次課設(shè)利用超聲波傳播中距離與時(shí)間的關(guān)系為基本原理,以STC89C52單片機(jī)為核心進(jìn)行控制及數(shù)據(jù)處理(chl),通過(guò)外圍電源、顯示、鍵盤、聲光報(bào)警等電路實(shí)現(xiàn)系統(tǒng)供電、測(cè)距顯示、報(bào)警值設(shè)置及報(bào)警提示的功能。軟件部

4、分采用了模塊化的設(shè)計(jì),由系統(tǒng)主程序及各功能部分的子程序組成。超聲波回波信號(hào)輸入單片機(jī),經(jīng)單片機(jī)綜合分析處理后實(shí)現(xiàn)其預(yù)定功能。關(guān)鍵詞:STC89C52單片機(jī); HC-SR04; 超聲波測(cè)距二、設(shè)計(jì)(shj)報(bào)告正文2.1 超聲波測(cè)距原理(yunl) 常用的超聲測(cè)距的方法是回聲探測(cè)法,超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射時(shí)刻的同時(shí)計(jì)數(shù)器開始計(jì)時(shí),超聲波在空氣(kngq)中傳播,途中碰到障礙物面阻擋就立即反射回來(lái),超聲波接收器收到反射回的超聲波就立即停止計(jì)時(shí)。設(shè)超聲波在空氣中的傳播速度為340m/s(不計(jì)介質(zhì)溫度變化對(duì)速度的影響),根據(jù)計(jì)時(shí)器記錄的時(shí)間t,就可以計(jì)算出發(fā)射點(diǎn)距障礙物面的距離s,即

5、:s=340t/2。 如圖2-1所示: t超聲波發(fā)射 障礙物 S H 超聲波接收?qǐng)D2-1 超聲波的測(cè)距原理 (2-1) (2-2)式中: L兩探頭中心之間距離的一半;又知道超聲波傳播的距離為: (2-3) 式中: v超聲波在介質(zhì)(jizh)中的傳播速度; t超聲波從發(fā)射到接收所需要(xyo)的時(shí)間;將式2-1、2-2、2-3聯(lián)立得: (2-4) 其中,超聲波的傳播速度v在一定的溫度下是一個(gè)常數(shù)(例如在溫度T=30度時(shí),V=349m/s);當(dāng)需要(xyo)測(cè)量的距離H遠(yuǎn)遠(yuǎn)大于L時(shí),上式變?yōu)? (2-5) 所以,只要需要測(cè)量出超聲波傳播的時(shí)間t,就可以得出測(cè)量的距離H.2.2系統(tǒng)總體方案設(shè)計(jì) 本超

6、聲波測(cè)距系統(tǒng)由系統(tǒng)硬件電路及軟件程序?qū)崿F(xiàn)兩部分構(gòu)成。其中由STC89C52單片機(jī)最小系統(tǒng)、HC-SR04超聲波模塊、電源接口電路、4位共陽(yáng)極數(shù)碼管顯示電路、三極管驅(qū)動(dòng)電路、蜂鳴器聲光報(bào)警電路及鍵盤電路構(gòu)成硬件系統(tǒng)。以STC89C52單片機(jī)為核心,通過(guò)觸發(fā)信號(hào)控制HC-SR04超聲波測(cè)距模塊發(fā)射超聲波并接收回波,測(cè)算出前方障礙的距離,輸入單片機(jī)進(jìn)行運(yùn)算,與預(yù)設(shè)報(bào)警距離比較后判斷是否啟動(dòng)蜂鳴器聲光報(bào)警裝置。 根據(jù)系統(tǒng)功能要求及模塊劃分可繪制出系統(tǒng)硬件框圖,如圖2-2所示:電源接口電路STC89C52單片機(jī)最小系統(tǒng)超聲波測(cè)距模塊顯示模塊鍵盤模塊聲光報(bào)警電路圖2-2 系統(tǒng)(xtng)硬件框圖2.3主要

7、(zhyo)元件選型及其結(jié)構(gòu)2.3.1 STC89C52芯片(xn pin)STC89C52是STC公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash存儲(chǔ)器。工作電壓:5.5V3.3V。STC89C52使用經(jīng)典的MCS-51內(nèi)核,但做了很多的改進(jìn)使得芯片具有傳統(tǒng)51單片機(jī)不具備的功能。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,看門狗定時(shí)器,內(nèi)置4KB EEPROM,MAX810復(fù)位電路

8、,3個(gè)16 位定時(shí)器/計(jì)數(shù)器,4個(gè)外部中斷,一個(gè)7向量4級(jí)中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級(jí)中斷結(jié)構(gòu)),全雙工串行口。另外 STC89C52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。最高運(yùn)作頻率35MHz,6T/12T可選。其引腳圖如圖2-3所示: a 引腳圖 b 實(shí)物圖圖2-3 STC89C52引腳圖2.3.2 HC-SR04超聲波模塊(m kui) HC-SR04超聲波模塊具有性能穩(wěn)定(wndng)、

9、測(cè)度距離精確、模塊高精度、盲區(qū)小等特點(diǎn),使用簡(jiǎn)單易操作,常用于距離測(cè)量。其原理圖及實(shí)物圖如圖2-4、圖2-5所示:圖2-4 HC-SR04超聲波模塊(m kui)原理圖圖2-5 HC-SR04超聲波模塊(m kui)實(shí)物圖(1)接線方式(fngsh):VCC(接電源)、Trig(控制端)、Echo(接收端)、GND(接 地)(2)基本(jbn)工作原理: a.采用(ciyng)I/O口TRIG觸發(fā)測(cè)距,給至少10us的高電平信號(hào); b.模塊自動(dòng)發(fā)送8個(gè)40kHz的方波,自動(dòng)檢測(cè)是否(sh fu)有信號(hào)返回; c.有信號(hào)返回,通過(guò)I/O口ECHO輸出一個(gè)高電平,同時(shí)開始計(jì)時(shí)直到此口 變?yōu)榈碗娖剑?/p>

10、高電平持續(xù)的時(shí)間就是超聲波從發(fā)射到返回的時(shí)間。 測(cè)試距離=(高電平時(shí)間*聲速(340M/S)/2。 (3)電氣參數(shù)表1 HC-SR04電氣參數(shù)表(4)超聲波時(shí)序圖圖2-6 超聲波時(shí)序圖(5)操作: 初始化時(shí)將trig和echo端口都置低,首先(shuxin)向給trig發(fā)送至少10 us的高電平脈沖(模塊自動(dòng)向外發(fā)送8個(gè)40kHz的方波),然后等待,捕捉echo端輸出上升沿,捕捉到上升沿的同時(shí),打開定時(shí)器開始計(jì)時(shí),再次等待捕捉echo的下降沿,當(dāng)捕捉到下降沿,讀出計(jì)時(shí)器的時(shí)間,這就是超聲波在空氣中運(yùn)行的時(shí)間,按照測(cè)試距離=(高電平時(shí)間*聲速(shn s)(340M/S)/2就可以算出超聲波到障

11、礙物的距離。 2.3.3 4位共陽(yáng)數(shù)碼管(1)共陽(yáng)數(shù)碼管的實(shí)物圖、原理圖如圖2-7、圖2-8所示:圖2-7 4位共陽(yáng)數(shù)碼管實(shí)物圖圖2-8 4位共陽(yáng)數(shù)碼管原理圖工作(gngzu)原理:共陽(yáng)數(shù)碼管是指將所有發(fā)光二極管的陽(yáng)極接到一起形成公共陽(yáng)極(COM)的數(shù)碼管。共陽(yáng)數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。(3)動(dòng)態(tài)顯示驅(qū)動(dòng):數(shù)碼管動(dòng)態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的8個(gè)顯示筆劃a,b,c,d,e,f,g,dp的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增

12、加位選通控制電路,位選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究竟是那個(gè)數(shù)碼管會(huì)顯示出字形,取決于單片機(jī)對(duì)位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒(méi)有選通的數(shù)碼管就不會(huì)亮。通過(guò)分時(shí)輪流控制各個(gè)數(shù)碼管的的COM端,就使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)。在輪流顯示過(guò)程中,每位數(shù)碼管的點(diǎn)亮?xí)r間為12ms,由于人的視覺(jué)暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感。2.4 硬件實(shí)現(xiàn)(shxin)及單元電路設(shè)計(jì)(1)

13、單片機(jī)最小系統(tǒng)(xtng) 單片機(jī)系統(tǒng)由電源、晶振電路、復(fù)位(f wi)電路組成。如圖2-9所示:圖2-9 單片機(jī)最小系統(tǒng)(2)電源接口電路設(shè)計(jì) 電源部分的設(shè)計(jì)采用3節(jié)5號(hào)干電池4.5V供電,如圖2-10所示:圖2-10 電源接口電路(dinl)(3)超聲波模塊接口 HC-SR04超聲波模塊接口如圖2-11所示:圖2-11 HC-SR04超聲波模塊接口(4) 4位共陽(yáng)極數(shù)碼管顯示電路(dinl)及三極管驅(qū)動(dòng)電路 顯示(xinsh)電路如圖2-12所示:圖2-12 4位共陽(yáng)數(shù)碼管顯示(xinsh)電路當(dāng)I/O口輸出低電平時(shí),相應(yīng)段被選通,反之(fnzh)則不然。三極管驅(qū)動(dòng)(q dn)電路如圖2-

14、13所示:圖2-13 三極管驅(qū)動(dòng)電路當(dāng)I/O口輸出低電平時(shí),相應(yīng)位被選通,反之則不然。(5)聲光報(bào)警電路的設(shè)計(jì) 聲光報(bào)警電路如圖2-14所示:圖2-14 聲光報(bào)警電路(dinl)聲光報(bào)警電路由一個(gè)蜂鳴器、一個(gè)三極管、一個(gè)發(fā)光二極管、兩個(gè)電阻構(gòu)成。其中(qzhng)電阻起限流的作用,當(dāng)I/O口輸出低電平時(shí),三極管飽和導(dǎo)通,蜂鳴器報(bào)警、LED亮,反之則不報(bào)警。(6)鍵盤電路(dinl)的設(shè)計(jì)鍵盤電路如圖2-15所示:圖2-15 鍵盤電路2.5系統(tǒng)的軟件設(shè)計(jì)(1)各主要模塊 = 1 * GB3 * MERGEFORMAT 超聲波測(cè)距模塊。給超聲波Trig口至少10us的高電平,啟動(dòng)測(cè)量,定時(shí) 器T0

15、計(jì)時(shí),通過(guò)計(jì)算測(cè)得距離。 = 2 * GB3 * MERGEFORMAT 顯示模塊。包括數(shù)碼管位選函數(shù)、段選函數(shù)及距離處理顯示模塊。將超聲 波測(cè)距測(cè)量值、報(bào)警設(shè)定值顯示在4位數(shù)碼管上。 = 3 * GB3 * MERGEFORMAT 鍵盤(jinpn)模塊。由鍵盤檢測(cè)(jin c)函數(shù)及鍵盤處理函數(shù)組成。有設(shè)定鍵、加鍵、減鍵、 復(fù)位(f wi)鍵、開關(guān)鍵。主要設(shè)置報(bào)警值。 = 4 * GB3 * MERGEFORMAT 聲光報(bào)警模塊。將測(cè)量值與設(shè)定報(bào)警值比較,若小于設(shè)定值,報(bào)警。 = 5 * GB3 * MERGEFORMAT 特殊存儲(chǔ)器eepom模塊。包括單片機(jī)eepom存儲(chǔ)器讀、寫操作以及

16、初始化。 其內(nèi)存儲(chǔ)設(shè)定報(bào)警值,掉電數(shù)據(jù)不丟失。 = 6 * GB3 * MERGEFORMAT 定時(shí)器模塊。TO定時(shí)器用于超聲波測(cè)距的計(jì)時(shí)。T1定時(shí)器用于主程序掃 描時(shí)間的控制。(2)主程序源代碼 void main()send_wave(); /測(cè)距離函數(shù)smg_display(); /處理距離顯示函數(shù)time_init(); /定時(shí)器初始化init_eepom(); /初始化eepom(讀取set_d)while(1)if(flag_300ms = 1) /300ms執(zhí)行一次flag_300ms = 0;clock_h_l(); /報(bào)警函數(shù)send_wave(); /測(cè)距離函數(shù)if(men

17、u_1 = 0) /沒(méi)有鍵按下時(shí)才給緩沖數(shù)組賦新值smg_display(); /處理距離顯示函數(shù)if(zd_break_en = 1) /自動(dòng)退出設(shè)置界面程序zd_break_value +; /每300ms加一次if(zd_break_value 100) /30秒后自動(dòng)退出設(shè)置界面menu_1 = 0; smg_i = 3;zd_break_en = 0;zd_break_value = 0; key(); /按鍵檢測(cè)(jin c)函數(shù)if(key_can P32* 超聲波接收=P33 按鍵用的接口是P2口*待改進(jìn)的地方:溫度補(bǔ)償,提高精度*當(dāng)前的缺陷: 不能測(cè)出4m的距離*測(cè)量單位:米

18、(m)*/#include #include #include #include #define uchar unsigned char #define uint unsigned int/數(shù)碼管段選定義 設(shè) 0 1 2 3 4 5 6 7 8 9uchar code smg_duan=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;/數(shù)碼管位選uchar dis_smg4 =0,1,2,3;sbit smg_we1 = P34; /數(shù)碼管位選端口sbit smg_we2 = P35;sbit smg_we3 = P36;

19、sbit smg_we4 = P37;sbit c_send = P31; /超聲波發(fā)射sbit c_recive = P30; /超聲波接收uchar flag_hc_value; /超聲波中間變量sbit beep = P23; /蜂鳴器IO口定義uchar smg_i = 3; /顯示(xinsh)數(shù)碼管的個(gè)數(shù):3bit flag_300ms ; /主程序300ms處理(chl)一次的標(biāo)識(shí)符 bit key_500ms ; /按鍵程序(chngx)500ms處理一次的標(biāo)識(shí)符long distance; /定義測(cè)量距離uint set_d; /定義設(shè)定距離uchar flag_csb_ju

20、li; /超聲波超出量程 long flag_time0; /按鍵的IO變量的定義uchar key_can; /按鍵值的變量uchar zd_break_en,zd_break_value; /自動(dòng)退出設(shè)置界面uchar menu_ljsd = 10; /用來(lái)控制連加的速度bit flag_lj_en; /按鍵連加使能bit flag_lj_3_en; /按鍵連3次連加后使能 加的數(shù)就越大了 uchar key_time; /定時(shí)器用,作為連加的中間變量,按鍵時(shí)間uchar flag_value;/定時(shí)器用,作為連加的中間變量uchar menu_1; /菜單設(shè)計(jì)的變量uchar a_a;

21、/設(shè)定值寫入單片機(jī)標(biāo)志符/*數(shù)碼管位選函數(shù)*/void smg_we_switch(uchar i)switch(i)case 3: smg_we1 = 0; smg_we2 = 1; smg_we3 = 1; smg_we4 = 1; break;case 2: smg_we1 = 1; smg_we2 = 0; smg_we3 = 1; smg_we4 = 1; break;case 1: smg_we1 = 1; smg_we2 = 1; smg_we3 = 0; smg_we4 = 1; break;case 0: smg_we1 = 1; smg_we2 = 1; smg_we3 =

22、 1; smg_we4 = 0; break;/*數(shù)碼管顯示函數(shù)*/void display()static uchar i; i+;if(i = smg_i) /smg_i=3,i = 0;smg_we_switch(i); /調(diào)用位選函數(shù)P1 = dis_smgi; /段選 /*把數(shù)據(jù)(shj)保存到單片機(jī)內(nèi)部eepom中*/void write_eepom()SectorErase(0 x2000);byte_write(0 x2000, set_d % 256);/寫入set_d值byte_write(0 x2001, set_d / 256);byte_write(0 x2058,

23、a_a);/a_a標(biāo)識(shí)符/*把數(shù)據(jù)(shj)從單片機(jī)內(nèi)部eepom中讀出來(lái)*/void read_eepom()set_d = byte_read(0 x2001);/讀出set_d值set_d = 5) /確認(rèn)(qurn)無(wú)鍵按下key_value = 0;key_new = 1; /置位key_new,表初始(ch sh)無(wú)鍵按下flag_lj_en = 0; /關(guān)閉(gunb)連加的使能flag_lj_3_en = 0; /關(guān)閉3秒后連加的使能flag_value = 0; /連加變量清零key_time = 0; write_eepom(); /值(set_d)寫入單片機(jī)else /初

24、始無(wú)鍵按下if(P2 & 0 x07) != 0 x07) /按鍵檢測(cè)(5次)key_value +; else key_value = 0;if(key_value = 5) /確認(rèn)按鍵key_value = 0;key_new = 0;flag_lj_en = 1; /連加使能zd_break_en = 1; /自動(dòng)退出設(shè)置界使能zd_break_value = 0; /自動(dòng)退出設(shè)置界變量清零,30秒后退出設(shè)置界面key_can = 20;if(key_500ms = 1) /連按500ms,啟動(dòng)連加key_500ms = 0;key_new = 0;key_old = 1;zd_brea

25、k_value = 0; /自動(dòng)退出設(shè)置界變量清零,30秒后退出設(shè)置界面if(key_new = 0) & (key_old = 1) /確認(rèn)有鍵按下switch(P2 & 0 x07)case 0 x06: key_can = 1; break; /得到k2鍵值(設(shè)定鍵)case 0 x05: key_can = 2; break; /得到k3鍵值(加)case 0 x03: key_can = 3; break; /得到k4鍵值(減) key_old = key_new; /初始化標(biāo)識(shí)符/*按鍵(n jin)處理數(shù)函數(shù)*/void key_with()if(key_can = 1) /得到

26、(d do)k2鍵值(設(shè)定鍵)menu_1 +;if(menu_1 = 2)menu_1 = 0;if(menu_1 = 0) /退出設(shè)定(sh dn)界面menu_ljsd = 10; /連加速度控制變量(復(fù)位為500ms)dis_smg0 = smg_duandistance % 10; /測(cè)量值顯示用dis_smg1 = smg_duandistance / 10 % 10 ; dis_smg2 = smg_duandistance / 100 % 10 & 0 x7f; smg_i = 3;if(menu_1 = 1) /設(shè)置界面menu_ljsd = 1; /連加速度變量(50ms)

27、dis_smg0 = smg_duanset_d % 10; /設(shè)定值顯示用dis_smg1 = smg_duanset_d / 10 % 10; dis_smg2 = smg_duanset_d / 100 % 10 & 0 x7f ; dis_smg3 = 0 x88;smg_i = 4; /A,設(shè)定值修改標(biāo)識(shí)符if(menu_1 = 1) /設(shè)置報(bào)警值if(flag_lj_3_en = 0) /三次連加之后速度加快menu_ljsd = 10 ; /500ms 加減一次else menu_ljsd = 1; /50ms 加減一次if(key_can = 2) /得到k3鍵值(加)set_

28、d + ; if(set_d 350)set_d = 350;dis_smg0 = smg_duanset_d % 10; /設(shè)定值顯示(xinsh)dis_smg1 = smg_duanset_d / 10 % 10 ; dis_smg2 = smg_duanset_d / 100 % 10 & 0 x7f; dis_smg3 = 0 x88;if(key_can = 3) /得到(d do)k4鍵值(減)set_d - ; if(set_d =0;i-) _nop_(); /執(zhí)行一條_nop_()指令就是1us /*超聲波測(cè)距程序(chngx)*/void send_wave()long

29、temp = 888;c_send = 1; /10us的高電平觸發(fā)(chf) delay();c_send = 0; TH0 = 0; /給定時(shí)器0清零(qn ln)TL0 = 0;TR0 = 0; /關(guān)定時(shí)器0定時(shí)flag_hc_value = 0;while(!c_recive); /當(dāng)c_recive為零時(shí)等待TR0=1;while(c_recive) /當(dāng)c_recive為1計(jì)數(shù)并等待flag_time0 = TH0 * 256 + TL0;if(flag_hc_value 1) | (flag_time0 21000) /當(dāng)超聲波超過(guò)測(cè)量范圍時(shí),顯示3個(gè)888TR0 = 0;fla

30、g_csb_juli = 2;temp = 888;flag_hc_value = 0;break ;else flag_csb_juli = 1;if(flag_csb_juli = 1) /距離處理TR0=0; /關(guān)定時(shí)器0定時(shí)EA = 0;temp = TH0; /讀出定時(shí)器0的時(shí)間temp = temp * 256 + TL0;temp /= 59; /HC-SR04超聲波模塊 距離(厘米)=T*uS/58.823EA = 1;if(temp 380) /如果大于3.8m就超出超聲波的量程temp = 888; EA = 0;distance = temp; /距離(jl) EA =

31、1;/*冒泡排序(最大值沉底)*/int iBuff5;void choise(int *a,int n) /選擇(xunz)法排序 int i,j,k,temp; for(i=0;in-1;i+) k=i; /給記號(hào)(j ho)賦值 for(j=i+1;jaj) k=j; /是k總是指向最小元素*/ if(i!=k) /當(dāng)k!=i是才交換,否則ai即為最小 temp=ai; ai=ak; ak=temp; /*測(cè)量距離處理及顯示函數(shù)*/void smg_display()int Buff5;char i;if(distance = 95)return; /95去掉iBuff4 = iBuff3;iBuff3 = iBuff2;iBuff2 = iBuff1;iBuff1 = iBuff0;iBuff0 = (int)distance;for(i = 0; i5; i+) Buffi = iBuffi;choise(Buff,5); /

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論