基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)報(bào)告_第1頁
基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)報(bào)告_第2頁
基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)報(bào)告_第3頁
基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)報(bào)告_第4頁
基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 課程設(shè)計(jì)報(bào)告引言隨著電子技術(shù)的不斷發(fā)展,我們能應(yīng)用到的電子產(chǎn)品也越來越多。而生活中我們用的很多電子產(chǎn)品都越來越輕巧,價(jià)格也越來越便宜利用電子芯片實(shí)現(xiàn)的東西也越來越來越多,比如數(shù)字溫度計(jì)。當(dāng)然,非電子產(chǎn)品的常用溫度計(jì)也很便宜。此次課設(shè)論文所介紹的是自己動(dòng)手制作的一個(gè)高精度數(shù)字溫度計(jì)。本次課設(shè)不但豐富了課余生活,還從實(shí)踐中學(xué)到并了很多新知識(shí),并從中鞏固了以前的知識(shí)。用Protel 99軟件來設(shè)計(jì)制作電路板PCB(Printed circuit Bound)。在PCB上,布置一系列的芯片、電阻、電容等元件,通過PCB上的導(dǎo)線相連,構(gòu)成電路,一起實(shí)現(xiàn)一定的功能。電路通過連接器或者插槽進(jìn)行輸入/輸出,

2、有時(shí)還有顯示部分(如發(fā)光二極管LED、.數(shù)碼顯示器等)。可以說,PCB是一塊連接板,它的主要目的是為元件提供連接,為整個(gè)電路提供輸入輸出端口和顯示,電氣連接通性是PCB最重要的特性之一。PCB在各種電子設(shè)備中有如下功能:(1)提供集成電路等各種電子元件固定、裝配的機(jī)械支撐。(2)實(shí)現(xiàn)集成電路等各種電子元件之間的布線和電氣連接或電絕緣,提供所要的電氣特性。(3)為電動(dòng)裝配提供阻焊徒刑,為元器件插裝、檢查、維修提供識(shí)別符和圖形。做本課題的所用到的知識(shí)是我們學(xué)過的模擬電子電路以及數(shù)字邏輯電路等,當(dāng)然還用到了剛剛學(xué)過不久的單片機(jī)知識(shí)。本次課設(shè)是把理論和實(shí)踐結(jié)合起來,這不但可以鍛煉自己的動(dòng)手能力,而且還

3、可以加深對(duì)數(shù)字邏輯電路和模擬電子電路的學(xué)習(xí)和理解。同時(shí)也激起了我學(xué)好單片機(jī)的斗志。為了全面清晰的表達(dá),本論文用圖文并茂的方式,盡可能詳細(xì)的地介紹此次設(shè)計(jì)的全過程。1 設(shè)計(jì)務(wù)任和要求1.1、基本范圍-201001.2、精度誤差小于0.51.3、LED 數(shù)碼直讀顯示1.4、可以任意設(shè)定溫度的上下限報(bào)警功能2. 系統(tǒng)總體方案及硬件設(shè)計(jì)2.1數(shù)字溫度計(jì)設(shè)計(jì)方案論證2.1.1方案一由于本設(shè)計(jì)是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨被測溫度變化的電壓或電流采集過來,進(jìn)行A/D 轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設(shè)計(jì)需要用到A/D 轉(zhuǎn)換電路

4、,其中還涉及到電阻與溫度的對(duì)應(yīng)值的計(jì)算,感溫電路比較麻煩。而且在對(duì)采集的信號(hào)進(jìn)行放大時(shí)容易受溫度的影響從而出現(xiàn)較大的偏差。2.1.2 方案二考慮到用溫度傳感器,在單片機(jī)電路設(shè)計(jì)中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進(jìn)行轉(zhuǎn)換,電路簡單,精度高,軟硬件都以實(shí)現(xiàn),而且使用單片機(jī)的接口便于系統(tǒng)的再擴(kuò)展,滿足設(shè)計(jì)要求。從以上兩種方案,很容易看出,采用方案二,電路比較簡單,費(fèi)用較低,可靠性高,軟件設(shè)計(jì)也比較簡單,故采用了方案二。2.2系統(tǒng)總體設(shè)計(jì)溫度計(jì)電路設(shè)計(jì)總體設(shè)計(jì)方框圖如圖2.1所示,控制器采用單片機(jī)STC89

