版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 數(shù)字超聲波倒車測距儀設(shè)計(jì)</p><p> 學(xué)生:XX 指導(dǎo)教師:XX</p><p> 內(nèi)容摘要:在實(shí)時(shí)檢測和自動(dòng)控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往是作為一個(gè)核心部件來使用。單片機(jī)是把主要計(jì)算機(jī)功能部件都集成在一塊芯片上的微型計(jì)算機(jī)。它是一種集計(jì)數(shù)和多中接口于一體的微控制器。而52單片機(jī)是個(gè)單片機(jī)中最為典型和最有代表性的一種。 </p&
2、gt;<p> 本設(shè)計(jì)主要應(yīng)用AT89C52作為控制核心,與顯示器,驅(qū)動(dòng)電路等相結(jié)合的系統(tǒng)?;趩纹瑱C(jī)設(shè)計(jì)。利用單片機(jī)AT89C52作為報(bào)警裝置的控制器,能充分發(fā)揮AT89C52的數(shù)據(jù)處理和實(shí)時(shí)控制功能而設(shè)計(jì)的數(shù)字超聲波倒車測距儀。使系統(tǒng)工作于最佳狀態(tài),提高系統(tǒng)的靈敏度。其優(yōu)點(diǎn)是體積小、使用方便、硬件電路簡單,軟件功能完善,控制系統(tǒng)可靠,具有一定的使用和參考價(jià)值。若將安全距離設(shè)為0.5m,就可作為汽車倒車報(bào)警器,提高汽車
3、倒車時(shí)的安全性。 該數(shù)字超聲波倒車測距儀利用超聲波實(shí)現(xiàn)對汽車的測距。利用單片機(jī)的實(shí)時(shí)控制和數(shù)據(jù)處理功能完成系統(tǒng)的控制。文章給出了測距儀的硬件電路原理及軟件設(shè)計(jì)。</p><p> 關(guān)鍵詞:AT89C52 超聲波 測距儀</p><p> The design of Digital ultrasonic Reverse rangefinder</p><p>
4、 Abstract: In the application system of single-chip microcomputer of real-time detection and automatic control, the single-chip microcomputer always be used as a core components. The single-chip microcomputer is a micro
5、computer which collect all the important computer components to a chip.It is a kind of micro controller which contains count and varieties of interface. However, the 52 single-chip is the most typical and representative
6、one of all the single-chip.</p><p> This design is mainly taking AT89C52 as the control core, it is a system of connecting monitor, drive circuit etc. According to the design of the single-chip, using AT89
7、C52 as the controller of alarm device will fully develop the function of data processing and real-time control of AT89C52. This kind of single-chip ensures the best condition and arises the sensitivity of the system. Th
8、e merit of this single-chip is the small volume, convenience, simple hardware circuit, perfect software functi</p><p> Keywords: AT89C52 ultrasonic rangefind</p><p><b> 目 錄</b&
9、gt;</p><p><b> 前言1</b></p><p> 1 數(shù)字超聲波倒車測距儀介紹1</p><p> 1.1 數(shù)字超聲波倒車測距儀功能分析1</p><p> 1.1.1 數(shù)字超聲波倒車測距儀的基本功能1</p><p> 1.2.1 AT89C52的硬件
10、結(jié)構(gòu)圖2</p><p> 1.2.2 AT89C52各部分的作用與工作原理3</p><p> 2 系統(tǒng)硬件電路設(shè)計(jì)6</p><p> 2.1 單片機(jī)的最小系統(tǒng)6</p><p> 2.2 時(shí)鐘電路6</p><p> 2.3 復(fù)位電路7</p><p>
11、2.4 多諧振蕩器7</p><p> 2.5 超聲波傳感器8</p><p> 2.6 超聲波接收電路9</p><p> 2.7 放大電路及參數(shù)設(shè)定9</p><p> 2.8 電壓比較電路及參數(shù)設(shè)計(jì)10</p><p> 2.9 AT89C52和LCD顯示器模塊的硬件接口11&l
12、t;/p><p> 3 系統(tǒng)軟件設(shè)計(jì)14</p><p> 3.1 超聲波接收發(fā)射軟件設(shè)計(jì)14</p><p> 3.1.1 距離計(jì)算問題14</p><p> 3.1.2 串?dāng)_問題14</p><p> 3.1.3程序流程圖15</p><p> 3.2 LCD液
13、晶顯示器軟件設(shè)計(jì)16</p><p> 3.2.1 讀/寫時(shí)序17</p><p><b> 4 結(jié)束語18</b></p><p><b> 附錄:19</b></p><p><b> 參考文獻(xiàn):25</b></p><p>
14、 數(shù)字超聲波倒車測距儀設(shè)計(jì)</p><p><b> 前言 </b></p><p> 人們能聽到聲音是由于物體振動(dòng)產(chǎn)生的,它的頻率在20HZ-20KHZ范圍內(nèi),超過20KHz稱為超聲波,低于20Hz的稱為次聲波。常用的超聲波頻率為幾十KHz~幾十MHz。由于超聲波指向性強(qiáng),因而常于距離的測量。利用超聲波檢測往往比較迅速、方便、計(jì)算簡單、易于做到實(shí)時(shí)控制,并且在測
15、量精度方面能達(dá)到工業(yè)實(shí)用的要求,因此在移動(dòng)機(jī)器人,汽車安全,海洋測量等上得到了廣泛的應(yīng)用。本設(shè)計(jì)提供一種液晶顯示測距裝置,該裝置利用了發(fā)射接收一體化的超聲波傳感器和微處理器。采用超聲波傳感器分時(shí)工作于發(fā)射和接收,利用聲波在空氣中的傳播速度和發(fā)射脈沖到接收反射脈沖的時(shí)間間隔計(jì)算出障礙物到超聲波測距器之間的距離。</p><p> 距離是在不同的場合和控制中需要檢測的一個(gè)參數(shù),所以,測距就成為數(shù)據(jù)采集中要解決的一個(gè)
16、問題。盡管測距有多種方式,比如,激光測距,微波測距,紅外線測距和超聲波測距等。但是,超聲波測距不失為一種簡單可行的方法。雖然超聲波測距電路多種多樣,甚至已有專用超聲波測距集成電路。但是,有的電路復(fù)雜,技術(shù)難度大,有的調(diào)試?yán)щy,有的元件不易購買。本文介紹的電路,成本低廉,性能可靠,所用元件易購,并且利用測距原理,結(jié)合單片機(jī)的數(shù)據(jù)處理,使測量精度提高,電路實(shí)現(xiàn)容易,無須調(diào)試,工作穩(wěn)定可靠。</p><p> 1
17、數(shù)字超聲波倒車測距儀介紹</p><p> 1.1 數(shù)字超聲波倒車測距儀功能分析</p><p> 這部分闡述了數(shù)字超聲波倒車測距儀的各種動(dòng)作功能和控制要求,給出了完整的數(shù)字超聲波倒車測距儀操作規(guī)程,并介紹了數(shù)字超聲波倒車測距儀運(yùn)行系統(tǒng)種所包括的人工操作步驟。</p><p> 1.1.1 數(shù)字超聲波倒車測距儀的基本功能</p><p&
18、gt; 在進(jìn)行程序編寫之前,首先要做的工作是數(shù)字超聲波倒車測距儀本身所具備的功能及在進(jìn)行某種操作后所具有的狀態(tài)。</p><p> 數(shù)字超聲波倒車測距儀的基本功能就是對汽車尾部到靜止物體的距離進(jìn)行運(yùn)算,并根據(jù)所測距離數(shù)值判斷是否能夠順利完成車輛的倒車,并作出相應(yīng)的反應(yīng)。數(shù)字超聲波倒車測距儀的工作框圖如圖1.1.1-1所示:</p><p> 圖1.1.1-1 超聲波倒車測距儀工作框
19、圖</p><p> 1.2 控制器的選型與工作原理</p><p> 當(dāng)某一個(gè)控制任務(wù)決定由控制器來完成后,選擇控制器就成為最重要的事情。一方面要選擇多大容量的控制器 ,另一方面是選擇什么公司的單片機(jī)及外設(shè)。</p><p> 對第一個(gè)問題,首先要對控制任務(wù)進(jìn)行詳細(xì)的分析,把所有的I/O口找出來,包括每個(gè)端口的具體功能。</p><p&
20、gt; 1.2.1 AT89C52的硬件結(jié)構(gòu)圖</p><p> 圖1.2.1-1 AT89C52硬件結(jié)構(gòu)圖</p><p> 1.2.2 AT89C52各部分的作用與工作原理 </p><p> 1.2.2.1 中央處理器 </p><p> CPU是由控制器和運(yùn)算器組成的。運(yùn)算器也稱為算術(shù)邏輯單元,它的功能就是進(jìn)行算術(shù)運(yùn)
21、算和邏輯運(yùn)算??刂破鞯淖饔檬强刂普麄€(gè)計(jì)算機(jī)的各個(gè)部件有條不紊地工作,其基本功能是從內(nèi)存中取指令和執(zhí)行指令。他的重要功能如下:</p><p> ★ 為一般控制應(yīng)用的 8 位單芯片;</p><p> ★ 晶片內(nèi)部具時(shí)鐘振蕩器(傳統(tǒng)最高工作頻率可至 12MHz);</p><p> ★ 內(nèi)部程式存儲(chǔ)器(ROM)為 4KB;</p><p>
22、; ★ 內(nèi)部數(shù)據(jù)存儲(chǔ)器(RAM)為 128B;</p><p> ★ 外部程序存儲(chǔ)器可擴(kuò)充至 64KB;</p><p> ★ 外部數(shù)據(jù)存儲(chǔ)器可擴(kuò)充至 64KB;</p><p> ★ 32 條雙向輸入輸出線,且每條均可以單獨(dú)做 I/O 的控制;</p><p> ★ 5 個(gè)中斷向量源;</p><p>
23、★ 2 組獨(dú)立的 16 位定時(shí)器;</p><p> ★ 1 個(gè)全多工串行通信端口;</p><p> ★ 8751 及 8752 單芯片具有數(shù)據(jù)保密的功能;</p><p> ★ 單芯片提供位邏輯運(yùn)算指令。</p><p> 1.2.2.2 存儲(chǔ)器</p><p> AT89C52的存儲(chǔ)器分為兩大部分&l
24、t;/p><p> 一大部分是程序存儲(chǔ)器,用來存放系統(tǒng)管理程序、監(jiān)控程序及其系統(tǒng)內(nèi)部數(shù)據(jù);二大部分是數(shù)據(jù)存儲(chǔ)器,用于存放中間運(yùn)算結(jié)果、數(shù)據(jù)暫存和緩沖、標(biāo)志位。</p><p> 1.2.2.3 I/O口介紹</p><p> 圖1.2.2.3-1 AT89C52管腳圖</p><p><b> ◆ VCC: 電源</b
25、></p><p> ◆ GND: 電源地</p><p> ◆ P0 口:P0口是一個(gè)8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏輯電平。對P0端口寫“1”時(shí),引腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0具有內(nèi)部上拉電阻。在flash編程時(shí),P0口也用來接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校
26、驗(yàn)時(shí),需要外部上拉電阻。</p><p> ◆ P1 口:P1 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,P1 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對P1 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0和P1.2分別作定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(P1.0/T2)和時(shí)器/計(jì)數(shù)器2的觸發(fā)輸入(P1
27、.1/T2EX),具體如下表所示。在flash編程和校驗(yàn)時(shí),P1口接收低8位地址字節(jié)。在flash編程和校驗(yàn)時(shí),P1口接收低8位地址字節(jié)。具體如下所示:</p><p><b> P1端口第二功能:</b></p><p> P1.0T2(定時(shí)器/計(jì)數(shù)器T2的外部計(jì)數(shù)輸入),時(shí)鐘輸出</p><p> P1.1T2EX(定時(shí)器/計(jì)數(shù)器
28、T2的捕捉/重載觸發(fā)信號和方向控制)</p><p> P1.5MOSI(在系統(tǒng)編程用)</p><p> P1.6MISO(在系統(tǒng)編程用)</p><p> P1.7SCK(在系統(tǒng)編程用)</p><p> ◆ P2 口:P2 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對P2
29、 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲(chǔ)器或用16位地址讀取外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX @DPTR)時(shí),P2 口送出高八位地址。在這種應(yīng)用中,P2 口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用8位地址(如MOVX @RI)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口輸出P2鎖存器的內(nèi)容。在flash編程和校驗(yàn)時(shí),P2口也接收高8位地址字節(jié)和
30、一些控制信號。</p><p> ◆ P3 口:P3 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,p2 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對P3 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。P3口亦作為AT89C52特殊功能(第二功能)使用。在flash編程和校驗(yàn)時(shí),P3口也接收一些控制信號。</p&g
31、t;<p><b> P3端口第二功能:</b></p><p> P3.0RXD(串行輸入)</p><p> P3.1TXD(串行輸出)</p><p> P3.2INT0(外部中斷0)</p><p> P3.3INT1(外部中斷1)</p><p> P3
32、.4T0(定時(shí)器0外部輸入)</p><p> P3.5T1(定時(shí)器1外部輸入)</p><p> P3.6WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)</p><p> P3.7RD(外部數(shù)據(jù)存儲(chǔ)器寫選通)</p><p> ◆ RST: 復(fù)位輸入。晶振工作時(shí),RST腳持續(xù)2 個(gè)機(jī)器周期高電平將使單片機(jī)復(fù)位??撮T狗計(jì)時(shí)完成后,RST 腳輸出
33、96 個(gè)晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認(rèn)狀態(tài)下,復(fù)位高電平有效。</p><p> ◆ ALE/PROG:地址鎖存控制信號(ALE)是訪問外部程序存儲(chǔ)器時(shí),鎖存低8 位地址的輸出脈沖。在flash編程時(shí),此引腳(PROG)也用作編程輸入脈沖。在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時(shí)器或時(shí)鐘使用。然而,特別強(qiáng)調(diào)
34、,在每次訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),ALE脈沖將會(huì)跳過。如果需要,通過將地址為8EH的SFR的第0位置 “1”,ALE操作將無效。這一位置 “1”,ALE 僅在執(zhí)行MOVX 或MOVC指令時(shí)有效。否則,ALE 將被微弱拉高。這個(gè)ALE 使能標(biāo)志位(地址為8EH的SFR的第0位)的設(shè)置對微控制器處于外部執(zhí)行模式下無效。</p><p> ◆ PSEN:外部程序存儲(chǔ)器選通信號(PSEN)是外部程序存儲(chǔ)器選通信號。當(dāng)AT8
35、9C52從外部程序存儲(chǔ)器執(zhí)行外部代碼時(shí),PSEN在每個(gè)機(jī)器周期被激活兩次,而在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),PSEN將不被激活。</p><p> ◆ EA/VPP:訪問外部程序存儲(chǔ)器控制信號。為使能從0000H 到FFFFH的外部程序存儲(chǔ)器讀取指令,EA必須接GND。為了執(zhí)行內(nèi)部程序指令,EA應(yīng)該接VCC。在flash編程期間,EA也接收12伏VPP電壓。</p><p> ◆ XTAL1:
36、振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。</p><p> ◆ XTAL2:振蕩器反相放大器的輸出端。</p><p> 1.2.2.3 系統(tǒng)的基本工作原理</p><p> 系統(tǒng)的工作是由軟件和硬件的配合過程。先由AT89C52單片機(jī)使NE555使能端置1,繼而NE555送出40kHz頻率的方波信號經(jīng)過壓電換能器(超聲波發(fā)射頭)將信號發(fā)射出去及發(fā)射超聲
37、波,同時(shí)該時(shí)刻啟動(dòng)定時(shí)器開時(shí)計(jì)時(shí)。該信號遇到障礙物反射回來在此稱為回波。同時(shí),壓電換能器(超聲波接收頭)將接收的回波及接收超聲波,通過信號處理的檢波放大,及通過三級放大后再送到比較器進(jìn)行比較輸出比較電壓, 輸出電壓經(jīng)過三極管以后,使之電壓與AT89C52的I/O口相匹配最后送至微機(jī)處理。最后進(jìn)行LCD液晶顯示。數(shù)字超聲波倒車測距儀的工作框圖如圖1.1.1-1所示。</p><p> 2 系統(tǒng)硬件電路設(shè)計(jì)<
38、;/p><p> 2.1 單片機(jī)的最小系統(tǒng)</p><p> 單片機(jī)正常工作時(shí),都需要有一個(gè)時(shí)鐘電路,和一個(gè)復(fù)位電路。本設(shè)計(jì)中選擇了內(nèi)部時(shí)鐘方式和按鍵電平復(fù)位電路,來構(gòu)成單片機(jī)的最小電路。如圖2.1-1所示。</p><p> 圖2.1-1 AT89C52最小系統(tǒng)</p><p><b> 2.2 時(shí)鐘電路</b&g
39、t;</p><p> 計(jì)算機(jī)工作時(shí),是在統(tǒng)一的時(shí)鐘脈沖控制下一拍一拍的進(jìn)行的,這個(gè)脈沖是由單片機(jī)控制器中的時(shí)序電路發(fā)出的。單片機(jī)的時(shí)序就是CPU在執(zhí)行指令時(shí)所需控制信號的時(shí)間順序。為了保證各部件間的同步工作。單片機(jī)內(nèi)部電路就在惟一的時(shí)鐘信號控制下嚴(yán)格的按時(shí)序進(jìn)行工作。要給單片機(jī)提供時(shí)序要有相關(guān)的硬件電路,即振蕩器和時(shí)鐘電路。因此選擇了內(nèi)部時(shí)鐘方式。利用蕊片內(nèi)部的振蕩器,然后在引腳XTAL1和XTAL兩端跨接晶
40、體或陶瓷諧振器,就構(gòu)成了穩(wěn)定的自激振蕩器,其發(fā)出的脈沖直接送入內(nèi)部時(shí)鐘電路如圖1所示,外接晶振時(shí),C1和C2值通常選擇為30PF左右。C1,C2對頻率有微調(diào)作用。晶體的頻率范圍可在1.2~12MHZ之間選擇。在實(shí)際連接中,為了減少寄生電容,更好地保證振蕩器穩(wěn)定。可靠地工作,振蕩器和電容應(yīng)盡可能安裝得與單片機(jī)芯片靠近。</p><p><b> 2.3 復(fù)位電路</b></p>
41、<p> 復(fù)位是單片機(jī)的初始化操作。單片機(jī)在啟動(dòng)運(yùn)行時(shí),都需要先復(fù)位,其作用是使CPU和系統(tǒng)中其他部件都處于一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作。因而,復(fù)位是一個(gè)很重要的操作方式。但單片機(jī)本身是不能自動(dòng)進(jìn)行復(fù)位的,必須配合相應(yīng)的外部電路來實(shí)現(xiàn)。</p><p> 2.4 多諧振蕩器</p><p> 采用NE555 構(gòu)成多諧振蕩器可以實(shí)現(xiàn)占空比的調(diào)節(jié)。并且電路設(shè)計(jì)
42、簡單,占用面積小。由單片機(jī)AT89C52的P2.3口發(fā)出同步脈沖信號,該同步脈沖啟動(dòng)多諧振蕩器,使其輸出40KHz的高頻電壓信號,經(jīng)過整形直接加至超聲波換能器探頭。根據(jù)逆壓電效應(yīng), 產(chǎn)生振動(dòng)頻率為40KHz的超聲波。如圖2.3-1所示:</p><p> 圖2.4-1 多諧振蕩器和超聲波發(fā)射電路</p><p> 接通電源后,電容C被充電,VC上升,當(dāng)VC上升到2/3VCC時(shí),觸發(fā)器
43、被復(fù)位,同時(shí)放電BJT T導(dǎo)通,此時(shí)Vo為低電平,電容C通過R2和T放電,使VC下降。當(dāng)VC下降到1/3VCC時(shí),觸發(fā)器又被置位,Vo翻轉(zhuǎn)為高電平。電容器C放電所需的時(shí)間為: </p><p><b> ?。?.4-1) </b></p><p> 當(dāng)C放電結(jié)束時(shí),T截止,VCC將能過R1,R2向電容器充電,VC由1/3VCC上升到2/3VCC所需的時(shí)間為:<
44、/p><p><b> ?。?.4-2)</b></p><p> 當(dāng)VC上升到2/3VCC時(shí),觸發(fā)器又發(fā)生翻轉(zhuǎn),如此周而復(fù)始,在輸出端就得到一個(gè)周期性的方波,其頻率為:</p><p><b> ?。?.4-3)</b></p><p> 由于NE555內(nèi)部的比較器的靈敏度較高,而且采用差分電路形
45、式,它的振蕩頻率受電源電壓的溫度變化的影響很小。</p><p> 圖2.4-2 NE555的工作波形圖</p><p> 從NE555的工作波形圖,可看出占空比是固定不變的。為了調(diào)解的方便,我把R1和R2都換成了電位器,就形成了占空比可調(diào)的電位器。使的超聲波的發(fā)射電路更加具有高效性。也能滿足波盡可能的減小失真。從面達(dá)到測距更長的效果。</p><p> 2
46、.5 超聲波傳感器</p><p> 從圖2.4-1超聲波的發(fā)射電路上看還有一個(gè)超聲波傳感器。它具有把電信號轉(zhuǎn)化為機(jī)械信號,同時(shí)又能把機(jī)械信號轉(zhuǎn)化為電信號的功能。在設(shè)計(jì)中選擇了壓電式超聲波發(fā)聲器。壓電式超聲波發(fā)生器實(shí)際上是利用壓電晶體的諧振來工作的。超聲波發(fā)生器內(nèi)部結(jié)構(gòu)中,它有兩個(gè)壓電晶片和一個(gè)共振板。壓電晶體組成的超聲波傳感器是一種可逆?zhèn)鞲衅?,它可以將電能轉(zhuǎn)變成機(jī)械振蕩而產(chǎn)生超聲波,同時(shí)它接收到超聲波時(shí),也
47、能轉(zhuǎn)變成電能,所以它可以分成發(fā)送器或接收器。當(dāng)它的兩極外加脈沖信號,其頻率等于壓電晶片的固有振蕩頻率時(shí),壓電晶片將會(huì)發(fā)生共振,并帶動(dòng)共振板振動(dòng),便產(chǎn)生超聲波。反之,如果兩電極間未外加電壓,當(dāng)共振板接收到超聲波時(shí),將壓迫壓電晶片作振動(dòng),將機(jī)械能轉(zhuǎn)換為電信號,這時(shí)它就成為超聲波接收器了。本文所采用的超聲波傳感器是T/R-40-16(其中T表示發(fā)送,R表示接收,40表示頻率為40KHZ,16表示其外徑尺寸,以毫米計(jì))。</p>
48、<p> 2.6 超聲波接收電路</p><p> 超聲波接收電路包括由MC3403構(gòu)成的三級回波放大電路以及LM358電壓比較整形電路兩部分,與超聲波接收傳感器T-40-16配合使用,實(shí)現(xiàn)超聲波的接收功能。</p><p> 圖2.6-1 超聲波接收電路</p><p> 2.7 放大電路及參數(shù)設(shè)定</p><p>
49、 當(dāng)測量距離較大時(shí),超聲波的回波較弱,這時(shí)候就需要將信號放大,否則其轉(zhuǎn)換成電信號的幅值也會(huì)比較小。在設(shè)計(jì)中,采用三級放大電路,將信號最大能放大50萬倍。其中運(yùn)算放大器IC3A、IC3B放大倍數(shù)為100倍,IC3C放大倍數(shù)為可調(diào)的。根據(jù)公式Au=R6/R4(以第一級放大電路為例),可以求得各放大電路的參數(shù)。計(jì)算后,取值如下,R3=10K,R4=10K,R6=1M,R7=1M。第三給放大是可調(diào)的Au=Rx/R2。其中R2=10K。Rx為5
50、00K可調(diào)的滑動(dòng)變阻器。所以放大倍數(shù)是在(0~50)之間。從圖3。5中,可以看到各個(gè)運(yùn)放的基準(zhǔn)電壓都是可調(diào)的。這樣更有利于達(dá)到自己想要的理想結(jié)果。超聲波接收頭接收到的40 kHz反射波交流信號。電容C5、C9、C12的作用為濾掉直流信號,對電容的大小無特別要求,所以一律選為1000PF。其中的放大電路是由MC3403構(gòu)成的。MC3403是四低功耗運(yùn)算放大器。</p><p> MC3403的引腳結(jié)構(gòu)如圖2.7-
51、1所示:</p><p> 圖2.7-1 MC3403的引腳結(jié)構(gòu)</p><p> 2.8 電壓比較電路及參數(shù)設(shè)計(jì)</p><p> 電壓比較器的功能是比較兩個(gè)電壓值的大小,例如,將一個(gè)信號電壓和另一個(gè)參考電壓進(jìn)行比較,在>和<時(shí),電壓比較器輸出兩個(gè)不同的電平,即高電平和低電平。比較器的輸出通常只有高電平和低電平兩個(gè)穩(wěn)定狀態(tài),因此它相當(dāng)于一個(gè)受
52、輸入信號控制的開關(guān),當(dāng)輸入電壓經(jīng)過閾值時(shí)開關(guān)動(dòng)作,使輸出從一個(gè)電平跳轉(zhuǎn)到另一個(gè)電平。系統(tǒng)中,比較器的作用是將信號電壓與設(shè)定的基準(zhǔn)電壓相比較,當(dāng)信號電壓大于基準(zhǔn)電壓時(shí),比較器輸出正脈沖,導(dǎo)通,P2.5接收負(fù)脈沖信號,單片機(jī)CPU發(fā)出中斷,記錄發(fā)射信號與接受信號之間的時(shí)間,并計(jì)算距離。在比較器的設(shè)計(jì)中要考慮兩點(diǎn)因素:第一,要使導(dǎo)通;第二,要使經(jīng)過三極管以后的電壓與AT89C52的P2.5口相匹配。為了在實(shí)際應(yīng)用時(shí)能得到合適的參數(shù),將設(shè)計(jì)為最
53、大阻值為5.1 kΩ的電阻,這樣,的阻值便可得到滿足上述條件的電壓信號。用做電壓比較器的的LM358,從圖2.8-1可以看出比較器的的基準(zhǔn)電壓是可調(diào)的,因?yàn)閺某暡ń邮盏男盘?,要求有很高的靈敏度和精度,從放大電路出來的電壓變化是非常微妙的,必須配和可調(diào)的基準(zhǔn)電壓采能滿足進(jìn)行比較達(dá)到達(dá)到設(shè)計(jì)中的需要。LM358內(nèi)部包括有兩個(gè)獨(dú)立的、高增益、內(nèi)部頻率</p><p> LM358的引腳結(jié)構(gòu)圖:</p>
54、<p> 圖2.8-1 LM358的引腳結(jié)構(gòu)</p><p> 2.9 AT89C52和LCD顯示器模塊的硬件接口</p><p> AT89C52和JM12864J的硬件接口連線如圖2.9-1所示。在圖中看出,LCD顯示器模塊的能動(dòng)信號E是由AT89C52的P3.2控制。當(dāng)P3.2電平由高到低產(chǎn)生一個(gè)下降沿脈沖,就產(chǎn)生能動(dòng)信號E。</p><p&
55、gt; AT89C52的P3端口的P3.0~P3.5用于產(chǎn)生控制信號,用于控制LCD顯示模塊的工作。其中P3.0用于產(chǎn)生數(shù)據(jù)指令標(biāo)志信號RS;P3.1用于產(chǎn)生讀寫信號R/W;P3.3、P3.4用于產(chǎn)生選擇信號CS1、CS2;P3.5用于產(chǎn)生復(fù)位信號RST。AT89C52的P1端口用于傳送數(shù)據(jù)或指令,故P1.0~P1.7和LCD顯示器模塊的DB0~DB7相連。為使顯示屏能具有滿意的亮度,在+5V和-5V之間接一個(gè)電位器,用于調(diào)節(jié)VEE的
56、電壓。VEE的電壓一般取0~-5V。</p><p> AT89C52和LCD顯示器模塊的硬件接口:</p><p> 圖2.9-1 AT89C52和LCD顯示器模塊的硬件接口</p><p> 在JM12864J型LCD顯示器模塊就用中,有7種指令格式。這些指令用于對模塊執(zhí)行專門的控制功能,為些指令及其功能分別說明如下。</p><p&
57、gt; 表2.9-1 顯示開關(guān)控制(DISPLAY ON/OFF)指令</p><p> D=1:開顯示(DISPLAY ON) 意即顯示器可以進(jìn)行各種顯示操作</p><p> D=0:關(guān)顯示(DISPLAY OFF) 意即不能對顯示器進(jìn)行各種顯示操作 </p><p> 表2.9-2 設(shè)置顯示起始行(DISPLAY S
58、TART LINE)指令</p><p> Z地址計(jì)數(shù)器是一個(gè)6位計(jì)數(shù)器。此計(jì)數(shù)器具備循環(huán)計(jì)數(shù)功能,是用于顯示行掃描同步的。當(dāng)一行掃描完成,此地址計(jì)數(shù)器自動(dòng)加1,指向下一行掃描。RST復(fù)位后Z地址計(jì)數(shù)器為0。顯示起始行是由Z地址計(jì)數(shù)器控制的。A5~A0 6位地址自動(dòng)送入Z地址計(jì)數(shù)器,起始行的地址可以是0~63的任意一行。</p><p><b> 例如:</b>
59、</p><p> 選擇A5~A0是62,則起始行與DDRAM行的對應(yīng)關(guān)系如下:</p><p> DDRAM 行:62 63 0 1 2 3 ················· 28 29</p>
60、;<p> 屏幕顯示行: 1 2 3 4 5 6················· 31 32</p><p> 表2.9-3 設(shè)置頁地址(SET PAGE “X ADDRESS”)指令</p>&
61、lt;p> 所謂頁地址就是DDRAM的行地址,8行為一頁,模塊共64行即8頁,A2~A0表示0~7頁。讀寫數(shù)據(jù)對地址沒有影響,頁地址由本指令或RST信號改變復(fù)位后頁地址為0。頁地址與DDRAM的對應(yīng)關(guān)系見DDRAM地址表。</p><p> 表2.9-4 設(shè)置Y地址(SET Y ADDRESS)</p><p> 此指令的作用是將A5~A0送入Y地址計(jì)數(shù)器,作為DDRAM的Y
62、地址指針。在對DDRAM進(jìn)行讀寫操作后,Y地址指針自動(dòng)加1,指向下一個(gè)DDRAM單元。</p><p> 表2.9-5讀狀態(tài)(STATUS READ)</p><p> 當(dāng)R/W=1 RS=0時(shí),在E信號為“H”的作用下,狀態(tài)分別輸出到數(shù)據(jù)總線(DB7~DB0)的相應(yīng)位。</p><p> BF: BF標(biāo)志組件內(nèi)部的工作情況。BF=1表示組件在進(jìn)行內(nèi)部操作
63、,此時(shí)組件不接受外總指令和數(shù)據(jù);BF=0時(shí),組件為準(zhǔn)備狀態(tài),隨時(shí)可接受外總指令和數(shù)據(jù)。</p><p> ON/OFF: 表示DFF觸發(fā)器的狀態(tài),用于控制屏幕顯示的開和關(guān)。</p><p> RST: RST=1表示內(nèi)部正在初始化,此時(shí)組件不接受任何指令和數(shù)據(jù)</p><p> 表2.9-6 寫顯示數(shù)據(jù)(WRITE DISPLAY DATE) </p
64、><p> D7~D0為顯示數(shù)據(jù),此指令把D7~D0寫入相應(yīng)的DDRAM單元,Y地址指針自動(dòng)加1。</p><p> 表2.9-7 讀顯示數(shù)據(jù)(READ DISPLAY DATE) </p><p> 此指令把DDRAM的內(nèi)容D7~D0讀到數(shù)據(jù)總線DB7~DB0,Y地址指針自動(dòng)加1。</p><p><b> 3 系統(tǒng)軟件
65、設(shè)計(jì)</b></p><p> 系統(tǒng)軟件部分包括主程序、中斷子程序和其他子程序。主程序完成系統(tǒng)初始化后調(diào)用LCD液晶顯示程序,再調(diào)用測距在內(nèi)的各個(gè)子程序完成距離測量并顯示輸出。各子程序主要有:延時(shí)子程序、距離計(jì)算子程序及BCD碼轉(zhuǎn)換子程序,壓縮BCD碼乘法子程序,壓縮BCD碼加子法程序等。</p><p> 3.1 超聲波接收發(fā)射軟件設(shè)計(jì)</p><p
66、> 3.1.1 距離計(jì)算問題</p><p> 采用單片機(jī)來控制的超聲波測距儀是先由單片機(jī)產(chǎn)生一個(gè)信號,經(jīng)過信號線,把信號引入到與超聲波發(fā)射器相連的信號引腳上,再由超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射時(shí)刻的同時(shí)開始計(jì)時(shí),超聲波在空氣中傳播,途中碰到障礙物就立即返回來,超聲波接收器收到反射波就立即停止計(jì)時(shí)。超聲波在空氣中的傳播速度為340m/s,根據(jù)計(jì)時(shí)器記錄的時(shí)間t,就可以計(jì)算出發(fā)射點(diǎn)距障礙物的距
67、離(s),即:</p><p><b> ?。?.1.1-1)</b></p><p> 超聲波發(fā)射接收所測距離的軟件設(shè)計(jì)中,讓單片機(jī)省去了繁雜的除法計(jì)算。以170乘上超聲波從發(fā)射到接收的時(shí)間。即有壓縮BCD碼乘法進(jìn)行計(jì)算。當(dāng)然我們知道,定時(shí)器計(jì)數(shù)的最大值是65535us,如果以這個(gè)時(shí)間乘以170m距離能達(dá)到11.140950m。。因此在設(shè)計(jì)中,考慮到用上了定時(shí)器0
68、溢出標(biāo)志TF0。當(dāng)超聲波從發(fā)射到接收的時(shí)間超過了65535us,就把TF0置1,然后軟件將TF0清0,著開始計(jì)數(shù)。最后是把后來的計(jì)數(shù)時(shí)間乘以170。所得的結(jié)果加上11.140950N。N為TF1置1次數(shù)。即調(diào)用壓縮BCD碼加法。最后就進(jìn)行解壓縮進(jìn)行顯示。把所得的結(jié)果的每一位分配到不同的地址上。最后就根據(jù)地址確定位數(shù)了。</p><p> 3.1.2 串?dāng)_問題</p><p> 設(shè)計(jì)中
69、,超聲波發(fā)射極和接收極距離較近,這樣,當(dāng)發(fā)射極發(fā)射超聲波后,有部分超聲波沒經(jīng)過障礙物反射就直接繞射到接收極上,這部分信號是無用的,會(huì)引起系統(tǒng)誤測。設(shè)計(jì)中采用延時(shí)技術(shù)來解決這個(gè)問題,并設(shè)定延時(shí)時(shí)間為1 ms,即在發(fā)射極發(fā)射超聲波1 ms內(nèi),沒有啟動(dòng)定時(shí)器 ,接收電路對此期間接收到的任何信號不予理睬,1 ms后立即啟動(dòng)T0,這時(shí)接收到的信號才有效,并在接收到回波信號的同時(shí),T0停。此時(shí)T0所記錄的CPU發(fā)送脈沖信號的前沿到回波脈沖信號之間的
70、時(shí)間才是需要的。</p><p><b> 程序流程圖</b></p><p><b> 程序主流程圖:</b></p><p> 圖3.1.3-1 程序主流程圖</p><p> 超聲波發(fā)射接收程序流程圖:</p><p> 圖3.1.3-2 超聲波發(fā)射接收程
71、序流程圖</p><p> 3.2 LCD液晶顯示器軟件設(shè)計(jì)</p><p> JM12864J有128χ64的點(diǎn)的顯示陣列??娠@示漢字(4χ8個(gè)16χ16點(diǎn)陣漢字),也可顯示數(shù)字(4χ16個(gè)16χ8點(diǎn)陣數(shù)字)。在軟件編程必須要嚴(yán)格遵守點(diǎn)陣的坐標(biāo)位置,否則就容易漢字?jǐn)?shù)字的重疊,達(dá)不到理想的效果,出現(xiàn)一批亂碼。在軟件設(shè)計(jì)中,首先要寫入全部字符。查要尋址的的二進(jìn)制編碼的坐標(biāo)位置,定位好后
72、,就寫進(jìn)二進(jìn)制字符。緊接著就是內(nèi)部寫數(shù)據(jù)代碼指針定位,再寫入數(shù)據(jù)。每一次寫字符時(shí),都是寫字符的上半部,接著再寫字符的下半部。同時(shí)必須配合刷新程序,才能在屏幕上顯示清晰的效果,不會(huì)出現(xiàn)亂碼。</p><p> 3.2.1 讀/寫時(shí)序</p><p> 利用AT89C52單片機(jī)可以實(shí)現(xiàn)對LCD顯示器模塊的讀寫操作,也就是把顯示信息取出或?qū)懭氲侥K中的顯示數(shù)據(jù)存儲(chǔ)器DDRAM中讀寫有一定的
73、時(shí)序要求。這時(shí)分別介紹其讀時(shí)序和寫時(shí)序。</p><p> 3.2.1.1 LCD顯示模塊讀時(shí)序</p><p> LCD顯示器模塊的讀時(shí)序由信號E,R/W,CS,RS和DB0~DB7組成。E是能動(dòng)信號,R/W是讀寫信號,RS是顯示/指令標(biāo)志位,CS是選擇信號,DB0~DB7是數(shù)據(jù)信號。</p><p> JM12864J的讀時(shí)序如圖4.3所示。從圖中可以看
74、出:R/W=1時(shí),執(zhí)行讀操作,在E信號的上升沿開始執(zhí)行讀出,把JM12864J內(nèi)的DDRAM內(nèi)容讀出到數(shù)據(jù)總線DB0~DB7上。這時(shí)如果RS=1,則讀出的是顯示數(shù)據(jù):如果RS=0,則讀出的是指令數(shù)據(jù)。CS2=1,CS1=0,讀右半屏的內(nèi)容:CS2=0,CS1=1,讀左半屏的內(nèi)容。</p><p> 圖3.2.1.1 LCD顯示模塊讀時(shí)序</p><p> 3.2.1.2 LCD顯示
75、模塊寫時(shí)序</p><p> JM12864J的寫時(shí)序如圖4.4所示。寫時(shí)序和讀時(shí)序的區(qū)別在于R/W信號為低電平,即R/W=0。這時(shí),必須先把寫入的數(shù)據(jù)由外部單片機(jī)送入數(shù)據(jù)總線DB0~DB7,然后在能動(dòng)信號E的下降沿時(shí),把數(shù)據(jù)從DB0~DB7寫入到模塊的顯示數(shù)據(jù)存儲(chǔ)器DDRAM中。同樣,在RS=1時(shí),寫入的是數(shù)據(jù);RS=0時(shí),寫入的是指令。在CS2=1,CS1=0時(shí),把數(shù)據(jù)寫入右半屏;在CS2=0,CS1=1時(shí)
76、,把數(shù)據(jù)寫入左半屏。</p><p> 圖3.2.1.2 LCD顯示模塊寫時(shí)序</p><p><b> 4 結(jié)束語</b></p><p> 首先感謝XX老師、XX老師對本次課程設(shè)計(jì)的大力支持和幫助,讓我順利的完成了本次設(shè)計(jì),是兩位老師的專業(yè)知識感染了我,使我能夠用嚴(yán)謹(jǐn)?shù)墓ぷ鲬B(tài)度面對學(xué)習(xí)。在本次設(shè)計(jì)的過程中,我發(fā)現(xiàn)很多的問題,給我的
77、感覺就是很難,很不順手,看似很簡單的電路,要?jiǎng)邮职阉o設(shè)計(jì)出來,是很難的一件事,主要原因是我們沒有經(jīng)常動(dòng)手設(shè)計(jì)過電路以及在設(shè)計(jì)過程中用到的知識我學(xué)得不是很扎實(shí),還有資料的查找也是一大難題,這就要求我們在以后的學(xué)習(xí)和工作中,應(yīng)該注意到這一點(diǎn),更重要的是我們要學(xué)會(huì)把從書本中學(xué)到的知識和實(shí)際的電路聯(lián)系起來,這不論是對我們以后的就業(yè)還是學(xué)習(xí),都會(huì)起到很大的促進(jìn)和幫助。不過本次設(shè)計(jì)中仍有不足之處,其中主要的不足之處就是回波的設(shè)計(jì)要求。其主要原因是
78、設(shè)計(jì)條件不夠。</p><p> 同時(shí),通過課程畢業(yè)設(shè)計(jì),鞏固了我們學(xué)習(xí)過的專業(yè)知識,也使我們把理論與實(shí)踐從真正意義上相結(jié)合了起來;考驗(yàn)了我們借助互聯(lián)網(wǎng)絡(luò)搜集、查閱相關(guān)文獻(xiàn)資和組織材料的綜合能力;從中可以自我測驗(yàn),認(rèn)識到自己哪方面有欠缺、不足,以便于在日后的工作中得以改進(jìn)、提高。通過使用電路設(shè)計(jì)軟件Altium Designer提高了工作效率。</p><p> 最后,感謝父母給予我的
79、生命,感謝他們?yōu)槲业母冻?!感謝老師們的無私奉獻(xiàn)!</p><p><b> 附錄:</b></p><p> #include<reg52.h></p><p> #include<intrins.h></p><p> #define uchar unsigned char</p&
80、gt;<p> #define uint unsigned int</p><p> #define ulong unsigned long</p><p> uint c=340; //定義10度時(shí)聲音的速度</p><p> ulong l,time;</p><p> char ii=1,k=80,aa;<
81、;/p><p> char t,ts,tg,lb,ls,lg,lsf,fh,cb,cs,cg;</p><p> sbit RW=P2^1; //定義LCD讀/寫選擇端</p><p> sbit RS=P2^0;//定義LCD數(shù)據(jù)/命令選擇端</p><p> sbit E=P2^2; //定義LCD使能端</p>
82、<p> sbit k3=P1^2;</p><p> sbit k4=P1^3;</p><p> sbit sg=P3^7; //定義超聲波射引腳</p><p> sbit ctl=P3^5;//定義超聲波控制引腳</p><p> uchar tplsb,tpmsb; //溫度值低位、高位字節(jié)</p>
83、<p> sbit DQ=P3^6; //DS18B20數(shù)據(jù)通信線</p><p> ulong tp,sw,gw,sfw,bfw,tppp;</p><p><b> uchar *p;</b></p><p> void delay(uint i) //延時(shí)程序</p><p> {whil
84、e(i--);</p><p><b> }</b></p><p> /**產(chǎn)生復(fù)位脈沖初始化DS18B20**/</p><p> void Txreset()</p><p><b> {DQ=0;</b></p><p> delay(100); //拉低約
85、900US</p><p> DQ=1; //產(chǎn)生上升沿</p><p><b> delay(4);</b></p><p><b> }</b></p><p> /*******等待應(yīng)答脈沖*******/</p><p> void Rxwait()&
86、lt;/p><p> {while(DQ);</p><p> while(DQ==0); //檢測到應(yīng)答脈沖</p><p><b> delay(4);</b></p><p><b> }</b></p><p> /***讀取數(shù)據(jù)的一位,滿足讀時(shí)隙要求**/
87、</p><p> bit Rdbit()</p><p><b> {</b></p><p><b> uint i;</b></p><p><b> bit b;</b></p><p><b> DQ=0;</b>
88、;</p><p> i++; //保持至少1US</p><p><b> DQ=1;</b></p><p><b> i++;</b></p><p> i++; //延時(shí)節(jié)15US以上 </p>
89、;<p> b=DQ; </p><p><b> i=8;</b></p><p> while(i>0)i--;</p><p> return(b); //讀時(shí)隙不低于60US</p><p><b>
90、}</b></p><p> /******讀取數(shù)據(jù)的第一個(gè)字節(jié)*******/</p><p> uchar Rdbyte()</p><p> {uchar i,j,b;</p><p><b> b=0;</b></p><p> for(i=1;i<=8;i++
91、)</p><p> {j=Rdbit();</p><p> b=(j<<7)|(b>>1);</p><p><b> }</b></p><p> return(b);</p><p><b> }</b></p><
92、;p> /*******寫數(shù)據(jù)的第一個(gè)字節(jié),滿足寫1和寫0的時(shí)隙要求*****/</p><p> void Wrbyte(uchar b)</p><p><b> {</b></p><p><b> uint i;</b></p><p><b> uchar j;&
93、lt;/b></p><p><b> bit btmp;</b></p><p> for(j=1;j<=8;j++)</p><p> {btmp=b&0x01;</p><p> b=b>>1; //取下一位(由低位向高位)</p><p><
94、b> if(btmp)</b></p><p><b> {DQ=0;</b></p><p><b> i++;</b></p><p> i++; //延時(shí),使得15US以內(nèi)拉高</p><p><b> DQ=1; </b></p&
95、gt;<p><b> i=8;</b></p><p> while(i>0)i--;//整個(gè)寫1時(shí)隙不低于60US</p><p><b> DQ=1;</b></p><p><b> i++;</b></p><p><b> i
96、++;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {DQ=0;</b></p><p><b> i=9;</b></p><p> w
97、hile(i>0)i--; //保持低在60至120US之間</p><p><b> DQ=1;</b></p><p><b> i++;</b></p><p><b> i++;</b></p><p><b> }</b><
98、/p><p><b> }</b></p><p><b> }</b></p><p> //啟動(dòng)溫度變換//</p><p> void convert()</p><p> { Txreset();//產(chǎn)生復(fù)位脈沖,初始化DS18B20</p>&l
99、t;p> Rxwait();//等待DS18B20給出的應(yīng)答脈沖</p><p> Wrbyte(0xcc); //skip rom命令</p><p> Wrbyte(0x44); //convert T命令</p><p><b> }</b></p>&l
100、t;p> void Rdtemp() //溫度讀取值//</p><p><b> {</b></p><p> Txreset(); //產(chǎn)生復(fù)位脈沖,初始化DS18B20</p><p> Rxwait(); //等待DS18B20給出的應(yīng)答脈沖</p><p> Wrbyte(0xc
101、c); //skip rom命令</p><p> Wrbyte(0xbe); //convert T命令</p><p> tplsb=Rdbyte(); //溫度值低位字節(jié)</p><p> tpmsb=Rdbyte();
102、 //溫度高位字節(jié)//</p><p><b> }</b></p><p><b> date()</b></p><p><b> {</b></p><p> tp=tpmsb*256+tplsb;</p><p> sw=tp
103、*625/100000; //讀取溫度十位//</p><p> gw=tp*625%100000/10000; //讀取溫度個(gè)位//</p><p> sfw=tp*625%100000%10000/1000; /
104、/讀取溫度十分位//</p><p> bfw=tp*625%100000%10000%1000/100; //讀取溫度百分位//</p><p> tppp=sw*10+gw;</p><p><b> }</b></p><p><b> vmain()</b&
105、gt;</p><p> {delay(100); //延時(shí)程序//</p><p> convert(); //啟動(dòng)溫度轉(zhuǎn)換//</p><p> delay(100);</
106、p><p> Rdtemp(); //讀取溫度//</p><p> delay(100);</p><p><b> date();</b></p><p><b> }</b></p>
107、<p> //**液晶顯示*****//</p><p> Void writercom (uchar q) //寫命令//</p><p><b> {E=1;</b></p><p><b> RS=0;</b><
108、;/p><p><b> RW=0;</b></p><p><b> P0=q;</b></p><p><b> E=0;</b></p><p> delay(20);</p><p><b> }</b></p&
109、gt;<p> void writerdata(uchar o) //寫數(shù)據(jù)//</p><p><b> {</b></p><p><b> E=1;</b></p><p><b> RS=1;</b
110、></p><p><b> RW=0;</b></p><p><b> P0=o;</b></p><p><b> E=0;</b></p><p> delay(20);</p><p><b> }</b>
111、</p><p> void writer_d(uchar *u) //寫數(shù)據(jù)串//</p><p> {while(*u) </p><p> writerdata(*u++);</p><p><b> }</b></p>
112、<p> void xsinit(void)</p><p> {writercom(0x01);</p><p> writercom(0x38); //使用8位數(shù)據(jù),顯示兩行,使用5*7的字型//</p><p> writercom(0x0c); //顯示設(shè)置,不顯示光標(biāo),字符不
113、顯閃瑣//</p><p> writercom(0x06); //光標(biāo)從左往右移,內(nèi)容不移//</p><p><b> }</b></p><p> void inptt()</p><p><b> {while(1)</b><
114、;/p><p><b> {vmain();</b></p><p> writercom(0x80);</p><p> writer_d("Taday Tp:");</p><p> writerdata(sw+0x30); //LC
115、D顯示溫度十位//</p><p> writerdata(gw+0x30); //LCD顯示溫度個(gè)位//</p><p> writerdata('.');別 //LCD顯示溫度十小數(shù)點(diǎn)//</p><p> writerd
116、ata(sfw+0x30); //LCD顯示溫度十分位//</p><p> writerdata(bfw+0x30); //LCD顯示溫度百分位//</p><p> writerdata(0xdf);</p><p> writer_d("
117、C ");</p><p> writercom(0xc0);</p><p> writer_d("Please press K4");</p><p> if(k4==0)break;</p><p><b> }</b></p><p><b&g
118、t; }</b></p><p> /******超聲波發(fā)射程序*******/</p><p> void sen() </p><p> {uchar times=0; </p><p> TMOD=0x12; //定時(shí)器1工作在定時(shí)方式1,定時(shí)器0工作在定時(shí)方式2//</p><
119、p> IE=0x84; //中斷設(shè)置//</p><p><b> TH0=244;</b></p><p><b> TL0=244;</b></p><p><b> TR0=1;</b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)_數(shù)字超聲波測距儀的設(shè)計(jì)
- 超聲波測距儀畢業(yè)設(shè)計(jì)
- 超聲波測距儀畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---超聲波測距儀設(shè)計(jì)
- 超聲波測距儀畢業(yè)設(shè)計(jì)
- 超聲波測距儀設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 超聲波測距儀畢業(yè)設(shè)計(jì)論文
- 超聲波測距儀畢業(yè)設(shè)計(jì)論文
- 超聲波測距儀畢業(yè)設(shè)計(jì)論文
- 超聲波測距儀的畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---超聲波測距儀的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----超聲波測距儀的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---超聲波測距儀的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--超聲波測距儀的設(shè)計(jì)
- 超聲波測距儀畢業(yè)設(shè)計(jì)開題報(bào)告
- 超聲波測距儀設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)開題報(bào)告----超聲波測距儀
- 超聲波測距儀畢業(yè)設(shè)計(jì)開題報(bào)告
- 數(shù)字超聲波測距儀的設(shè)計(jì).txt
- 數(shù)字超聲波測距儀的設(shè)計(jì).txt
評論
0/150
提交評論