課程設(shè)計--數(shù)字式溫度計_第1頁
已閱讀1頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  課程設(shè)計說明書(論文)</p><p>  題 目 </p><p>  課 程 名 稱 </p><p>  專 業(yè) </p><p>  班 級

2、 </p><p>  學(xué) 生 姓 名 </p><p>  學(xué) 號 </p><p>  設(shè) 計 地 點(diǎn) </p><p>  指 導(dǎo) 教 師

3、 </p><p>  設(shè)計起止時間: 年 月 日至 年 月 日</p><p><b>  目錄</b></p><p>  引言................................................................</p><p>

4、;  第一章、緒論........................................................</p><p>  1.1、緒論.........................................................</p><p>  1.2、整體設(shè)計......................................

5、...............</p><p>  第二章、仿真軟件介紹.................................................</p><p>  2.1、Proteus簡介..................................................</p><p>  第三章、DS18B20的相關(guān)

6、介紹……………………………………………</p><p>  DS18B20測溫濕系統(tǒng)設(shè)計............................</p><p>  3.1 DS18B20溫度傳感器.............................................</p><p>  3.1.1 DS18B20工作原理............

7、...............................</p><p>  3.1.2 DS18B20性能特點(diǎn)...........................................</p><p>  3.1.3 DS18B20引腳功能...........................................</p><p>  

8、3.1.4 DS18B20內(nèi)部結(jié)構(gòu)功能圖.....................................</p><p>  3.2 LCD1602液晶顯示器.............................................</p><p>  3.2.1 LCD1602液晶顯示器工作原理.................................&

9、lt;/p><p>  3.2.2 LCD1602主要技術(shù)參數(shù).......................................</p><p>  3.2.3 LCD1602引腳功能說明.......................................</p><p>  3.3 DS18B20測溫原理圖....................

10、.........................</p><p>  3.3.1 DS18B20在Altium Designer上測溫原理圖.....................</p><p>  3.3.2 DS18B20在Proteus上測溫原理圖.............................</p><p>  第四章、系統(tǒng)硬件和軟件總體設(shè)

11、計……………………………………</p><p>  4.1、 硬件電路設(shè)計框圖…………………………………………………………</p><p>  4.2、 系統(tǒng)軟件設(shè)計………………………………………………………………</p><p>  4.3、讀出溫度子程序…………………………………………………………</p><p>  4.4、溫

12、度轉(zhuǎn)換命令子程序……………………………………………………</p><p>  4.5、計算溫度子程序…………………………………………………………</p><p>  4.6、 顯示數(shù)據(jù)刷新子程序……………………………………………………</p><p>  第五章、源程序…………………………………………………………</p><p>  

13、第六章、課程設(shè)計小結(jié)…………………………………………………</p><p>  附錄:參考文獻(xiàn)…………………………………………………………</p><p><b>  引言</b></p><p>  在科學(xué)技術(shù)不斷發(fā)展的今天,溫度的檢測、控制應(yīng)用于許多行業(yè),隨著電子工業(yè)的發(fā)展,數(shù)字儀表反應(yīng)速度快、操作簡單,對使用環(huán)境要求不高的優(yōu)點(diǎn),市場上逐漸

14、出現(xiàn)越來越多的數(shù)字式溫度計,實(shí)踐表明,整個低功耗高精度的便攜式數(shù)字式溫度計使用方便,工作穩(wěn)定,待機(jī)時間長,具有廣闊的應(yīng)用前景,并開始得到廣泛應(yīng)用。</p><p>  本論文介紹了智能集成溫度傳感器DS18B20的結(jié)構(gòu)特征及控制方法,并對以此傳感器,AT89C51單片機(jī)為控制器和LCD1602(Liquid Crystal Display)為顯示器構(gòu)成的便攜式數(shù)字溫度計的電路組成、工作原理及程序設(shè)計作了詳細(xì)的介紹

