基于溫度傳感器的數(shù)字溫度計(jì)(共19頁(yè))_第1頁(yè)
基于溫度傳感器的數(shù)字溫度計(jì)(共19頁(yè))_第2頁(yè)
基于溫度傳感器的數(shù)字溫度計(jì)(共19頁(yè))_第3頁(yè)
基于溫度傳感器的數(shù)字溫度計(jì)(共19頁(yè))_第4頁(yè)
基于溫度傳感器的數(shù)字溫度計(jì)(共19頁(yè))_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上 華東交通大學(xué) 電子測(cè)量傳感器設(shè)計(jì)報(bào)告報(bào)告題目:基于溫度傳感器的數(shù)字溫度計(jì) 作者姓名: 專業(yè)班級(jí): 學(xué) 號(hào): 指導(dǎo)老師: 時(shí) 間: 20132014學(xué)年第一學(xué)期 專心-專注-專業(yè) 摘 要溫度控制系統(tǒng)廣泛應(yīng)用于社會(huì)生活的各個(gè)領(lǐng)域 ,如家電、汽車、材料、電力電子等 ,常用的控制電路根據(jù)應(yīng)用場(chǎng)合和所要求的性能指標(biāo)有所不同 , 在工業(yè)企業(yè)中,如何提高溫度控制對(duì)象的運(yùn)行性能一直以來都是控制人員和現(xiàn)場(chǎng)技術(shù)人員努力解決的問題。這類控制對(duì)象慣性大,滯后現(xiàn)象嚴(yán)重,存在很多不確定的因素,難以建立精確的數(shù)學(xué)模型,從而導(dǎo)致控制系統(tǒng)性能不佳,甚至出現(xiàn)控制不穩(wěn)定、失控現(xiàn)象。傳統(tǒng)的繼電器調(diào)溫電路簡(jiǎn)

2、單實(shí)用 ,但由于繼電器動(dòng)作頻繁 ,可能會(huì)因觸點(diǎn)不良而影響正常工作??刂祁I(lǐng)域還大量采用傳統(tǒng)的PID控制方式,但PID控制對(duì)象的模型難以建立,并且當(dāng)擾動(dòng)因素不明確時(shí),參數(shù)調(diào)整不便仍是普遍存在的問題。采用數(shù)字溫度傳感器DS18B20,因其內(nèi)部集成了A/D轉(zhuǎn)換器,使得電路結(jié)構(gòu)更加簡(jiǎn)單,而且減少了溫度測(cè)量轉(zhuǎn)換時(shí)的精度損失,使得測(cè)量溫度更加精確。數(shù)字溫度傳感器DS18B20只用一個(gè)引腳即可與單片機(jī)進(jìn)行通信,大大減少了接線的麻煩,使得單片機(jī)更加具有擴(kuò)展性。由于DS18B20芯片的小型化,更加可以通過單跳數(shù)據(jù)線就可以和主電路連接,故可以把數(shù)字溫度傳感器DS18B20做成探頭,探入到狹小的地方,增加了實(shí)用性。更

3、能串接多個(gè)數(shù)字溫度傳感器DS18B20進(jìn)行范圍的溫度檢測(cè)。本文主要介紹了一個(gè)基于89C51單片機(jī)和DS18B20的測(cè)溫系統(tǒng),詳細(xì)描述了利用數(shù)字溫度傳感器DS18B20開發(fā)測(cè)溫系統(tǒng)的過程,重點(diǎn)對(duì)傳感器在單片機(jī)下的硬件連接,軟件編程以及各模塊系統(tǒng)流程進(jìn)行了詳盡分析,該系統(tǒng)可以方便的實(shí)現(xiàn)實(shí)現(xiàn)溫度采集和顯示,并可根據(jù)需要任意設(shè)定上下限報(bào)警溫度,適合于我們?nèi)粘I詈凸?、農(nóng)業(yè)生產(chǎn)中的溫度測(cè)量。關(guān)鍵詞:AT89C51單片機(jī)、溫度傳感器DS18B20 AbstractTemperature control system is widely applied in various fields of social

4、 life, such as household appliances, automobiles, materials, power electronics, the commonly used control circuit according to the applications and the required performance indicators is different, in the industrial enterprise, how to improve the performance of the temperature control object has bee