5、C52,溫度傳感器采用DS18B20,用4位LED 數(shù)碼管以串口傳送數(shù)據(jù)實(shí)現(xiàn)溫度顯示。圖2.1有了總體設(shè)計(jì)方案后,下面就是原理圖的制作了。原理圖如下圖2.2及圖2.3示。為了降低繪制PCB是的麻煩度,特意將數(shù)碼管電路與主控制電路分開畫,最后兩者是用導(dǎo)線連接。數(shù)碼管位選接P20P23,段選接P0口。圖2.2數(shù)碼管電路圖2.3單片機(jī)控制電路2.3模塊簡介系統(tǒng)由單片機(jī)最小系統(tǒng)、顯示電路、按鍵、溫度傳感器等組成。2.3.1 主控制器單片機(jī)STC89C52 具有低電壓供電和體積小等特點(diǎn),四個(gè)端口只需要兩個(gè)口就能滿足電路系統(tǒng)的設(shè)計(jì)需要,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用系統(tǒng)可用二節(jié)電池供電。晶振采用12MHZ

6、。復(fù)位電路采用上電加按鈕復(fù)位。 圖2.4晶振電路 圖2.5復(fù)位電路2.3.2 顯示電路顯示電路采用4 位共陰極LED 數(shù)碼管,P0 口由上拉電阻提高驅(qū)動(dòng)能力,作為段碼輸出并作為數(shù)碼管的驅(qū)動(dòng)。P2 口的低四位作為數(shù)碼管的位選端。采用動(dòng)態(tài)掃描的方式顯示。2.3.3溫度傳感器DS18B20 溫度傳感器是美國DALLAS 半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實(shí)際要求通過簡單的編程實(shí)現(xiàn)位的數(shù)字值讀數(shù)方式。DS18B20 的性能特點(diǎn)如下:1、獨(dú)特的單線接口僅需要一個(gè)端口引腳進(jìn)行通信;2、多個(gè)DS18B20 可以并聯(lián)在惟一的三線上,實(shí)

7、現(xiàn)多點(diǎn)組網(wǎng)功能3、無須外部器件;4、可通過數(shù)據(jù)線供電,電壓范圍為3.05.5;5、零待機(jī)功耗;6、溫度以或位數(shù)字;7、用戶可定義報(bào)警設(shè)置;8、報(bào)警搜索命令識(shí)別并標(biāo)志超過程序限定溫度(溫度報(bào)警條件)的器件;9、負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作;DS18B20 可以采用兩種方式供電,一種是采用電源供電方式,此時(shí)DS18B20 的1 腳接地,2 腳作為信號(hào)線,3 腳接電源。為保證在有效的DS18B20 時(shí)鐘周期內(nèi)提供足夠的電流,可用一個(gè)MOSFET 管來完成對(duì)總線的上拉。當(dāng)DS18B20 處于寫存儲(chǔ)器操作和溫度A/D 轉(zhuǎn)換操作時(shí),總線上必須有強(qiáng)的上拉,上拉開啟時(shí)間最

8、大為10us。采用寄生電源供電方式時(shí)VDD 端接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。圖2.6溫度傳感器與單片機(jī)的連接2.3.4報(bào)警溫度調(diào)整按鍵本系統(tǒng)設(shè)計(jì)三個(gè)按鍵,采用查詢方式,一個(gè)用于選擇切換設(shè)置報(bào)警溫度和當(dāng)前溫度,另外兩個(gè)分別用于設(shè)置報(bào)警溫度的加和減。均采用軟件消抖。圖2.7按鍵電路3. 系統(tǒng)軟件算法分析系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計(jì)算溫度子程序,顯示數(shù)據(jù)刷新子程序,按鍵掃描處理子程序等。3.1主程序流程圖主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B20 的測量的當(dāng)前溫度值,溫度測量每1s 進(jìn)行一次。這樣可以在一秒之內(nèi)測量一次被測