15、。</p><p>  本論文所介紹的數(shù)字式溫度計測量范圍為0~100℃,精度為 0.1℃,可以手動設(shè)置溫度上下報警值,當(dāng)溫度超出所設(shè)報警值還將發(fā)出報警鳴叫聲,并顯示溫度值,該溫度計適用于人民的日常生活和工、農(nóng)業(yè)生產(chǎn)領(lǐng)域。</p><p>  關(guān)鍵詞:DS18B20;AT89C51;LCD 1602;溫度計;數(shù)字式控制</p><p><b>  第一章、

16、緒論</b></p><p><b>  緒論</b></p><p>  十七世紀(jì)是溫度計誕生和發(fā)展的最初階段,這個物理儀器幾乎比任何其它儀器都得到更廣泛的應(yīng)用?,F(xiàn)代的歷史研究認(rèn)為最早發(fā)明溫度計的科學(xué)家是伽利略,他于1592年發(fā)明了最早的氣體溫度計,最早的液體溫度計是荷蘭科學(xué)家華倫海特制造出來。</p><p>  隨著宇航、核能

17、、冶金、材料、低溫、微電子學(xué)和生物醫(yī)學(xué)等方面的發(fā)展,對溫度測量、控制的精度和范圍提出了越來越高的要求,尤其是對溫度的測量非但要準(zhǔn)確,而且需讀取數(shù)值更直觀更方便,從而促進(jìn)了溫度測量和控制技術(shù)的迅速發(fā)展。雖然水銀溫度計至今仍是各種溫度測量的計量標(biāo)準(zhǔn)。可是它的缺點(diǎn)是刻度間隔通常都很密, 不容易準(zhǔn)確分辨, 讀數(shù)因難, 而且它們的熱容量還比較大, 達(dá)到熱平衡所需的時間較長, 因此很難讀準(zhǔn), 并且使用非常不方便,而且水銀有毒,玻璃管易碎。</

18、p><p>  后來出現(xiàn)代替水銀的有酒精溫度計和金屬簧片溫度計,它們雖然沒有毒性,但測量精度很低,只能作為一個概略指示。后來接著出現(xiàn)了熱電阻溫度計、熱電偶溫度計等。隨著大規(guī)模集成電路工藝的提高,又出現(xiàn)了多種集成的數(shù)字化溫度傳感器。隨著電子工業(yè)的發(fā)展,數(shù)字儀表反應(yīng)速度快、操作簡單,對使用環(huán)境要求不高的優(yōu)點(diǎn),市場上逐漸出現(xiàn)越來越多的數(shù)字式溫度計,另外,縱觀國際上現(xiàn)有的溫度計的變化,總的趨勢是從模擬向數(shù)字轉(zhuǎn)變,相應(yīng)的體積也

19、在不斷減小,并且一切向著數(shù)字化控制,智能化控制方向發(fā)展。 </p><p><b>  整體設(shè)計</b></p><p>  單片機(jī)具有體積小、功耗低、控制功能強(qiáng)、擴(kuò)展靈活、微型化和使用方便等優(yōu)點(diǎn),廣泛應(yīng)用于儀器儀表中,結(jié)合不同類型的傳感器,可實(shí)現(xiàn)諸如電壓、功率、頻率、濕度、溫度、流量、速度、厚度、角度、長度、硬度、元素、壓力等物理量的測量。采用單片機(jī)控制使得儀器儀表

20、數(shù)字化、智能化、微型化,且功能比采用電子或數(shù)字電路更加強(qiáng)大。</p><p>  基于單片機(jī)的溫濕度控制儀的設(shè)計,本設(shè)計實(shí)現(xiàn)的是單片機(jī)溫濕度測量與控制系統(tǒng),通過LCD或LED顯示所測量的溫濕度,是基于單片機(jī)對數(shù)字信號的高敏感和可控性、溫濕度傳感器可以產(chǎn)生模擬信號,和A/D模擬數(shù)字轉(zhuǎn)換芯片的性能,我設(shè)計了以單片機(jī)為核心的一套檢測系統(tǒng),其中包括單片機(jī)、復(fù)位電路、溫度檢測、濕度檢測、與PC機(jī)通信、系統(tǒng)軟件等部分的設(shè)計。