5、n control personnel and the on-site technical personnel to solve the problem. This kind of control object inertia big, serious lag phenomenon, there are many uncertain factors, it is difficult to establish accurate mathematical model, which can lead to poor performance control system, and even contr

6、ol instability, out of control phenomenon. The traditional relay thermal control circuit is simple and practical, but because the relay action is frequent, it may affect by bad contact of the normal work. Control field is a large number of traditional PID control method, but model of PID control obj

7、ect is difficult to establish, and when the disturbance factors is not clear, inconvenient parameter adjustment is still a common problem. With digital temperature sensor DS18B20, because of its internal integration A/D converter, make the circuit structure more simple, and reduce the precision of t

8、emperature measurement conversion loss, make more accurate temperature measurement. Digital temperature sensor DS18B20 a pin can only communicate with MCU, greatly reducing the wiring trouble, this is more extensibility. Due to the miniaturization of DS18B20 chips, more can and main circuit can jump

9、 through single cable connection, therefore, can make digital temperature sensor DS18B20 a probe, into a narrow place, increases the practicability. Better combination of multiple digital temperature sensor DS18B20 is used to detect the range of temperature.This paper mainly introduces a temperature

10、 measurement system based on 89 c51 MCU and DS18b20, describes in detail using digital temperature sensor DS18b20 temperature measurement and control system in the development process, focusing on sensor under the single chip microcomputer hardware connection, software programming and the flow diagr

11、am of each module system has carried on the detailed analysis, the system can easily realize temperature acquisition and display, and can use either set the upper and lower alarm temperature, suitable for our daily life and temperature measurement in industrial and agricultural production.Keywords S

12、TC89C52 microcontroller、DS18B20 目 錄 摘要.1一、工作原理 .4二、設(shè)計(jì)方案.4三、單片機(jī).5四、溫度傳感器 .7五、顯示模塊和報(bào)警模塊 .8 1、報(bào)警模塊8 2、溫度顯示模塊 .9六、C語言程序和注解9七、仿真圖.15 1、整體仿真圖16 2、各仿真模塊17八、總結(jié)17九、參考文獻(xiàn)18一、工作原理 采用數(shù)字溫度芯片DS18B20 測(cè)量溫度,輸出信號(hào)全數(shù)字化。便于單片機(jī)處理及控制,省去傳統(tǒng)的測(cè)溫方法的很多外圍電路。該芯片的物理化學(xué)性很穩(wěn)定,它能用做工業(yè)測(cè)溫元件,此元件線形較好。在0100 攝氏度時(shí),最大線形偏差小于1 攝氏度。DS18B20 的最大特點(diǎn)之一采用

13、了單總線的數(shù)據(jù)傳輸。該系統(tǒng)利用AT89C51芯片控制溫度傳感器DS18B20進(jìn)行實(shí)時(shí)溫度檢測(cè)并顯示,能夠?qū)崿F(xiàn)快速測(cè)量環(huán)境溫度,并可以根據(jù)需要設(shè)定上下限報(bào)警溫度。 溫度傳感器 DS18B20 從設(shè)備環(huán)境的不同位置采集溫度,單片機(jī) AT89S51 獲取采集的溫度值,經(jīng)處理后得到當(dāng)前環(huán)境中一個(gè)比較穩(wěn)定的溫度值,再根據(jù)當(dāng)前設(shè)定的溫度上下限值,通過加熱和降溫對(duì)當(dāng)前溫度進(jìn)行調(diào)整。當(dāng)采集的溫度經(jīng)處理后超過設(shè)定溫度的上限時(shí),單片機(jī)通過三極管驅(qū)動(dòng)繼電器開啟降溫設(shè)備 (壓縮制冷器) ,當(dāng)采集的溫度經(jīng)處理后低于設(shè)定溫度的下時(shí) , 單片機(jī)通過三極管驅(qū)動(dòng)繼電器開啟升溫設(shè)備 (加熱器) 。 當(dāng)由于環(huán)境溫度變化太劇烈或由于

