基于單片機(jī)的數(shù)字溫度計(jì)課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(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、<p>  《單片機(jī)原理及應(yīng)用》</p><p><b>  課程設(shè)計(jì)說(shuō)明書(shū)</b></p><p>  設(shè)計(jì)題目:基于單片機(jī)的數(shù)字溫度計(jì)的設(shè)計(jì)</p><p>  學(xué) 院:工學(xué)院</p><p><b>  專 業(yè): </b></p><p><

2、b>  設(shè) 計(jì) 者: </b></p><p><b>  學(xué) 號(hào): </b></p><p><b>  指導(dǎo)老師: </b></p><p>  設(shè)計(jì)時(shí)間:2012年5月21日</p><p><b>  目錄</b></p>&l

3、t;p><b>  1 設(shè)計(jì)概述</b></p><p>  1.1 設(shè)計(jì)目標(biāo)和要求</p><p><b>  1.2 設(shè)計(jì)思路</b></p><p>  2 系統(tǒng)方案及硬件設(shè)計(jì)</p><p><b>  2.1 設(shè)計(jì)方案</b></p>&

4、lt;p>  2.2 方案的硬件總體方框圖</p><p>  2.3 溫度傳感器DS18B20測(cè)溫原理</p><p><b>  2.4 硬件設(shè)計(jì)</b></p><p>  2.4.1 主控制器</p><p>  2.4.2 復(fù)位電路</p><p>  2.4.3時(shí)鐘振蕩

5、........................................................................ </p><p>  2.4.4顯示電路</p><p>  3 proteus軟件仿真</p><p>  3.1 系統(tǒng)仿真設(shè)計(jì)</p><p>  3.2仿真結(jié)果分析</p>

6、;<p><b>  4 系統(tǒng)原理圖</b></p><p><b>  5 心得體會(huì)</b></p><p><b>  6 參考資料</b></p><p><b>  1 設(shè)計(jì)概述</b></p><p>  1.1 設(shè)計(jì)目標(biāo)和要

7、求</p><p>  1.用所學(xué)的單片機(jī)知識(shí)設(shè)計(jì)制作數(shù)字溫度計(jì);</p><p>  2.測(cè)溫范圍是-55℃---125℃;</p><p><b>  3.誤差小于1℃;</b></p><p>  4.所測(cè)的溫度值可以由LCD數(shù)碼管直接顯示;</p><p>  5.進(jìn)一步熟悉proteus

8、,protel,word軟件的功能和使用方法;</p><p><b>  1.2 設(shè)計(jì)思路</b></p><p>  首先確定我們所設(shè)計(jì)的是一個(gè)數(shù)字溫度計(jì),由單片機(jī)、溫度傳感器以及其他電路共同實(shí)現(xiàn)。</p><p>  根據(jù)所要實(shí)現(xiàn)的功能,先在proteus軟件上仿真。根據(jù)所選用的硬件可以將整個(gè)軟件設(shè)計(jì)分為若干子程序,有初始化、查詢時(shí)間、發(fā)

9、送指令、讀取數(shù)據(jù)、顯示溫度等構(gòu)成,可將以上子程序分別設(shè)計(jì),實(shí)現(xiàn)各自的功能,再在子程序中調(diào)用,就可以實(shí)現(xiàn)預(yù)期的目標(biāo)。</p><p>  在proteus軟件里畫(huà)出相應(yīng)的電路圖,將編寫(xiě)好的程序的編譯后的文件下載到proteus電路圖的單片機(jī)里,進(jìn)行仿真,對(duì)溫度傳感器設(shè)置不同的參數(shù),看是否達(dá)到了我們?cè)O(shè)計(jì)所要求的目標(biāo),如果不符合要求,需要檢查程序算法和硬件連接是否有誤。若仿真成功,就按照電路圖焊接硬件。</p&g

10、t;<p>  2 系統(tǒng)方案及硬件設(shè)計(jì)</p><p><b>  2.1 設(shè)計(jì)方案</b></p><p>  采用數(shù)字溫度芯片DS18B20 測(cè)量溫度,輸出信號(hào)全數(shù)字化。采用了單總線的數(shù)據(jù)傳輸,由數(shù)字溫度計(jì)DS18B20和at89c51單片機(jī)構(gòu)成的溫度測(cè)量裝置,它直接輸出溫度的數(shù)字信號(hào),也可直接與計(jì)算機(jī)連接。采用at89c51單片機(jī)控制,軟件編程的自

