2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩22頁(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、<p>  《單片機(jī)原理及應(yīng)用》</p><p><b>  課程設(shè)計(jì)說(shuō)明書(shū)</b></p><p> 題目超聲波測(cè)距儀</p><p> 系(部)電信系</p><p> 專業(yè)(班級(jí))電氣一班</p><p> 姓名</p><p> 學(xué)號(hào)</p>

2、<p> 指導(dǎo)教師</p><p> 起止日期2013.6.10—6.21</p><p>  《單片機(jī)原理及應(yīng)用》課程設(shè)計(jì)任務(wù)書(shū)21</p><p> 課題名稱超聲波測(cè)距儀設(shè)計(jì)</p><p> 設(shè)計(jì)內(nèi)容及要求(1)課題內(nèi)容:設(shè)計(jì)一個(gè)以 STC89C52單片機(jī)為核心控制的超聲波測(cè)距儀。功能要求:1.測(cè)量距離范圍要求為0.10~5

3、.00m;2.測(cè)量精度為1cm;3.用12864液晶屏顯示相關(guān)信息,液晶屏的第一行顯示“超聲波測(cè)距儀”,第二行顯示設(shè)計(jì)者姓名和學(xué)號(hào),第三行顯示測(cè)量的距離值。 (2)要求:完成該系統(tǒng)的硬件和軟件的設(shè)計(jì),用單片機(jī)開(kāi)發(fā)板進(jìn)行驗(yàn)證。最后就課程設(shè)計(jì)本身提交一篇課程設(shè)計(jì)說(shuō)明書(shū)。</p><p> 設(shè)計(jì)工作量1、匯編或C51語(yǔ)言程序設(shè)計(jì);2、程序調(diào)試;3、在單片機(jī)開(kāi)發(fā)板上進(jìn)行下載調(diào)試;4、提交一份完整的課程設(shè)計(jì)說(shuō)明書(shū),包括設(shè)計(jì)

4、原理、程序設(shè)計(jì)、程序分析、調(diào)試過(guò)程,參考文獻(xiàn)、設(shè)計(jì)總結(jié)等。</p><p> 進(jìn)度安排起止日期(或時(shí)間量)設(shè)計(jì)內(nèi)容(或預(yù)期目標(biāo))備注</p><p> 第一天課題介紹,答疑,收集材料,C51介紹</p><p> 第二天設(shè)計(jì)方案論證,練習(xí)編寫(xiě)C51程序</p><p> 第三天~第六天程序設(shè)計(jì)</p><p> 第六天

5、~第八天 程序調(diào)試、仿真</p><p> 第九天~第十天系統(tǒng)測(cè)試并編寫(xiě)設(shè)計(jì)說(shuō)明書(shū)</p><p> 教研室意見(jiàn)年 月 日系(部)主管領(lǐng)導(dǎo)意見(jiàn)年 月 日</p><p><b>  目 錄</b></p><p><b>  摘 要2</b></p><p>&

6、lt;b>  1、基本原理3</b></p><p><b>  2、方案論證3</b></p><p>  3、系統(tǒng)硬件設(shè)計(jì)3</p><p>  3.1 STC89C52外圍電路設(shè)計(jì)4</p><p>  3.2 超聲波測(cè)距模塊電路設(shè)計(jì)5</p><p>  3.

7、3 顯示電路設(shè)計(jì)7</p><p>  4、系統(tǒng)軟件設(shè)計(jì)7</p><p>  4.1 系統(tǒng)軟件設(shè)計(jì)說(shuō)明7</p><p>  4.2編程語(yǔ)言的選擇8</p><p>  4.3超聲波測(cè)距儀的算法設(shè)計(jì)8</p><p>  4.4 超聲波發(fā)生子程序和超聲波接收中斷程序設(shè)計(jì)8</p><p

8、>  4.5 顯示子程序設(shè)計(jì)9</p><p>  4.6主程序流程圖9</p><p>  5、設(shè)計(jì)結(jié)果及分析10</p><p><b>  6、使用說(shuō)明11</b></p><p>  7、課程設(shè)計(jì)體會(huì)11</p><p><b>  參考文獻(xiàn)12</b&g

9、t;</p><p>  附錄:程序清單13</p><p><b>  摘 要</b></p><p>  由于超聲波指向性強(qiáng),能量消耗緩慢,在介質(zhì)中傳播的距離較遠(yuǎn),因而超聲波經(jīng)常用于距離的測(cè)量。利用超聲波檢測(cè)距離,設(shè)計(jì)比較方便,計(jì)算處理也較簡(jiǎn)單,并且在測(cè)量精度方面也能達(dá)到日常使用的要求。</p><p>  超聲

10、波測(cè)距儀,可應(yīng)用于汽車(chē)倒車(chē)、建筑施工工地以及一些工業(yè)現(xiàn)場(chǎng)的位置監(jiān)控,也可用于如液位、井深、管道長(zhǎng)度的測(cè)量等場(chǎng)合。利用超聲波指向性強(qiáng),能量消耗緩慢,在介質(zhì)中傳播的距離較遠(yuǎn),因而超聲波經(jīng)常用于距離的測(cè)量。利用超聲波檢測(cè)往往比較迅速、方便、計(jì)算簡(jiǎn)單、易于做到實(shí)時(shí)控制。</p><p>  本設(shè)計(jì)的超聲波測(cè)距儀利用超聲波傳輸中距離與時(shí)間的關(guān)系,采用以STC89C52單片機(jī)為核心進(jìn)行控制及數(shù)據(jù)處理,最終完成超聲波測(cè)距儀的硬

11、件電路和軟件設(shè)計(jì)。該測(cè)距儀主要由超聲波發(fā)射器電路、超聲波接收器電路、單片機(jī)控制電路、系統(tǒng)電源電路及LCD12864顯示電路構(gòu)成。整個(gè)程序采用模塊化設(shè)計(jì),由主程序、發(fā)射子程序、接收子程序、顯示子程序等模塊組成。各探頭的信號(hào)經(jīng)單片機(jī)綜合分析處理,實(shí)現(xiàn)超聲波測(cè)距器的各種功能。在此基礎(chǔ)上設(shè)計(jì)了系統(tǒng)的總體方案,最后通過(guò)硬件和軟件實(shí)現(xiàn)了各個(gè)功能模塊。</p><p>  關(guān)鍵詞:超聲波;STC89C52;LCD12864;測(cè)

12、距</p><p><b>  1、基本原理</b></p><p>  超聲波傳感器的工作原理是陶瓷的壓電效應(yīng)。超聲波傳感器在測(cè)量過(guò)程中,超聲測(cè)距器是根據(jù)超聲波遇到障礙物反射回來(lái)的特性進(jìn)行測(cè)量的。超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射同時(shí)開(kāi)始計(jì)時(shí),超聲波在空氣中傳播,途中碰到障礙物就立即返回來(lái),超聲波接收器收到反射波就立即中斷停止計(jì)時(shí)。 通過(guò)不斷檢測(cè)產(chǎn)生波發(fā)射后遇

13、到障礙物所反射的回波,從而測(cè)出發(fā)射超聲波和接收到回波的時(shí)間差△T,然后求出距離L。</p><p><b>  基本的測(cè)距公式為:</b></p><p>  S=(△T/2)*V </p><p>  式中 S——被測(cè)距離;</p><p>  △T——發(fā)射波和反射波之間的時(shí)間間隔; </p>&

14、lt;p>  V——超聲波在空氣中的聲速,常溫下取為340m/s 。</p><p>  聲速確定后,只要測(cè)出超聲波往返的時(shí)間,即可求得S 。</p><p><b>  2、方案論證</b></p><p>  超聲波測(cè)距的原理是利用超聲波的發(fā)射和接受,根據(jù)超聲波傳播的時(shí)間來(lái)計(jì)算出傳播距離。實(shí)用的測(cè)距方法有兩種,一種是在被測(cè)距離的兩端,

15、一端發(fā)射,另一端接收的直接波方式,適用于身高計(jì);一種是發(fā)射波被物體反射回來(lái)后接收的反射波方式,適用于測(cè)距儀。此次設(shè)計(jì)采用反射波方式。</p><p>  超聲波發(fā)生器可以分為兩大類(lèi):一類(lèi)是用電氣方式產(chǎn)生超聲波,一類(lèi)是用機(jī)械方式產(chǎn)生超聲波。電氣方式包括壓電型、電動(dòng)型等;機(jī)械方式有加爾統(tǒng)笛、液哨和氣流旋笛等。它們所產(chǎn)生的超聲波的頻率、功率和聲波特性各不相同,因而用途也各不相同。目前在近距離測(cè)量方面常用的是壓電式超聲波

16、換能器。根據(jù)設(shè)計(jì)要求并綜合各方面因素,本文采用STC89C52單片機(jī)作為控制器,用LCD12864顯示測(cè)量距離。</p><p>  測(cè)距儀的分辨率取決于對(duì)超聲波傳感器的選擇。超聲波傳感器是一種采用壓電效應(yīng)的傳感器,常用的材料是壓電陶瓷。由于超聲波在空氣中傳播時(shí)會(huì)有相當(dāng)?shù)乃p,衰減的程度與頻率的高低成正比;而頻率高分辨率也高,故短距離測(cè)量時(shí)應(yīng)選擇頻率高的傳感器,而長(zhǎng)距離的測(cè)量時(shí)應(yīng)用低頻率的傳感器。</p&g