21、從總體上設(shè)計了兩種方案來實(shí)現(xiàn)溫濕度雙參數(shù)測試設(shè)計。</p><p>  采用將溫度和濕度分開測量,其中溫度傳感器選用DALASS公司的數(shù)字溫度傳感器DS18B20,可以與單片機(jī)直接相連。濕度傳感器選用HS1101電容式濕度傳感器,濕度的變化可以轉(zhuǎn)化為頻率的變化,濕度越高,頻率越小,外加一個555定時器便可以將電容的變化轉(zhuǎn)變?yōu)轭l率的變化,產(chǎn)生一定頻率的方波,直接與單片機(jī)的定時器1相連,便可以測出方波的頻率,進(jìn)而便可

22、以得到濕度值。由于DS18B20采用單總線方式,在進(jìn)行多點(diǎn)測量的時候?qū)⒎浅R子跀U(kuò)展,不需要添加任何器件,將所有傳感器直接與單片機(jī)IO口連接即可。采用液晶顯示器LCD1602顯示所測溫度和濕度。</p><p>  第二章、仿真軟件介紹</p><p>  2.1、Proteus簡介</p><p>  Proteus軟件是來自英國Labcenter electron

23、ics公司的EDA工具軟件,Proteus軟件有十多年的歷史,在全球廣泛使用,除了其具有和其它EDA工具一樣的原理布圖、PCB自動或人工布線及電路仿真的功能外,其革命性的功能是,他的電路仿真是互動的,針對微處理器的應(yīng)用,還可以直接在基于原理圖的虛擬原型上編程,并實(shí)現(xiàn)軟件源碼級的實(shí)時調(diào)試,如有顯示及輸出,還能看到運(yùn)行后輸入輸出的效果,配合系統(tǒng)配置的虛擬儀器如示波器、邏輯分析儀等。</p><p>  Proteus

24、組合了高級原理布圖、混合模式SPICE仿真,PCB設(shè)計以及自動布線來實(shí)現(xiàn)一個完整的電子設(shè)計系統(tǒng)。此系統(tǒng)受益于15年來的持續(xù)開發(fā),被《電子世界》在其對PCB設(shè)計系統(tǒng)的比較文章中評為最好產(chǎn)品—“The Route to PCB CAD”。Proteus 產(chǎn)品系列也包含了革命性的VSM技術(shù),用戶可以對基于微控制器的設(shè)計連同所有的周圍電子器件一起仿真。用戶甚至可以實(shí)時采用諸如LED/LCD、鍵盤、RS232終端等動態(tài)外設(shè)模型來對設(shè)計進(jìn)行交互仿真

25、。</p><p>  其功能模塊:—個易用而又功能強(qiáng)大的ISIS原理布圖工具;PROSPICE混合模型SPICE仿真; ARES PCB設(shè)計。 </p><p>  PROSPICE 仿真器的一個擴(kuò)展PROTEUS VSM:便于包括所有相關(guān)的器件的基于微處理器設(shè)計的協(xié)同仿真。此外,還可以結(jié)合微控制器軟件使用動態(tài)的鍵盤,開關(guān),按鈕,LEDs甚至LCD顯示CPU模型。 </p>

26、<p>  第三章、DS18B20的相關(guān)介紹</p><p>  DS18B20測溫系統(tǒng)設(shè)計</p><p>  采用將溫度和濕度分開測量,其中溫度傳感器選用DALASS公司的數(shù)字溫度傳感器DS18B20,可以與單片機(jī)直接相連。濕度傳感器選用HS1101電容式濕度傳感器,濕度的變化可以轉(zhuǎn)化為頻率的變化,濕度越高,頻率越小,外加一個555定時器便可以將電容的變化轉(zhuǎn)變?yōu)轭l率的變化,

27、產(chǎn)生一定頻率的方波,直接與單片機(jī)的定時器1相連,便可以測出方波的頻率,進(jìn)而便可以得到濕度值。由于DS18B20采用單總線方式,在進(jìn)行多點(diǎn)測量的時候?qū)⒎浅R子跀U(kuò)展,不需要添加任何器件,將所有傳感器直接與單片機(jī)IO口連接即可。采用液晶顯示器LCD1602顯示所測溫度和濕度。</p><p>  3.1 DS18B20溫度傳感器</p><p>  DS18B20工作原理</p>