11、由度大,可通過(guò)編程實(shí)現(xiàn)各種各樣的算術(shù)算法和邏輯控制,而且體積小,硬件實(shí)現(xiàn)簡(jiǎn)單,安裝方便。該系統(tǒng)利用at89c51芯片控制溫度傳感器DS18B20進(jìn)行實(shí)時(shí)溫度檢測(cè)并顯示,能夠?qū)崿F(xiàn)快速測(cè)量環(huán)境溫度,并可以根據(jù)需要設(shè)定上下限溫度。該系統(tǒng)擴(kuò)展性非常強(qiáng)。該測(cè)溫系統(tǒng)電路簡(jiǎn)單、精確度較高、實(shí)現(xiàn)方便、軟件設(shè)計(jì)也比較簡(jiǎn)單。</p><p>  2.2 方案的硬件總體方框圖</p><p>  基于增強(qiáng)的AV

12、R RISC結(jié)構(gòu)的低功耗8 位CMOS微控制器at89c51,溫度傳感器采用的DS18B20,用四位數(shù)碼管顯示溫度。</p><p><b>  圖1</b></p><p>  ·2.3 溫度傳感器DS18B20測(cè)溫原理</p><p>  DS18B20溫度傳感器是美國(guó)DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳

13、統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)9-12位的數(shù)字值讀數(shù)方式。DS18B20的性能特點(diǎn)如下:</p><p> ?。?)獨(dú)特的單線接口僅需要一個(gè)端口引腳進(jìn)行通信,DS18B20在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊。</p><p> ?。?)DS18B20支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在

14、惟一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)測(cè)溫;</p><p> ?。?)無(wú)須外部器件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi);</p><p> ?。?)可通過(guò)數(shù)據(jù)線供電,電壓范圍為3.0-5.5V;</p><p><b> ?。?)零待機(jī)功耗;</b></p><p> ?。?)溫度以9或12位數(shù)字,對(duì)應(yīng)的可分辨

15、溫度分別為0.1℃,可實(shí)現(xiàn)高精度測(cè)溫;</p><p> ?。?)用戶可定義報(bào)警設(shè)置;</p><p>  (8)報(bào)警搜索命令識(shí)別并標(biāo)志超過(guò)程序限定溫度(溫度報(bào)警條件)的器件;</p><p> ?。?)負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作;</p><p>  (10)測(cè)量結(jié)果直接輸出數(shù)字溫度信號(hào),以"

16、;一線總線"串行傳送給CPU,同時(shí)可傳送CRC校驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯(cuò)能力</p><p>  DS18B20采用3腳PR35封裝或8腳SOIC封裝,其引腳排列及內(nèi)部結(jié)構(gòu)框圖如圖2及圖3以及圖4的測(cè)溫原理圖如下所示:</p><p><b>  圖2 引腳排列圖</b></p><p><b>  3 內(nèi)部結(jié)構(gòu)框圖<

17、;/b></p><p>  圖4 DS18B20測(cè)溫原理圖</p><p>  64位ROM的結(jié)構(gòu)開(kāi)始8位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有48位,最后8位是前面56位的CRC檢驗(yàn)碼,這也是多個(gè)DS18B20可以采用一線進(jìn)行通信的原因。溫度報(bào)警觸發(fā)器TH和TL,可通過(guò)軟件寫(xiě)入戶報(bào)警上下限。</p><p>  DS18B20溫度傳感器的內(nèi)部存

18、儲(chǔ)器還包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EERAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如圖4所示。頭2個(gè)字節(jié)包含測(cè)得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復(fù)位時(shí)被刷新。第5個(gè)字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時(shí)寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。該字節(jié)各位的定義如圖5所示。低5位一直為1,TM是工作模式位,用于設(shè)置DS18B20在工作模式還是

19、在測(cè)試模式,DS18B20出廠時(shí)該位被設(shè)置為0,用戶不要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來(lái)設(shè)置分辨率。</p><p>  圖5 DS18B20的字節(jié)定義</p><p>  DS18B20的分辨率定義如表2-1所示</p><p>  表2-1 分辨率設(shè)置表</p><p>  由表1可見(jiàn),DS

