cx溫濕度測量系統(tǒng)--基于單片機和溫度傳感器DS18B20、HS1101是電容式空氣濕度傳感器.doc_第1頁
cx溫濕度測量系統(tǒng)--基于單片機和溫度傳感器DS18B20、HS1101是電容式空氣濕度傳感器.doc_第2頁
cx溫濕度測量系統(tǒng)--基于單片機和溫度傳感器DS18B20、HS1101是電容式空氣濕度傳感器.doc_第3頁
cx溫濕度測量系統(tǒng)--基于單片機和溫度傳感器DS18B20、HS1101是電容式空氣濕度傳感器.doc_第4頁
cx溫濕度測量系統(tǒng)--基于單片機和溫度傳感器DS18B20、HS1101是電容式空氣濕度傳感器.doc_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

摘要此溫濕度測量系統(tǒng)是基于單線式溫度傳感器DS18B20、電容式濕度傳感器單片機STC89C52 對溫度濕度分別測量并通過液晶顯示屏1602經(jīng)行顯示。 溫度傳感器DS18B20是單線式,體積超小,硬件開消超低,抗干擾能力強,精度高,附加功能強的理想單片機溫度傳感器,可實時根據(jù)指令給出溫度數(shù)據(jù),可讀性高。HS1101是電容式空氣濕度傳感器,在不同的濕度環(huán)境下呈現(xiàn)出不同的電容值,0%100%RH濕度范圍內(nèi),電容從162PF變化到200PF,誤差誤差為2%RH。可見其精度非常高,為了反映出其電容的變化,本系統(tǒng)采用555多諧震蕩電路產(chǎn)生不同的頻率,用于檢測濕度。單片機采集到兩個傳感器給出的數(shù)據(jù)進(jìn)行處理與計算,得出當(dāng)前的溫度與濕度并送給液晶屏顯示。本系統(tǒng)具有可讀性高,穩(wěn)定性高,反應(yīng)速度快,測量值準(zhǔn)確的特點。關(guān)鍵詞:溫濕度測量系統(tǒng) 精度高 速度快 體積小Abstract: The temperature and humidity measurement system is based on singleline type temperature sensor DS18B20, capacitive moisture sensorSCM STC89C52 for temperature humidity measurement and respectively by LCD display. The line 1602 Temperature sensor DS18B20 is singleline type, volume super-small, hardware KaiXiao ultra-low, strong anti-jamming capability, high precision, additional features strong ideal single-chip microcomputer temperature sensor, real-time temperature data, depending on the directive given readable. HS1101 is capacitive sensor, air humidity in different humidity presents different capacitance, 0% 100% RH humidity, within the scope of capacitance change to 200PF, from 162PF error for 2% RH error. e can see its precision is very high, in order to reflect the capacitance change, the system USES the 555 more harmonic concussion circuits produce different frequency, which is used to detect humidity. SCM acquisition to two sensor gives data processing and calculated, the current temperature and humidity and give the display on the LCD panel. This system has a readable, high stability, reaction speed, measured values exact characteristic.Keywords: temperature and humidity measurement system high precision speed small volume目錄1.設(shè)計要求22. 方案設(shè)計及論證22.1 總體方案設(shè)計22.2系統(tǒng)主要單元的選擇與論證22.2.1單片機控制模塊的選擇論證22.2.2溫度濕度檢測模塊的選擇與論證22.2.3顯示模塊的選擇與論證22.3 系統(tǒng)組成33. 理論分析及計算33.133.234. 系統(tǒng)電路設(shè)計34.1單片機主控電路設(shè)計34.2 DS18B20溫度檢測模塊和HS1101濕度檢測模塊電路設(shè)計44.2.1 HS1101濕度檢測傳感器工作原理44.2.2 DS18B20溫度檢測傳感器工作原理44.4.3蜂鳴器電路原理44.3 1602液晶顯示模塊電路設(shè)計55. 系統(tǒng)軟件設(shè)計65.1 軟件設(shè)計流程圖65.2 軟件設(shè)計分析66. 系統(tǒng)測試66.1主要指標(biāo)測試66.2測試結(jié)果分析67. 結(jié)論6參考文獻(xiàn)7附錄8附錄一:系統(tǒng)的總原理圖8附錄二:系統(tǒng)的PCB元件分布圖9附錄三:程序清單10附錄五:元器件清單101. 設(shè)計要求(1)設(shè)計制作一個溫濕度計,溫度測量范圍為-10-50,濕度為0-100%;(2)溫度測量誤差為0.1,濕度測量誤差為3%;(3)具有量程自動轉(zhuǎn)換功能;(4)其他創(chuàng)新性設(shè)計,如低功耗等。2. 2. 方案設(shè)計及論證2.1 總體方案設(shè)計顯示模塊經(jīng)分析,將系統(tǒng)分為兩個DS18B20溫度檢測HS1101濕度檢測電路部分,一個是由溫濕度傳感器組成的檢測部分,另一個是由單片機單片機和1602液晶組成的主控與顯示部分。如圖所示DS18B20和HS1101濕度檢測電路將檢測到的數(shù)送到單片機,單片機對接收電源到的數(shù)據(jù)進(jìn)行處理并送到1602顯示,5V穩(wěn)壓電源給各個部分供電。 圖2.1 系統(tǒng)組成框圖2.2 系統(tǒng)主要單元的選擇與論證 2.2.1單片機控制模塊的選擇論證方案一:采用XC9000系列的FPGA。該類器件具有并行處理能力,能快速的響應(yīng)外部的各種數(shù)字信號,但在數(shù)據(jù)處理方面過于復(fù)雜,而且芯片價格較昂貴。 方案二:采用單片機作為控制核心,單片機數(shù)學(xué)運算功能較強。在程序相互調(diào)用方面,處理方便靈活,性能穩(wěn)定,適合實際應(yīng)用。且單片機技術(shù)發(fā)展較為成熟,價格便宜。基于以上分析,采用單片機控制可更為簡便靈活地實現(xiàn)系統(tǒng)功能,故擬采用方案二。2.2.2溫度濕度檢測模塊的選擇與論證 方案一:選用DHT11作為溫濕度檢測模塊。DHT11是一款數(shù)字輸出的復(fù)合傳感器,包含一個電阻式感濕元件和NTC式溫度檢測元件,可測2090%RH濕度,誤差5%RH,050攝氏度,誤差2攝氏度。 方案二:選用DS18B20溫度傳感器和HS1101濕度傳感器。是一線式數(shù)字溫度傳感器,具有獨特的單線式接口方式,測量范圍在,誤差為-+0.5。最高精度可達(dá)0.0625。HS1101是電容式濕度傳感器,可測相對濕度范圍在0%100%RH,誤差為-+2%RH。方案選擇,有上述數(shù)據(jù)可知,根據(jù)設(shè)計要求(溫度測量范圍為-10-50,濕度為0-100%;溫度測量誤差為0.1,濕度測量誤差為3%;),從設(shè)計要求的精度來看,本方案更優(yōu)。 綜上所述,雖然方案一具有綜合作用,但是方案二的測試范圍和精度都由于方案一,故本模塊采用方案二。2.2.3顯示模塊的選擇與論證方案一:采用12864液晶模塊顯示測得的數(shù)據(jù),可顯示較多組的數(shù)據(jù),字體較大,可清晰讀數(shù),但12864液晶模塊價格昂貴,接線復(fù)雜,故不采用。方案二:采用1602液晶模塊顯示所測數(shù)據(jù),1602液晶接線簡單方便,同時也能滿足顯示需要,價格遠(yuǎn)低于12864液晶。因此,本方案為首選方案。綜上所述,顯示模塊選擇方案二。2.3 系統(tǒng)組成本系統(tǒng)由單片機主控電路、DS18B20溫度檢測模塊、HS1101濕度檢測模塊、1602液晶顯示模塊4部分組成,其中單片機主控電路3. 3. 理論分析及計算3.1 HS1101的濕度測量方法分析HS1101是電容式濕度傳感器,由于電容不可直接測量,故選用555多諧震蕩電路檢測到頻率,然后由單片機計算的電容值,再根據(jù)電容值算出相應(yīng)的濕度值。3.1HS1101的濕度測量計算電路如圖4.2 ,由電路可知 圖3.1電容值與相對濕度值的關(guān)系t 充電 =C(R2 +R1 ) ln2 t 放電 =CR4 ln2 因而 , 輸出的方波率 f= 1 /(t 充電 +t 放電 )= 1 /C(R2+ 2 R1) ln2 )由圖3.1可知相對濕度與電容的關(guān)系可看成直線段,所以有相對濕度RH=2.7C+163所以有4. 系統(tǒng)電路設(shè)計4.1單片機主控電路設(shè)計 單片機主控電路原理圖如下所示:圖4.1 單片機主控電路原理圖 單片機主控模塊包括了振落電路、復(fù)位電路,同時接入了各個模塊的接口,保證了整個系統(tǒng)的靈活性。單片機是整個系統(tǒng)的控制中樞,它指揮外圍器件協(xié)調(diào)工作,從而完成特定的功能。硬件實現(xiàn)上采用模塊化設(shè)計,每一模塊只實現(xiàn)一個特定功能,最后再將各個模塊搭接在一起。這種設(shè)計方法可以降低系統(tǒng)設(shè)計的復(fù)雜性。控制電路的核心器件是由美國Atmel公司生產(chǎn)的AT89S52單片機,屬于MCS-51系列。AT89S52是一種低功耗、高性能的CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲器,采用的工藝是Atmel公司的高密度非易失存儲器技術(shù);片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器;在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案;價格低廉、性能可靠、抗干擾能力強。因此廣泛應(yīng)用于工業(yè)控制和嵌入式系統(tǒng)中。 4.2 DS18B20溫度檢測模塊和HS1101濕度檢測模塊電路設(shè)計 DS18B20溫度檢測模塊和HS1101濕度檢測模塊電路原理圖如下所示:圖4.2.1 DS18B20溫度檢測模塊和HS1101濕度檢測模塊電路原理圖圖4.2.2 DS18B20溫度檢測模塊和HS1101濕度檢測模塊電路仿真圖圖4.2.3 DS18B20溫度檢測模塊和HS1101濕度檢測模塊電路仿真結(jié)果圖4.2.1 HS1101濕度檢測傳感器工作原理T1為HS1101濕度檢測傳感器,其工作電路由555多諧振蕩器來實現(xiàn),HS1101作為電容變量接在555芯片的2、5腳之間,引腳7用作電阻R2的短路,等量電容HS1101通過R1、R2充電到門限電壓(約0.67V),通過R4放電到觸發(fā)電平,然后R2通過7短路到地,傳感器由不同的電阻R1、R2充放電,進(jìn)行工作循環(huán),形成方波。其周期計算如下: T充電=C*(R1+R2)*In2; T放電=C*R1*In2; 由此可知輸出方波頻率為f=1/(T充電+ T放電)=1/C*(R2+2R1)*In2; 可見空氣濕度通過555測量振蕩電路,就轉(zhuǎn)變?yōu)榕c之呈反比例的頻率信號。4.2.2 DS18B20溫度檢測傳感器工作原理 DS18B20的溫度檢測與數(shù)字?jǐn)?shù)據(jù)輸出全集成于一個芯片之上,從而抗干擾力更強。其一個工作周期可分為兩個部分,即溫度檢測和數(shù)據(jù)處理。在講解其工作流程之前我們有必要了解18B20的內(nèi)部存儲器資源。18B20共有三種形態(tài)的存儲器資源,它們分別是: ROM 只讀存儲器,用于存放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)部溫度轉(zhuǎn)換、計算的暫存單元。第9個字節(jié)為前8個字節(jié)的CRC碼。EEPROM 非易失性記憶體,用于存放長期需要保存的數(shù)據(jù),上下限溫度報警值和校驗數(shù)據(jù),DS18B20共3位EEPROM,并在RAM都存在鏡像,以方便用戶操作。4.4.3蜂鳴器電路原理 蜂鳴器額定電流IB30mA,而對于AT89S52單片機,P1口的灌電流為 16mA,拉電流為60A,由此可見,僅靠單片機的P1口電流是不能驅(qū)動蜂鳴器的,必須使用集晶體管放大電路,為了使單片機消耗的功率更小,所以使用 PNP型晶體管9012。AT89S52采用的晶振電路采用110592MHz的無源晶振,微調(diào)電容大小取30pF。顯示模塊選用1602字符型液晶模塊,是目前工控系統(tǒng)中使用最為廣泛的液晶屏之一,電路圖如圖6所示。1602字符型液晶模塊是點陣型液晶,驅(qū)動方便,經(jīng)編碼后顯示內(nèi)容多樣化。系統(tǒng)的輸入模塊采用中斷掃描的44矩陣鍵盤,相比定時掃描方式,提高了MCU的使用效率。4.3 1602液晶顯示模塊電路設(shè)計 1602液晶顯示模塊電路原理圖如下所示:圖4.3 1602液晶顯示模塊電路原理圖在日常生活中,我們對液晶顯示器并不陌生。液晶顯示模塊已作為很多電子產(chǎn)品的通過器件,如在計算器、萬用表、電子表及很多家用電子產(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接 5V正電源。 第 3 腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個 10K 的電位器調(diào)整對比度。 第 4 腳:RS 為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。 第 5 腳:R/W 為讀寫信號線,高電平時進(jìn)行讀操作,低電平時進(jìn)行寫操作。當(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為 8 位雙向數(shù)據(jù)線。 第 15腳:背光源正極。 第 16腳:背光源負(fù)極。5. 系統(tǒng)軟件設(shè)計5.1 軟件設(shè)計流程圖 主程序流程圖 液晶顯示程序流程開始開始是否忙碌Key1鍵按下?顯示濕度 是是 否 否寫指令Key2鍵按下?顯示溫度 是寫數(shù)據(jù) 否設(shè)置顯示位顯示初始化圖5.1.1 主程序流程圖 圖5.1.2液晶顯示程序流程溫度檢測程序流程濕度檢測流程圖開始開始 開定時T0,T1初始化初始化是否成功是否計滿1S否 否 是從18B20讀字節(jié)是關(guān)閉T0并根據(jù)頻率算出濕度值向18B20寫字節(jié)顯示濕度讀取溫度顯示溫度圖5.1.3溫度檢測程序流程 圖5.1.4 濕度檢測流程圖5.2 軟件設(shè)計分析主程序進(jìn)行鍵盤掃描,單片機根據(jù)判斷鍵盤那個鍵按下,顯示溫度或濕度。如果key1鍵按下就調(diào)用溫度檢測程序,單片機對18B20進(jìn)行初始化,成功則讀字節(jié),再寫入字節(jié),讀取溫度數(shù)據(jù)送到1602顯示。如果key2鍵按下,就調(diào)用濕度顯示程序,開啟定時中斷T0、T1,T0進(jìn)行定時,T1對濕度電路給的頻率計數(shù),當(dāng)計滿1S時關(guān)閉T1,單片機對計的數(shù)進(jìn)行運算,的出濕度值,送往液晶顯示。6. 6. 系統(tǒng)測試6.1主要指標(biāo)測試 本系統(tǒng)主要指標(biāo)就在于所測得的溫濕度的數(shù)據(jù)是否達(dá)到了題目要求,本系統(tǒng)測量范圍為-10-50,濕度為0-100%;溫度測量誤差為0.1,濕度測量誤差為2%;在8棟111測試溫度為16.7度,濕度為41%。6.2測試結(jié)果分析 通過測試,與標(biāo)準(zhǔn)儀器所測得的溫濕度相比較,可得系統(tǒng)的誤差為信號傳輸過程中可能存在誤碼,及誤判。7. 結(jié)論本溫濕度計的制作基本上達(dá)到了題目要求的技術(shù)指標(biāo),溫度測量范圍為-10-50,濕度為0-100%;溫度測量誤差為0.1,濕度測量誤差為3%;實現(xiàn)了量程自動轉(zhuǎn)換功能。課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的日新日異,單片機已經(jīng)成為當(dāng)今計算機應(yīng)用中空前活躍的領(lǐng)域,在生活中可以說得是無處不在。因此作為二十一世紀(jì)的大學(xué)來說掌握單片機的開發(fā)技術(shù)是十分重要的。 回顧起此次單片機課程設(shè)計,我仍感慨頗多,的確,從選題到定稿,從理論到實踐,在接近一星期的日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比如說不懂一些元器件的使用方法,對單片機匯編語言掌握得不好通過這次課程設(shè)計之后,一定把以前所學(xué)過的知識重新溫故。 參考文獻(xiàn)(1) 康華光等.電子技術(shù)基礎(chǔ)M. 北京:高等教育出版社(2) 彭介華.電子技術(shù)課程設(shè)計指導(dǎo)M. 北京:高等教育出版社(3) 郭天祥.新概念51單片機C語言教程:入門、提高、開發(fā)、拓展全攻略M.電子工業(yè)出版社,2009.(3) 黃智偉全國大學(xué)生電子設(shè)計競賽制作實訓(xùn)M北京:北京航空航天大學(xué)出版社,2007(4) 黃智偉全國大學(xué)生電子設(shè)計競賽系統(tǒng)設(shè)計M北京:北京航空航天大學(xué)出版社,2006(5) 黃智偉全國大學(xué)生電子設(shè)計競賽技能訓(xùn)練M北京:北京航空航天大學(xué)出版社,2007(6) 黃智偉全國大學(xué)生電子設(shè)計競賽電路設(shè)計M北京:北京航空航天大學(xué)出版社,2006(7) 黃智偉全國大學(xué)生電子設(shè)計競賽 常用電路模塊制作M北京:北京航空航天大學(xué)出版社,2010(8) 黃智偉等.基于NI multisim的電子電路計算機仿真設(shè)計與分析M北京:電子工業(yè)出版社,2007(9) 黃智偉.印制電路板(PCB)設(shè)計技術(shù)與實踐M北京:電子工業(yè)出版社,2009(10) 高吉祥等.電子技術(shù)基礎(chǔ)實驗與課程設(shè)計M北京:電子工業(yè)出版社,2002(11) 吳運昌.模擬集成電路原理與應(yīng)用M廣州:華南理工大學(xué)出版社,2001年(12) 譚博學(xué)等. 集成電路原理及應(yīng)用M北京:電子工業(yè)出版社,2003(13) 魏立軍.CMOS 4000系列60種常用集成電路的應(yīng)用M北京:人民郵電出版社,1993(14) 楊寶清.實用電路手冊M北京:機械工業(yè)出版社.2002 (15) 陳有卿.報警集成電路和報警器制作實例M人民郵電出版社1996 附錄附錄一:系統(tǒng)的總原理圖圖附1.1 系統(tǒng)總原理圖附錄二:系統(tǒng)的PCB圖及元件分布圖 圖附2.1 單片機主控電路及液晶PCB布線圖圖附2.2 DS18B20溫度檢測模塊和HS1101濕度檢測模塊PCB布線圖圖附2.3 單片機主控電路及液晶PCB元件分布圖圖附2.24DS18B20溫度檢測模塊和HS1101濕度檢測模塊PCB元件分布圖附錄三:程序清單#include #include #define uchar unsigned char /定義無符號字符型變量uchar#define uint unsigned int /定義無符號整型變量uintsbit DQ = P20 ; /定義DS18B20端口DQ sbit BEEP=P22 ; /蜂鳴器驅(qū)動線bit presence ;sbit LCD_RS = P12; sbit LCD_RW = P11; sbit LCD_EN = P10;sbit led= P21; sbit key1= P23;sbit key2= P24;uchar code cdis1 = wendujishiyan ;uchar code cdis2 = T= . C ;uchar code cdis3 = shidujishiyan ;uchar code cdis4 = shidu: % ;uchar code cdis5 = the system of ;uchar code cdis6 = temp and hum ;unsigned char data temp_data2 = 0x00,0x00 ;unsigned char data display5 = 0x00,0x00,0x00,0x00,0x00 ;unsigned char code ditab16 = 0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04, 0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09 ;void beep() ; unsigned char code mytab8 = 0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00 ;bit int_flag; /定時器0 1S到標(biāo)志位unsigned char volatile int_count; /定時器0中斷次數(shù)unsigned char volatile T1count; /定時器1中斷次數(shù)unsigned long sum,wet; /1S內(nèi)脈沖總個數(shù)unsigned char le6; /LED顯示緩存#define delayNOP() ; _nop_() ;_nop_() ;_nop_() ;_nop_() ; ;/*/void delay1(int ms) unsigned char y ; while(ms-) for(y = 0 ; y250 ; y+) _nop_() ; _nop_() ; _nop_() ; _nop_() ; /*/*檢查LCD忙狀態(tài) */*lcd_busy為1時,忙,等待。lcd-busy為0時,閑,可寫指令與數(shù)據(jù)。 */*/ bit lcd_busy() bit result ; LCD_RS = 0 ; LCD_RW = 1 ; LCD_EN = 1 ; delayNOP() ; result = (bit)(P0&0x80) ; LCD_EN = 0 ; return(result) ; /*寫指令數(shù)據(jù)到LCD */*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。 */*/void lcd_wcmd(uchar cmd) while(lcd_busy() ; LCD_RS = 0 ; LCD_RW = 0 ; LCD_EN = 0 ; _nop_() ; _nop_() ; P0 = cmd ; delayNOP() ; LCD_EN = 1 ; delayNOP() ; LCD_EN = 0 ; /*/*寫顯示數(shù)據(jù)到LCD */*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。 */*/void lcd_wdat(uchar dat) while(lcd_busy() ; LCD_RS = 1 ; LCD_RW = 0 ; LCD_EN = 0 ; P0 = dat ; delayNOP() ; LCD_EN = 1 ; delayNOP() ; LCD_EN = 0 ; /* LCD初始化設(shè)定 */*/void lcd_init() delay1(15) ; lcd_wcmd(0x01) ; /清除LCD的顯示內(nèi)容 lcd_wcmd(0x38) ; /16*2顯示,5*7點陣,8位數(shù)據(jù) delay1(5) ; lcd_wcmd(0x38) ; delay1(5) ; lcd_wcmd(0x38) ; delay1(5) ; lcd_wcmd(0x0c) ; /顯示開,關(guān)光標(biāo) delay1(5) ; lcd_wcmd(0x06) ; /移動光標(biāo) delay1(5) ; lcd_wcmd(0x01) ; /清除LCD的顯示內(nèi)容 delay1(5) ;/* 設(shè)定顯示位置 */*/void lcd_pos(uchar pos) lcd_wcmd(pos | 0x80) ; /數(shù)據(jù)指針=80+地址變量/*自定義字符寫入CGRAM */*/void writetab() unsigned char i ; lcd_wcmd(0x40) ; /寫CGRAM for (i = 0 ; i 0 ; i-) DQ = 0 ; / 給脈沖信號 dat = 1 ; DQ = 1 ; / 給脈沖信號 if(DQ) dat |= 0x80 ; Delay(4) ; return (dat) ;/* 寫一個字節(jié) */*/ WriteOneChar(unsigned char dat) unsigned char i = 0 ; for (i = 8 ; i 0 ; i-) DQ = 0 ; DQ = dat&0x01 ; Delay(5) ; DQ = 1 ; dat=1 ; /* 讀取溫度 */*/ Read_Temperature(void) Init_DS18B20() ; WriteOneChar(0xCC) ; / 跳過讀序號列號的操作 WriteOneChar(0x44) ; / 啟動溫度轉(zhuǎn)換 Init_DS18B20() ; WriteOneChar(0xCC) ; /跳過讀序號列號的操作 WriteOneChar(0xBE) ; /讀取溫度寄存器 temp_data0 = ReadOneChar() ; /溫度低8位 temp_data1 = ReadOneChar() ; /溫度高8位 /* 數(shù)據(jù)轉(zhuǎn)換與溫度顯示 */*/ Disp_Temperature()display4=temp_data0&0x0f ;display0=ditabdisplay4+0x30 ; /查表得小數(shù)位的值display4=(temp_data0&0xf0)4)|(temp_data1&0x0f)=0x32&display1=0x31) BEEP=1;elseBEEP=0;/*濕度測量*/ /軟件延時/void delays(unsigned int cnt) while(-cnt);/定時器0初始化void init_t0(void) TMOD=(TMOD&0xF0)|0x01; /定時器0工作于方式1/ TH0=(65536-50000)/256; /定時50ms/ TL0=(65535-50000)%256;TH0=0x4c;TL0=0x00;/ 定時器1初始化void init_t1(void) TMOD=(TMOD&0x0F)|0x50; /定時器1用作計時 TH1 =0x00; TL1 =0x00;/定時器0中斷服務(wù)程序void int_t0(void) interrupt 1 TH0=(65535-50000)/256; TL0=(65535-50000)%256; int_count+; if(int_count=20) TR1=0; int_flag=1; int_count=0x00; /定時器1中斷服務(wù)程序void int_t1(void) interrupt 3 T1count+; void disp(void) /濕度顯示函數(shù) int_flag=0; sum=TL1+TH1*256+T1count*65536; /計算1秒內(nèi)的脈沖個數(shù) /以下將數(shù)據(jù)格式化,轉(zhuǎn)成LED可顯示的BCD碼 wet=100-(sum-4000)/50;/* 濕度計算公式 le0=wet%10; /最低位 wet=wet/10; le1=wet%10; /第二位 wet=wet/10; le2=wet%10; /第三位 wet=wet/10; int_count=0x00; T1count=0; TH1=

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論