DS18B20的數(shù)字溫度計_第1頁
DS18B20的數(shù)字溫度計_第2頁
DS18B20的數(shù)字溫度計_第3頁
DS18B20的數(shù)字溫度計_第4頁
DS18B20的數(shù)字溫度計_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、編號: 實訓(xùn)(論文)說明書題 目: 18B20溫度傳感器 院 (系): 應(yīng)用科技學(xué)院 專 業(yè): 電子信息工程 學(xué)生姓名: 楊國毅 學(xué) 號: 0901130134 指導(dǎo)教師: 孫安青 王守華 2011年 07月07日24摘 要隨著時代的進步和發(fā)展,單片機技術(shù)已經(jīng)普及到我們生活、工作、科研、各個領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù), 本文主要介紹了一個基于89S51單片機的測溫系統(tǒng),詳細描述了利用數(shù)字溫度傳感器DS18B20開發(fā)測溫系統(tǒng)的過程,重點對傳感器在單片機下的硬件連接,軟件編程以及各模塊系統(tǒng)流程進行了詳盡分析,對各部分的電路也一一進行了介紹,該系統(tǒng)可以方便的實現(xiàn)溫度采集和顯示,并可根據(jù)需要任意

2、設(shè)定上下限報警溫度,它使用起來相當(dāng)方便,具有精度高、量程寬、靈敏度高、體積小、功耗低等優(yōu)點,適合于我們?nèi)粘I詈凸ぁ⑥r(nóng)業(yè)生產(chǎn)中的溫度測量,也可以當(dāng)作溫度處理模塊嵌入其它系統(tǒng)中,作為其他主系統(tǒng)的輔助擴展。DS18B20與AT89S52結(jié)合實現(xiàn)最簡溫度檢測系統(tǒng),該系統(tǒng)結(jié)構(gòu)簡單,抗干擾能力強,適合于惡劣環(huán)境下進行現(xiàn)場溫度測量,有廣泛的應(yīng)用前景。關(guān)鍵詞:單片機;溫度檢測;AT89S52;DS18B20;Abstractwith the progress of The Times and development, microcontroller technology has spread to our

3、life, work, scientific research and each field, and has already become a mature technology, this paper mainly introduces a S51 based on the 89 chip temperature measurement system, detailed descriptions of the use of digital temperature sensor DS18B20 development process of temperature measuring syst

4、em, focus on the sensor chip in the hardware connection, software programming and the module system flow for a detailed analysis of the various parts of the circuit is introduced one, the system easy to realize the temperature gathering and display, and but according to need any set upper temperatur

5、e alarm, it USES up quite convenient, high precision and wide range, high sensitivity, small volume, low power consumption advantages, suitable for our daily life and work, agriculture of temperature measurement, also can be used as temperature processing module embedded in the system, as other othe

6、r main auxiliary system expansion. DS18B20 and implement the best combination AT89S52 temperature testing system, the Jane system structure is simple, strong anti-jamming capability, suitable for harsh environment on the site, temperature measurement has wide application.Keywords: SCM52; Temperature

7、 detection; AT89S52 devices; DS18B20;目 錄1. 引言 12.設(shè)計要求22. 方案設(shè)計及論證221方案一:熱敏電阻 222方案二:采用數(shù)字溫度芯片DS18B20 33. 各電路設(shè)計及論證 431主控制器 53.1.1方案一:采用PC機實現(xiàn) 63.1.2方案二:使用單片機 732顯示電路 83.2.1方案一:采用七段LED數(shù)碼顯示 93.2.2 方案二:采用SMCI602A液晶顯示模塊芯片 103. 3溫度傳感器的選擇 11 3.3.1 方案一:采用熱敏電阻 113.3.2 方案二:采用數(shù)字溫度芯片DS18B20 114. 軟件設(shè)計1241程序流程 124.1