20、18B20溫度轉(zhuǎn)換的時(shí)間比較長(zhǎng),而且分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間越長(zhǎng)。因此,在實(shí)際應(yīng)用中要將分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。</p><p>  主機(jī)控制DS18B20完成溫度轉(zhuǎn)換過(guò)程是:每一次讀寫(xiě)之前都要對(duì)DS18B20進(jìn)行復(fù)位,即將數(shù)據(jù)總線下拉500us,然后釋放,DS18B20收到信號(hào)后等待16-60us左右,之后發(fā)出60-240us的存在低脈沖,主CPU收到此此信號(hào)表示復(fù)位成功;復(fù)位成功后發(fā)送一條ROM

21、指令,然后發(fā)送RAM指令,這樣才能對(duì)DS18B20進(jìn)行預(yù)訂的讀寫(xiě)操作。</p><p>  表2-2 ROM指令集</p><p>  表2-3 RAM指令集</p><p>  DS18B20的測(cè)溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1

22、;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入。器件中還有一個(gè)計(jì)數(shù)門(mén),當(dāng)計(jì)數(shù)門(mén)打開(kāi)時(shí),DS18B20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù)進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門(mén)的開(kāi)啟時(shí)間由高溫度系數(shù)振蕩器來(lái)決定,每次測(cè)量前,首先將最低溫所對(duì)應(yīng)的一個(gè)基數(shù)分別置入減法計(jì)數(shù)器1、溫度寄存器中,計(jì)數(shù)器1和溫度寄存器被預(yù)置在最低溫所對(duì)應(yīng)的一個(gè)基數(shù)值。</p><p>  減法計(jì)數(shù)器1對(duì)低溫度系數(shù)

23、晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器1的預(yù)置值減到0時(shí),溫度寄存器的值將加1,減法計(jì)數(shù)器1的預(yù)置將重新被裝入,減法計(jì)數(shù)器1重新開(kāi)始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器計(jì)數(shù)到0時(shí),停止溫度寄存器的累加,此時(shí)溫度寄存器中的數(shù)值就是所測(cè)溫度值。其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)器門(mén)仍未關(guān)閉就重復(fù)上述過(guò)程,直到溫度寄存器值大致被測(cè)溫度值。</p><p><b>  2

24、.4 硬件設(shè)計(jì)</b></p><p>  2.4.1 主控制器AT89C51單片機(jī)</p><p>  AT89C51 提供以下標(biāo)準(zhǔn)功能:4k 字節(jié)Flash 閃速存儲(chǔ)器,128字節(jié)內(nèi)部RAM,32 個(gè)I/O 口線,兩個(gè)16位定時(shí)/計(jì)數(shù)器,一個(gè)5向量?jī)杉?jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),AT89C51可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)

25、電工作模式??臻e方式停止CPU的工作,但允許RAM,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個(gè)硬件復(fù)位。</p><p>  2.4.2 復(fù)位電路</p><p>  在這里采用的是按鈕加上電復(fù)位,系統(tǒng)每次上電和每次按下復(fù)位按鈕,系統(tǒng)就會(huì)復(fù)位。</p><p>  2.4.3 時(shí)鐘振蕩電路

26、</p><p>  采用的是1MHZ的晶振頻率,它與單片機(jī)的硬件連接電路如圖7所示</p><p><b>  圖7 晶振電路</b></p><p><b>  2.4.4顯示電路</b></p><p>  顯示電路采用集成的四位一體的數(shù)碼管,為共陰極結(jié)構(gòu),通過(guò)設(shè)置不同的段碼可以顯示溫度。&l

27、t;/p><p><b>  圖9顯示電路</b></p><p>  3 proteus軟件仿真</p><p>  3.1 系統(tǒng)仿真設(shè)計(jì)</p><p>  本設(shè)計(jì)是在Proteus環(huán)境下進(jìn)行仿真的,仿真所用到的器件有:?jiǎn)纹瑱C(jī)ATmega16,DS1820溫度傳感器,蜂鳴器,液晶顯示器,一些電阻,電容等。</p&g