17、t;<p>  圖2.1 超聲波測(cè)距器系統(tǒng)設(shè)計(jì)框圖</p><p>  本設(shè)計(jì)通過(guò)按鍵掃描是否啟動(dòng)測(cè)距,然后控制單片機(jī)發(fā)出一個(gè)脈沖是超聲波發(fā)生器產(chǎn)生超聲波,等到反射的回波數(shù)據(jù)被超聲波接收器接收后送給單片機(jī)處理,最后在LCD液晶屏上顯示測(cè)距結(jié)果。</p><p><b>  3、系統(tǒng)硬件設(shè)計(jì)</b></p><p>  硬件電路的

18、設(shè)計(jì)主要包括單片機(jī)系統(tǒng)及顯示電路、超聲波測(cè)距電路三部分。單片機(jī)采用STC89C52,采用12MHz高精度的晶振,以獲得穩(wěn)定時(shí)鐘頻率,減小測(cè)量誤差。單片機(jī)用P1.0端口輸出超聲波換能器所需的觸發(fā)信號(hào),利用外中斷0口(P3.2)監(jiān)測(cè)超聲波接收電路輸出的返回信號(hào)。顯示電路采用LCD12864顯示屏。</p><p>  3.1 STC89C52外圍電路設(shè)計(jì)</p><p>  STC89C52是

19、一種帶8K字節(jié)閃爍可編程可檫除只讀存儲(chǔ)器的低電壓,高性能COMOS8的微處理器,俗稱單片機(jī)。該器件采用ATMEL搞密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。</p><p>  單片機(jī)STC89C52作為主控芯片,控制整個(gè)電路的運(yùn)行。單片機(jī)外圍需要一個(gè)復(fù)位電路,復(fù)位電路的功能是:系統(tǒng)上電時(shí)提供復(fù)位信號(hào),直至系統(tǒng)電源穩(wěn)定后,撤消復(fù)位信號(hào)。為可靠起見(jiàn),電源穩(wěn)定后還要經(jīng)一定的延時(shí)才撤