8、.1系統(tǒng)主程序流程圖 124.1.2各子程序流程圖 125軟硬件系統(tǒng)的調(diào)試 126附錄:電路原理圖 137參考文獻 138. 附錄141. 引言隨著科技的不斷發(fā)展,現(xiàn)代社會對各種信息參數(shù)的準(zhǔn)確度和精確度的要求都有了幾何級的增長,而如何準(zhǔn)確而又迅速的獲得這些參數(shù)就需要受制于現(xiàn)代信息基礎(chǔ)的發(fā)展水平。在三大信息信息采集(即傳感器技術(shù))、信息傳輸(通信技術(shù))和信息處理(計算機技術(shù))中,傳感器屬于信息技術(shù)的前沿尖端產(chǎn)品,尤其是溫度傳感器技術(shù),在我國各領(lǐng)域已經(jīng)引用的非常廣泛,可以說是滲透到社會的每一個領(lǐng)域,人民的生活與環(huán)境的溫度息息相關(guān),在工業(yè)生產(chǎn)過程中需要實時測量溫度,在農(nóng)業(yè)生產(chǎn)中也離不開溫度的測量,因

9、此研究溫度的測量方法和裝置具有重要的意義。測量溫度的關(guān)鍵是溫度傳感器,溫度傳感器的發(fā)展經(jīng)歷了三個發(fā)展階段:傳統(tǒng)的分立式溫度傳感器模擬集成溫度傳感器智能集成溫度傳感器。目前的智能溫度傳感器(亦稱數(shù)字溫度傳感器)是在20世紀90年代中期問世的,它是微電子技術(shù)、計算機技術(shù)和自動測試技術(shù)(ATE)的結(jié)晶,特點是能輸出溫度數(shù)據(jù)及相關(guān)的溫度控制量,適配各種微控制器(MCU)。社會的發(fā)展使人們對傳感器的要求也越來越高,現(xiàn)在的溫度傳感器正在基于單片機的基礎(chǔ)上從模擬式向數(shù)字式,從集成化向智能化、網(wǎng)絡(luò)化的方向飛速發(fā)展,并朝著高精度、多功能、總線標(biāo)準(zhǔn)化、高可靠性及安全性、開發(fā)虛擬傳感器和網(wǎng)絡(luò)傳感器、研制單片測溫系統(tǒng)

10、等高科技的方向迅速發(fā)展,本文將介紹智能集成溫度傳感器DS18B20的結(jié)構(gòu)特征及控制方法,并對以此傳感器,89S51單片機為控制器構(gòu)成的數(shù)字溫度測量裝置的工作原理及程序設(shè)計作了詳細的介紹。與傳統(tǒng)的溫度計相比,其具有讀數(shù)方便,測溫范圍廣,測溫準(zhǔn)確,輸出溫度采用數(shù)字顯示,主要用于對測溫要求比較準(zhǔn)確的場所,或科研實驗室使用。該設(shè)計控制器使用ATMEL公司的AT89S51單片機,測溫傳感器使用DALLAS公司DS18B20,用液晶來實現(xiàn)溫度顯示。2. 方案設(shè)計及論證2.1設(shè)計要求1. 溫度范圍10C到50C,溫度精確到0.1C。2. 時溫度測量的功能并且可以顯示出來。3. 檢查18B20是否接上了,若沒

11、有會提示錯誤。2.2總體方案設(shè)計經(jīng)分析,將系統(tǒng)分為兩個部分,一個是由單片機和1602液晶組成的主控與顯示部分。如圖所示DS18B20溫度檢測電路將檢測到的數(shù)據(jù)將送到單片機,單片機對接收到的數(shù)據(jù)進行處理并送到1602顯示,5V穩(wěn)壓電源給各個部分供電。該系統(tǒng)實現(xiàn)的方法有很多種,下面將列出兩種在日常生活中和工農(nóng)業(yè)生產(chǎn)中經(jīng)常用到的實現(xiàn)方案。系統(tǒng)框圖如圖1所示顯示電路單片機電源測溫電路圖1 DS18B20溫度測溫系統(tǒng)框圖2.3 溫度檢測模塊的選擇與論證方案一:使用熱敏電阻。由于本設(shè)計是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨被測溫度變化的電壓或電流采集過來,進行A/D轉(zhuǎn)換后,就可以用單

12、片機進行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設(shè)計需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。方案二:采用數(shù)字溫度芯片DS18B20。采用數(shù)字溫度芯片DS18B20 測量溫度,輸出信號全數(shù)字化。便于單片機處理及控制,省去傳統(tǒng)的測溫方法的很多外圍電路。在0100 攝氏度時,最大線形偏差小于1 攝氏度。DS18B20 的最大特點之一采用了單總線的數(shù)據(jù)傳輸,由數(shù)字溫度計DS18B20和微控制器AT89S52構(gòu)成的溫度測量裝置,它直接輸出溫度的數(shù)字信號,可直接與計算機連接。控制工作,還可以與PC 機通信上傳數(shù)據(jù),另外AT89S52 在工業(yè)控制上也有著廣泛的應(yīng)用,編程技術(shù)及外圍功能電路的