9、溫度,其程序流程見圖3.1 所示。圖3.1 主程序流程圖3.2讀出溫度子程序讀出溫度子程序的主要功能是讀出RAM 中的9 字節(jié),在讀出時(shí)需進(jìn)行CRC 校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。其程序流程圖如圖3.2 示3.3溫度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12 位分辨率時(shí)轉(zhuǎn)換時(shí)間約為750ms,在本程序設(shè)計(jì)中采用1s 顯示程序延時(shí)法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如圖3.3 所示 圖3.2讀文讀流程圖 圖3.3溫度轉(zhuǎn)換流程圖3.4 計(jì)算溫度子程序計(jì)算溫度子程序?qū)AM 中讀取值進(jìn)行BCD 碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定,其程序流程圖如圖3.4 所示

10、。3.5 顯示數(shù)據(jù)刷新子程序顯示數(shù)據(jù)刷新子程序主要是對(duì)分離后的溫度顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)標(biāo)志位位為1時(shí)將符號(hào)顯示位移入第一位。程序流程圖如圖3.5。圖3.4 計(jì)算溫度流程圖 圖3.5顯示數(shù)據(jù)刷新流程圖3.6按鍵掃描處理子程序按鍵采用掃描查詢方式,設(shè)置標(biāo)志位,當(dāng)標(biāo)志位為1 時(shí),顯示設(shè)置溫度,否則顯示當(dāng)前溫度。如下圖3.6 示。 圖3.6按鍵掃描處理流程圖4. 電路仿真通過仿真軟件驗(yàn)證該原理圖的可行性。采用protues軟件對(duì)電路仿真,可以得到預(yù)期效果。因protues軟件中沒有STC89C52故用AT89C52代替。仿真圖如圖4.1示。 圖4.1電路仿真圖 右圖4.2為溫度傳感器的仿真效果圖,

11、此圖驗(yàn)證了傳感器的溫度與數(shù)碼管顯示的數(shù)字一致。 當(dāng)按下SET 鍵一次時(shí),進(jìn)入溫度報(bào)警上線調(diào)節(jié),此時(shí)顯示軟件設(shè)置的溫度報(bào)警上線,按ADD或DEC 分別對(duì)報(bào)警溫度進(jìn)行加一或減一。當(dāng)再次按下SET 鍵時(shí),進(jìn)入溫度報(bào)警下線調(diào)節(jié),此時(shí)顯示軟件設(shè)置的溫度報(bào)警下線,按ADD或DEC 分別對(duì)報(bào)警溫度進(jìn)行加一或減一。當(dāng)?shù)谌伟聪耂ET 鍵時(shí),退出溫度報(bào)警線設(shè)置。顯示當(dāng)前溫度。驗(yàn)證了電路圖正確性后,下面就進(jìn)入PCB的繪制了5. 電路板制作過程隨著計(jì)算機(jī)技術(shù)的發(fā)展,電路設(shè)計(jì)中的很多工作都可以交由計(jì)算機(jī)來完成。Protel 99SE系統(tǒng)是一套建立在PC環(huán)境下的EDA電路集成設(shè)計(jì)系統(tǒng),由于其高度的集成性與擴(kuò)展性,很快就

12、成為PC平臺(tái)上最流行的電子設(shè)計(jì)自動(dòng)化軟件。在完成本課程設(shè)計(jì)過程中,充分運(yùn)用了Protel99SE的電路及PCB設(shè)計(jì)功能加快了設(shè)計(jì)進(jìn)程,下面將就電路板的制作過程做詳細(xì)闡述。Protel進(jìn)行電路設(shè)計(jì)有兩個(gè)步驟如下圖所示:圖5.1 PROTEL設(shè)計(jì)步驟5.1 原理圖編輯原理圖的設(shè)計(jì)是整個(gè)電路設(shè)計(jì)的基礎(chǔ),它決定了后面工作的進(jìn)展。原理圖的設(shè)計(jì)過程可以按下圖所示的設(shè)計(jì)流程進(jìn)行。圖5.2 設(shè)計(jì)流程圖(1)圖紙?jiān)O(shè)置是繪制電路圖的第一步,必須根據(jù)實(shí)際電路的大小來選擇合的圖紙?jiān)O(shè)置圖紙的大小包括設(shè)置圖紙尺寸、網(wǎng)絡(luò)和光標(biāo)的設(shè)置等等。(2)加載元器件庫,在Protel 99 SE中,原理圖中的元器件符號(hào)均存放在不同的原