20、銷(xiāo)復(fù)位信號(hào),以防電源開(kāi)關(guān)或電源插頭分-合過(guò)程中引起的抖動(dòng)而影響復(fù)位。該設(shè)計(jì)在電源電壓瞬間下降時(shí)可以使電容迅速放電,可令系統(tǒng)可靠復(fù)位。</p><p>  圖3.1 單片機(jī)復(fù)位電路</p><p>  STC89C52中有一個(gè)用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別為該反向放大器的輸入端和輸出端。這個(gè)反向放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起構(gòu)成自激

21、振蕩器。</p><p>  外接石英晶體(或陶瓷諧振器)及電容C1、C2接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。對(duì)外接電容C1、C2雖然沒(méi)有十分嚴(yán)格的要求,但電容容量的大小會(huì)輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程度及溫度穩(wěn)定性。如果使用石英晶體,電容應(yīng)該使用30pF。</p><p>  還可以使用外部時(shí)鐘。這種情況下,外部時(shí)鐘脈沖接X(jué)TAL1端,即內(nèi)部時(shí)鐘發(fā)生器的輸入

22、端, XTAL2應(yīng)懸空。</p><p>  由于外部時(shí)鐘信號(hào)是通過(guò)一個(gè)2分頻觸發(fā)器后作為內(nèi)部時(shí)鐘信號(hào)的,所以外部時(shí)鐘信號(hào)的占空比沒(méi)有特殊要求,但最小高電平持續(xù)時(shí)間和最大低電平持續(xù)時(shí)間應(yīng)符合產(chǎn)品技術(shù)條件的要求。</p><p>  時(shí)鐘電路的核心就是一個(gè)晶振,常用的晶振頻率有6MHZ、12MHZ,51單片機(jī)最大的晶振頻率為   20MHZ。由于單片機(jī)的機(jī)器周期為晶振周期的12分頻,故一般選

23、用12MHZ的晶振,此時(shí)恰好得到的機(jī)器周期為1us。</p><p>  圖3.2 時(shí)鐘電路</p><p>  圖3.3單片機(jī)最小系統(tǒng)實(shí)物圖 </p><p>  3.2 超聲波測(cè)距模塊電路設(shè)計(jì)</p><p>  這一部分采用DYP-ME007超聲波測(cè)距模塊。</p><p>  DYP-ME007超聲波測(cè)距模

24、塊可提供 3cm--3.5m的非接觸式距離感測(cè)功能,圖1為DYP-ME007外觀,包括超聲波發(fā)射器、接收器與控制電路。其基本工作原理為給予此超聲波測(cè)距模塊一觸發(fā)信號(hào)后發(fā)射超聲波,當(dāng)超聲波投射到物體而反射回來(lái)時(shí),模塊輸出一回響信號(hào),以觸發(fā)信號(hào)和回響信號(hào)間的時(shí)間差,來(lái)判定物體的距離。</p><p>  圖3.4 DYP-ME007超聲波測(cè)距模塊</p><p>  DYP-ME007電氣參

25、數(shù):</p><p><b>  模塊接線:</b></p><p>  使用上只需要 5V 電源供應(yīng)、0V 地</p><p>  線連接、觸發(fā)信號(hào)輸入、與回響信號(hào)輸出</p><p><b>  等四支接腳。</b></p><p><b>  注:</b

26、></p><p>  此模塊不宜帶電連接,若要帶電連接,</p><p>  則先讓模塊的 GND 端先連接,否則會(huì)</p><p>  影響模塊的正常工作。</p><p>  圖3.5 DYP-ME007模塊接線圖</p><p><b>  模塊時(shí)序圖:</b></p>

27、<p>  圖3.6 超聲波模塊時(shí)序圖</p><p>  你只需要提供一個(gè)短期的 10uS 脈沖觸發(fā)信號(hào)。該模塊內(nèi)部將發(fā)出 8 個(gè) 40kHz周期電平并檢測(cè)回波。一旦檢測(cè)到有回波信號(hào)則輸出回響信號(hào)?;仨懶盘?hào)是一個(gè)脈沖的寬度成正比的距離對(duì)象??赏ㄟ^(guò)發(fā)射信號(hào)到收到的回響信號(hào)時(shí)間間隔可以計(jì)算得到距離。公式: uS/58=厘米或者 uS/148=英寸。建議測(cè)量周期為 60ms以上,以防止發(fā)射信號(hào)對(duì)回響

28、信號(hào)的影響.</p><p>  3.3 顯示電路設(shè)計(jì)</p><p>  本設(shè)計(jì)采用的是無(wú)字庫(kù)的LCD12864液晶屏顯示模塊。</p><p>  圖3.7 12864硬件連接圖</p><p>  VCC和GND是最基本的電源,一般接5V即可,還有就是關(guān)于VEE以及VL(很多種屏稱作V0,不過(guò)都一樣了),一般接法如上圖所示即可,當(dāng)LC

29、D與單片機(jī)接線以及電源供給完畢以后,需要調(diào)節(jié)可變電阻的阻值,可以說(shuō)這個(gè)決定了液晶屏是否顯示。只有阻值在特定的位置區(qū)域以內(nèi)才會(huì)顯示。最后就是關(guān)于BL+和BL-了,這個(gè)是液晶屏的背光,一般直接接在VCC和GND上,當(dāng)然加小電阻限流同時(shí)可以使用DA或者普通的IO口來(lái)控制會(huì)更好。</p><p><b>  4、系統(tǒng)軟件設(shè)計(jì) </b></p><p>  4.1 系統(tǒng)軟件設(shè)計(jì)