13、配合使用都很成熟。以上兩種方案,容易看出方案一的測溫裝置可測溫度范圍寬、體積小,但是線性誤差較大。方案二的測溫裝置電路簡單、精確度較高、實現(xiàn)方便、軟件設(shè)計也比較簡單,故本次設(shè)計采用了方案二。2.4單片機控制模塊的選擇論證方案一:采用XC9000系列的FPGA。該類器件具有并行處理能力,能快速的響應(yīng)外部的各種數(shù)字信號,但在數(shù)據(jù)處理方面過于復(fù)雜,而且芯片價格較昂貴。 方案二:采用單片機AT89S52作為控制核心,單片機數(shù)學(xué)運算功能較強。在程序相互調(diào)用方面,處理方便靈活,性能穩(wěn)定,適合實際應(yīng)用。且單片機技術(shù)發(fā)展較為成熟,價格便宜?;谝陨戏治?,采用單片機控制可更為簡便靈活地實現(xiàn)系統(tǒng)功能,故擬采用方案

14、二。2.5顯示模塊的選擇與論證方案一:采用12864液晶模塊顯示測得的數(shù)據(jù),可顯示較多組的數(shù)據(jù),字體較大,可清晰讀數(shù),但12864液晶模塊價格昂貴,接線復(fù)雜,故不采用。方案二:采用1602液晶模塊顯示所測數(shù)據(jù),1602液晶接線簡單方便,同時也能滿足顯示需要,價格遠低于12864液晶。因此,本方案為首選方案。綜上所述,顯示模塊選擇方案二。2.6 整體系統(tǒng)組成本系統(tǒng)硬件部分由單片機主控電路、DS18B20溫度檢測模塊、1602液晶顯示模塊43部分組成,其中單片機主控電路有外接晶振,按鍵復(fù)位電路,電源供電電路,P0上拉電阻等部分組成。軟件部分詳細見下文。單片機全系統(tǒng)如下圖2所示。圖1 DS18B20

15、溫度測溫系統(tǒng)原理圖3系統(tǒng)電路設(shè)計3.1單片機主控電路設(shè)計單片機主控模塊包括了振落電路、復(fù)位電路,同時接入了各個模塊的接口,保證了整個系統(tǒng)的靈活性。單片機是整個系統(tǒng)的控制中樞,它指揮外圍器件協(xié)調(diào)工作,從而完成特定的功能。硬件實現(xiàn)上采用模塊化設(shè)計,每一模塊只實現(xiàn)一個特定功能,最后再將各個模塊搭接在一起。這種設(shè)計方法可以降低系統(tǒng)設(shè)計的復(fù)雜性??刂齐娐返暮诵钠骷怯擅绹鳤tmel公司生產(chǎn)的AT89S52單片機,屬于MCS-51系列。AT89S52是一種低功耗、高性能的CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲器,采用的工藝是Atmel公司的高密度非易失存儲器技術(shù);片上Flash允許程序存

16、儲器在系統(tǒng)可編程,亦適于常規(guī)編程器;在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案;價格低廉、性能可靠、抗干擾能力強。因此廣泛應(yīng)用于工業(yè)控制和嵌入式系統(tǒng)中。 單片機主控電路原理圖如下所示:圖4.1 單片機主控電路原理圖3.2 DS18B20溫度檢測模塊電路設(shè)計DS18B20的溫度檢測與數(shù)字數(shù)據(jù)輸出全集成于一個芯片之上,從而抗干擾力更強。其一個工作周期可分為兩個部分,即溫度檢測和數(shù)據(jù)處理。在講解其工作流程之前我們有必要了解18B20的內(nèi)部存儲器資源。18B20共有三種形態(tài)的存儲器資源,它們分別是: ROM 只讀存儲