28、t;<p><b>  3.2仿真結(jié)果分析</b></p><p>  本設(shè)計(jì)在仿真的條件下可以正確的顯示溫度,并在溫度超過(guò)所設(shè)置的最高溫度或最低溫度時(shí),蜂鳴器將發(fā)出滴滴的警告聲。且本設(shè)計(jì)溫度顯示可以精確到0.1滿足設(shè)計(jì)要求。仿真時(shí)溫度顯示如圖18所示</p><p><b>  圖18</b></p><p&g

29、t;<b>  4 系統(tǒng)原理圖</b></p><p>  通過(guò)Proteus進(jìn)行元器件的查找與連接仿真得到下圖</p><p><b>  5 心得體會(huì)</b></p><p>  單片機(jī)的設(shè)計(jì)至今為止已經(jīng)進(jìn)入了令人鼓舞的階段,在進(jìn)行了長(zhǎng)達(dá)兩周的時(shí)間的摸索與實(shí)驗(yàn),使我不僅僅是對(duì)于單片機(jī)入門(mén)軟件與硬件的常用設(shè)計(jì)與功能,還使

30、我對(duì)于一項(xiàng)設(shè)計(jì)研究的制作過(guò)程所需要的詳細(xì)步驟和具體的實(shí)現(xiàn)方法的力度的掌握?;诖俗髌纷鳛閱纹瑱C(jī)課程設(shè)計(jì)設(shè)計(jì)的創(chuàng)作成果,在當(dāng)其中機(jī)器的功能等方面并非處于一個(gè)成熟的階段,而且僅僅是因?yàn)槔蠋煹囊笠约拔覀兊某醪絿L試,當(dāng)中的缺點(diǎn)是無(wú)可非議地存在著。</p><p>  當(dāng)然在這次寶貴的課程設(shè)計(jì)活動(dòng)中,經(jīng)驗(yàn)才是對(duì)于我們最大的收獲,而且還增強(qiáng)了自身對(duì)未知問(wèn)題以及對(duì)知識(shí)的深化認(rèn)識(shí)的能力,用受益匪淺這個(gè)詞語(yǔ)來(lái)概括這次難忘的活動(dòng)我

31、覺(jué)得再合適不過(guò)了。但是,光是完成了作品還是不可以自我滿足的,在從一開(kāi)始的時(shí)候就懷著將作品制作得更加人性化,更加令人滿意,更加地使功能完美又方便地被應(yīng)用領(lǐng)域這個(gè)最終目的下,隨著對(duì)單片機(jī)這門(mén)學(xué)科的認(rèn)識(shí)加深,到達(dá)了拓展的程度,我想這個(gè)目的將在不遠(yuǎn)的時(shí)期內(nèi)被實(shí)現(xiàn)。</p><p>  總之,這次設(shè)計(jì)從軟件編寫(xiě)、調(diào)試到軟硬件聯(lián)機(jī)調(diào)試,我傾注了大量的時(shí)間和心血。真是曾經(jīng)為程序的編寫(xiě)而冥思查找過(guò),曾經(jīng)為無(wú)法找出錯(cuò)誤而郁悶苦惱過(guò)

32、,也曾經(jīng)為某一功能不能實(shí)現(xiàn)而猶豫彷徨過(guò),但最終我成功了。</p><p>  因?yàn)槲也粌H品味到了結(jié)果的喜悅,更明白了過(guò)程的彌足珍貴。最后要感謝學(xué)校給予我們這次實(shí)踐的機(jī)會(huì)和老師對(duì)我們實(shí)踐的指導(dǎo)。</p><p><b>  6 參考資料</b></p><p>  1 張俊漠.單片機(jī)中級(jí)教程.北京航空航天大學(xué).2006.03</p>

33、<p>  2 全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽獲獎(jiǎng)作品選編.北京理工大學(xué)出版社.2005.03</p><p>  3 李鵬,等.計(jì)算機(jī)通信技術(shù)及其程序設(shè)計(jì).西安電子科技大學(xué)出版社.1998</p><p>  4 姚彬.電子元器件與電子實(shí)習(xí)實(shí)訓(xùn)教程.機(jī)械工業(yè)出版社.1996</p><p>  5 宋賢法,韓晶等編著.電路設(shè)計(jì)實(shí)力指導(dǎo)教程.機(jī)械工業(yè)出版社.20