14、加熱或降溫設(shè)備出現(xiàn)故障,或者溫度傳感頭出現(xiàn)故障導(dǎo)致在一段時(shí)間內(nèi)不能將環(huán)境溫度調(diào)整到規(guī)定的溫度限內(nèi)的時(shí)候,單片機(jī)通過三極管驅(qū)動(dòng)揚(yáng)聲器發(fā)出警笛聲。 系統(tǒng)中將通過串口通訊連接PC機(jī)存儲(chǔ)溫度變化時(shí)的歷史數(shù)據(jù),以便觀察整個(gè)溫度的控制過程及監(jiān)控溫度的變化全過程。二、設(shè)計(jì)方案采用數(shù)字溫度芯片DS18B20 測(cè)量溫度,輸出信號(hào)全數(shù)字化。便于單片機(jī)處理及控制,省去傳統(tǒng)的測(cè)溫方法的很多外圍電路。且該芯片的物理化學(xué)性很穩(wěn)定,它能用做工業(yè)測(cè)溫元件,此元件線形較好。在0100 攝氏度時(shí),最大線形偏差小于1 攝氏度。DS18B20 的最大特點(diǎn)之一采用了單總線的數(shù)據(jù)傳輸,由數(shù)字溫度計(jì)DS18B20和微控制器AT89S51構(gòu)

15、成的溫度測(cè)量裝置,它直接輸出溫度的數(shù)字信號(hào),可直接與計(jì)算機(jī)連接。這樣,測(cè)溫系統(tǒng)的結(jié)構(gòu)就比較簡(jiǎn)單,體積也不大。采用51 單片機(jī)控制,軟件編程的自由度大,可通過編程實(shí)現(xiàn)各種各樣的算術(shù)算法和邏輯控制,而且體積小,硬件實(shí)現(xiàn)簡(jiǎn)單,安裝方便。既可以單獨(dú)對(duì)多DS18B20控制工作,還可以與PC 機(jī)通信上傳數(shù)據(jù),另外AT89S51 在工業(yè)控制上也有著廣泛的應(yīng)用,編程技術(shù)及外圍功能電路的配合使用都很成熟。該系統(tǒng)利用AT89S51芯片控制溫度傳感器DS18B20進(jìn)行實(shí)時(shí)溫度檢測(cè)并顯示,能夠?qū)崿F(xiàn)快速測(cè)量環(huán)境溫度,并可以根據(jù)需要設(shè)定上下限報(bào)警溫度。該系統(tǒng)擴(kuò)展性非常強(qiáng),它可以在設(shè)計(jì)中加入時(shí)鐘芯片DS1302以獲取時(shí)間數(shù)

16、據(jù),在數(shù)據(jù)處理同時(shí)顯示時(shí)間,并可以利用AT24C16芯片作為存儲(chǔ)器件,以此來對(duì)某些時(shí)間點(diǎn)的溫度數(shù)據(jù)進(jìn)行存儲(chǔ),利用鍵盤來進(jìn)行調(diào)時(shí)和溫度查詢,獲得的數(shù)據(jù)可以通過MAX232芯片與計(jì)算機(jī)的RS232接口進(jìn)行串口通信,方便的采集和整理時(shí)間溫度數(shù)據(jù)。 本設(shè)計(jì)由DS18B20溫度傳感器芯片測(cè)量當(dāng)前的溫度并將轉(zhuǎn)換后的結(jié)果送入單片機(jī)。然后通過A89C51單片機(jī)驅(qū)動(dòng)LCD顯示測(cè)量溫度值,當(dāng)達(dá)到溫度上限或下限時(shí)報(bào)警。如附錄中本設(shè)計(jì)硬件電路圖所示,本電路主要有DS18B20溫度傳感器芯片,LCD1602液晶顯示器,AT89C51單片機(jī)及相應(yīng)外圍電路組成。3、 單片機(jī) AT89S51 是一個(gè)低功耗,高性能CMOS 8

17、位單片機(jī),片內(nèi)含8k Bytes ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,功能強(qiáng)大的微型計(jì)算機(jī)的AT89S51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。AT89S51具有如下特點(diǎn):40個(gè)引腳,4k Bytes Flash片內(nèi)程序存儲(chǔ)器,128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM)32個(gè)外部雙向輸入/輸出(I/O)口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,2個(gè)16位