17、器,用于存放DS18B20ID編碼,其前8位是單線系列編碼(DS18B20的編碼是19H),后面48位是芯片唯一的序列號,最后8位是以上56的位的CRC碼(冗余校驗)。數(shù)據(jù)在出產(chǎn)時設(shè)置不由用戶更改。DS18B20共64位ROM。 RAM 數(shù)據(jù)暫存器,用于內(nèi)部計算和數(shù)據(jù)存取,數(shù)據(jù)在掉電后丟失,DS18B20共9個字節(jié)RAM,每個字節(jié)為8位。第1、2個字節(jié)是溫度轉(zhuǎn)換后的數(shù)據(jù)值信息,第3、4個字節(jié)是用戶EEPROM(常用于溫度報警值儲存)的鏡像。在上電復(fù)位時其值將被刷新。第5個字節(jié)則是用戶第3個EEPROM的鏡像。第6、7、8個字節(jié)為計數(shù)寄存器,是為了讓用戶得到更高的溫度分辨率而設(shè)計的,同樣也是內(nèi)部

18、溫度轉(zhuǎn)換、計算的暫存單元。第9個字節(jié)為前8個字節(jié)的CRC碼。EEPROM 非易失性記憶體,用于存放長期需要保存的數(shù)據(jù),上下限溫度報警值和校驗數(shù)據(jù),DS18B20共3位EEPROM,并在RAM都存在鏡像,以方便用戶操作。DS18B20的2管腳要接上拉電阻,但主控板上有上拉電阻,所以不用了。DS18B20溫度檢測模塊電路原理圖如下所示: 圖3.2 DS18B20溫度檢測模塊電路原理圖3.3 1602液晶顯示模塊電路設(shè)計 1602液晶顯示模塊電路原理圖如下所示:圖3.3 1602液晶顯示模塊電路原理圖在日常生活中,我們對液晶顯示器并不陌生。液晶顯示模塊已作為很多電子產(chǎn)品的通過器件,如在計算器、萬用表

19、、電子表及很多家用電子產(chǎn)品中都可以看到,顯示的主要是數(shù)字、專用符號和圖形。在單片機的人機交流界面中,一般的輸出方式有以下幾種:發(fā)光管、LED數(shù)碼管、液晶顯示器。 在單片機系統(tǒng)中應(yīng)用晶液顯示器作為輸出器件有以下幾個優(yōu)點:顯示質(zhì)量高、數(shù)字式接口 、體積小、重量輕 、功耗低 、 1602LCD 主要技術(shù)參數(shù): 顯示容量:162 個字符 芯片工作電壓:4.55.5V 工作電流:2.0mA(5.0V) 模塊最佳工作電壓:5.0V 字符尺寸:2.954.35(WH)mm 引腳功能說明:1602LCD 采用標(biāo)準(zhǔn)的 14腳(無背光)或 16腳(帶背光)接口, 第 1 腳:VSS 為地電源。 第 2 腳:VDD

20、接 5V正電源。 第 3 腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個 10K 的電位器調(diào)整對比度。 第 4 腳:RS 為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。 第 5 腳:R/W 為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當(dāng) RS和 R/W共同為低電平時可以寫入指令或者顯示地址,當(dāng) RS 為低電平 R/W 為高電平時可以讀忙信號,當(dāng) RS 為高電平 R/W為低電平時可以寫入數(shù)據(jù)。 第 6 腳:E端為使能端,當(dāng) E 端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。 第 714腳:D0D7為

21、 8 位雙向數(shù)據(jù)線。 第 15腳:背光源正極。 第 16腳:背光源負極。4 軟件設(shè)計4.1軟件設(shè)計流程圖 主程序流程圖 液晶顯示程序流程開始開始檢查18B20插上了沒有是否忙碌 是是顯示溫度 否寫指令 否寫數(shù)據(jù) 設(shè)置顯示位顯示初始化圖4。1.1 主程序流程圖 圖4.1.2液晶顯示程序流程溫度檢測程序流程開始 初始化初始化是否成功否 是向18B20寫字節(jié)讀取溫度顯示溫度圖4.1.3溫度檢測程序流程 4.2 軟件設(shè)計分析如果接通電源就調(diào)用溫度檢測程序,檢查18B20是否接上了,如果接上了,單片機對18B20進行初始化,成功則讀字節(jié),再寫入字節(jié),讀取溫度數(shù)據(jù)送到1602顯示。如果沒有接上,就會再次檢