30、說(shuō)明</p><p>  進(jìn)行測(cè)量控制系統(tǒng)設(shè)計(jì)時(shí),除了系統(tǒng)硬件設(shè)計(jì)外,大量的工作就是如何根據(jù)每個(gè)測(cè)量對(duì)象的實(shí)際需要設(shè)計(jì)應(yīng)用程序。因此,軟件設(shè)計(jì)在微機(jī)測(cè)量控制系統(tǒng)設(shè)計(jì)中占重要地位。對(duì)于本系統(tǒng),軟件設(shè)計(jì)更為重要。</p><p>  在單片機(jī)測(cè)量控制系統(tǒng)中,大體上可分為數(shù)據(jù)處理、過(guò)程控制兩個(gè)基本類(lèi)型。數(shù)據(jù)處理包括:數(shù)據(jù)的采集、數(shù)字濾波、標(biāo)度變換等。過(guò)程控制程序主要是使單片機(jī)按一定的方法進(jìn)行計(jì)算

31、,然后再輸出,以便達(dá)到測(cè)量控制目的。</p><p>  本軟件設(shè)計(jì)主要是對(duì)距離進(jìn)行測(cè)量、顯示。因此,整個(gè)軟件可分為按照硬件電路對(duì)單片機(jī)位定義;發(fā)射子程序;接收子程序;顯示子程序;延時(shí)子程序等。</p><p>  4.2編程語(yǔ)言的選擇</p><p>  本設(shè)計(jì)是硬件電路和軟件編程相結(jié)合的設(shè)計(jì)方案,選擇合適的編程語(yǔ)言是一個(gè)重要的環(huán)節(jié)。在單片機(jī)的應(yīng)用系統(tǒng)程序設(shè)計(jì)時(shí),

32、常用的是匯編語(yǔ)言和C語(yǔ)言。匯編語(yǔ)言是一種用文字助記符來(lái)表示機(jī)器指令的符號(hào)語(yǔ)言,是最接近機(jī)器碼的一種語(yǔ)言。其主要優(yōu)點(diǎn)是占用資源少、程序執(zhí)行效率高,而且執(zhí)行速度快。但是不同的CPU,其匯編語(yǔ)言可能有所差異,即依賴于計(jì)算機(jī)硬件,程序可讀性和可移植性比較差。</p><p>  C語(yǔ)言是編譯型程序設(shè)計(jì)語(yǔ)言,兼顧高級(jí)語(yǔ)言的特點(diǎn),并具備匯編語(yǔ)言的功能。C語(yǔ)言是一種結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,它支持當(dāng)前程序設(shè)計(jì)中廣泛采用的由頂向下結(jié)構(gòu)

33、化程序設(shè)計(jì)技術(shù)。此外,C語(yǔ)言程序具有完善的模塊程序結(jié)構(gòu)。C語(yǔ)言執(zhí)行效率沒(méi)有匯編語(yǔ)言高,但語(yǔ)言簡(jiǎn)潔,使用方便,靈活,運(yùn)算豐富,表達(dá)化類(lèi)型多樣化,數(shù)據(jù)結(jié)構(gòu)類(lèi)型豐富,具有結(jié)構(gòu)化的控制語(yǔ)句,程序設(shè)計(jì)自由度大,有很好的可重用性,可移植性等特點(diǎn)?;贑語(yǔ)言的眾多優(yōu)點(diǎn)本設(shè)計(jì)選擇此語(yǔ)言來(lái)編程。</p><p>  4.3超聲波測(cè)距儀的算法設(shè)計(jì)</p><p>  圖3.2.1示意了超聲波測(cè)距的原理,即超聲

34、波發(fā)生器T在某一時(shí)刻發(fā)出一個(gè)超聲渡信號(hào),當(dāng)這個(gè)超聲波遇到被測(cè)物體后反射回來(lái),就被超聲波接收器R所接收到。這樣只要計(jì)算出從發(fā)出超聲波信號(hào)到接收到返回信號(hào)所用的時(shí)間,就可算出超聲波發(fā)生器與反射物體的距離。</p><p><b>  距離的計(jì)算公式為:</b></p><p>  S=L/2=(V×△T)/2</p><p>  其中,S

35、 為被測(cè)物與測(cè)距儀的距離,L為聲波的來(lái)回的路程,V為聲速,△T為聲波來(lái)回所用的時(shí)間。</p><p>  圖4.1 超聲波測(cè)距原理圖</p><p>  在啟動(dòng)發(fā)射電路的同時(shí)啟動(dòng)單片機(jī)內(nèi)部的定時(shí)器T0,利用定時(shí)器的計(jì)數(shù)功能記錄超聲波發(fā)射的時(shí)間和收到反射波的時(shí)間。當(dāng)收到超聲波反射波時(shí),接收電路輸出端產(chǎn)生一個(gè)負(fù)跳變,在INT0或INT1端產(chǎn)生一個(gè)中斷請(qǐng)求信號(hào),單片機(jī)響應(yīng)外部中斷請(qǐng)求,執(zhí)行外部中

36、斷服務(wù)子程序,讀取時(shí)間差,計(jì)算距離。</p><p>  4.4 超聲波發(fā)生子程序和超聲波接收中斷程序設(shè)計(jì)</p><p>  超聲波發(fā)生子程序的作用是通過(guò)P2.6端口發(fā)送1個(gè)超聲波啟動(dòng)信號(hào),脈沖寬度為10μs左右,同時(shí)把計(jì)數(shù)器T0打開(kāi)進(jìn)行計(jì)時(shí)。超聲波發(fā)生子程序較簡(jiǎn)單,但要求程序運(yùn)行準(zhǔn)確,所以采用C語(yǔ)言編程。</p><p>  超聲波測(cè)距儀主程序利用外中斷0檢測(cè)返