28、<p>  DS18B20的讀寫時序和測溫原理與DS1820相同,只是得到的溫度值的位數(shù)因分辨率不同而不同,且溫度轉(zhuǎn)換時的延時時間由2s減為750ms。 DS18B20測溫原理中低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號送給計數(shù)器1。高溫度系數(shù)晶振隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號作為計數(shù)器2的脈沖輸入。計數(shù)器1和溫度寄存器被預(yù)置在-55℃所對應(yīng)的一個基數(shù)值。計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號

29、進(jìn)行減法計數(shù),當(dāng)計數(shù)器1的預(yù)置值減到0時,溫度寄存器的值將加1,計數(shù)器1的預(yù)置將重新被裝入,計數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行計數(shù),如此循環(huán)直到計數(shù)器2計數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫度。 </p><p>  DS18B20性能特點(diǎn) </p><p>  DS18B20的性能特點(diǎn):①采用單總線專用技術(shù),既可通過串行口線,也可通

30、過其它I/O口線與微機(jī)接口,無須經(jīng)過其它變換電路,直接輸出被測溫度值(9位二進(jìn)制數(shù),含符號位),②測溫范圍為-55℃-+125℃,測量分辨率為0.0625℃,③內(nèi)含64位經(jīng)過激光修正的只讀存儲器ROM,④適配各種單片機(jī)或系統(tǒng)機(jī),⑤用戶可分別設(shè)定各路溫度的上、下限,⑥內(nèi)含寄生電源。</p><p>  DS18B20引腳功能</p><p>  表1:DS18B20引腳接口說明表</p

31、><p>  3.1.4 DS18B20內(nèi)部結(jié)構(gòu)功能圖</p><p>  圖1 DS18B20內(nèi)部結(jié)構(gòu)功能圖</p><p>  3.2 LCD1602液晶顯示器</p><p>  液晶顯示模塊已作為很多電子產(chǎn)品的通過器件,如在計算器、萬用表、電子表及很多家用電子產(chǎn)品中都可以看到,顯示的主要是數(shù)字、專用符號和圖形。在單片機(jī)的人機(jī)交

32、流界面中,一般的輸出方式有以下幾種:發(fā)光管、LED數(shù)碼管、液晶顯示器。發(fā)光管和LED數(shù)碼管比較常用,軟硬件都比較簡單,本次設(shè)計中重點(diǎn)介紹字符型液晶顯示器的應(yīng)用。</p><p>  LCD1602液晶顯示器工作原理</p><p>  液晶顯示原理是利用液晶的物理特性,通過電壓對其顯示區(qū)域進(jìn)行控制,有電就有顯示,這樣即可以顯示出圖形。液晶顯示器具有厚度薄、適用于大規(guī)模集成電路直接驅(qū)動、易于

33、實(shí)現(xiàn)全彩色顯示的特點(diǎn),目前已經(jīng)被廣泛應(yīng)用在便攜式電腦、數(shù)字?jǐn)z像機(jī)、PDA移動通信工具等眾多領(lǐng)域。在單片機(jī)系統(tǒng)中應(yīng)用晶液顯示器作為輸出器件有以下幾個優(yōu)點(diǎn):</p><p>  1、顯示質(zhì)量高:由于液晶顯示器每一個點(diǎn)在收到信號后就一直保持那種色彩和亮度,恒定發(fā)光,而不像陰極射線管顯示器(CRT)那樣需要不斷刷新新亮點(diǎn)。因此,液晶顯示器畫質(zhì)高且不會閃爍。</p><p>  2、數(shù)字式接口:液晶

34、顯示器都是數(shù)字式的,和單片機(jī)系統(tǒng)的接口更加簡單可靠,操作更加方便。</p><p>  3、體積小、重量輕:液晶顯示器通過顯示屏上的電極控制液晶分子狀態(tài)來達(dá)到顯示的目的,在重量上比相同顯示面積的傳統(tǒng)顯示器要輕得多。</p><p>  4、功耗低:相對而言,液晶顯示器的功耗主要消耗在其內(nèi)部的電極和驅(qū)動IC上,因而耗電量比其它顯示器要少得多。</p><p>  LC