22、查,當(dāng)接上18B20并且按復(fù)位鍵后,才會好。5. 系統(tǒng)測試5.1主要指標(biāo)測試 本系統(tǒng)主要指標(biāo)就在于所測得的溫濕度的數(shù)據(jù)是否達到了題目要求,本系統(tǒng)測量范圍為-10-50,溫度測量誤差為0.1,在2313測試溫度為32.1度。5.2測試結(jié)果分析 通過測試,與標(biāo)準(zhǔn)儀器所測得的溫度相比較,可得系統(tǒng)的誤差為信號傳輸過程中可能存在誤碼,及誤判。6 結(jié)論本溫濕度計的制作基本上達到了題目要求的技術(shù)指標(biāo),溫度測量范圍為-10-50,溫度測量誤差為0.1。課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的日新日異

23、,單片機已經(jīng)成為當(dāng)今計算機應(yīng)用中空前活躍的領(lǐng)域,在生活中可以說得是無處不在。因此作為二十一世紀的大學(xué)來說掌握單片機的開發(fā)技術(shù)是十分重要的。 回顧起此次單片機課程設(shè)計,我仍感慨頗多,的確,從選題到定稿,從理論到實踐,在接近一星期的日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困

24、難重重,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比如說不懂一些元器件的使用方法,對單片機匯編語言掌握得不好通過這次課程設(shè)計之后,一定把以前所學(xué)過的知識重新溫故。 謝 辭感謝老師對我們的指導(dǎo)。完成了這個實訓(xùn)任務(wù),雖然結(jié)果差強人意,但是還是有進步的,有收獲的。希望以后在學(xué)習(xí)生活中能繼續(xù)好好學(xué)習(xí)。7. 參考文獻 康華光等.電子技術(shù)基礎(chǔ)M. 北京:高等教育出版社,2007 彭介華.電子技術(shù)課程設(shè)計指導(dǎo)M. 北京:高等教育出版社,2010 郭天祥.新概念51單片機C語言教程M.北京:入門、提高、開發(fā)、拓展全攻略M.電子工業(yè)出版

25、社,2009. 黃智偉全國大學(xué)生電子設(shè)計競賽制作實訓(xùn)M北京:北京航空航天大學(xué)出版社,2007 黃智偉全國大學(xué)生電子設(shè)計競賽系統(tǒng)設(shè)計M北京:北京航空航天大學(xué)出版社,2006 黃智偉全國大學(xué)生電子設(shè)計競賽技能訓(xùn)練M北京:北京航空航天大學(xué)出版社,2007 黃智偉全國大學(xué)生電子設(shè)計競賽電路設(shè)計M北京:北京航空航天大學(xué)出版社,2006 黃智偉全國大學(xué)生電子設(shè)計競賽 常用電路模塊制作M北京:北京航空航天大學(xué)出版社,2010 黃智偉等.基于NI multisim的電子電路計算機仿真設(shè)計與分析M北京:電子工業(yè)出版社,2007 黃智偉.印制電路板(PCB)設(shè)計技術(shù)與實踐M北京:電子工業(yè)出版社,2009 高吉祥等

26、.電子技術(shù)基礎(chǔ)實驗與課程設(shè)計M北京:電子工業(yè)出版社,2002 吳運昌.模擬集成電路原理與應(yīng)用M廣州:華南理工大學(xué)出版社,2001 譚博學(xué)等. 集成電路原理及應(yīng)用M北京:電子工業(yè)出版社,2003 魏立軍.CMOS 4000系列60種常用集成電路的應(yīng)用M北京:人民郵電出版社,1993 楊寶清.實用電路手冊M北京:機械工業(yè)出版社.2002 陳有卿.報警集成電路和報警器制作實例M人民郵電出版,1996 附錄:程序:/DS18B20溫度檢測及其液晶顯示#include /包含單片機寄存器的頭文件#include /包含_nop_()函數(shù)定義的頭文件unsigned char code digit10=0

27、123456789; /定義字符數(shù)組顯示數(shù)字unsigned char code Str=Test by DS18B20; /說明顯示的是溫度unsigned char code Error=Error!Check!; /說明沒有檢測到DS18B20unsigned char code Temp=Temp:; /說明顯示的是溫度unsigned char code Cent=Cent; /溫度單位/*以下是對液晶模塊的操作程序*/sbit RS=P20; /寄存器選擇位,將RS位定義為P2.0引腳sbit RW=P21; /讀寫選擇位,將RW位定義為P2.1引腳sbit E=P22; /使能信

