DSB的數(shù)字溫計(jì)_第1頁
DSB的數(shù)字溫計(jì)_第2頁
DSB的數(shù)字溫計(jì)_第3頁
DSB的數(shù)字溫計(jì)_第4頁
DSB的數(shù)字溫計(jì)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

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

3、fe, 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 system

4、, 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 temperature

5、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 other

6、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 d

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

27、_()函數(shù)定義的頭文件unsigned char code digit10="0123456789" /定義字符數(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" /溫度單位/*以下是對(duì)

28、液晶模塊的操作程序*/sbit RS=P20; /寄存器選擇位,將RS位定義為P2.0引腳sbit RW=P21; /讀寫選擇位,將RW位定義為P2.1引腳sbit E=P22; /使能信號(hào)位,將E位定義為P2.2引腳sbit BF=P07; /忙碌標(biāo)志位,將BF位定義為P0.7引腳/*函數(shù)功能:延時(shí)1ms(3j+2)*i=(3×33+2)×10=1010(微秒),可以認(rèn)為是1毫秒*/void delay1ms() unsigned char i,j; for(i=0;i<4;i+) for(j=0;j<33;j+) ; /*函數(shù)功能:延時(shí)若干毫秒入口參數(shù):n*

29、/ void delaynms(unsigned char n) unsigned char i;for(i=0;i<n;i+) delay1ms(); /*函數(shù)功能:判斷液晶模塊的忙碌狀態(tài)返回值:result。result=1,忙碌;result=0,不忙*/bit BusyTest(void) bit result;RS=0; /根據(jù)規(guī)定,RS為低電平,RW為高電平時(shí),可以讀狀態(tài) RW=1; E=1; /E=1,才允許讀寫 _nop_(); /空操作 _nop_(); _nop_(); _nop_(); /空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 result=BF; /將忙碌標(biāo)志電平賦給

30、result E=0; /將E恢復(fù)低電平 return result; /*函數(shù)功能:將模式設(shè)置指令或顯示地址寫入液晶模塊入口參數(shù):dictate*/void WriteInstruction (unsigned char dictate) while(BusyTest()=1); /如果忙就等待 RS=0; /根據(jù)規(guī)定,RS和R/W同時(shí)為低電平時(shí),可以寫入指令 RW=0; E=0; /E置低電平(根據(jù)表8-6,寫指令時(shí),E為高脈沖, / 就是讓E從0到1發(fā)生正跳變,所以應(yīng)先置"0" _nop_(); _nop_(); /空操作兩個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 P0=dicta

31、te; /將數(shù)據(jù)送入P0口,即寫入指令或地址 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 E=1; /E置高電平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 E=0; /當(dāng)E由高電平跳變成低電平時(shí),液晶模塊開始執(zhí)行命令 /*函數(shù)功能:指定字符顯示的實(shí)際地址入口參數(shù):x*/ void WriteAddress(unsigned char x) WriteInstruction(x|0x80); /顯示位置的確定方法規(guī)定為"80H+地址碼x" /*

32、函數(shù)功能:將數(shù)據(jù)(字符的標(biāo)準(zhǔn)ASCII碼)寫入液晶模塊入口參數(shù):y(為字符常量)*/ void WriteData(unsigned char y) while(BusyTest()=1); RS=1; /RS為高電平,RW為低電平時(shí),可以寫入數(shù)據(jù) RW=0; E=0; /E置低電平(根據(jù)表8-6,寫指令時(shí),E為高脈沖, / 就是讓E從0到1發(fā)生正跳變,所以應(yīng)先置"0" P0=y; /將數(shù)據(jù)送入P0口,即將數(shù)據(jù)寫入液晶模塊 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 E=1; /E置高電平 _nop_();

33、_nop_(); _nop_(); _nop_(); /空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 E=0; /當(dāng)E由高電平跳變成低電平時(shí),液晶模塊開始執(zhí)行命令 /*函數(shù)功能:對(duì)LCD的顯示模式進(jìn)行初始化設(shè)置*/void LcdInitiate(void) delaynms(15); /延時(shí)15ms,首次寫指令時(shí)應(yīng)給LCD一段較長的反應(yīng)時(shí)間 WriteInstruction(0x38); /顯示模式設(shè)置:16×2顯示,5×7點(diǎn)陣,8位數(shù)據(jù)接口delaynms(5); /延時(shí)5ms,給硬件一點(diǎn)反應(yīng)時(shí)間 WriteInstruction(0x38);delaynms(5); /延時(shí)5m

34、s,給硬件一點(diǎn)反應(yīng)時(shí)間WriteInstruction(0x38); /連續(xù)三次,確保初始化成功delaynms(5); /延時(shí)5ms,給硬件一點(diǎn)反應(yīng)時(shí)間WriteInstruction(0x0c); /顯示模式設(shè)置:顯示開,無光標(biāo),光標(biāo)不閃爍delaynms(5); /延時(shí)5ms,給硬件一點(diǎn)反應(yīng)時(shí)間WriteInstruction(0x06); /顯示模式設(shè)置:光標(biāo)右移,字符不移delaynms(5); /延時(shí)5ms,給硬件一點(diǎn)反應(yīng)時(shí)間WriteInstruction(0x01); /清屏幕指令,將以前的顯示內(nèi)容清除delaynms(5); /延時(shí)5ms,給硬件一點(diǎn)反應(yīng)時(shí)間 /*以下是DS1

35、8B20的操作程序 */ sbit DQ=P33;unsigned char time; /設(shè)置全局變量,專門用于嚴(yán)格延時(shí)/*函數(shù)功能:將DS18B20傳感器初始化,讀取應(yīng)答信號(hào)出口參數(shù):flag */bit Init_DS18B20(void) bit flag; /儲(chǔ)存DS18B20是否存在的標(biāo)志,flag=0,表示存在;flag=1,表示不存在 DQ = 1; /先將數(shù)據(jù)線拉高 for(time=0;time<2;time+) /略微延時(shí)約6微秒 ; DQ = 0; /再將數(shù)據(jù)線從高拉低,要求保持480960us for(time=0;time<200;time+) /略微延

36、時(shí)約600微秒 ; /以向DS18B20發(fā)出一持續(xù)480960us的低電平復(fù)位脈沖 DQ = 1; /釋放數(shù)據(jù)線(將數(shù)據(jù)線拉高) for(time=0;time<10;time+) ; /延時(shí)約30us(釋放總線后需等待1560us讓DS18B20輸出存在脈沖) flag=DQ; /讓單片機(jī)檢測是否輸出了存在脈沖(DQ=0表示存在) for(time=0;time<200;time+) /延時(shí)足夠長時(shí)間,等待存在脈沖輸出完畢 ; return (flag); /返回檢測成功標(biāo)志/*函數(shù)功能:從DS18B20讀取一個(gè)字節(jié)數(shù)據(jù)出口參數(shù):dat*/ unsigned char ReadO

37、neChar(void) unsigned char i=0;unsigned char dat; /儲(chǔ)存讀出的一個(gè)字節(jié)數(shù)據(jù)for (i=0;i<8;i+) DQ =1; / 先將數(shù)據(jù)線拉高 _nop_(); /等待一個(gè)機(jī)器周期 DQ = 0; /單片機(jī)從DS18B20讀書據(jù)時(shí),將數(shù)據(jù)線從高拉低即啟動(dòng)讀時(shí)序dat>>=1; _nop_(); /等待一個(gè)機(jī)器周期 DQ = 1; /將數(shù)據(jù)線"人為"拉高,為單片機(jī)檢測DS18B20的輸出電平作準(zhǔn)備 for(time=0;time<2;time+) ; /延時(shí)約6us,使主機(jī)在15us內(nèi)采樣 if(DQ=1

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

39、待一個(gè)機(jī)器周期 DQ=0; /將數(shù)據(jù)線從高拉低時(shí)即啟動(dòng)寫時(shí)序 DQ=dat&0x01; /利用與運(yùn)算取出要寫的某位二進(jìn)制數(shù)據(jù), /并將其送到數(shù)據(jù)線上等待DS18B20采樣 for(time=0;time<10;time+) ;/延時(shí)約30us,DS18B20在拉低后的約1560us期間從數(shù)據(jù)線上采樣 DQ=1; /釋放數(shù)據(jù)線 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í),給硬件一點(diǎn)

40、反應(yīng)時(shí)間/*以下是與溫度有關(guān)的顯示設(shè)置 */ /*函數(shù)功能:顯示沒有檢測到DS18B20*/ void display_error(void) unsigned char i; WriteAddress(0x00); /寫顯示地址,將在第1行第1列開始顯示 i = 0; /從第一個(gè)字符開始顯示while(Errori != '0') /只要沒有寫到結(jié)束標(biāo)志,就繼續(xù)寫WriteData(Errori); /將字符常量寫入LCDi+; /指向下一個(gè)字符delaynms(100); /延時(shí)100ms較長時(shí)間,以看清關(guān)于顯示的說明while(1) /進(jìn)入死循環(huán),等待查明原因 ;/*函數(shù)

41、功能:顯示說明信息*/ void display_explain(void) unsigned char i; WriteAddress(0x00); /寫顯示地址,將在第1行第1列開始顯示 i = 0; /從第一個(gè)字符開始顯示while(Stri != '0') /只要沒有寫到結(jié)束標(biāo)志,就繼續(xù)寫WriteData(Stri); /將字符常量寫入LCDi+; /指向下一個(gè)字符delaynms(100); /延時(shí)100ms較長時(shí)間,以看清關(guān)于顯示的說明/*函數(shù)功能:顯示溫度符號(hào)*/ void display_symbol(void) unsigned char i; WriteAddress(0x40); /寫顯示地址,將在第2行第1列開始顯示 i = 0; /從第一個(gè)字符開始顯示while(Tempi != '0') /只要沒有寫到結(jié)束標(biāo)志,就繼續(xù)寫WriteData(Tempi); /將字符常量寫入LCDi+; /指向下一個(gè)字符delaynms(50

溫馨提示

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