18、可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器。此外,AT89S51設(shè)計(jì)和配置了振蕩頻率可為0Hz并可通過軟件設(shè)置省電模式。空閑模式下,CPU暫停工作,而RAM定時(shí)計(jì)數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。同時(shí)該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。由于系統(tǒng)控制方案簡(jiǎn)單 ,數(shù)據(jù)量也不大 ,考慮到電路的簡(jiǎn)單和成本等因素 ,因此在本設(shè)計(jì)中選用 A TMEL 公司的 A T89S51單片機(jī)作為主控芯片。主控模塊采用單片機(jī)最小系統(tǒng)是由于 A T89S51芯片內(nèi)

19、含有4 kB的 E2PROM ,無需外擴(kuò)存儲(chǔ)器 ,電路簡(jiǎn)單可靠 ,其時(shí)鐘頻率為 024 MHz ,并且價(jià)格低廉 ,批量?jī)r(jià)在 10元以內(nèi)。主要特性如下: 與MCS-51 兼容4K字節(jié)可編程閃爍存儲(chǔ)器壽命:1000寫/擦循環(huán)數(shù)據(jù)保留時(shí)間:10年全靜態(tài)工作:0Hz-24Hz三級(jí)程序存儲(chǔ)器鎖定128*8位內(nèi)部RAM32可編程I/O線兩個(gè)16位定時(shí)器/計(jì)數(shù)器5個(gè)中斷源可編程串行通道低功耗的閑置和掉電模式片內(nèi)振蕩器和時(shí)鐘電路 四、溫度采集模塊DS18B20是DALLAS公司生產(chǎn)的一線式數(shù)字溫度傳感器,它具有微型化、低功耗、高性能抗干擾能力、強(qiáng)易配處理器等優(yōu)點(diǎn),特別適合用于構(gòu)成多點(diǎn)溫度測(cè)控系統(tǒng),可直接將溫度

20、轉(zhuǎn)化成串行數(shù)字信號(hào)(按9位二進(jìn)制數(shù)字)給單片機(jī)處理,且在同一總線上可以掛接多個(gè)傳感器芯片,它具有三引腳TO-92小體積封裝形式,溫度測(cè)量范圍55125,可編程為912位A/D轉(zhuǎn)換精度,測(cè)溫分辨率可達(dá)0.0625,被測(cè)溫度用符號(hào)擴(kuò)展的16位數(shù)字量方式串行輸出,其工作電源既可在遠(yuǎn)端引入,也可采用寄生電源方式產(chǎn)生,多個(gè)DS18B20可以并聯(lián)到三根或者兩根線上,CPU只需一根端口線就能與多個(gè)DS18B20通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。從而可以看出DS18B20可以非常方便的被用于遠(yuǎn)距離多點(diǎn)溫度檢測(cè)系統(tǒng)。綜上,在本系統(tǒng)中我采用溫度芯片DS18B20測(cè)量溫度。該芯片的物理化學(xué)性

21、很穩(wěn)定,它能用做工業(yè)測(cè)溫元件,且此元件線形較好。在0100攝氏度時(shí),最大線形偏差小于1攝氏度。該芯片直接向單片機(jī)傳輸數(shù)字信號(hào),便于單片機(jī)處理及控制。溫度芯片DS18B20可以并用DS18B20 最大的特點(diǎn)是單總線數(shù)據(jù)傳輸方式,DS18B20 的數(shù)據(jù)I/O 均由同一條線來完成。DS18B20 的電源供電方式有2 種: 外部供電方式和寄生電源方式。工作于寄生電源方式時(shí), VDD 和GND 均接地, 他在需要遠(yuǎn)程溫度探測(cè)和空間受限的場(chǎng)合特別有用, 原理是當(dāng)1 W ire 總線的信號(hào)線DQ 為高電平時(shí), 竊取信號(hào)能量給DS18B20 供電, 同時(shí)一部分能量給內(nèi)部電容充電, 當(dāng)DQ為低電平時(shí)釋放能量為D