13、理圖元件庫中,在繪制電路原理圖之前,必須將所需的原理圖元件庫裝入原理圖編輯器。(3)放置元器件,即將所需的元件符號(hào)從元件庫中調(diào)入原理圖中。(4)調(diào)整元器件布局,將各個(gè)元件用具有電氣性能的導(dǎo)線連接起來并進(jìn)一步調(diào)整元器件的位置、元器件標(biāo)注的位置及連線等。(5)最后打印存盤。5.2 PCB制作 在繪制好原理圖的情況下要想得到一塊電路板還需要繪制一張PCB版圖,PCB做的好壞將直接影響電路板的美觀和性能,所以要盡量把PCB做的合理。我們可以按以下流程來完成PCB的繪制。 開始規(guī)劃電路板設(shè)置參數(shù)裝入元件網(wǎng)表及封裝 保存及打印 手動(dòng)調(diào)整 布線 元件布局 結(jié)束 圖5.3 PCB設(shè)計(jì)流程圖 整個(gè)過程中元器件的

14、布局是關(guān)鍵,布局直接影響到最后做板的元件格局,所以在整個(gè)過程中要不斷的調(diào)整直至最終合理。圖5.4是本課程設(shè)計(jì)的最終PCB印刷電路,USB母座放在邊上便于插拔電源線。 圖5.4電路PCB圖6. 電路調(diào)試過程電路板的設(shè)計(jì)在經(jīng)過了原理圖的引用分析,元件的選取和電路原理的仿真驗(yàn)證后,通過PROTEL99便可以制作成對(duì)應(yīng)的原理圖,然后完成PCB的版圖設(shè)計(jì),最后便制作成完整的電路板。電路板的制作完成只是占課題的一小部分,接下來將進(jìn)入比較棘手也是較為需要耐心和細(xì)心的電路調(diào)試環(huán)節(jié)。說實(shí)在的,對(duì)于電路調(diào)試實(shí)在有點(diǎn)怕,上一次課設(shè)調(diào)板的陰影還沒散去呢。調(diào)試,要的就是耐性,毅力外加細(xì)心??此仆昝罒o缺的電路板,檢查了之

15、后卻是漏洞百出,斷線的,虛焊的。不過這些都不是大問題,有了多次電路設(shè)計(jì)經(jīng)驗(yàn)后這些故障很快就解決了。接下來最棘手的應(yīng)該是軟件編程了。編程向來都是我的軟肋,不過還好,在廣大網(wǎng)友的支持下,最后還是搞定了。7. 總結(jié)與體會(huì)本次課程設(shè)計(jì)即將進(jìn)入尾聲,回想這兩周來的電子設(shè)計(jì)制作經(jīng)歷,我感觸甚是深刻。通過本次課程設(shè)計(jì),使我對(duì)電子設(shè)計(jì)及制作產(chǎn)生了較為濃厚的興趣,這不僅加強(qiáng)了自己對(duì)理論知識(shí)的理解和鞏固,還能提高自己的動(dòng)手能力,可以說受益匪淺。當(dāng)然更重要的是,激起了我學(xué)好單片機(jī)的斗志。本次課程設(shè)計(jì)主要分為四部分:設(shè)計(jì)、仿真、制作及調(diào)試。這四個(gè)步驟在整個(gè)課程設(shè)計(jì)過程中起著重要的作用。本次課程設(shè)計(jì)的任務(wù)是:根據(jù)老師給