37、回超聲波信號(hào),一旦接收到返回超聲波信號(hào)(即INT0引腳出現(xiàn)低電平),立即進(jìn)入中斷程序。進(jìn)入中斷后就立即關(guān)閉計(jì)時(shí)器T0停止計(jì)時(shí),并將測(cè)距成功標(biāo)志字賦值1。如果當(dāng)計(jì)時(shí)器溢出時(shí)還未檢測(cè)到超聲波返回信號(hào),則定時(shí)器T0溢出中斷將外中斷0關(guān)閉,此次測(cè)距不成功。</p><p>  4.5 顯示子程序設(shè)計(jì)</p><p>  LCD12864液晶顯示屏有其自身的控制編程方法,我們只需要按照其方法編程就能

38、顯示出我們想要的字符和圖形。</p><p>  本次使用的液晶是不帶字庫(kù)的,所以需要使用提取字模軟件來(lái)提取顯示所需的16*16點(diǎn)陣信息。</p><p><b>  4.6主程序流程圖</b></p><p><b>  5、設(shè)計(jì)結(jié)果及分析</b></p><p>  設(shè)計(jì)的最終結(jié)果是使超聲波測(cè)距

39、儀能夠產(chǎn)生超聲波,實(shí)現(xiàn)超聲波的發(fā)送與接收,從而實(shí)現(xiàn)利用超聲波方法測(cè)量物體間的距離,以數(shù)字的形式顯示測(cè)量距離。</p><p>  超聲波測(cè)距器的軟件設(shè)計(jì)主要由主程序、超聲波發(fā)生子程序、超聲波接收中斷程序及顯示子程序組成。 超聲波測(cè)距的算法設(shè)計(jì)原理為超聲波發(fā)生器T在某一時(shí)刻發(fā)出一個(gè)超聲波信號(hào),當(dāng)這個(gè)超聲波遇到被測(cè)物體后反射回來(lái),就被超聲波接收器R所接收到。這樣只要計(jì)算出從發(fā)出超聲波信號(hào)到接收到返回信號(hào)所用的時(shí)間,就

40、可算出超聲波發(fā)生器與反射物體的距離。</p><p>  硬件電路在使用的時(shí)候測(cè)距不太穩(wěn)定,液晶屏顯示有時(shí)候會(huì)不清晰。原因是液晶屏的兩個(gè)背光腳沒(méi)有接電阻就直接接在了電源和地上面。并且我連接所用的杜邦線也不太穩(wěn)定。</p><p>  圖5.1 軟件仿真結(jié)果</p><p>  圖5.2 硬件仿真結(jié)果</p><p><b>  

41、6、使用說(shuō)明</b></p><p>  它的硬件電路的設(shè)計(jì)主要包括單片機(jī)系統(tǒng)及顯示電路、系統(tǒng)電源、超聲波發(fā)射電路和超聲波檢測(cè)接收電路四部分。單片機(jī)采用STC89C52,采用12MHz高精度的晶振,以獲得較穩(wěn)定時(shí)鐘頻率,減小測(cè)量誤差。單片機(jī)用P2.6端口輸出超聲波換能器所需的觸發(fā)信號(hào),利用外中斷0口監(jiān)測(cè)超聲波接收電路輸出的返回信號(hào)。顯示電路采用LCD12864液晶屏,實(shí)現(xiàn)測(cè)距,并且在液晶屏上顯示距離。

42、</p><p>  使用時(shí)只需要按下啟動(dòng)鍵就可以開(kāi)始測(cè)距,如果測(cè)距成功就會(huì)在液晶屏上顯示相應(yīng)的距離的數(shù)值,否則將不顯示。</p><p><b>  7、課程設(shè)計(jì)體會(huì)</b></p><p>  做硬件的設(shè)計(jì)制作與焊接的時(shí)候,并沒(méi)有遇到太多問(wèn)題,只是用杜邦線的連接的地方出了些毛病,以致不能顯示的很清晰,這一塊兒主要是得耐心細(xì)致。需要注意各個(gè)輸

43、入、輸出引腳,因?yàn)槊總€(gè)引腳都是不一樣的,只有讓各個(gè)引腳互相對(duì)應(yīng),才能得出準(zhǔn)確的結(jié)果,任何一點(diǎn)小的誤差都不可能得出正確的運(yùn)行結(jié)果。</p><p>  寫(xiě)程序倒是基本上沒(méi)什么難度,邏輯思維強(qiáng)一點(diǎn)就好了。</p><p>  回顧起此次單片機(jī)課程設(shè)計(jì),我仍感慨頗多,的確,在這兩個(gè)星期中,可以說(shuō)得是苦多于甜,但是可以學(xué)到很多很多的東西,不僅鞏固了以前所學(xué)過(guò)的知識(shí),而且學(xué)到了很多在書(shū)本上所沒(méi)有學(xué)到

44、過(guò)的知識(shí)。</p><p>  很郁悶的就是幫別人修改了好些程序,結(jié)果都符合要求,但自己卻是最后一個(gè)驗(yàn)收的,盡管我需要做實(shí)物,卻也沒(méi)這么難吧!但我還是堅(jiān)持到了最后,雖然做出來(lái)的實(shí)物還是有些不盡如人意,卻也能基本符合要求了,也算給了我一些安慰。</p><p>  同時(shí),特別感謝劉老師和王老師在這兩個(gè)星期里陪伴著我們,幫我們解決一些疑難雜癥。謹(jǐn)在此特別鳴謝。</p><p

45、><b>  參考文獻(xiàn)</b></p><p>  [8] 曾屹.單片機(jī)原理與應(yīng)用[M].長(zhǎng)沙:中南大學(xué)出版社,2009,1~335 </p><p>  [9] 郭天祥.新概念51單片機(jī)C語(yǔ)言教程.入門(mén)、提高、開(kāi)發(fā)[EB/OL].http://www.Phei.com.cn </p><p>  [8] Pual Scherz.發(fā)明者電