22、S18B20 供電。但寄生電源方式需要強(qiáng)上拉電路, 軟件控制變得復(fù)雜(特別是在完成溫度轉(zhuǎn)換和拷貝數(shù)據(jù)到E2PROM 時(shí)) , 同時(shí)芯片的性能也有所降低。外部電源供電方式是DS18B20最佳的工作方式,工作穩(wěn)定可靠,抗干擾能力強(qiáng),而且電路也比較簡(jiǎn)單,可以開發(fā)出穩(wěn)定可靠的多點(diǎn)溫度監(jiān)控系統(tǒng)。因此本設(shè)計(jì)采用外部供電方式。如下圖所示:DS18B204.7K DS18B20使用中的注意事項(xiàng)DS18B20 雖然具有測(cè)溫系統(tǒng)簡(jiǎn)單、測(cè)溫精度高等優(yōu)點(diǎn),但在實(shí)際應(yīng)用中也應(yīng)注意以下幾方面的問題:DS18B20 從測(cè)溫結(jié)束到將溫度值轉(zhuǎn)換成數(shù)字量需要一定的轉(zhuǎn)換時(shí)間,這是必須保證的,不然會(huì)出現(xiàn)轉(zhuǎn)換錯(cuò)誤的現(xiàn)象,使溫度輸出總是

23、顯示85。較小的硬件開銷需要相對(duì)復(fù)雜的軟件進(jìn)行補(bǔ)償,由于DS1820與微處理器間采用串行數(shù)據(jù)傳送,因此,在對(duì)DS1820進(jìn)行讀寫編程時(shí),必須嚴(yán)格的保證讀寫時(shí)序,否則將無法讀取測(cè)溫結(jié)果。當(dāng)單總線上所掛DS18B20 超過8 個(gè)時(shí),就需要解決微處理器的總線驅(qū)動(dòng)問題,這一點(diǎn)在進(jìn)行多點(diǎn)測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要加以注意。5、 顯示模塊和報(bào)警模塊1、 顯示模塊采用的是工業(yè)字符型液晶1602液晶,具有微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧的特征,常用在袖珍式儀表和低功耗應(yīng)用系統(tǒng)中。能夠同時(shí)顯示16x02即32個(gè)字符,(16列2行)可以顯示兩行,每行16個(gè)字符液晶模塊(顯示字符和數(shù)字)。它是一種專門用來顯示字母、數(shù)字

24、、符號(hào)等的型液晶模塊。它由若干個(gè)5X7或者5X11等字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符,每位之間有一個(gè)點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用。特性:3.3V或5V工作電壓,對(duì)比度可調(diào);內(nèi)含復(fù)位電路;提供各種控制命令,如:清屏、字符閃爍、光標(biāo)閃爍、顯示移位等多種功能;有80顯示數(shù)據(jù)存儲(chǔ)器;內(nèi)建有192個(gè)5X7的字型的字符發(fā)生器;8個(gè)可由用戶自定義的5X7的字符發(fā)生器CGRAM。管腳和模型如下:2、報(bào)警模塊本設(shè)計(jì)采軟件處理報(bào)警,利用有源蜂鳴器進(jìn)行報(bào)警輸出,采用直流供電。當(dāng)所測(cè)溫度超過獲低于所預(yù)設(shè)的溫度時(shí),數(shù)據(jù)口相應(yīng)拉高電平,報(bào)警輸出。(也可采用發(fā)光二級(jí)管報(bào)警電路,如過

25、需要報(bào)警,則只需將相應(yīng)位置1,當(dāng)參數(shù)判斷完畢后,再看報(bào)警模型單元ALARM 的內(nèi)容是否與預(yù)設(shè)一樣,如不一樣,則發(fā)光報(bào)警)報(bào)警電路硬件連接見圖6、 C語言程序和注解C語言程序#include<reg51.h> #include<intrins.h> unsigned char code digit10="" /定義字符數(shù)組顯示數(shù)字unsigned char code Str="DS18B20 max:33" /說明顯示的是溫度和溫度上限unsigned char code Error="Error!" /說明沒有

26、檢測(cè)到DS18B20unsigned char code Temp="T:" /說明顯示的是溫度unsigned char code Cent="C min:20" /溫度單位和溫度下限sbit feng=P17; /蜂鳴器報(bào)警變量/ 以下是對(duì)液晶模塊的操作程序sbit RS=P20; sbit RW=P21; sbit E=P22; sbit BF=P07; / 函數(shù)功能:延時(shí)1msvoid delay1ms() unsigned char i,j; for(i=0;i<10;i+) for(j=0;j<33;j+); / 函數(shù)功能:延時(shí)若