35、D1602主要技術(shù)參數(shù):</p><p>  顯示容量:16×2個字符</p><p>  芯片工作電壓:4.5—5.5V</p><p>  工作電流:2.0mA(5.0V)</p><p>  模塊最佳工作電壓:5.0V</p><p>  字符尺寸:2.95×4.35(W×H)mm&

36、lt;/p><p>  LCD1602引腳功能說明</p><p>  LCD1602采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表2所示:</p><p>  表2:LCD1602引腳接口說明表</p><p>  3.3 DS18B20測溫度原理圖</p><p>  DS18B20在Altium

37、 Designer上測溫原理圖</p><p>  圖2 DS18B20在Altium Designer上測溫原理圖</p><p>  DS18B20在proteus上測溫原理圖</p><p>  圖3 DS18B20在proteus上測溫原理圖</p><p>  3.4、DS18B20特點(diǎn)和溫度計設(shè)計</p><

38、p>  采用將溫度和濕度分開測量,基于單片機(jī)AT89C51的溫濕度檢測和控制系統(tǒng),主要以廣泛應(yīng)用的DS18B20數(shù)字溫度傳感器和HS1101濕度傳感器作為溫度和濕度的檢測,該儀器具有測量精度高、硬件電路簡單、并能很好的進(jìn)行顯示,可測試不同環(huán)境溫濕度的特點(diǎn)。另外和控制電路相連,可以進(jìn)行加濕電路和除濕電路的控制,使溫度和濕度參數(shù)在預(yù)先設(shè)定的范圍內(nèi),不需要人的直接參與。</p><p>  由于本設(shè)計是測溫電路,

39、可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨被測溫度變化的電壓或電流采集過來,經(jīng)放大電路后,送入A/D 轉(zhuǎn)換器進(jìn)行A/D轉(zhuǎn)換,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設(shè)計需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。其基本框圖如圖3-1所示。</p><p>  第四章、系統(tǒng)硬件和軟件總體設(shè)計</p><p>  4.1、硬件電路設(shè)計框圖</p>

40、;<p>  主程序的主要功能是負(fù)責(zé)溫度的實(shí)時顯示、檢測鳴警信號和按鍵信號,主程序流程圖如下:</p><p>  圖5-1 主程序流程圖讀出溫度子程序</p><p>  讀出溫度子程序的主要功能是讀出RAM中的字節(jié),其程序流程圖如圖5-2示</p><p>  圖5-2 讀溫度流程圖</p><p><b>  溫

41、度轉(zhuǎn)換命令子程序</b></p><p>  溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12位分辨率時轉(zhuǎn)換時間約為750ms,在本程序設(shè)計中采用1s顯示程序延時法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如上圖,圖5-3所示</p><p>  圖5-3 溫度轉(zhuǎn)換流程圖</p><p><b>  計算溫度子程序</b><

42、;/p><p>  計算溫度子程序?qū)AM中讀取值進(jìn)行BCD碼的轉(zhuǎn)換運(yùn)算,其程序流程圖如圖5-4所示</p><p>  圖5-4 計算溫度流程圖</p><p><b>  顯示數(shù)據(jù)刷新子程序</b></p><p>  顯示數(shù)據(jù)刷新子程序主要是對顯示緩沖器中的顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)最高顯示位為0時將符號顯示位移入下一位

43、。程序流程圖如圖5-5所示。</p><p>  圖5-5 顯示數(shù)據(jù)刷新流程圖</p><p><b>  第五章、源程序</b></p><p>  #include<reg51.h></p><p>  #define uchar unsigned char</p><p>  #

44、define uint unsigned int</p><p>  sbit DQ=P3^7;//ds18b20與單片機(jī)連接口</p><p>  sbit RS=P2^5;</p><p>  sbit RW=P2^6;</p><p>  sbit EN=P2^7;</p><p>  sbit BEEP=P1^

45、0;</p><p>  uchar code str1[]={"Temperature: "};</p><p>  uchar data disdata[5];</p><p>  uint tvalue;//溫度值</p><p>  uchar tflag;//溫度正負(fù)標(biāo)志</p><p>