46、子設(shè)計(jì)寶典[M].福建:福建地質(zhì)印刷廠,2004,1~505 </p><p><b>  附錄</b></p><p><b>  程序清單:</b></p><p>  #include<reg52.h></p><p>  #include<intrins.h><

47、/p><p>  #include <math.h> </p><p>  #include <stdio.h> </p><p>  #define LCD_databus P1//LCD12864的8位數(shù)據(jù)口</p><p>  #define uint unsigned int</p><

48、;p>  #define uchar unsigned char</p><p>  sbit EN=P2^2; </p><p>  sbit RS=P2^0; </p><p>  sbit RW=P2^1; </p><p>  sbit CS2=P2^3; </p><p>  s

49、bit CS1=P2^4;</p><p>  sbit pulse=P2^6; //產(chǎn)生脈沖引腳</p><p>  sbit Echo=P3^2; //回波引腳</p><p>  sbit key=P2^7;//啟動(dòng)發(fā)射引腳</p><p>  bit succeed_flag; //測(cè)量成功標(biāo)志</p>

50、<p><b>  uint s;</b></p><p>  uchar ge,shi,bai,outcomeH,outcomeL ; //自定義變量</p><p>  unsigned char code E[][16]={</p><p>  0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00

51、,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//"0"</p><p>  0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//"1"</p><p>  0x00,0x70,0x08,0x08,0x0

52、8,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//"2"</p><p>  0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//"3"</p><p>  0x00,0x

53、00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//"4"</p><p>  0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//"5"</p>&l

54、t;p>  0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//"6"</p><p>  0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//"7&quo

55、t;</p><p>  0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//"8"</p><p>  0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x

56、00,//"9"</p><p>  0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,//"c"</p><p>  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0

57、x3F,0x20,0x00,0x3F,//"m"</p><p><b>  };</b></p><p>  uchar code HZ[][32]={</p><p>  /*超 CB3AC */</p><p>  0x40,0x48,0x48,0x48,0xFF,0x48,0x48,0x4

58、2,0xA2,0x9E,0x82,0xA2,0xC2,0xBE,0x00,0x00,</p><p>  0x80,0x60,0x1F,0x20,0x7F,0x44,0x44,0x40,0x4F,0x48,0x48,0x48,0x48,0x4F,0x40,0x00,</p><p>  /*聲 CC9F9 */</p><p>  0x04,0x14,0xD4,

59、0x54,0x54,0x54,0x54,0xDF,0x54,0x54,0x54,0x54,0xD4,0x14,0x04,0x00,</p><p>  0x80,0x60,0x1F,0x02,0x02,0x02,0x02,0x03,0x02,0x02,0x02,0x02,0x03,0x00,0x00,0x00,</p><p>  /*波 CB2A8 */</p><

60、;p>  0x10,0x60,0x02,0x0C,0xC0,0x00,0xF8,0x88,0x88,0x88,0xFF,0x88,0x88,0xA8,0x18,0x00,</p><p>  0x04,0x04,0x7C,0x03,0x80,0x60,0x1F,0x80,0x43,0x2C,0x10,0x28,0x46,0x81,0x80,0x00,</p><p>  /*測(cè)

61、CB2E2 */</p><p>  0x10,0x60,0x02,0x8C,0x00,0xFE,0x02,0xF2,0x02,0xFE,0x00,0xF8,0x00,0xFF,0x00,0x00,</p><p>  0x04,0x04,0x7E,0x01,0x80,0x47,0x30,0x0F,0x10,0x27,0x00,0x47,0x80,0x7F,0x00,0x00,</p

62、><p>  /*距 CBEE0 */</p><p>  0x00,0x3E,0x22,0xE2,0x22,0x3E,0x00,0xFE,0x22,0x22,0x22,0x22,0x22,0xE2,0x02,0x00,</p><p>  0x20,0x3F,0x20,0x1F,0x11,0x11,0x00,0x7F,0x44,0x44,0x44,0x44,0x4

63、4,0x47,0x40,0x00,</p><p>  /*儀 CD2C7 */</p><p>  0x00,0x80,0x60,0xF8,0x07,0x00,0x1C,0xE0,0x01,0x06,0x00,0xE0,0x1E,0x00,0x00,0x00,</p><p>  0x01,0x00,0x00,0xFF,0x00,0x80,0x40,0x20,

64、0x13,0x0C,0x13,0x20,0x40,0x80,0x80,0x00,</p><p>  /*周 CD6DC */</p><p>  0x00,0x00,0xFE,0x82,0x92,0x92,0x92,0xFE,0x92,0x92,0x92,0x82,0xFE,0x00,0x00,0x00,</p><p>  0x80,0x60,0x1F,0x

65、00,0x00,0x1E,0x12,0x12,0x12,0x1E,0x40,0x80,0x7F,0x00,0x00,0x00,</p><p>  /*鵬 CC5F4 */</p><p>  0x00,0xFE,0x22,0xFE,0x00,0xFE,0x22,0xFE,0x00,0xFC,0x16,0x25,0x84,0xFC,0x00,0x00,</p><p

66、>  0x60,0x1F,0x22,0xBF,0x40,0x3F,0x82,0xFF,0x00,0x13,0x12,0x12,0x52,0x82,0x7E,0x00,</p><p>  /*: CA3BA */</p><p>  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

67、,0x00,</p><p>  0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,</p><p>  /*離 CC0EB */</p><p>  0x04,0x04,0x04,0xF4,0x84,0xD4,0xA5,0xA6,0xA4,0xD4,0

