版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 題 目: 超聲波測(cè)距儀的設(shè)計(jì) </p><p> 課 程: 單片機(jī)原理及應(yīng)用課程設(shè)計(jì) </p><p> 專 業(yè): 電氣工程及其自動(dòng)化 </p><p&g
2、t;<b> 第 一 部 分</b></p><p><b> 任</b></p><p><b> 務(wù)</b></p><p><b> 書</b></p><p> 《單片機(jī)原理及應(yīng)用》課程設(shè)計(jì)任務(wù)書</p><p>
3、<b> 一、課題名稱</b></p><p><b> 超聲波測(cè)距儀的設(shè)計(jì)</b></p><p><b> 二、課程設(shè)計(jì)目的</b></p><p> 課程設(shè)計(jì)是課程教學(xué)中的一項(xiàng)重要內(nèi)容,是達(dá)到教學(xué)目標(biāo)的重要環(huán)節(jié),是綜合性較強(qiáng)的實(shí)踐教學(xué)環(huán)節(jié),它對(duì)幫助學(xué)生全面牢固地掌握課堂教學(xué)內(nèi)容、培養(yǎng)學(xué)生
4、的實(shí)踐和實(shí)際動(dòng)手能力、提高學(xué)生全面素質(zhì)具有很重要的意義。</p><p> 《單片機(jī)原理及應(yīng)用》是一門理論性、實(shí)用性和實(shí)踐性都很強(qiáng)的課程,課程設(shè)計(jì)環(huán)節(jié)應(yīng)占有更加重要的地位。單片機(jī)原理及應(yīng)用課程設(shè)計(jì)的目的是讓學(xué)生在理論學(xué)習(xí)的基礎(chǔ)上,通過(guò)完成一個(gè)涉及MCS-51單片機(jī)多種資源應(yīng)用并具有綜合功能的小系統(tǒng)目標(biāo)板的設(shè)計(jì)與編程應(yīng)用,使學(xué)生不但能將課堂上學(xué)到的理論知識(shí)與實(shí)際應(yīng)用結(jié)合起來(lái),而且能進(jìn)一步加深對(duì)電子電路、電子元器件
5、等知識(shí)的認(rèn)識(shí)與理解,同時(shí)在軟件編程、排錯(cuò)調(diào)試、相關(guān)軟件和儀器設(shè)備的使用技能等方面得到較全面的鍛煉和提高。為今后能夠獨(dú)立進(jìn)行某些單片機(jī)應(yīng)用系統(tǒng)的開發(fā)設(shè)計(jì)工作打下一定的基礎(chǔ)。通過(guò)單片機(jī)硬件和軟件設(shè)計(jì)、調(diào)試、整理資料等環(huán)節(jié)的培訓(xùn),使學(xué)生初步掌握工程設(shè)計(jì)方法和組織實(shí)踐的基本技能,逐步熟悉開展科學(xué)實(shí)踐的程序和方法。</p><p><b> 三、課程設(shè)計(jì)內(nèi)容</b></p><p
6、> 設(shè)計(jì)以89C51單片機(jī)和外圍元器件構(gòu)成的單片機(jī)應(yīng)用系統(tǒng),并完成相應(yīng)的軟硬件調(diào)試。</p><p> 1. 系統(tǒng)方案設(shè)計(jì):綜合運(yùn)用單片機(jī)課程中所學(xué)到的理論知識(shí),學(xué)生根據(jù)所選課題的任務(wù)、要求和條件進(jìn)行總體方案的設(shè)計(jì)。</p><p> 2. 硬件電路設(shè)計(jì):對(duì)方案中以單片機(jī)為核心的電路進(jìn)行設(shè)計(jì)計(jì)算,包括元器件的選擇和電路參數(shù)的計(jì)算,并畫出總體電路圖。</p><
7、;p> 3. 軟件設(shè)計(jì):根據(jù)已設(shè)計(jì)出的軟件系統(tǒng)框圖,用匯編語(yǔ)言或C51編制出各功能模塊的子程序和整機(jī)軟件系統(tǒng)的主程序。</p><p> 4. 調(diào)試:在單片機(jī)EDA仿真軟件環(huán)境Proteus下進(jìn)行仿真設(shè)計(jì)并調(diào)試;或在單片機(jī)周立功實(shí)驗(yàn)箱上進(jìn)行相關(guān)設(shè)計(jì)并調(diào)試。</p><p><b> 四、課程設(shè)計(jì)要求</b></p><p> 1.
8、 測(cè)量有效范圍0-60cm;</p><p> 2. 測(cè)量的距離值在1602LED液晶上顯示(保留一位小數(shù));</p><p> 3. 設(shè)計(jì)硬件原理圖;</p><p><b> 4. 編寫程序。</b></p><p><b> 五、進(jìn)度安排</b></p><p>
9、; 七、課程設(shè)計(jì)報(bào)告內(nèi)容:</p><p> 總結(jié)設(shè)計(jì)過(guò)程,寫出設(shè)計(jì)報(bào)告,設(shè)計(jì)報(bào)告具體內(nèi)容要求如下:</p><p> 1.課程設(shè)計(jì)的目和設(shè)計(jì)的內(nèi)容。</p><p> 2.課程設(shè)計(jì)的要求。</p><p> 3.控制系統(tǒng)總框圖及系統(tǒng)工作原理。</p><p> 4.控制系統(tǒng)的硬件電路連接圖,電路的原理。
10、</p><p> 5.軟件設(shè)計(jì)流程圖及其說(shuō)明。</p><p> 6.電路設(shè)計(jì),軟件編程、調(diào)試中遇到的問(wèn)題及分析解決方法。</p><p> 7.實(shí)驗(yàn)結(jié)果及其分析。</p><p><b> 8.體會(huì)。</b></p><p><b> 第 二 部 分</b>&l
11、t;/p><p><b> 課</b></p><p><b> 程</b></p><p><b> 設(shè)</b></p><p><b> 計(jì)</b></p><p><b> 報(bào)</b></p&
12、gt;<p><b> 告</b></p><p><b> 目 錄</b></p><p><b> 1 課題簡(jiǎn)介7</b></p><p><b> 1.1設(shè)計(jì)目的7</b></p><p><b> 1.2
13、設(shè)計(jì)內(nèi)容7</b></p><p> 1.3設(shè)備及工作環(huán)境7</p><p><b> 2 方案設(shè)計(jì)8</b></p><p> 2.1 超聲波測(cè)距原理8</p><p> 2.2 系統(tǒng)總體設(shè)計(jì)方案9</p><p> 3硬件電路設(shè)計(jì)10</p>&
14、lt;p> 3.1 時(shí)鐘電路10</p><p> 3.2 復(fù)位電路10</p><p> 3.3 1602液晶顯示電路10</p><p> 3.4超聲波發(fā)射模塊11</p><p> 3.5超聲波接收模塊11</p><p> 4 軟件編程設(shè)計(jì)12</p><p&g
15、t; 4.1 程序設(shè)計(jì)流程圖12</p><p> 4.2 1602LCD液晶顯示控制程序12</p><p> 4.3 超聲波測(cè)速模塊發(fā)送程序18</p><p> 4.4 超聲波模塊回波檢測(cè)程序19</p><p> 4.5 數(shù)據(jù)處理程序19</p><p> 4.6 數(shù)據(jù)送液晶顯示程序20
16、</p><p> 5 實(shí)驗(yàn)與結(jié)果分析21</p><p> 5.1軟硬件仿真調(diào)試21</p><p> 5.2 結(jié)果分析21</p><p> 6 小結(jié)與體會(huì)23</p><p> 參 考 文 獻(xiàn)24</p><p><b> 附錄25</b>&l
17、t;/p><p><b> 1 課題簡(jiǎn)介 </b></p><p><b> 1.1設(shè)計(jì)目的</b></p><p> ?。?) 設(shè)計(jì)一個(gè)超聲波測(cè)距儀;</p><p> ?。?)課程設(shè)計(jì)是課程教學(xué)中的一項(xiàng)重要內(nèi)容,是達(dá)到教學(xué)目標(biāo)的重要環(huán)節(jié),是綜合性較強(qiáng)的實(shí)踐教學(xué)環(huán)節(jié),它對(duì)幫助學(xué)生全面牢固地掌握課堂
18、教學(xué)內(nèi)容、培養(yǎng)學(xué)生的實(shí)踐和實(shí)際動(dòng)手能力、提高學(xué)生全面素質(zhì)具有很重要的意義。</p><p> 《單片機(jī)原理及應(yīng)用》是一門理論性、實(shí)用性和實(shí)踐性都很強(qiáng)的課程,課程設(shè)計(jì)環(huán)節(jié)應(yīng)占有更加重要的地位。單片機(jī)原理及應(yīng)用課程設(shè)計(jì)的目的是讓學(xué)生在理論學(xué)習(xí)的基礎(chǔ)上,通過(guò)完成一個(gè)涉及MCS-51單片機(jī)多種資源應(yīng)用并具有綜合功能的小系統(tǒng)目標(biāo)板的設(shè)計(jì)與編程應(yīng)用,使學(xué)生不但能將課堂上學(xué)到的理論知識(shí)與實(shí)際應(yīng)用結(jié)合起來(lái),而且能進(jìn)一步加深對(duì)電
19、子電路、電子元器件等知識(shí)的認(rèn)識(shí)與理解,同時(shí)在軟件編程、排錯(cuò)調(diào)試、相關(guān)軟件和儀器設(shè)備的使用技能等方面得到較全面的鍛煉和提高。為今后能夠獨(dú)立進(jìn)行某些單片機(jī)應(yīng)用系統(tǒng)的開發(fā)設(shè)計(jì)工作打下一定的基礎(chǔ)。通過(guò)單片機(jī)硬件和軟件設(shè)計(jì)、調(diào)試、整理資料等環(huán)節(jié)的培訓(xùn),使學(xué)生初步掌握工程設(shè)計(jì)方法和組織實(shí)踐的基本技能,逐步熟悉開展科學(xué)實(shí)踐的程序和方法。</p><p><b> 1.2 設(shè)計(jì)內(nèi)容</b></p&g
20、t;<p> 1.2.1 設(shè)計(jì)要求</p><p> 設(shè)計(jì)一個(gè)超聲波測(cè)距儀。</p><p><b> 具體要求:</b></p><p> (1)測(cè)量范圍:0-60cm;</p><p> (2)測(cè)量精度:±5%;</p><p> (3)選定設(shè)計(jì)方案,畫出系
21、統(tǒng)框圖,寫出詳細(xì)的設(shè)計(jì)過(guò)程;</p><p> (4) 利用Protel 99 SE軟件畫出一套完整的設(shè)計(jì)電路圖,并列出所有的元件清單;</p><p> 1.2.2 設(shè)計(jì)內(nèi)容及任務(wù)</p><p> 設(shè)計(jì)以89C51單片機(jī)和外圍元器件構(gòu)成的單片機(jī)應(yīng)用系統(tǒng),并完成相應(yīng)的軟硬件調(diào)試。</p><p> (1) 系統(tǒng)方案設(shè)計(jì):綜合運(yùn)用單片
22、機(jī)課程中所學(xué)到的理論知識(shí),根據(jù)所選課題的任務(wù)、要求和條件進(jìn)行總體方案的設(shè)計(jì)。</p><p> ?。?)硬件電路設(shè)計(jì):對(duì)方案中以單片機(jī)為核心的電路進(jìn)行設(shè)計(jì)計(jì)算,包括元器件的選擇和電路參數(shù)的計(jì)算,并畫出總體電路圖。</p><p> ?。?) 軟件設(shè)計(jì):根據(jù)已設(shè)計(jì)出的軟件系統(tǒng)框圖,用C51語(yǔ)言編制出各功能模塊的子程序和整機(jī)軟件系統(tǒng)的主程序。</p><p> ?。?)
23、調(diào)試:在銳志RZ-51/AVR V2.8開發(fā)板上進(jìn)行相關(guān)設(shè)計(jì)并調(diào)試。</p><p> (5)在液晶顯示屏上顯示測(cè)量的距離,以厘米為單位,保留一位小數(shù)。</p><p> ?。?)軟件設(shè)計(jì)必須應(yīng)用8052片內(nèi)定時(shí)器,采用定時(shí)中斷結(jié)構(gòu),可以采用軟件中斷的延時(shí)法。</p><p> 1.3設(shè)備及工作環(huán)境</p><p> ?。?)軟件:Win
24、dows XP操縱系統(tǒng)、Keil C51軟件、STC_ISP_V479軟件;</p><p> (2)硬件:銳志RZ-51/AVR V2.8開發(fā)板。</p><p><b> 2 方案設(shè)計(jì)</b></p><p> 2.1 超聲波測(cè)距原理</p><p> 超聲波是一種人耳無(wú)法聽到的、頻率一般超過(guò)20kHz的聲
25、音。</p><p> 波的傳播速度是用頻率乘以波長(zhǎng)來(lái)表示。聲波在空氣中的傳播速度較慢,約為344m/s(20ºC)。在這種較低的傳播速度下,波長(zhǎng)很短,就意味著可以獲得較高的距離和方向分辯率。正是由于這種較高的分辯率特性,才使我們有可能在進(jìn)行測(cè)量時(shí)得很高的精確度。超聲波設(shè)備的外表面尺寸易于獲得精確的輻射。</p><p> 超聲波對(duì)金屬、木材、混凝土、玻璃、橡膠和紙等可以反射
26、近乎100%,相反對(duì)布、棉花、絨毛等會(huì)被吸收而難以實(shí)行反射波的探測(cè)。</p><p><b> ?。?)溫度效應(yīng)</b></p><p> 聲波傳播的速度C=331.5+0.607t(m/s)。也就是說(shuō),聲音傳播速度隨周圍溫度的變化而有所不同。因此,要精確的測(cè)量與某個(gè)物體之間的距離時(shí),始終檢查周圍溫度是十分必要的。</p><p><b
27、> (2)衰減</b></p><p> 傳播到空氣中的超聲波強(qiáng)度隨距離的變化成比例地減弱,這是因?yàn)檠苌洮F(xiàn)象所導(dǎo)致的在球形表面上的擴(kuò)散損失,也是因?yàn)榻橘|(zhì)吸收能量產(chǎn)生的吸收損失。</p><p> 如圖1所示,超聲波的頻率越高,衰減率就越高,波的傳播距離也就越短。</p><p> 圖1 聲壓在不同距離上的衰減特性</p>&
28、lt;p> ?。?)壓電式超聲波發(fā)生器原理</p><p> 超聲波發(fā)生器可以分為兩大類:一類是用電氣方式產(chǎn)生超聲波,一類是用機(jī)械方式產(chǎn)生超聲波。電氣方式包括壓電型、磁致伸縮型和電動(dòng)型等;機(jī)械方式有加爾統(tǒng)笛、液哨和氣流旋笛等。它們所產(chǎn)生的超聲波的頻率、功率和聲波特性各不相同,因而用途也各不相同。目前較為常用的是壓電式超聲波發(fā)生器。</p><p> 壓電式超聲波發(fā)生器實(shí)際上是利用
29、壓電晶體的諧振來(lái)工作的。超聲波發(fā)生器內(nèi)部結(jié)構(gòu)如圖2所示,它有兩個(gè)壓電晶片和一個(gè)共振板。當(dāng)它的兩極外加脈沖信號(hào),其頻率等于壓電晶片的固有振蕩頻率時(shí),壓電晶片將會(huì)發(fā)生共振,并帶動(dòng)共振板振動(dòng),便產(chǎn)生超聲波。反之,如果兩電極間未外加電壓,當(dāng)共振板接收到超聲波時(shí),將壓迫壓電晶片作振動(dòng),將機(jī)械能轉(zhuǎn)換為電信號(hào),這時(shí)它就成為超聲波接收器了。</p><p> 圖2 壓電式超聲波發(fā)生器的構(gòu)造</p><p&
30、gt; (4)超聲波測(cè)距的優(yōu)缺點(diǎn)</p><p><b> 超聲波測(cè)距的優(yōu)點(diǎn):</b></p><p> 1)對(duì)雨、霧、雪的穿透力強(qiáng)、衰減小,因此汽車聲納雷達(dá)可以在雨、雪、大霧等惡劣天氣下工作。</p><p> 2)超聲波測(cè)距的原理簡(jiǎn)單、制作方便、成本低。</p><p><b> 超聲波測(cè)距的缺點(diǎn)
31、:</b></p><p> 1)聲波的傳播速度相對(duì)于電磁波來(lái)說(shuō)慢了許多,當(dāng)汽車在高速公路上以每小時(shí)上百公里的速度高速行駛時(shí),使用超聲波測(cè)距無(wú)法跟上車距的實(shí)時(shí)變化,誤差大;</p><p> 2)超聲波的方向性相對(duì)于激光光束來(lái)講要差的多,發(fā)散角大。當(dāng)要測(cè)量距離較遠(yuǎn)的目標(biāo)時(shí),一方面由于發(fā)散而使能量大大降低,另一方面會(huì)使分辨力下降,導(dǎo)致將鄰車道的車輛或路邊的物體作為測(cè)量目標(biāo)。&
32、lt;/p><p> 2.2 系統(tǒng)總體設(shè)計(jì)方案</p><p> 本系統(tǒng)由時(shí)鐘電路、復(fù)位電路、超聲波發(fā)射、回波信號(hào)接收、液晶顯示等硬件電路部分以及相應(yīng)的軟件部分構(gòu)成。整個(gè)系統(tǒng)由單片機(jī)AT89S52控制,超聲波傳感器采用收發(fā)分體式,分別是一支超聲波發(fā)射換能器TCT40-16T和一支超聲波接收換能器TCT40-16R。超聲波信號(hào)通過(guò)超聲波發(fā)射換能器發(fā)射至空氣中,遇被測(cè)物反射后回波被超聲波接收換
33、能器接收。進(jìn)行相關(guān)處理后,輸入單片機(jī)的INT1腳產(chǎn)生中斷,計(jì)算中間經(jīng)歷的時(shí)間,通過(guò)換算得出測(cè)試的距離。</p><p> 圖3 系統(tǒng)結(jié)構(gòu)框圖 </p><p><b> 3硬件電路設(shè)計(jì)</b></p><p><b> 3.1 時(shí)鐘電路</b></p><p> AT89S
34、52單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,它的輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2.這兩個(gè)引腳跨接石英晶體和微調(diào)電容,構(gòu)成一個(gè)穩(wěn)定的自激振蕩器,圖4是AT89S52內(nèi)部時(shí)鐘方式的電路。電路中的電容C1和C2的典型值通常選擇為30pF。</p><p> 圖4 AT89S52內(nèi)部時(shí)鐘方式的電路</p><p><b> 3.2 復(fù)位電路</b&
35、gt;</p><p> AT89S52的復(fù)位是由外部的復(fù)位電路實(shí)現(xiàn)的,常有上電自復(fù)位和按鈕復(fù)位兩種方式。本系統(tǒng)采用的是如圖5所示的按鍵手動(dòng)電平復(fù)位電路。按鍵手動(dòng)電平復(fù)位是通過(guò)RST端經(jīng)電阻與電源VCC接通來(lái)實(shí)現(xiàn)的。當(dāng)時(shí)鐘頻率選用11.0592MHz時(shí),C的典型取值為10uF,R的取值為2KΩ。</p><p> 圖5 按鍵手動(dòng)電平復(fù)位電路</p><p>
36、 3.3 1602液晶顯示電路</p><p> 本設(shè)計(jì)使用的是2行16個(gè)字的1602液晶模塊作為測(cè)量值顯示部分。1602液晶也叫1602字符型液晶 它是一種專門用來(lái)顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊 它有若干個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符。每位之間有一個(gè)點(diǎn)距的間隔 每行之間也有也有間隔 起到了字符間距和行間距的作用,正因?yàn)槿绱?所以他不能顯示圖形。如圖6為1602L
37、CD接線圖。1602 采用標(biāo)準(zhǔn)的16腳接口,其中:</p><p> 第1腳:VSS為地電源</p><p> 第2腳:VDD接5V正電源</p><p> 第3腳:V0為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K 的電位器調(diào)整對(duì)比度</p><p> 第4
38、 腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器, 圖6 1602LCD接線圖</p><p> 與單片機(jī)的P2.0口相連。 </p><p> 第5腳:RW為讀寫信號(hào)線, 高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作,與單片機(jī)P2.1口相連?! ?lt;/p><p> 第6 腳:E端為使能端,當(dāng)E端由高電平跳變成低電平
39、時(shí),液晶模塊執(zhí)行命令。</p><p> 第7~14腳:D0~D7為8位雙向數(shù)據(jù)線,與單片機(jī)P0口相連。</p><p> 第15、16腳:背光電源的正負(fù)極,分別接+5V電源和地。</p><p> 3.4超聲波發(fā)射模塊</p><p> 超聲波發(fā)射部分是為了讓超聲波發(fā)射換能器TCT40-16T能向外界發(fā)出40 kHz左右的方波脈沖信
40、號(hào)。40 kHz左右的方波脈沖信號(hào)的產(chǎn)生通常有兩種方法:采用硬件如由555振蕩產(chǎn)生或軟件如單片機(jī)軟件編程輸出,本系統(tǒng)采用后者。編程由單片機(jī)P3.2端口輸出40 kHz左右的方波脈沖信號(hào),由于單片機(jī)端口輸出功率不夠,40 kHz方波脈沖信號(hào)分 </p><p> 圖7 超聲波發(fā)射模塊</p><p> 成兩路,送給一個(gè)由CD406
41、9組成的推挽式電路進(jìn)行功率放大以便使發(fā)射距離足夠遠(yuǎn),滿足測(cè)量距離要求,最后送給超聲波發(fā)射換能器TCT40-16T以聲波形式發(fā)射到空氣中。發(fā)射部分的電路,如圖7所示。圖中輸出端上拉電阻R6,R7,一方面可以提高反向器CD4069輸出高電平的驅(qū)動(dòng)能力,另一方面可以增加超聲換能器的阻尼效果,縮短其自由振蕩的時(shí)間。</p><p> 3.5超聲波接收模塊</p><p> 上述TCT40-16
42、T發(fā)射的在空氣中傳播,遇到障礙物就會(huì)返回,超聲波接收部分是為了將反射波(回波)順利接收到超聲波接收換能器TCT40-16R進(jìn)行轉(zhuǎn)換變成電信號(hào),并對(duì)此電信號(hào)進(jìn)行放大、濾波、整形等處理后,這里用索尼公司生產(chǎn)的集成芯片CX20106,得到一個(gè)負(fù)脈沖送給單片機(jī)的P3.3(INT1)引腳,以產(chǎn)生一個(gè)中斷。接收部分的電路,如圖8所示。 </p><p> 可以看到,集成芯片CX20106在接收部分電路中起了很大的作用。CX
43、20106是一款應(yīng)用廣泛的紅外線檢波接收的專用芯片,其具有功能強(qiáng)、性能優(yōu)越、外圍接口簡(jiǎn)單、成本低等優(yōu)點(diǎn),由于紅外遙控常用的載波頻率38 kHz與測(cè)距的超聲波頻率40 kHz比較接近,而且CX20106內(nèi)部設(shè)置的濾波器中心頻率f0可由其5腳(FW)外接電阻調(diào)節(jié),阻值越大中心頻率越低,范圍為30~60 kHz。 圖8 超聲波接收模塊</p><p> 故本次設(shè)計(jì)用它來(lái)做接收電
44、路。CX20106內(nèi)部由前置放大器、限幅放大器、帶通濾波器、檢波器、積分器及整形電路構(gòu)成。工作過(guò)程如下:接收的回波信號(hào)先經(jīng)過(guò)前置放大器和限幅放大器,將信號(hào)調(diào)整到合適幅值的矩形脈沖,由濾波器進(jìn)行頻率選擇,濾除干擾信號(hào),再經(jīng)整形,送給輸出端7腳(OUT)。當(dāng)接收到與CX20106濾波器中心頻率相符的回波信號(hào)時(shí),其輸出端7腳就輸出低電平,而輸出端7腳直接接到AT89S52的P3.3(INT1)引腳上,以觸發(fā)中斷。若頻率有一些誤差,可調(diào)節(jié)芯片引
45、腳5的外接電阻R4,將濾波器的中心頻率設(shè)置在40 kHz,就可達(dá)到理想的效果。 </p><p><b> 4 軟件編程設(shè)計(jì)</b></p><p> 4.1 程序設(shè)計(jì)流程圖</p><p> 圖9 程序設(shè)計(jì)流程圖</p><p> 4.2 1602LCD液晶顯示控制程序</p><p>
46、; 1602液晶也叫1602字符型液晶 它是一種專門用來(lái)顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊 它有若干個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符。每位之間有一個(gè)點(diǎn)距的間隔,每行之間也有也有間隔,起到了字符間距和行間距的作用,正因?yàn)槿绱耍运荒茱@示圖形。對(duì)它的操作通常有讀寫數(shù)據(jù)、讀寫命令和檢測(cè)忙信號(hào)等操作。在介紹程序之前先介紹本程序所涉及到的一些指令的意義。</p><p>
47、1602液晶的驅(qū)動(dòng)芯片HD44780內(nèi)置了DDRAM(顯示數(shù)據(jù)存儲(chǔ)RAM)、CGROM(字符存儲(chǔ)ROM)和CGRAM(用戶自定義RAM)。 DDRAM就是顯示數(shù)據(jù)RAM,用來(lái)寄存待顯示的字符代碼。共80個(gè)字節(jié),其地址和屏幕的對(duì)應(yīng)關(guān)系如下圖所示:</p><p> 圖10 DDRAM地址與屏幕對(duì)應(yīng)關(guān)系圖</p><p> 也就是說(shuō)想要在LCD1602屏幕的第一行第一列顯示一個(gè)“
48、A”字,就要向DDRAM的00H地址寫入“A”的</p><p> 代碼就行了。但具體的寫入是要按LCD模塊的指令格式來(lái)進(jìn)行的,一行有40個(gè)地址,在1602中我們就用前16個(gè)就行了。第二行也一樣用前16個(gè)地址。對(duì)應(yīng)如下圖所示: </p><p> 圖11 DDRAM地址與屏幕對(duì)應(yīng)關(guān)系圖(實(shí)際顯示部分)</p><p> 但是我們往DDRAM里的00H地址處送一
49、個(gè)數(shù)據(jù),譬如0x31(數(shù)字1的代碼)并不能顯示1出來(lái)。這是令初學(xué)者很容易出錯(cuò)的地方,原因就是如果你要想在DDRAM的00H地址處顯示數(shù)據(jù),則必須將00H加上80H,即0X80+0x00,若要在DDRAM的01H處顯示數(shù)據(jù),則必須將01H加上80H即 0X80+0x01,具體程序會(huì)在后面介紹寫地址的操作處解釋。</p><p> ?。?)基本操作時(shí)序: 讀狀態(tài)
50、60; 輸入:RS=L,RW=H,E=H 輸出:DB0~DB7=狀態(tài)字 寫指令
51、; 輸入:RS=L,RW=L,E=下降沿脈沖,DB0~DB7=指令碼 輸出:無(wú) 讀數(shù)據(jù) 輸入:RS=H,RW=H,E=H
52、160; 輸出:DB0~DB7=數(shù)據(jù) 寫數(shù)據(jù)
53、0; 輸入:RS=H,RW=L,E=下降沿脈沖,DB0~DB7=數(shù)據(jù) 輸出:無(wú) </p><p> ?。?)常用指令及意義</p><p><b> 1)清屏指令</b></p><p> 圖12 清屏指令對(duì)應(yīng)指令編碼 </p><p> 功能:<
54、1> 清除液晶顯示器,即將DDRAM的內(nèi)容全部填入“空白”的字符碼20H;</p><p> <2> 光標(biāo)歸位,即將光標(biāo)撤回液晶顯示屏的左上方; <3> 將地址計(jì)數(shù)器(AC)的值設(shè)為0。 </p><p> 2)輸入模式設(shè)置指令</p><p> 圖13 輸入模式設(shè)置對(duì)應(yīng)指令編碼</p><p> 功
55、能:設(shè)定每次寫入1位數(shù)據(jù)后光標(biāo)的移位方向,并且設(shè)定每次寫入的一個(gè)字符是否</p><p><b> 移動(dòng)。</b></p><p> 參數(shù)設(shè)定的情況如下所示: 位名 設(shè)置 I/D
56、60; 0 寫入新數(shù)據(jù)后光標(biāo)左移 1 寫入新數(shù)據(jù)后光標(biāo)右移 S
57、60; 0 寫入新數(shù)據(jù)后顯示屏不移動(dòng) 1 寫入新數(shù)據(jù)后顯示屏整體右移1個(gè)字</p><p> 3)顯示開關(guān)控制指令</p><p> 圖14 顯示開關(guān)控制對(duì)應(yīng)指令編碼</p><p> 功能:控制顯示器開/關(guān)、光標(biāo)顯示/關(guān)閉以及光標(biāo)是否閃爍。參數(shù)設(shè)定的情況如下: 參數(shù)設(shè)定情況如下所示</p><p> 位名
58、0; 設(shè)置 D 0=顯示功能關(guān)
59、160; 1=顯示功能開 C 0=無(wú)光標(biāo)
60、160; 1=有光標(biāo) B 0=光標(biāo)不閃爍 1
61、=光標(biāo)閃爍</p><p> 4)設(shè)定顯示屏或光標(biāo)移動(dòng)方向指令</p><p> 圖15 設(shè)定顯示屏或光標(biāo)移動(dòng)方向指令編碼</p><p> 功能:使光標(biāo)移位或使整個(gè)顯示屏幕移位。參數(shù)設(shè)定的情況如下:</p><p> 參數(shù)設(shè)定情況如下所示: S/C
62、; R/L 設(shè)定情況 0 &
63、#160; 0 光標(biāo)左移1格,且AC值減1 0 1
64、 光標(biāo)右移1格,且AC值加1 1 0 &
65、#160;顯示器上字符全部左移一格,但光標(biāo)不動(dòng) 1 1 顯示器上字符全部右移一格,但光標(biāo)不動(dòng) </p>&l
66、t;p><b> 5)功能設(shè)定指令</b></p><p> 圖16 功能設(shè)定指令編碼</p><p> 功能:設(shè)定數(shù)據(jù)總線位數(shù)、顯示的行數(shù)及字型。</p><p> 參數(shù)設(shè)定的情況如下: </p><p> 位名
67、0; 設(shè)置 DL
68、60; 0 數(shù)據(jù)總線為4位 1 數(shù)據(jù)總線為8位 N 0 顯示1行
69、 1 顯示2行 F 0 5×7點(diǎn)
70、陣/每字符 1 5×10點(diǎn)陣/每字符</p><p> 6)設(shè)定DDRAM地址指令</p><p> 圖17 設(shè)定DDRAM地址指令編碼</p><p> 功能:設(shè)定下一個(gè)要存入數(shù)據(jù)的CGRAM的地址。 (注意這里我們送地址的時(shí)候應(yīng)該是0x80+Address,</p><p> 這也是前面說(shuō)到
71、寫地址命令的時(shí)候要加上0x80的原因)</p><p> 7)讀取忙信號(hào)或AC指令</p><p> 圖18 讀取忙信號(hào)或AC指令編碼</p><p> 功能:<1> 讀取忙碌信號(hào)BF的內(nèi)容,BF=1表示液晶顯示器忙,暫時(shí)無(wú)法接收單片機(jī)送來(lái)的數(shù)據(jù)或指令; 當(dāng)BF=0時(shí),液晶顯示器可以接收單片機(jī)送來(lái)的數(shù)據(jù)或指令;</p><p&g
72、t; <2> 讀取地址計(jì)數(shù)器(AC)的內(nèi)容。</p><p> 8)數(shù)據(jù)寫入DDRAM或CGRAM指令</p><p> 圖19 數(shù)據(jù)寫入DRAM或CGRAM指令編碼</p><p> 功能:<1> 將字符碼寫入DDRAM,以使液晶顯示屏顯示出相對(duì)應(yīng)的字符;</p><p> <2> 將用戶自己設(shè)
73、計(jì)的圖形存入CGRAM。 </p><p><b> (3)操作時(shí)序圖</b></p><p><b> 1)讀數(shù)據(jù)、命令</b></p><p> 讀狀態(tài) 輸入:RS=0,RW=1,E=1
74、60; </p><p> 讀數(shù)據(jù) 輸入:RS=1,RW=1,E=1</p><p> 圖20 讀、數(shù)據(jù)、命令時(shí)序圖</p><p><b> 2)寫數(shù)據(jù)、命令</b></p><p>
75、 寫指令 輸入:RS=0,RW=0,E=下降沿脈沖,DB0~DB7=指令碼 寫數(shù)據(jù) 輸入:RS=1,RW=0,E=下降沿脈沖,DB0~DB7=數(shù)據(jù) </p><p> 圖
76、21 寫數(shù)據(jù)、命令時(shí)序圖</p><p><b> ?。?)程序舉例</b></p><p> 1)1602液晶忙信號(hào)檢測(cè)</p><p> uchar BusyTest(void) </p><p><b> {</b></p><p> bit result
77、;</p><p> RS=0; //rs為0 rw為1 數(shù)據(jù)位第8位為忙信號(hào)</p><p><b> RW=1;</b></p><p> E=1; </p><p> _nop_(); </p><p><b> _nop_();</b
78、></p><p><b> _nop_(); </b></p><p> _nop_(); </p><p> result=BF; </p><p> E=0; </p><p> return result;</p><p><
79、;b> } </b></p><p> 2)1602寫命令指令</p><p> void WriteCom (unsigned char dictate)</p><p><b> { </b></p><p> while(BusyTest()==1); </p>&l
80、t;p> RS=0; //rs為0 rw為0 e下降沿寫入指令</p><p><b> RW=0; </b></p><p> E=0; </p><p> _nop_(); //e為0期間,將數(shù)據(jù)送到P0口</p><
81、;p> _nop_(); </p><p> P0=dictate; </p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</
82、b></p><p> _nop_(); </p><p> E=1; </p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><
83、b> _nop_();</b></p><p> _nop_(); </p><p> E=0; </p><p><b> }</b></p><p> 3)1602寫地址指令</p><p> void
84、WriteAddress(unsigned char x) //1602液晶確定將要寫入DDRAM的數(shù)據(jù)的地址</p><p><b> {</b></p><p> WriteCom(x|0x80); //要顯示的地址+0x80為實(shí)際要寫入的地址 可用或操作實(shí)現(xiàn)</p><p><b> }</b>
85、</p><p> 4)1602寫數(shù)據(jù)指令</p><p> void WriteData(unsigned char y)</p><p><b> {</b></p><p> while(BusyTest()==1); </p><p> RS=1;
86、//rs為1 rw為0 e下降沿寫入指令</p><p><b> RW=0;</b></p><p> E=0; </p><p> P0=y; //e為0期間,將數(shù)據(jù)送到P0口</p><p><b> _nop_();</b>
87、;</p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p> _nop_(); </p><p> E=1; </p><p><b> _nop_();</
88、b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p> _nop_(); </p><p> E=0; </p><p><b> }</
89、b></p><p> 5)1602初始化指令</p><p> void LcdInitiate(void) </p><p><b> {</b></p><p> delay(15); </p><p> WriteCom(0x38);
90、 //5*7點(diǎn)陣 數(shù)據(jù)總線為8位 顯示兩行</p><p> delay(5); </p><p> WriteCom(0x38);</p><p><b> delay(5);</b></p><p> WriteCom(0x38); //液晶廠家推薦方式——三次寫入確
91、保確切寫入</p><p><b> delay(5);</b></p><p> WriteCom(0x0c);//顯示功能開,光標(biāo)不顯示</p><p><b> delay(5);</b></p><p> WriteCom(0x06); //寫入新數(shù)據(jù)后光標(biāo)右移(即A
92、C自加1)</p><p><b> delay(5);</b></p><p> WriteCom(0x01); //清屏指令</p><p><b> delay(5);</b></p><p><b> } </b></p><p>
93、; 4.3 超聲波測(cè)速模塊發(fā)送程序</p><p><b> Tx=1;</b></p><p> delay_20us();//在超聲波模塊發(fā)射腳產(chǎn)生20us高電平,啟動(dòng)測(cè)速</p><p> Tx=0; </p><p> while(Rx==0)</p><p&
94、gt; ; //啟動(dòng)完成后接收腳自動(dòng)置1 等啟動(dòng)完成</p><p> succeed_flag=0; //測(cè)速成功標(biāo)志置0 </p><p> EX1=1; //開外部中斷1 超聲波模塊的接收叫接在外部中斷1的輸入腳 </p><p> TH1=0; </p><p>
95、 TL1=0; //定時(shí)器1 的初值設(shè)0 用來(lái)計(jì)時(shí) </p><p> TR1=1; //啟動(dòng)定時(shí)器1 開始計(jì)時(shí)</p><p> EA=1;//開總中斷 </p><p> delay(80);//等待80ms 此間若測(cè)速完成 會(huì)進(jìn)外部中斷 置測(cè)速成功標(biāo)志位1 讀取時(shí)間</p><p>
96、; 4.4 超聲波模塊回波檢測(cè)程序</p><p> INT0_() interrupt 2 //若測(cè)速成功 則進(jìn)入此中斷 讀取計(jì)時(shí)器計(jì)時(shí)數(shù)值 </p><p><b> { </b></p><p> outcomeH =TH1; </p><p> outcomeL =TL1;
97、 </p><p> succeed_flag=1; </p><p><b> }</b></p><p> TR1=0; //停止計(jì)時(shí)</p><p> EX1=0; //禁止外部中斷</p><p><b> 4.5數(shù)據(jù)處理程
98、序</b></p><p> 1)計(jì)算測(cè)速距離 </p><p> if(succeed_flag==1)//如果測(cè)速成功,會(huì)讀取時(shí)間的數(shù)值</p><p><b> { </b></p><p> Distance_data=outcomeH; <
99、/p><p> distance_data<<=8; </p><p> distance_data=distance_data|outcomeL; </p><p> distance_data*=12; </p><p> distance_data/
100、=58; //Y米=X秒*340/2 Y厘米=X微秒/58 </p><p> } </p><p> if(succeed_flag==0)//60ms后 若為測(cè)速未成功,則賦0</p><p><b> {</b></
101、p><p> distance_data=0; </p><p><b> }</b></p><p> deal(distance_data); //數(shù)據(jù)處理 分離個(gè)、十、百 </p><p> 2)分離距離數(shù)值的個(gè)位、十位和百位</p><p
102、> void deal(uint temp_data) </p><p><b> { </b></p><p> uchar ge_data,shi_data,bai_data ;</p><p> bai_data=temp_data/100 ; //將計(jì)算過(guò)后的指令取出個(gè)位、十位、百位</p>
103、<p> temp_data=temp_data%100; </p><p> shi_data=temp_data/10 ;</p><p> ge_data=temp_data%10; </p><p> EA=0; //關(guān)總中斷,確保數(shù)據(jù)確實(shí)讀出</p><p> bai = bai_d
104、ata;</p><p> shi = shi_data;</p><p> ge = ge_data ; </p><p><b> EA=1;</b></p><p><b> }</b></p><p> 4.6數(shù)據(jù)送液晶顯示程序</p>&l
105、t;p> WriteAddress(0x41); </p><p> WriteData('J'); </p><p> WriteData('U'); </p><p> WriteData('L'); </p><p> WriteData('I');
106、 </p><p> WriteData(':'); </p><p> WriteData(digit[bai]);</p><p> WriteData(digit[shi]); </p><p> WriteData('.'); </p><p> WriteDa
107、ta(digit[ge]); </p><p> WriteData(' '); </p><p> WriteData('C'); </p><p> WriteData('M'); </p><p><b> 5 實(shí)驗(yàn)與結(jié)果分析</b></p>
108、<p> 5.1軟硬件仿真調(diào)試</p><p> 運(yùn)用STC_ISP_V479軟件將編譯生成的hex文件燒寫到單片機(jī)中,液晶顯示屏在顯示2秒初始化界面后,即可實(shí)時(shí)顯示所測(cè)得的距離。</p><p><b> 1)初始界面</b></p><p> 圖22 液晶顯示初始界面</p><p> 圖 2
109、3(a) 圖 23(b)</p><p> 圖 23(c) 圖 23(d)</p><p> 圖23 超聲波測(cè)速工作顯示界面</p><p><b> 5.2 結(jié)果分析</b></p><p>
110、 本次課程設(shè)計(jì)所設(shè)計(jì)的超聲波測(cè)速程序,雖然能實(shí)時(shí)顯示所測(cè)得的距離,而且在實(shí)際調(diào)試、校準(zhǔn)時(shí)也已將誤差縮小至2cm以內(nèi),可以滿足基本的測(cè)速范圍。但是仍然存在需要改進(jìn)的地方,但由于時(shí)間和實(shí)際條件的限制無(wú)法做到盡善盡美。具體表現(xiàn)在兩個(gè)方面:1.測(cè)距的范圍有限,實(shí)驗(yàn)發(fā)現(xiàn)最大測(cè)距距離在90cm左右;2.通過(guò)查閱資料得知,聲速在空氣中傳播速度與所處環(huán)境的溫度、濕度、氣壓等諸多因素有關(guān),由于個(gè)人能力所限及實(shí)際情況無(wú)法將所有因素考慮在內(nèi),只是近似選取了
111、聲速在標(biāo)準(zhǔn)環(huán)境下的速度340m/s。</p><p><b> 6 小結(jié)與體會(huì)</b></p><p> 此次單片機(jī)原理及應(yīng)用課程設(shè)計(jì)前后共計(jì)1周半的時(shí)間,由于整個(gè)過(guò)程從選題到功能模塊的學(xué)習(xí)到軟件硬件編程調(diào)試都是我自己一個(gè)人在摸索,所以1周半之后自己感覺(jué)收獲頗豐,感覺(jué)自己在過(guò)去一學(xué)期中學(xué)到的單片機(jī)及其外圍設(shè)備的知識(shí)以及單片機(jī)原理及應(yīng)用這門課所特有的思維模式得到了充
112、分的發(fā)揮。</p><p> 在與老師進(jìn)行簡(jiǎn)單的溝通之后,我得到允許可以脫離給定課題的限制,自己按照自己的想法設(shè)計(jì)編程實(shí)現(xiàn)自己感興趣的東西,這一點(diǎn)讓我在整個(gè)課程設(shè)計(jì)的過(guò)程中都能保持高度的熱情。然而由于此次課程設(shè)計(jì)自始至終都是我一個(gè)人在慢慢摸索,而自己為了給自己一點(diǎn)挑戰(zhàn)性,所選課題中的超聲波測(cè)速模塊和1602液晶在平時(shí)都沒(méi)有接觸到,所以我需要在動(dòng)手之前迅速學(xué)會(huì)對(duì)他們進(jìn)行相應(yīng)的操作。所以第一天和第二天的時(shí)間我都花在
113、了學(xué)習(xí)對(duì)這兩個(gè)模塊的操作上了,而整個(gè)課程設(shè)計(jì)期間也只有這兩天我所學(xué)到的東西是最多的。</p><p> 在了解了對(duì)超聲波測(cè)速模塊和1602液晶的操作之后,在第三天開始,我就開始根據(jù)預(yù)期的目的開始設(shè)計(jì)整個(gè)程序的流程,并一再的分析論證其可行性,因?yàn)槲抑肋@將是整個(gè)課程設(shè)計(jì)的核心。我以為我一切已經(jīng)準(zhǔn)備就緒,但當(dāng)我實(shí)際開始編程時(shí),我還是卡在了對(duì)超聲波模塊的測(cè)速上,因?yàn)槲野l(fā)現(xiàn)我手頭掌握的關(guān)于超聲波模塊的資料,其選擇的驅(qū)動(dòng)
114、芯片和我手頭的并不一致,而網(wǎng)上關(guān)于CX20106芯片的說(shuō)明也是少之又少。我以為我遇到了瓶頸,覺(jué)得無(wú)法進(jìn)行下去了,這時(shí)候舍友提醒我可以去聯(lián)系當(dāng)初我購(gòu)買板子的店家,從他們那尋求幫助,果不其然從他們那我得到了詳細(xì)的關(guān)于CX20106芯片的資料,同時(shí)他們提供給我的示例程序?qū)ξ业能浖帉懖糠謳?lái)了一定的指導(dǎo)意義。</p><p> 平時(shí)實(shí)驗(yàn)期間老師對(duì)我們說(shuō),正確編寫程序并不難,難的是能檢查出錯(cuò)誤程序中的錯(cuò)誤。而在此次課程
115、設(shè)計(jì)期間我就遇到了這樣的問(wèn)題。在我按照流程圖編寫完程序之后,無(wú)論怎樣1602液晶始終不能顯示。然而我一遍遍的檢查流程圖,一次次的核對(duì)程序,并請(qǐng)同學(xué)幫忙檢查程序之后仍然發(fā)現(xiàn)不了錯(cuò)誤,覺(jué)得從程序設(shè)計(jì)思想,到各模塊功能的操作以及到軟件編程都不存在錯(cuò)誤。但液晶不現(xiàn)實(shí)是明擺的現(xiàn)實(shí),我只能采取最原始的方法,將每一句語(yǔ)句拆分出來(lái),一句句分析,而這竟花費(fèi)了我半天的時(shí)間,最終發(fā)現(xiàn)在主程序的while循環(huán)后面多加了一個(gè)分號(hào),致使程序無(wú)法最終進(jìn)入顯示部分。而
116、這樣的低級(jí)錯(cuò)誤本是不應(yīng)該發(fā)生的,只能說(shuō)自己在編寫程序的時(shí)候還沒(méi)有養(yǎng)成良好的習(xí)慣,不能及時(shí)回頭檢查程序編寫中可能出現(xiàn)的人為的低級(jí)錯(cuò)誤。</p><p> 當(dāng)然,在此刻課程設(shè)計(jì)期間,我所學(xué)到的遠(yuǎn)不止這些。不管是如何迅速的熟悉并學(xué)會(huì)對(duì)新的器件的操作,還是設(shè)計(jì)程序流程圖,還是尋找程序中的錯(cuò)誤,還是優(yōu)化程序,精簡(jiǎn)不必要的指令,減少資源空間的浪費(fèi)……</p><p> 在此次課程設(shè)計(jì)過(guò)程中我都有了
117、更進(jìn)一步的認(rèn)識(shí)。然而正如之前所說(shuō),由于時(shí)間條件限制和個(gè)人能力所限,此次設(shè)計(jì)的超聲波測(cè)速程序,只能滿足一般的測(cè)速要求,若要提高其精確度和穩(wěn)定性我還需要做大量的工作。而這將是我后續(xù)需要學(xué)習(xí)和完善的地方,或許它也會(huì)給我一年后的畢業(yè)設(shè)計(jì)帶來(lái)一定的提示與便捷。</p><p><b> 參 考 文 獻(xiàn)</b></p><p> [1] 張毅剛主編,單片機(jī)原理及應(yīng)用,北京:高
118、等教育出版社,2004</p><p> [2] 范百剛,超聲原理與應(yīng)用[M].,南京: 江蘇科學(xué)技術(shù)出版社,,1984</p><p> [3] 朱善軍,單片機(jī)接口技術(shù)及應(yīng)用[M],北京:北京航天航空大學(xué)出版社出版,2003</p><p> [4] 區(qū)建昌,電子設(shè)備的電磁兼容性設(shè)計(jì)[M],北京:電子工業(yè)出版社出版,2002 </p><
119、p> [5] 李建忠,單片機(jī)原理及應(yīng)用,西安:西安電子科技大學(xué)出版社,2002</p><p> [6] 賈伯年,傳感器技術(shù),南京:東南大學(xué)出版社,2000</p><p> [7] 閻石, 數(shù)字電子技術(shù)基礎(chǔ),北京:高等教育出版社,1998</p><p> [8] 譚浩強(qiáng).,C程序設(shè)計(jì)(第三版),北京:清華大學(xué)出版社,2005</p>
120、<p><b> 附錄</b></p><p> 附1超聲波測(cè)距模塊圖片</p><p> 附2 1602液晶實(shí)物照片</p><p> 附3 單片機(jī)開發(fā)板照片</p><p><b> 附4系統(tǒng)原理圖</b></p><p><b> 附5
121、源程序</b></p><p> #include <reg52.h> </p><p> #include<intrins.h> </p><p> #define uchar unsigned char </p><p> #define uint unsigned int</p
122、><p> #define ulong unsigned long</p><p> sbit Tx=P3^2; //超聲波模塊發(fā)射腳</p><p> sbit Rx=P3^3; //超聲波模塊接收腳</p><p> sbit RS=P2^0; //1602液晶指令、數(shù)據(jù)選擇位</p><p&g
123、t; sbit RW=P2^1; //1602液晶讀寫選擇位</p><p> sbit E=P2^2; //1602液晶使能位</p><p> sbit BF=P0^7; //1602液晶忙信號(hào)位</p><p> uchar code string[ ]= {"CHAO SHENG BO"}; </p&g
124、t;<p> uchar code digit[ ]={"0123456789"}; </p><p> uchar code string0[ ]={" CSB CE SU"};</p><p> uchar code string1[ ]={" Designed by Pj"};</p>
125、<p> uchar ge,shi,bai,outcomeH,outcomeL,i; </p><p> bit succeed_flag; //測(cè)速成功標(biāo)志位</p><p> void delay1ms() //延時(shí)1ms</p><p><b> {</b></p><p> uns
126、igned char i,j;</p><p> for(i=0;i<10;i++)</p><p> for(j=0;j<33;j++)</p><p><b> ; </b></p><p><b> }</b></p><p> void d
127、elay(unsigned char n) //延時(shí)n ms</p><p><b> {</b></p><p> unsigned char i;</p><p> for(i=0;i<n;i++)</p><p> delay1ms();</p><p><b>
128、 }</b></p><p> uchar BusyTest(void) //1602液晶忙信號(hào)檢測(cè)</p><p><b> {</b></p><p> bit result;</p><p> RS=0; //rs為0 rw為1 數(shù)據(jù)位第8位為忙信號(hào)</p>
129、<p><b> RW=1;</b></p><p> E=1; </p><p> _nop_(); </p><p><b> _nop_();</b></p><p><b> _nop_(); </b></p><
130、p> _nop_(); </p><p> result=BF; </p><p> E=0; </p><p> return result;</p><p><b> }</b></p><p> void WriteCom (unsigned char
131、dictate)//1602液晶寫指令</p><p><b> { </b></p><p> while(BusyTest()==1); </p><p> RS=0; //rs為0 rw為0 e下降沿寫入指令</p><p><b> RW=0; &
132、lt;/b></p><p> E=0; </p><p> _nop_(); //e為0期間,將數(shù)據(jù)送到P0口</p><p> _nop_(); </p><p> P0=dictate; </p><p>
133、;<b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p> _nop_(); </p><p> E=1;
134、</p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p> _nop_(); </p><p> E=
135、0; </p><p><b> }</b></p><p> void WriteAddress(unsigned char x) //1602液晶確定將要寫入DDRAM的數(shù)據(jù)的地址</p><p><b> {</b></p><p> Write
136、Com(x|0x80); //要顯示的地址+0x80為實(shí)際要寫入的地址 可用或操作實(shí)現(xiàn)</p><p><b> }</b></p><p> void WriteData(unsigned char y)//1602液晶寫數(shù)據(jù)</p><p><b> {</b></p><
137、p> while(BusyTest()==1)</p><p><b> ; </b></p><p> RS=1; //rs為1 rw為0 e下降沿寫入指令</p><p><b> RW=0;</b></p><p> E=0;
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)超聲波測(cè)距儀設(shè)計(jì)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--超聲波測(cè)距儀的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)超聲波測(cè)距儀的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---基于單片機(jī)的超聲波測(cè)距儀
- 基于單片機(jī)的超聲波測(cè)距儀課程設(shè)計(jì)
- 課程設(shè)計(jì)--- 基于51單片機(jī)的超聲波測(cè)距儀設(shè)計(jì)
- 基于單片機(jī)的超聲波測(cè)距儀設(shè)計(jì)
- 基于51單片機(jī)超聲波測(cè)距儀設(shè)計(jì)
- 超聲波測(cè)距儀課程設(shè)計(jì)
- 超聲波測(cè)距儀課程設(shè)計(jì)
- 基于單片機(jī)的超聲波測(cè)距儀
- 基于51單片機(jī)的超聲波測(cè)距儀設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-超聲波測(cè)距
- 單片機(jī)課程設(shè)計(jì)--超聲波測(cè)距
- 單片機(jī)課程設(shè)計(jì)-超聲波測(cè)距
- 基于51單片機(jī)超聲波測(cè)距儀
- 超聲波測(cè)距儀課程設(shè)計(jì) (2)
- 基于單片機(jī)的超聲波測(cè)距儀畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的超聲波測(cè)距儀設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于單片機(jī)控制超聲波測(cè)距儀畢業(yè)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論