34、03</p><p>  6 范紅剛,魏學(xué)海,任思璟編著.51單片機(jī)自學(xué)筆記. 北京航空航天大學(xué).2001.01</p><p>  7 黃友銳,編著.單片機(jī)原理及應(yīng)用.合肥工業(yè)大學(xué)出版社.2006.10</p><p><b>  附錄設(shè)計(jì)程序:</b></p><p>  #include<reg51.h>

35、;</p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  sbit DQ=P3^7;//ds18b20與單片機(jī)連接口</p><p>  sbit RS=P3^0;</p><p>  sbit RW=P3

36、^1;</p><p>  sbit EN=P3^2;</p><p>  unsigned char code str1[]={"temperature: "};</p><p>  unsigned char code str2[]={" "};</p><p>  uch

37、ar data disdata[5];</p><p>  uint tvalue;//溫度值</p><p>  uchar tflag;//溫度正負(fù)標(biāo)志</p><p>  /*************************lcd1602程序**************************/</p><p>  void delay

38、1ms(unsigned int ms)//延時(shí)1毫秒(不夠精確的)</p><p>  {unsigned int i,j;</p><p>  for(i=0;i<ms;i++)</p><p>  for(j=0;j<100;j++);</p><p><b>  }</b></p>&l

39、t;p>  void wr_com(unsigned char com)//寫(xiě)指令//</p><p>  { delay1ms(1);</p><p><b>  RS=0;</b></p><p><b>  RW=0;</b></p><p><b>  EN=0;</b

40、></p><p><b>  P2=com;</b></p><p>  delay1ms(1);</p><p><b>  EN=1;</b></p><p>  delay1ms(1);</p><p><b>  EN=0;</b><

41、;/p><p><b>  }</b></p><p>  void wr_dat(unsigned char dat)//寫(xiě)數(shù)據(jù)//</p><p>  { delay1ms(1);;</p><p><b>  RS=1;</b></p><p><b>  RW=

42、0;</b></p><p><b>  EN=0;</b></p><p><b>  P2=dat;</b></p><p>  delay1ms(1);</p><p><b>  EN=1;</b></p><p>  delay1m

43、s(1);</p><p><b>  EN=0;</b></p><p><b>  }</b></p><p>  void lcd_init()//初始化設(shè)置//</p><p>  {delay1ms(15);</p><p>  wr_com(0x38);delay

44、1ms(5);</p><p>  wr_com(0x08);delay1ms(5);</p><p>  wr_com(0x01);delay1ms(5);</p><p>  wr_com(0x06);delay1ms(5);</p><p>  wr_com(0x0c);delay1ms(5);</p><p>

45、<b>  }</b></p><p>  void display(unsigned char *p)//顯示//</p><p><b>  {</b></p><p>  while(*p!='\0')</p><p><b>  {</b></p&

46、gt;<p>  wr_dat(*p);</p><p><b>  p++;</b></p><p>  delay1ms(1);</p><p><b>  }</b></p><p><b>  }</b></p><p>  ini

47、t_play()//初始化顯示</p><p>  { lcd_init();</p><p>  wr_com(0x80);</p><p>  display(str1);</p><p>  wr_com(0xc0);</p><p>  display(str2);</p><p>&l

48、t;b>  }</b></p><p>  /******************************ds1820程序***************************************/</p><p>  void delay_18B20(unsigned int i)//延時(shí)1微秒</p><p><b>  {<