68、x84,0xF4,0x04,0x04,0x04,0x00,</p><p>  0x00,0xFE,0x02,0x02,0x12,0x3A,0x16,0x13,0x12,0x1A,0x32,0x42,0x82,0x7E,0x00,0x00,</p><p><b>  }; </b></p><p>  void delay_10us(uint

69、 n) //延時(shí)n個(gè)10us</p><p><b>  { </b></p><p>  uint i; </p><p>  for(i=n;i>0;i--) </p><p><b>  {</b></p><p>  _n

70、op_();_nop_();_nop_();_nop_();_nop_();_nop_(); </p><p><b>  }</b></p><p><b>  } </b></p><p>  void Read_busy()//讀“忙”函數(shù)--數(shù)據(jù)線的最高位D7為1則忙 </p><p>

71、;<b>  {</b></p><p><b>  P0=0x00;</b></p><p><b>  RS=0; </b></p><p><b>  RW=1; </b></p><p><b>  EN=1;</b><

72、;/p><p>  while(P0 & 0x80);</p><p><b>  EN=0;</b></p><p><b>  }</b></p><p>  void write_LCD_command(uchar value) //寫(xiě)命令函數(shù) </p><p>&

73、lt;b>  {</b></p><p>  Read_busy(); //對(duì)LCD的每次讀寫(xiě)都要讀忙 </p><p>  RS=0; //選擇命令 </p><p>  RW=0; //讀操作 </p><p>  LCD_databus=value;</p&g

74、t;<p>  EN=1; //EN由1----0鎖存有效數(shù)據(jù) </p><p><b>  _nop_();</b></p><p><b>  _nop_(); </b></p><p><b>  EN=0;</b></p><p><

75、;b>  }</b></p><p>  void write_LCD_data(uchar value)//寫(xiě)數(shù)據(jù)函數(shù) </p><p><b>  {</b></p><p>  Read_busy();</p><p>  RS=1; //選擇數(shù)據(jù) </p>&

76、lt;p><b>  RW=0; </b></p><p>  LCD_databus=value;</p><p>  EN=1; //EN由1----0鎖存有效數(shù)據(jù) </p><p>  _nop_(); </p><p><b>  _nop_();</b><

77、/p><p><b>  EN=0;</b></p><p><b>  }</b></p><p>  void Set_page(uchar page) //設(shè)置“頁(yè)”LCD12864共8頁(yè),一頁(yè)是8行 </p><p><b>  {</b></p>&l

78、t;p>  page=0xb8|page; //頁(yè)的首地址為0xB8</p><p>  write_LCD_command(page);</p><p><b>  }</b></p><p>  void Set_line(uchar startline) //設(shè)置顯示的起始行 </p><p

79、><b>  {</b></p><p>  startline=0xC0|startline; //起始行地址為0xC0 </p><p>  write_LCD_command(startline); //設(shè)置從哪行開(kāi)始:共0--63;一般從0 行開(kāi)始顯示</p><p><b>  } </b><

80、;/p><p>  void Set_column(uchar column) //設(shè)置顯示的列 </p><p><b>  {</b></p><p>  column=column &0x3f; //列的最大值為64</p><p>  column= 0x40|column; //列的首地址為0x

81、40 </p><p>  write_LCD_command(column); //規(guī)定顯示的列的位置 </p><p><b>  }</b></p><p>  void SetOnOff(uchar onoff) //顯示開(kāi)關(guān)函數(shù):0x3E是關(guān)顯示,0x3F是開(kāi)顯示 </p><p><b>  

82、{</b></p><p>  onoff=0x3e|onoff; //onoff:1---開(kāi)顯示;0---關(guān)顯示</p><p>  write_LCD_command(onoff);</p><p><b>  }</b></p><p>  void SelectScreen(uchar scre

83、en) //選擇屏幕 </p><p><b>  { </b></p><p>  switch(screen)</p><p><b>  { </b></p><p>  case 0: CS1=0;CS2=0;break; //全屏 </p><p&

84、gt;  case 1: CS1=0;CS2=1;break;//左半屏 </p><p>  case 2: CS1=1;CS2=0;break;//右半屏 </p><p>  default:break; </p><p><b>  }</b></p><p><b>  }&

85、lt;/b></p><p>  void ClearScreen(uchar screen) //清屏函數(shù) </p><p><b>  { </b></p><p>  uchar i,j;</p><p>  SelectScreen(screen); //0--全屏;1---左半屏;2---右半屏 &

86、lt;/p><p>  for(i=0;i<8;i++) //控制頁(yè)數(shù)0-7,共8頁(yè)</p><p><b>  {</b></p><p>  Set_page(i);</p><p>  Set_column(0);</p><p>  for(j=0;j<64;j++)

87、//控制列數(shù)0-63,共64列</p><p><b>  {</b></p><p>  write_LCD_data(0x00); //寫(xiě)入0,地址指針自加1 </p><p><b>  }</b></p><p><b>  } </b></p>

88、<p><b>  }</b></p><p>  void init_LCD() //LCD的初始化 </p><p><b>  { </b></p><p>  ClearScreen(0); //清屏</p><p>  SetOnOff(1); //

89、開(kāi)顯示</p><p>  SelectScreen(0); //選屏</p><p>  Set_line(0); //開(kāi)始行:0</p><p><b>  }</b></p><p>  void Display_ASCII(uchar screen,uchar page,uchar column,uc

90、har a[][16],uchar h)//字符顯示</p><p><b>  {</b></p><p><b>  uchar i;</b></p><p>  SelectScreen(screen);</p><p>  Set_page(page);</p><p&g

91、t;  Set_column(column*8);</p><p>  for(i=0;i<8;i++) //顯示字符上半部分:8*8 </p><p><b>  {</b></p><p>  write_LCD_data(*(a[h]+i));</p><p><b>  }</b>