28、號位,將E位定義為P2.2引腳sbit BF=P07; /忙碌標(biāo)志位,將BF位定義為P0.7引腳/*函數(shù)功能:延時1ms(3j+2)*i=(333+2)10=1010(微秒),可以認為是1毫秒*/void delay1ms() unsigned char i,j; for(i=0;i4;i+) for(j=0;j33;j+) ; /*函數(shù)功能:延時若干毫秒入口參數(shù):n*/ void delaynms(unsigned char n) unsigned char i;for(i=0;in;i+) delay1ms(); /*函數(shù)功能:判斷液晶模塊的忙碌狀態(tài)返回值:result。result=1,

29、忙碌;result=0,不忙*/bit BusyTest(void) bit result;RS=0; /根據(jù)規(guī)定,RS為低電平,RW為高電平時,可以讀狀態(tài) RW=1; E=1; /E=1,才允許讀寫 _nop_(); /空操作 _nop_(); _nop_(); _nop_(); /空操作四個機器周期,給硬件反應(yīng)時間 result=BF; /將忙碌標(biāo)志電平賦給result E=0; /將E恢復(fù)低電平 return result; /*函數(shù)功能:將模式設(shè)置指令或顯示地址寫入液晶模塊入口參數(shù):dictate*/void WriteInstruction (unsigned char dictat

30、e) while(BusyTest()=1); /如果忙就等待 RS=0; /根據(jù)規(guī)定,RS和R/W同時為低電平時,可以寫入指令 RW=0; E=0; /E置低電平(根據(jù)表8-6,寫指令時,E為高脈沖, / 就是讓E從0到1發(fā)生正跳變,所以應(yīng)先置0 _nop_(); _nop_(); /空操作兩個機器周期,給硬件反應(yīng)時間 P0=dictate; /將數(shù)據(jù)送入P0口,即寫入指令或地址 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四個機器周期,給硬件反應(yīng)時間 E=1; /E置高電平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作

31、四個機器周期,給硬件反應(yīng)時間 E=0; /當(dāng)E由高電平跳變成低電平時,液晶模塊開始執(zhí)行命令 /*函數(shù)功能:指定字符顯示的實際地址入口參數(shù):x*/ void WriteAddress(unsigned char x) WriteInstruction(x|0x80); /顯示位置的確定方法規(guī)定為80H+地址碼x /*函數(shù)功能:將數(shù)據(jù)(字符的標(biāo)準(zhǔn)ASCII碼)寫入液晶模塊入口參數(shù):y(為字符常量)*/ void WriteData(unsigned char y) while(BusyTest()=1); RS=1; /RS為高電平,RW為低電平時,可以寫入數(shù)據(jù) RW=0; E=0; /E置低電平

32、(根據(jù)表8-6,寫指令時,E為高脈沖, / 就是讓E從0到1發(fā)生正跳變,所以應(yīng)先置0 P0=y; /將數(shù)據(jù)送入P0口,即將數(shù)據(jù)寫入液晶模塊 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四個機器周期,給硬件反應(yīng)時間 E=1; /E置高電平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四個機器周期,給硬件反應(yīng)時間 E=0; /當(dāng)E由高電平跳變成低電平時,液晶模塊開始執(zhí)行命令 /*函數(shù)功能:對LCD的顯示模式進行初始化設(shè)置*/void LcdInitiate(void) delaynms(15); /延時15ms,首次寫指令時應(yīng)

33、給LCD一段較長的反應(yīng)時間 WriteInstruction(0x38); /顯示模式設(shè)置:162顯示,57點陣,8位數(shù)據(jù)接口delaynms(5); /延時5ms,給硬件一點反應(yīng)時間 WriteInstruction(0x38);delaynms(5); /延時5ms,給硬件一點反應(yīng)時間WriteInstruction(0x38); /連續(xù)三次,確保初始化成功delaynms(5); /延時5ms,給硬件一點反應(yīng)時間WriteInstruction(0x0c); /顯示模式設(shè)置:顯示開,無光標(biāo),光標(biāo)不閃爍delaynms(5); /延時5ms,給硬件一點反應(yīng)時間WriteInstructio

34、n(0x06); /顯示模式設(shè)置:光標(biāo)右移,字符不移delaynms(5); /延時5ms,給硬件一點反應(yīng)時間WriteInstruction(0x01); /清屏幕指令,將以前的顯示內(nèi)容清除delaynms(5); /延時5ms,給硬件一點反應(yīng)時間 /*以下是DS18B20的操作程序 */ sbit DQ=P33;unsigned char time; /設(shè)置全局變量,專門用于嚴格延時/*函數(shù)功能:將DS18B20傳感器初始化,讀取應(yīng)答信號出口參數(shù):flag */bit Init_DS18B20(void) bit flag; /儲存DS18B20是否存在的標(biāo)志,flag=0,表示存在;fl

35、ag=1,表示不存在 DQ = 1; /先將數(shù)據(jù)線拉高 for(time=0;time2;time+) /略微延時約6微秒 ; DQ = 0; /再將數(shù)據(jù)線從高拉低,要求保持480960us for(time=0;time200;time+) /略微延時約600微秒 ; /以向DS18B20發(fā)出一持續(xù)480960us的低電平復(fù)位脈沖 DQ = 1; /釋放數(shù)據(jù)線(將數(shù)據(jù)線拉高) for(time=0;time10;time+) ; /延時約30us(釋放總線后需等待1560us讓DS18B20輸出存在脈沖) flag=DQ; /讓單片機檢測是否輸出了存在脈沖(DQ=0表示存在) for(tim

36、e=0;time200;time+) /延時足夠長時間,等待存在脈沖輸出完畢 ; return (flag); /返回檢測成功標(biāo)志/*函數(shù)功能:從DS18B20讀取一個字節(jié)數(shù)據(jù)出口參數(shù):dat*/ unsigned char ReadOneChar(void) unsigned char i=0;unsigned char dat; /儲存讀出的一個字節(jié)數(shù)據(jù)for (i=0;i=1; _nop_(); /等待一個機器周期 DQ = 1; /將數(shù)據(jù)線人為拉高,為單片機檢測DS18B20的輸出電平作準(zhǔn)備 for(time=0;time2;time+) ; /延時約6us,使主機在15us內(nèi)采樣 i

37、f(DQ=1) dat|=0x80; /如果讀到的數(shù)據(jù)是1,則將1存入datelsedat|=0x00;/如果讀到的數(shù)據(jù)是0,則將0存入dat /將單片機檢測到的電平信號DQ存入ri for(time=0;time8;time+) ; /延時3us,兩個讀時序之間必須有大于1us的恢復(fù)期 return(dat); /返回讀出的十進制數(shù)據(jù)/*函數(shù)功能:向DS18B20寫入一個字節(jié)數(shù)據(jù)入口參數(shù):dat*/ WriteOneChar(unsigned char dat)unsigned char i=0;for (i=0; i8; i+) DQ =1; / 先將數(shù)據(jù)線拉高 _nop_(); /等待一

38、個機器周期 DQ=0; /將數(shù)據(jù)線從高拉低時即啟動寫時序 DQ=dat&0x01; /利用與運算取出要寫的某位二進制數(shù)據(jù), /并將其送到數(shù)據(jù)線上等待DS18B20采樣 for(time=0;time10;time+) ;/延時約30us,DS18B20在拉低后的約1560us期間從數(shù)據(jù)線上采樣 DQ=1; /釋放數(shù)據(jù)線 for(time=0;time=1; /將dat中的各二進制位數(shù)據(jù)右移1位 for(time=0;time4;time+) ; /稍作延時,給硬件一點反應(yīng)時間/*以下是與溫度有關(guān)的顯示設(shè)置 */ /*函數(shù)功能:顯示沒有檢測到DS18B20*/ void display_erro

39、r(void) unsigned char i; WriteAddress(0x00); /寫顯示地址,將在第1行第1列開始顯示 i = 0; /從第一個字符開始顯示while(Errori != 0) /只要沒有寫到結(jié)束標(biāo)志,就繼續(xù)寫WriteData(Errori); /將字符常量寫入LCDi+; /指向下一個字符delaynms(100); /延時100ms較長時間,以看清關(guān)于顯示的說明while(1) /進入死循環(huán),等待查明原因 ;/*函數(shù)功能:顯示說明信息*/ void display_explain(void) unsigned char i; WriteAddress(0x00); /寫顯示地址,將在第1行第1列開始顯示 i = 0; /從第一個字符開始顯示while(Stri != 0) /只要沒有寫到結(jié)束標(biāo)志,就繼續(xù)寫WriteData(Stri); /將字符常量寫入LCDi+; /指向下一個字符delaynms(100); /延時100ms較長時間,以看清關(guān)于顯示的說明/*函數(shù)功能:顯示溫度符號*/ void display_symbol(void) uns

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論