46、  /*************************lcd1602程序**************************/</p><p>  void delay1ms(uchar ms)//延時1毫秒(不夠精確的)</p><p><b>  {</b></p><p><b>  uchar i;</b><

47、;/p><p><b>  uchar j;</b></p><p>  for(i=0;i<ms;i++)</p><p>  for(j=0;j<100;j++);</p><p><b>  }</b></p><p>  void beep1()</p&

48、gt;<p><b>  {</b></p><p>  unsigned char y ;</p><p>  for (y=0 ;y<100 ;y++)</p><p><b>  {</b></p><p>  delay1ms(10) ;</p><p

49、>  BEEP=!BEEP ; //BEEP取反</p><p><b>  } </b></p><p>  BEEP=1 ; //關(guān)閉蜂鳴器</p><p>  delay1ms(1) ;</p><p><b>  }</

50、b></p><p>  void wr_com(uchar com)//寫指令//</p><p><b>  { </b></p><p>  delay1ms(1);</p><p><b>  RS=0;</b></p><p><b>  RW=0;

51、</b></p><p><b>  EN=0;</b></p><p><b>  P0=com;</b></p><p>  delay1ms(1);</p><p><b>  EN=1;</b></p><p>  delay1ms(

52、1);</p><p><b>  EN=0;</b></p><p><b>  } </b></p><p>  void wr_dat(uchar dat)//寫數(shù)據(jù)//</p><p><b>  { </b></p><p>  delay1m

53、s(1);</p><p><b>  RS=1;</b></p><p><b>  RW=0;</b></p><p><b>  EN=0;</b></p><p><b>  P0=dat;</b></p><p>  de

54、lay1ms(1);</p><p><b>  EN=1;</b></p><p>  delay1ms(1);</p><p><b>  EN=0;</b></p><p><b>  }</b></p><p>  void lcd_init()

55、//初始化設(shè)置//</p><p><b>  {</b></p><p>  delay1ms(15);</p><p>  wr_com(0x38);</p><p>  delay1ms(5);</p><p>  wr_com(0x08);</p><p>  de

56、lay1ms(5);</p><p>  wr_com(0x01);</p><p>  delay1ms(5);</p><p>  wr_com(0x06);</p><p>  delay1ms(5);</p><p>  wr_com(0x0c);</p><p>  delay1ms(

57、5);</p><p><b>  }</b></p><p>  void display(uchar *p)//顯示//</p><p><b>  {</b></p><p>  while(*p!='\0')</p><p><b>  {&

58、lt;/b></p><p>  wr_dat(*p);</p><p><b>  p++;</b></p><p>  delay1ms(1);</p><p><b>  }</b></p><p><b>  }</b></p>

59、<p>  void init_play()//初始化顯示</p><p><b>  { </b></p><p>  lcd_init();</p><p>  wr_com(0x80);</p><p>  display(str1);</p><p><b>  }

60、</b></p><p>  void delay_18B20(uint i)//延時1微秒</p><p><b>  { </b></p><p>  while(i--);</p><p><b>  }</b></p><p>  void ds1820r