16、出的設(shè)計(jì)題目的要求選擇合適的電路,確定元件參數(shù),對(duì)原理圖進(jìn)行電路仿真,制作PCB圖等。在整個(gè)設(shè)計(jì)制作過程中用到了兩個(gè)軟件,PROTUES仿真軟件和Protel99SE做板軟件??梢哉f,在此之前自己未曾使用過protues軟件。而且Protel99SE用起來也是相當(dāng)?shù)哪吧?,畢竟已隔將近半年多沒用此軟件做板了。本次課設(shè)讓我學(xué)到了如何去運(yùn)用protues軟件對(duì)電路進(jìn)行仿真,仿真出來的效果與理論上的效果以及與實(shí)物做出來的效果有何不同或相似。而在使用Protel99SE軟件設(shè)計(jì)時(shí),我也有了不少的學(xué)習(xí)應(yīng)用心得。首先,在制作原理圖的時(shí)候一定要非常細(xì)心,一個(gè)小錯(cuò)誤都可能影響往后的制板工作。其次,在做PCB時(shí),

17、本人不提倡應(yīng)用自動(dòng)布線工具。雖然手動(dòng)布線很煩人,但這可以提高你的動(dòng)手能力,同時(shí)也可以提升你的耐力??傊趯W(xué)習(xí)和運(yùn)用設(shè)計(jì)電路軟件時(shí)遇到了不少問題,在向老師和同學(xué)請(qǐng)教后得到了解決,也在這個(gè)過程中學(xué)到了不少解決問題的方法。做板可是說是在考驗(yàn)一個(gè)人的耐力以及動(dòng)手能力。電路設(shè)計(jì)完之后就是開始真正的做板了。做板大致來說有六個(gè)步驟:買元件>印銅>腐蝕>打孔>安裝元器件>焊接。買元件時(shí)要注意元件的管腳要與封裝一致,比如電位器有很多種,在選擇時(shí)要注意管腳與自己銅板銅孔對(duì)應(yīng)。印銅時(shí)要注意熨斗的溫度,溫度不夠時(shí)印銅很容易失敗。而腐蝕過程中腐蝕藥品的量以及水的溫度則直接影響到腐蝕時(shí)間的

18、長短,這就要自己合理把握了。打孔時(shí)最好使用口徑稍微大一點(diǎn)的針頭,在打芯片的孔時(shí)要注意將孔打在一條直線上,以免在插芯片時(shí)有困難。在安裝元器件時(shí)一定要做到對(duì)號(hào)入座,且有些器件要注意正負(fù)極,如若不然電路不通是小事,元件爆炸就危險(xiǎn)了。焊接時(shí)一定要做到細(xì)心+耐心,不要急于求成。當(dāng)然對(duì)于一個(gè)初學(xué)者而言,剛開始焊出來的板子確實(shí)談不上美觀,不過當(dāng)熟練之后,焊出美觀的板來就不成什么問題了。最能體現(xiàn)一個(gè)人的耐心程度,也最能學(xué)到東西的階段還是在調(diào)試過程。在整個(gè)過程中既要求熟練掌握設(shè)計(jì)的原理,懂得運(yùn)用所學(xué)電學(xué)的基本理論,還要求善于查錯(cuò),改錯(cuò)。如果在調(diào)試過程中無法達(dá)到預(yù)期結(jié)果,就要從整個(gè)設(shè)計(jì)制作過程中認(rèn)真分析,細(xì)心查找

19、錯(cuò)誤,一步一步仔細(xì)排查。在找到錯(cuò)誤之后,切不可馬上放棄這塊板子重新做,如果不懂如何做,可以請(qǐng)教在這方面能力較強(qiáng)的同學(xué),盡量做到以較少的改動(dòng)來改正錯(cuò)誤。這樣可以節(jié)約時(shí)間以及做板的成本。當(dāng)調(diào)板不成功,尤其是花了很久時(shí)間都未能成功的時(shí)候,大多數(shù)人都會(huì)顯得相當(dāng)急燥,而我就是其中一個(gè)。后來我去請(qǐng)教同學(xué)和老師,在他們的開導(dǎo)和講解之下,我靜下心來重新開始分析,當(dāng)檢查到電路板時(shí)才發(fā)現(xiàn),原來有一根銅線與周邊所附的銅被一點(diǎn)點(diǎn)沒腐蝕掉的銅點(diǎn)連在了一起,雖然這只是一小點(diǎn)的銅點(diǎn),卻能造成了比較大的錯(cuò)誤,導(dǎo)致有整個(gè)電路處于短路狀態(tài)。幸虧沒把主控芯片給燒咯。在修改之后,終于,一直期盼出現(xiàn)的結(jié)果出來了。本次課程設(shè)計(jì)的大概題目