27、干毫秒 void delaynms(unsigned char n) unsigned char i;for(i=0;i<n;i+) delay1ms(); / 函數(shù)功能:判斷液晶模塊的忙碌狀態(tài)bit BusyTest(void) bit result; RS=0; RW=1; E=1; _nop_(); _nop_(); _nop_(); _nop_(); result=BF; /將忙碌標(biāo)志電平賦給result E=0; return result; / 函數(shù)功能:將模式設(shè)置指令或顯示地址寫入液晶模塊void WriteInstruction (unsigned char dictat

28、e) while(BusyTest()=1); /如果忙就等待 RS=0; RW=0; E=0; _nop_(); _nop_(); P0=dictate; _nop_(); _nop_(); _nop_(); _nop_(); E=1; _nop_(); _nop_(); _nop_(); _nop_(); E=0; / 函數(shù)功能:指定字符顯示的實(shí)際地址 void WriteAddress(unsigned char x) WriteInstruction(x|0x80); /顯示位置的確定方法規(guī)定為"80H+地址碼x" / 函數(shù)功能:將數(shù)據(jù)(字符的標(biāo)準(zhǔn)ASCII碼)寫入

29、液晶模塊 void WriteData(unsigned char y) while(BusyTest()=1); RS=1; RW=0; E=0; P0=y; _nop_(); _nop_(); _nop_(); _nop_(); E=1; _nop_(); _nop_(); _nop_(); _nop_(); E=0; / 函數(shù)功能:對(duì)LCD的顯示模式進(jìn)行初始化設(shè)置void LcdInitiate(void) delaynms(15); /延時(shí)15ms,首次寫指令時(shí)應(yīng)給LCD一段較長(zhǎng)的反應(yīng)時(shí)間 WriteInstruction(0x38); /顯示模式設(shè)置:16×2顯示,5

30、15;7點(diǎn)陣,8位數(shù)據(jù)接口delaynms(5); WriteInstruction(0x38);delaynms(5); WriteInstruction(0x38); /連續(xù)三次,確保初始化成功delaynms(5); WriteInstruction(0x0c); /顯示模式設(shè)置:顯示開,無光標(biāo),光標(biāo)不閃爍delaynms(5); WriteInstruction(0x06); /顯示模式設(shè)置:光標(biāo)右移,字符不移delaynms(5); WriteInstruction(0x01); /清屏幕指令,將以前的顯示內(nèi)容清除delaynms(5); sbit DQ=P33;unsigned c

31、har time; /設(shè)置全局變量,專門用于嚴(yán)格延時(shí)/ 函數(shù)功能:將DS18B20傳感器初始化,讀取應(yīng)答信號(hào)bit Init_DS18B20(void) bit flag; /儲(chǔ)存DS18B20是否存在的標(biāo)志,flag=0,表示存在;flag=1,表示不存在 DQ = 1; for(time=0;time<2;time+) ; DQ = 0; for(time=0;time<200;time+) ; DQ = 1; for(time=0;time<10;time+); flag=DQ; for(time=0;time<200;time+) ; return (flag)

32、; /返回檢測(cè)成功標(biāo)志/ 函數(shù)功能:從DS18B20讀取一個(gè)字節(jié)數(shù)據(jù)unsigned char ReadOneChar(void) unsigned char i=0;unsigned char dat; /儲(chǔ)存讀出的一個(gè)字節(jié)數(shù)據(jù)for (i=0;i<8;i+) DQ =1; _nop_(); DQ = 0; dat>>=1; _nop_(); DQ = 1; for(time=0;time<2;time+); if(DQ=1) dat|=0x80; /如果讀到的數(shù)據(jù)是1,則將1存入dat else dat|=0x00; /如果讀到的數(shù)據(jù)是0,則將0存入dat for(

33、time=0;time<8;time+); /延時(shí)3us,兩個(gè)讀時(shí)序之間必須有大于1us的恢復(fù)期 return(dat); /返回讀出的十進(jìn)制數(shù)據(jù)/ 函數(shù)功能:向DS18B20寫入一個(gè)字節(jié)數(shù)據(jù)WriteOneChar(unsigned char dat)unsigned char i=0;for (i=0; i<8; i+) DQ =1; _nop_(); DQ=0; DQ=dat&0x01; /利用與運(yùn)算取出要寫的某位二進(jìn)制數(shù)據(jù), /并將其送到數(shù)據(jù)線上等待DS18B20采樣 for(time=0;time<10;time+);/延時(shí)約30us,DS18B20在拉低后