61、st()/*ds1820復(fù)位*/</p><p><b>  { </b></p><p>  uchar x=0;</p><p>  DQ = 1;//DQ復(fù)位</p><p>  delay_18B20(4); //延時</p><p>  DQ = 0;//DQ拉低</p>

62、<p>  delay_18B20(100); //精確延時大于480us</p><p>  DQ = 1;//拉高</p><p>  delay_18B20(40); </p><p><b>  }</b></p><p>  /*************************************

63、***************</p><p><b>  18b20讀數(shù)據(jù)</b></p><p>  *****************************************************/ </p><p>  uchar ds1820rd()/*讀數(shù)據(jù)*/</p><p><

64、b>  { </b></p><p>  uchar i = 0;</p><p>  uchar dat = 0;</p><p>  for (i=8 ; i>0 ; i--)</p><p><b>  {</b></p><p>  DQ = 0; //給脈沖信號&

65、lt;/p><p><b>  dat>>=1; </b></p><p>  DQ = 1; //給脈沖信號</p><p><b>  if(DQ)</b></p><p>  dat|=0x80;</p><p>  delay_18B20(10);</p

66、><p><b>  }</b></p><p>  return(dat);</p><p><b>  }</b></p><p>  /**************************************************</p><p><b> 

67、 18b20寫數(shù)據(jù)</b></p><p>  **************************************************/</p><p>  void ds1820wr(uchar wdata)/*寫數(shù)據(jù)*/</p><p><b>  {</b></p><p>  uchar

68、 i = 0;</p><p>  for (i=8; i>0; i--)</p><p><b>  {</b></p><p><b>  DQ = 0;</b></p><p>  DQ = wdata&0x01;</p><p>  delay_18B2

69、0(10); </p><p><b>  DQ = 1;</b></p><p>  wdata>>=1;</p><p><b>  }</b></p><p><b>  }</b></p><p>  /***************

70、**************************************</p><p><b>  讀溫度并轉(zhuǎn)換</b></p><p>  uint read_temp()/*讀取溫度值并轉(zhuǎn)換*/</p><p><b>  {</b></p><p>  uchar a,b;</p&

71、gt;<p>  ds1820rst();</p><p>  ds1820wr(0xcc);//*跳過讀序列號*/</p><p>  ds1820wr(0x44);//*啟動溫度轉(zhuǎn)換*/</p><p>  ds1820rst();</p><p>  ds1820wr(0xcc);//*跳過讀序列號*/</p>

72、<p>  ds1820wr(0xbe);//*讀取溫度*/ </p><p>  a=ds1820rd();</p><p>  b=ds1820rd();</p><p><b>  tvalue=b;</b></p><p>  tvalue<<=8;</p><p&g

73、t;  tvalue=tvalue|a;</p><p>  if(tvalue<0x0fff)</p><p><b>  tflag=0;</b></p><p><b>  else </b></p><p><b>  {</b></p><p

74、>  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(tvalue);<

75、;/p><p><b>  }</b></p><p>  /*******************************************************************</p><p><b>  顯示溫度</b></p><p>  ********************

76、************************************************/ </p><p>  void ds1820disp()//溫度值顯示</p><p><b>  { </b></p><p>  uchar flagdat; </p><p>  disdata[0]=tvalue/

77、1000+0x30; //百位數(shù)</p><p>  disdata[1]=tvalue%1000/100+0x30;//十位數(shù) </p><p>  disdata[2]=tvalue%100/10+0x30;//個位數(shù)</p><p>  disdata[3]=tvalue%10+0x30;//小數(shù)位</p><p>  if(tflag

78、==0) </p><p>  flagdat=0x20;//正溫度不顯示符號</p><p><b>  else</b></p><p>  flagdat=0x2d;//負(fù)溫度顯示負(fù)號:-</p><p>  if(disdata[0]==0x30)</p><p><b>  {

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

80、p><b>  }</b></p><p><b>  }</b></p><p>  wr_com(0xc0); </p><p>  wr_dat(flagdat);//顯示符號位</p><p>  wr_com(0xc1);</p><p>  wr_dat(d

81、isdata[0]);//顯示百位</p><p>  wr_com(0xc2);</p><p>  wr_dat(disdata[1]);//顯示十位</p><p>  wr_com(0xc3);</p><p>  wr_dat(disdata[2]);//顯示個位 </p><p>  wr_com(0xc4

82、);</p><p>  wr_dat(0x2e);//顯示小數(shù)點(diǎn) </p><p>  wr_com(0xc5);</p><p>  wr_dat(disdata[3]);//顯示小數(shù)位</p><p>  wr_com(0xc6);</p><p>  wr_dat(0xDF);</p><p

83、>  wr_com(0xc7);</p><p>  wr_dat(0x43);</p><p>  wr_com(0xc9);</p><p>  wr_dat(0x39);</p><p>  wr_com(0xca);</p><p>  wr_dat(0x32); </p><p>

84、;  wr_com(0xcb);</p><p>  wr_dat(0x33); </p><p>  wr_com(0xcc);</p><p>  wr_dat(0x32);</p><p>  wr_com(0xcd);</p><p>  wr_dat(0x33);</p><p>&l