20、是老師給出,當(dāng)然我們也可以自由選擇。我在學(xué)校圖書館以及網(wǎng)上查閱了相關(guān)資料之后,確定了一個(gè)與目前我所學(xué)的知識(shí)比較接近且相對(duì)而言比較熟悉的題目??梢哉f從確定題目,尋找原理圖,制作sch、pcb,到焊接調(diào)試,每一個(gè)步驟都付出了努力,傾注了我兩周的心血,也從中積累了寶貴的經(jīng)驗(yàn),最后終于大抵上完成了設(shè)計(jì)任務(wù)。從總體上看,這次電路設(shè)計(jì)制作還是比較成功的,板子的調(diào)試結(jié)果與仿真得出的效果圖還是比較接近的。拿著自己調(diào)試好的板子,心里總有些許的“成就感”,這也只有真正是自己動(dòng)過手的人才能體會(huì)到其中的喜悅。本次課程設(shè)計(jì)給我的第一大感覺就是:要成功,就要有付出。從這一次制作過程的心得體會(huì)當(dāng)中,我意識(shí)到在以后的設(shè)計(jì)中我

21、還需要做到再細(xì)心、再耐心、再專心?;叵霃闹谱鏖_始到結(jié)束,沒有哪一步不是注入了自己的心血,心情就激動(dòng)不已,此次課程設(shè)計(jì)必將讓自己的理論水平和實(shí)踐能力上升到一個(gè)新的臺(tái)階,同時(shí)也讓自己認(rèn)識(shí)到實(shí)踐的重要性。參考資料1 閻石.數(shù)字電子技術(shù)基礎(chǔ).高等教育出版社,20062 王衛(wèi)東.模擬電子電路基礎(chǔ)M.西安:西安電子科技大學(xué)出版社,20033 曹丙霞,趙艷華.PROTEL 99SE原理圖與PCB設(shè)計(jì).電子工業(yè)出版社,20074 李群芳,張士軍,黃建.單片機(jī)微型計(jì)算機(jī)與接口技術(shù).電子工業(yè)出版社,20085 趙世強(qiáng).電子電路EDA技術(shù)M.西安:西安電子科技大學(xué)出版社,20006 郭天祥.新概念51單片機(jī)C語言教

22、程.電子工業(yè)出版社,2009程序源代碼#include "reg52.h"#include "intrins.h" /_nop_();延時(shí)函數(shù)用#define dm P0 /段碼輸出口#define uchar unsigned char#define uint unsigned intsbit DQ=P27; /溫度輸入口sbit w0=P20; /數(shù)碼管4sbit w1=P21; /數(shù)碼管3sbit w2=P22; /數(shù)碼管2sbit w3=P23; /數(shù)碼管1sbit beep=P17; /蜂鳴器和指示燈sbit set=P26; /溫度設(shè)置切換鍵

23、sbit add=P24; /溫度加sbit dec=P25; /溫度減int temp1=0; /顯示當(dāng)前溫度和設(shè)置溫度的標(biāo)志位為0 時(shí)顯示當(dāng)前溫度uint h;uint temp;uchar r;uchar high=35,low=20;uchar sign;uchar q=0;uchar tt=0;uchar scale;/*溫度小數(shù)部分用查表法*/uchar code ditab16=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;/小數(shù)斷碼表uchar code table

24、_dm12=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40;/共陰LED 段碼表"0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮" "-"uchar table_dm1=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,

25、0xff,0xef; /個(gè)位帶小數(shù)點(diǎn)的斷碼表uchar data temp_data2=0x00,0x00; /讀出溫度暫放uchar data display5=0x00,0x00,0x00,0x00,0x00; /顯示單元數(shù)據(jù),共4 個(gè)數(shù)據(jù)和一個(gè)運(yùn)算暫用/*11us 延時(shí)函數(shù)*/void delay(uint t)for (;t>0;t-);void scan()int j;for(j=0;j<4;j+)switch (j)case 0: dm=table_dmdisplay0;w0=0;delay(50);w0=1;/xiaoshucase 1: dm=table_dm1di