92、</p><p>  Set_page(page+1); //顯示字符下半部分:8*8 </p><p>  Set_column(column*8);</p><p>  for(i=0;i<8;i++)</p><p><b>  {</b></p><p>  write_LCD_

93、data(*(a[h]+i+8));</p><p><b>  } </b></p><p><b>  } </b></p><p>  void Display_HZ(uchar screen,uchar page,uchar column,uchar a[][32],uchar h)//漢字顯示</p>

94、;<p><b>  {</b></p><p><b>  uchar i;</b></p><p>  SelectScreen(screen);</p><p>  Set_page(page); //寫(xiě)上半頁(yè):16*8 </p><p>  Set_column(col

95、umn*16); //控制列</p><p>  for(i=0;i<16;i++) //控制16列的數(shù)據(jù)輸出</p><p><b>  {</b></p><p>  write_LCD_data(*(a[h]+i)); //漢字的上半部分 </p><p><b>  }<

96、/b></p><p>  Set_page(page+1); //寫(xiě)下半頁(yè):16*8 </p><p>  Set_column(column*16); //控制列</p><p>  for(i=0;i<16;i++) //控制16列的數(shù)據(jù)輸出</p><p><b>  {</b><

97、;/p><p>  write_LCD_data(*(a[h]+16+i)); //漢字的下半部分 </p><p><b>  }</b></p><p><b>  } </b></p><p>  void disp()</p><p><b>  {</b

98、></p><p>  Display_HZ(1,0,0,HZ,0);</p><p>  Display_HZ(1,0,1,HZ,1);</p><p>  Display_HZ(1,0,2,HZ,2);</p><p>  Display_HZ(1,0,3,HZ,3);</p><p>  Display_H

99、Z(2,0,4,HZ,4);</p><p>  Display_HZ(2,0,5,HZ,5);//第一行顯示“超聲波測(cè)距儀"</p><p>  Display_HZ(1,2,0,HZ,6);</p><p>  Display_HZ(1,2,1,HZ,7);</p><p>  Display_HZ(1,2,2,HZ,8);//

100、周鵬:</p><p>  Display_ASCII(1,2,6,E,2);</p><p>  Display_ASCII(1,2,7,E,0);</p><p>  Display_ASCII(2,2,0,E,1);</p><p>  Display_ASCII(2,2,1,E,0);</p><p>  Di

101、splay_ASCII(2,2,2,E,0);</p><p>  Display_ASCII(2,2,3,E,4);</p><p>  Display_ASCII(2,2,4,E,2);</p><p>  Display_ASCII(2,2,5,E,1);</p><p>  Display_ASCII(2,2,6,E,1);</

102、p><p>  Display_ASCII(2,2,7,E,3);//2010042113</p><p>  Display_HZ(1,4,0,HZ,4);</p><p>  Display_HZ(1,4,1,HZ,9);</p><p>  Display_HZ(1,4,2,HZ,8);//距離:</p><p>

103、  Display_ASCII(2,4,4,E,10);</p><p>  Display_ASCII(2,4,5,E,11);//cm</p><p><b>  }</b></p><p>  void csbfsq() //超聲波發(fā)生器</p><p><b>  {</b>

104、</p><p>  if(key==0)</p><p><b>  {</b></p><p>  delay_10us(1);</p><p>  if(key==0)</p><p><b>  {</b></p><p><b> 

105、 pulse=1;</b></p><p>  delay_10us(1);</p><p>  pulse=0; //產(chǎn)生一個(gè)10us的脈沖,在pluse引腳</p><p><b>  }</b></p><p><b>  }</b></p><

106、p><b>  TR0=1;</b></p><p><b>  }</b></p><p>  void distance() //距離計(jì)算</p><p><b>  {</b></p><p><b>  uint t;</b><

107、/p><p>  t=outcomeH*256+outcomeL;</p><p>  s=(172*t)/100;</p><p>  bai=s/100;</p><p><b>  s=s%100;</b></p><p><b>  shi=s/10;</b></p

108、><p><b>  ge=s%10;</b></p><p><b>  }</b></p><p>  void dingshiqi()//中斷及定時(shí)器0初始化</p><p><b>  {</b></p><p>  TMOD=0X01;<

109、/p><p><b>  TH0=0;</b></p><p><b>  TL0=0;</b></p><p><b>  EA=1;</b></p><p><b>  ET0=1; </b></p><p><b>  

110、EX0=1;</b></p><p><b>  IT0=1;</b></p><p><b>  }</b></p><p>  void main(void) //主程序</p><p><b>  { </b></p><p>

111、  init_LCD();</p><p><b>  disp();</b></p><p>  dingshiqi();</p><p><b>  csbfsq();</b></p><p>  while(Echo==0);</p><p>  if(succeed_

112、flag==1)</p><p><b>  {</b></p><p>  distance();</p><p>  Display_ASCII(2,4,0,E,bai);</p><p>  Display_ASCII(2,4,1,E,shi);</p><p>  Display_ASCI

113、I(2,4,2,E,ge);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void T_0() interrupt 1 //定時(shí)器0中斷</p><p><b>  {</b></p><p>&l

114、t;b>  TR0=0;</b></p><p><b>  ET0=0;</b></p><p><b>  TH0=0;</b></p><p><b>  TL0=0; </b></p><p><b>  } </b></p

115、><p>  void INT_0() interrupt 0 //外部中斷0,回波處理</p><p>  { </p><p><b>  TR0=0;</b></p><p><b>  EX0=0;</b></p><p><b>  E

116、T0=0;</b></p><p><b>  EA=0;</b></p><p>  outcomeH=TH0;</p><p>  outcomeL=TL0;</p><p>  if(TH0<=0X72)</p><p><b>  {</b><

溫馨提示

  • 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ù)僅提供信息存儲(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)論