85、t;b>  }</b></p><p>  void warn(void)</p><p><b>  {</b></p><p>  if(disdata[1]>=0x33||disdata[1]<=0x31)</p><p><b>  {</b></p>

86、;<p><b>  beep1(); </b></p><p><b>  }</b></p><p><b>  else;</b></p><p><b>  }</b></p><p>  /********************

87、主程序***********************************/</p><p>  void main()</p><p><b>  { </b></p><p>  init_play();//初始化顯示</p><p><b>  while(1)</b></p>

88、<p><b>  {</b></p><p>  read_temp();//讀取溫度 </p><p>  ds1820disp();//顯示</p><p><b>  warn();</b></p><p><b>  }</b></p>&l

89、t;p><b>  }</b></p><p>  第六章、課程設(shè)計小結(jié)</p><p>  這次的課程設(shè)計我們做的是數(shù)字式環(huán)境溫度測試儀,這是一個比較簡單的單片機(jī)應(yīng)用設(shè)計,就是對于溫度傳感器的簡單應(yīng)用與程序設(shè)計,通過這次課程設(shè)計,我學(xué)到了很多。雖然在硬件方面,只是硬件仿真,沒有動手焊接和畫電路圖,但是卻提高了在編程方面的能力,增強(qiáng)經(jīng)驗(yàn)。也讓我明白,即使程序?qū)懙?/p>

90、沒錯誤,但是在實(shí)際應(yīng)用中還是會出現(xiàn)各種問題,這次的課程設(shè)計讓我加強(qiáng)了我在調(diào)試時的排錯能力。雖然到現(xiàn)在為止,有些東西我還是不懂和不理解,但我學(xué)會了面對問題,自己盡量解決,先分析,然后解決,一條道通不過然后嘗試著其它的方法,最終把問題克服掉。總之,只有把理論與實(shí)際操作結(jié)合才能做好事情。</p><p>  這次的課程設(shè)計給了我一個很好的基礎(chǔ)學(xué)習(xí)能力的培養(yǎng),和一些編寫程序的基本操作,雖然我是在人家原有的程序上做了修改,

91、但是還是有所學(xué)習(xí),最后感謝老師的指導(dǎo)和關(guān)注。</p><p><b>  參考文獻(xiàn)</b></p><p>  閻石.數(shù)字電子技術(shù)基礎(chǔ).高等教育出版社,1998;</p><p>  王遠(yuǎn).模擬電子技術(shù).機(jī)械工業(yè)出版社,2001;</p><p>  陳汝全.電子技術(shù)常用器件應(yīng)用手冊.機(jī)械工業(yè)出版社,2003;</

92、p><p>  畢滿清.電子技術(shù)實(shí)驗(yàn)與課程設(shè)計.機(jī)械工業(yè)出版社,2006;</p><p>  張俊謨.單片機(jī)中級教程原理與應(yīng)用.北京航空航天大學(xué)出版社,2002;</p><p>  周潤景,張麗敏.基于PROTEUS的電路及單片機(jī)系統(tǒng)設(shè)計與仿真.北京航空航天大學(xué)出版社,2006;</p><p>  李朝青.單片機(jī)原理及接口技術(shù).北京航空航天

93、大學(xué)出版社.2009;</p><p>  王忠民.微型計算機(jī)原理.西安電子科技大學(xué)出版社.2008;</p><p>  李建民.單片機(jī)在溫度控制系統(tǒng)中的應(yīng)用.江漢大學(xué)學(xué)報.1996;</p><p>  周潤景,張麗敏.Altium Designer原理圖和PCB設(shè)計.電子工業(yè)出版社.2009;</p><p>  李靜,程安宇.51單片

94、機(jī)C語言程序設(shè)計.人民郵電出版社.2010;</p><p>  薛小鈴,劉志群.賈俊榮.單片機(jī)接口模塊應(yīng)用與開發(fā)實(shí)例詳解.北京航空航天大學(xué)出版社.2010;</p><p>  劉篤仁,韓保君.傳感器原理及應(yīng)用技術(shù).機(jī)械工業(yè)出版社.2003;</p><p>  何利民.MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計系統(tǒng)配置與接口技術(shù)[M].北京:北京航空航天大學(xué)出版社.20

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論