34、的約1560us期間從數(shù)據(jù)線上采樣 DQ=1; for(time=0;time<1;time+);/延時(shí)3us,兩個(gè)寫時(shí)序間至少需要1us的恢復(fù)期 dat>>=1; /將dat中的各二進(jìn)制位數(shù)據(jù)右移1位 for(time=0;time<4;time+); / 函數(shù)功能:顯示沒有檢測(cè)到DS18B20void display_error(void) unsigned char i; WriteAddress(0x00); /寫顯示地址,將在第1行第1列開始顯示 i = 0; while(Errori != '0') /只要沒有寫到結(jié)束標(biāo)志,就繼續(xù)寫Write

35、Data(Errori); i+; delaynms(100); while(1) ; /進(jìn)入死循環(huán),等待查明原因 / 函數(shù)功能:顯示說明信息void display_explain(void) unsigned char i; WriteAddress(0x00); /寫顯示地址,將在第1行第1列開始顯示 i = 0; while(Stri != '0') WriteData(Stri);i+; delaynms(100); / 函數(shù)功能:顯示溫度符號(hào)void display_symbol(void) unsigned char i; WriteAddress(0x40);

36、/寫顯示地址,將在第2行第1列開始顯示 i = 0; while(Tempi != '0') /只要沒有寫到結(jié)束標(biāo)志,就繼續(xù)寫WriteData(Tempi); i+; delaynms(50); /函數(shù)功能:顯示溫度的小數(shù)點(diǎn)void display_dot(void) WriteAddress(0x45); /寫顯示地址,將在第2行第6列開始顯示 WriteData('.'); /將小數(shù)點(diǎn)的字符常量寫入LCD delaynms(50); /函數(shù)功能:顯示溫度的單位(Cent)void display_cent(void) unsigned char i; Wr

37、iteAddress(0x48); /寫顯示地址,將在第2行第8列開始顯示 i = 0; while(Centi != '0') WriteData(Centi); i+; delaynms(50); / 函數(shù)功能:顯示溫度的整數(shù)部分void display_temp1(unsigned char x) unsigned char j,k,l; /j,k,l分別儲(chǔ)存溫度的百位、十位和個(gè)位j=x/100; /取百位k=(x%100)/10; /取十位l=x%10; /取個(gè)位 WriteAddress(0x42); /寫顯示地址,將在第2行第3列開始顯示W(wǎng)riteData(digi

38、tj); /將百位數(shù)字的字符常量寫入LCDWriteData(digitk); /將十位數(shù)字的字符常量寫入LCDWriteData(digitl); /將個(gè)位數(shù)字的字符常量寫入LCDdelaynms(50); /函數(shù)功能:顯示溫度的小數(shù)數(shù)部分 void display_temp2(unsigned char x) WriteAddress(0x46); /寫顯示地址,將在第2行第7列開始顯示W(wǎng)riteData(digitx); /將小數(shù)部分的第一位數(shù)字字符常量寫入LCDdelaynms(50); /函數(shù)功能:做好讀溫度的準(zhǔn)備void ReadyReadTemp(void) Init_DS18B

39、20(); WriteOneChar(0xCC); / 跳過讀序號(hào)列號(hào)的操作WriteOneChar(0x44); / 啟動(dòng)溫度轉(zhuǎn)換 for(time=0;time<100;time+) ;Init_DS18B20(); WriteOneChar(0xCC); /跳過讀序號(hào)列號(hào)的操作WriteOneChar(0xBE); /讀取溫度寄存器,前兩個(gè)分別是溫度的低位和高位/函數(shù)功能:主函數(shù) void main(void) unsigned char TL; /儲(chǔ)存暫存器的溫度低位 unsigned char TH; /儲(chǔ)存暫存器的溫度高位 unsigned char TN; /儲(chǔ)存溫度的整數(shù)部分 unsigned char TD; /儲(chǔ)存溫度的小數(shù)部分 LcdInitiate(); /將液晶初始化 delaynms(5); feng=1; if(Init_DS18B20()=1) display_error(); display_ex

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論