49、;/b></p><p>  while(i--);</p><p><b>  }</b></p><p>  void ds1820rst()/*ds1820復(fù)位*/</p><p>  { unsigned char x=0;</p><p>  DQ = 1; //

50、DQ復(fù)位</p><p>  delay_18B20(4); //延時(shí)</p><p>  DQ = 0; //DQ拉低</p><p>  delay_18B20(100); //精確延時(shí)大于480us</p><p>  DQ = 1; //拉高</p><p>  delay_

51、18B20(40); </p><p><b>  } </b></p><p>  uchar ds1820rd()/*讀數(shù)據(jù)*/</p><p>  { unsigned char i=0;</p><p>  unsigned char dat = 0;</p><p>  for (i=8

52、;i>0;i--)</p><p>  { DQ = 0; //給脈沖信號(hào)</p><p><b>  dat>>=1;</b></p><p>  DQ = 1; //給脈沖信號(hào)</p><p><b>  if(DQ)</b></p><p>  d

53、at|=0x80;</p><p>  delay_18B20(10);</p><p><b>  }</b></p><p>  return(dat);</p><p><b>  }</b></p><p>  void ds1820wr(uchar wdata)/*

54、寫(xiě)數(shù)據(jù)*/</p><p>  {unsigned char i=0;</p><p>  for (i=8; i>0; i--)</p><p><b>  { DQ = 0;</b></p><p>  DQ = wdata&0x01;</p><p>  delay_18B20

55、(10);</p><p><b>  DQ = 1;</b></p><p>  wdata>>=1;</p><p><b>  }</b></p><p><b>  }</b></p><p>  read_temp()/*讀取溫度值

56、并轉(zhuǎn)換*/</p><p>  {uchar a,b;</p><p>  ds1820rst(); </p><p>  ds1820wr(0xcc);//*跳過(guò)讀序列號(hào)*/</p><p>  ds1820wr(0x44);//*啟動(dòng)溫度轉(zhuǎn)換*/</p><p>  ds1820rst(); </

57、p><p>  ds1820wr(0xcc);//*跳過(guò)讀序列號(hào)*/ </p><p>  ds1820wr(0xbe);//*讀取溫度*/ </p><p>  a=ds1820rd();</p><p>  b=ds1820rd();</p><p><b>  tvalue=b;</b><

58、/p><p>  tvalue<<=8;</p><p>  tvalue=tvalue|a;</p><p>  if(tvalue<0x0fff)</p><p><b>  tflag=0;</b></p><p><b>  else</b></p

59、><p>  {tvalue=~tvalue+1;</p><p><b>  tflag=1;</b></p><p><b>  }</b></p><p>  tvalue=tvalue*(0.625);//溫度值擴(kuò)大10倍,精確到1位小數(shù)</p><p>  return

60、(tvalue);</p><p><b>  }</b></p><p>  /*******************************************************************/</p><p>  void ds1820disp()//溫度值顯示</p><p>  { ucha

61、r flagdat;</p><p>  disdata[0]=tvalue/1000+0x30;//百位數(shù)</p><p>  disdata[1]=tvalue%1000/100+0x30;//十位數(shù)</p><p>  disdata[2]=tvalue%100/10+0x30;//個(gè)位數(shù)</p><p>  disdata[3]=tv

62、alue%10+0x30;//小數(shù)位</p><p>  if(tflag==0)</p><p>  flagdat=0x20;//正溫度不顯示符號(hào)</p><p><b>  else</b></p><p>  flagdat=0x2d;//負(fù)溫度顯示負(fù)號(hào):-</p><p>  if(di

63、sdata[0]==0x30)</p><p>  {disdata[0]=0x20;//如果百位為0,不顯示</p><p>  if(disdata[1]==0x30)</p><p>  {disdata[1]=0x20;//如果百位為0,十位為0也不顯示</p><p><b>  }</b></p>

64、<p><b>  }</b></p><p>  wr_com(0xc0);</p><p>  wr_dat(flagdat);//顯示符號(hào)位</p><p>  wr_com(0xc1);</p><p>  wr_dat(disdata[0]);//顯示百位</p><p>

65、  wr_com(0xc2);</p><p>  wr_dat(disdata[1]);//顯示十位 </p><p>  wr_com(0xc3);</p><p>  wr_dat(disdata[2]);//顯示個(gè)位 </p><p>  wr_com(0xc4);</p><p>  wr_dat(0x2e)

66、;//顯示小數(shù)點(diǎn) </p><p>  wr_com(0xc5);</p><p>  wr_dat(disdata[3]);//顯示小數(shù)位</p><p><b>  }</b></p><p>  /********************主程序***********************************/

67、</p><p>  void main()</p><p>  { init_play();//初始化顯示</p><p><b>  while(1)</b></p><p>  {read_temp();//讀取溫度</p><p>  ds1820disp();//顯示</p>

溫馨提示

  • 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)論