26、splay1;w1=0;delay(50);w1=1;/geweicase 2: dm=table_dmdisplay2;w2=0;delay(50);w2=1;/shiweicase 3: dm=table_dmdisplay3;w3=0;delay(50);w3=1;/baiwei/ elsedm=table_dmb3;w3=0;delay(50);w3=1;/*DS18B20 復(fù)位函數(shù)*/ow_reset(void)char presence=1;while(presence)while(presence)DQ=1;_nop_();_nop_();/從高拉倒低DQ=0;delay(50)

27、; /550 usDQ=1;delay(6); /66 uspresence=DQ; /presence=0 復(fù)位成功,繼續(xù)下一步delay(45); /延時(shí)500 uspresence=DQ;DQ=1; /拉高電平/*DS18B20 寫命令函數(shù)*/向1-WIRE 總線上寫1 個(gè)字節(jié)void write_byte(uchar val)uchar i;for(i=8;i>0;i-)DQ=1;_nop_();_nop_(); /從高拉倒低DQ=0;_nop_();_nop_();_nop_();_nop_(); /5 usDQ=val&0x01; /最低位移出delay(6); /6

28、6 usval=val/2; /右移1 位DQ=1;delay(1);/*DS18B20 讀1 字節(jié)函數(shù)*/從總線上取1 個(gè)字節(jié)uchar read_byte(void)uchar i;uchar value=0;for(i=8;i>0;i-)DQ=1;_nop_();_nop_();value>>=1;DQ=0;_nop_();_nop_();_nop_();_nop_(); /4 usDQ=1;_nop_();_nop_();_nop_();_nop_(); /4 usif(DQ)value|=0x80;delay(6); /66 usDQ=1;return(value)

29、;/*讀出溫度函數(shù)*/read_temp()ow_reset(); /總線復(fù)位delay(200);write_byte(0xcc); /發(fā)命令write_byte(0x44); /發(fā)轉(zhuǎn)換命令ow_reset();delay(1);write_byte(0xcc); /發(fā)命令write_byte(0xbe);temp_data0=read_byte(); /讀溫度值的第字節(jié)temp_data1=read_byte(); /讀溫度值的高字節(jié)temp=temp_data1;temp<<=8;temp=temp|temp_data0; / 兩字節(jié)合成一個(gè)整型變量。return temp;

30、 /返回溫度值/*溫度數(shù)據(jù)處理函數(shù)*/二進(jìn)制高字節(jié)的低半字節(jié)和低字節(jié)的高半字節(jié)組成一字節(jié),這個(gè)/字節(jié)的二進(jìn)制轉(zhuǎn)換為十進(jìn)制后,就是溫度值的百、十、個(gè)位值,而剩/下的低字節(jié)的低半字節(jié)轉(zhuǎn)化成十進(jìn)制后,就是溫度值的小數(shù)部分/*/work_temp(uint tem)uchar n=0;if(tem>6348) / 溫度值正負(fù)判斷tem=65536-tem;n=1; / 負(fù)溫度求補(bǔ)碼,標(biāo)志位置1display4=tem&0x0f; / 取小數(shù)部分的值display0=ditabdisplay4; / 存入小數(shù)部分顯示值display4=tem>>4; / 取中間八位,即整數(shù)部分的值display3=display4/100; / 取百位數(shù)據(jù)暫存display1=display4%100; / 取后兩位數(shù)據(jù)暫存display2=display1/10; / 取十位數(shù)據(jù)暫存display1=display1%10; /個(gè)位數(shù)據(jù)r=display1+display2*10+display3*100;/符號(hào)位顯示判斷/if(!display3)display3=0x0a; /最高位為0 時(shí)不顯示if(!display2)display2=0x0a; /次高位為0 時(shí)不顯示if(n)display3=0x0b; /負(fù)溫度時(shí)最高位顯示"-"voi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論