資源目錄
壓縮包內文檔預覽:(預覽前20頁/共25頁)
編號:481641
類型:共享資源
大?。?span id="tjl5ff7" class="font-tahoma">670.93KB
格式:ZIP
上傳時間:2015-10-26
上傳人:畢業(yè)設計****498...
IP屬地:江蘇
80
積分
- 關 鍵 詞:
-
單片機
控制
節(jié)制
溫濕度
采集
收集
顯示器
- 資源描述:
-
單片機控制的溫濕度采集顯示器,單片機,控制,節(jié)制,溫濕度,采集,收集,顯示器
- 內容簡介:
-
無 錫 職 業(yè) 技 術 學 院畢業(yè)設計說明書(論文)單片機控制的溫濕度采集顯示器摘要:溫濕度是生活生產中的重要參數(shù)。本設計為單片機控制的溫濕度采集顯示器,采用模塊化、層次化設計。采用AT89C51單片機為核心,新型的智能溫濕度傳感器DHT11主要實現(xiàn)對溫度、濕度的檢測,將溫度濕度信號通過傳感器進行信號的采集并轉換成數(shù)字信號,在運用單片機AT89C51進行數(shù)據(jù)的分析和處理,為顯示電路提供信號,實現(xiàn)對溫濕度的采集顯示。顯示部分用數(shù)碼管顯示溫濕度值。關鍵詞:單片機AT89C51、DHT11溫濕度傳感器、數(shù)碼管1 引言溫濕度的檢測與控制是工業(yè)生產過程中比較典型的應用之一,隨著傳感器在生產和生活中的更加廣泛的應用。在生產中,溫濕度的高低對產品的質量影響很大。由于溫濕度的檢測控制不當,可能使我們導致無法估計的經濟損失。為保證日常工作的順利進行,首要問題是加強生產車間內溫度與濕度的監(jiān)測工作,但傳統(tǒng)的方法過于粗糙,通過人工進行檢測,對不符合溫度和濕度要求的庫房進行通風、去濕和降溫等工作。這種人工測試方法費時費力、效率低,且測試的溫度及濕度誤差大,隨機性大。目前,在低溫條件下通常指 100以下,溫濕度的測量已經相對成熟。利用新型單總線式數(shù)字溫度傳感器實現(xiàn)對溫度的測試與控制得到更快的開發(fā)。但人們對它的要求越來越高,要為現(xiàn)代人工作、科研、學習、生活提供更好的更方便的設施就需要從數(shù)字單片機技術入手,一切向著數(shù)字化,智能化控制方向發(fā)展。 對于國內外對溫濕度檢測的研究,從復雜模擬量檢測到現(xiàn)在的數(shù)字智能化檢測越發(fā)的成熟,隨著科技的進步,現(xiàn)在的對于溫濕度研究,檢測系統(tǒng)向著智能化、小型化、低功耗的方向發(fā)展。在發(fā)展過程中,以單片機為核心的溫濕度控制系統(tǒng)發(fā)展為體積小、操作簡單、量程寬、性能穩(wěn)定、測量精度高,等諸多優(yōu)點在生產生活的各個方面實現(xiàn)著至關重要的作用。 溫濕度傳感器除電阻式、電容式濕敏元件之外,還有電解質離子型濕敏元件、重量型濕 、光強型濕敏元件、聲表面波濕敏元件等。敏元件(利用感濕膜重量的變化來改變振蕩頻率)濕敏元件的線性度及抗污染性差,在檢測環(huán)境濕度時,濕敏元件要長期暴露在待測環(huán)境中,很容易被污染而影響其測量精度及長期穩(wěn)定性。2 總體方案設計制作一個溫濕度采集顯示器,通過單片機獲取溫濕度采集器并將溫濕度度通過數(shù)碼管顯示,設計要求:1.設計出如下模塊電路:單片機最小系統(tǒng)電路,溫濕度采集電路,顯示電路;2.溫濕度采集方案設計;3.編寫程序,實現(xiàn)上述功能。21方案一:電阻測量溫度、濕度 熱電偶工作原理:熱電偶是通過把兩根不同的導體或半導體線狀材料A和B的一端焊接起來而形成的,A、B就稱為熱電極(或熱電偶絲)。焊接起來的一端置于被測溫度t處,稱為熱電偶的熱端(或稱測量端、工作端);非焊接端稱為冷端(或參考端、自由端),冷端則置于被測對象之外溫度為t0的環(huán)境中。如把熱電偶的兩個冷端也連接起來則形成一個閉合回路,如圖1所示,則當熱端溫度和冷端溫度不相等,即tto時,回路中有電流流過,這說明在回路中產生了電動勢,由于熱電偶兩個接點處的溫度不同而產生的電動勢稱為熱電(動)勢,上述理象稱為熱電效應,或稱塞貝克效應。熱電偶就是利用熱電效應來測量溫度的。進一步的研究表明,熱電勢是由接觸電勢和溫差電組成的。圖1 熱電偶回路熱電偶溫度測量由如圖所示三部分組成: 熱電偶 毫伏測量電路或毫伏測量儀表 連接熱電偶和毫伏測量電路的補償導線與銅線圖2 熱電偶測溫系統(tǒng)示意圖熱電偶溫度測量電路:圖3熱電偶溫度測量電路原理如圖3所示,熱電偶產生的毫伏信號經放大電路后由VT端輸出。它可作為A/D轉換接口芯片的模擬量輸入。第1級反相放大電路,根據(jù)運算放大器增益公式:增益為10。第2級反相放大電路,根據(jù)運算放大器增益公式:增益為20??傇鲆鏋?00,由于選用的熱電偶測溫范圍為0200變化,熱電動勢010mV對應放大電路的輸出電壓為02V。濕敏電阻的特點是在基片上覆蓋一層用感濕材料制成的膜,當空氣中的水蒸氣吸附在感濕膜上時,元件的電阻率和電阻值都發(fā)生變化,利用這一特性即可測量濕度。濕敏元件的線性度及抗污染性差,在檢測環(huán)境濕度時,濕敏元件要長期暴露在待測環(huán)境中,很容易被污染而影響其測量精度及長期穩(wěn)定性。采用熱敏電阻、濕敏電阻。但濕、熱敏電阻精度、重復性、可靠性較差,對于檢測要求精度高的溫濕度是不適用的。模數(shù)轉換溫度采集濕度采集 AT89C51顯示部分圖4 單片機控制的溫濕度采集顯示電路框圖22方案二:智能集成溫濕度傳感器集成溫濕度傳感器測量精度高,能把溫度、濕度轉化成數(shù)字,測得的溫濕度值的存儲在自帶RAM中,單片機直接從中讀出數(shù)據(jù)轉換成十進制就是溫度、濕度,使用方便。AT89C51溫濕度傳感器采集溫度、濕度顯示部分圖5單片機控制的溫濕度采集顯示電路框圖鑒于方案二測量精度高、單片機讀取數(shù)據(jù)方便、電路簡單,因此本設計采用方案二。3分電路設計和論證 31 溫濕度采集電路設計和論證 311 溫濕度傳感器SHT10本系統(tǒng)選擇的溫濕度傳感器是由瑞士Sensirion公司推出了SHT10單片數(shù)字溫濕度集成傳感器采用CMOS過程微加工專利技術CMOSens technology確保產品具有極高的可靠性和出色的長期穩(wěn)定性。傳感器將傳感元件和信號處理電路集成在一塊微型電路板上,輸出完全標定的數(shù)字信號。傳感器包括一個電容性聚合體測濕敏感元件、一個用能隙材料制成的測溫元件,并在同一芯片上,與14 位的A/D 轉換器以及串行接口電路實現(xiàn)無縫連接。因此,該產品具有品質卓越、響應迅速、抗干擾能力強、性價比高等優(yōu)點。每個傳感器芯片都在極為精確的濕度腔室中進行標定,校準系數(shù)以程序形式儲存在OTP 內存中,用于內部的信號校準。兩線制的串行接口與內部的電壓調整,使外圍系統(tǒng)集成變得快速而簡單。微小的體積、極低的功耗,使SHT10成為各類應用的首選。SHT10提供表貼LCC 封裝,可以使用標準回流焊接。1、濕度測量范圍:0-100%RH 2、濕度測量精度:4.5%RH 3、溫度測量范圍:-40-123.8 4、溫度測量精度:0.4 5、工作電壓:2.2-5.5VDC 6、數(shù)字信號輸出相對濕度參數(shù)條件mintypmax單位分辨率10.40.050.05%RH81212bit精度 2SHT10典型值4.5%RH最大值見圖6重復性0.1%RH互換性可完全互換遲滯1%RH非線性原始數(shù)據(jù)3%RH線性化后1%RH響應時間3(63%)8s工作范圍0100%RH漂移4常規(guī) 0.5%RH/yr表1 相對濕度圖6 25時每種型號傳感器的相對濕度的最大誤差溫度參數(shù)條件mintypmax單位分辨率 10.040.010.01C121414bit精度2SHT10典型值0.5C最大值參見圖7重復性0.1C互換性可完全互換工作范圍-40123.8C-40254.9F響應時間6(63%)530s漂移 0.04C/yr表2 溫度圖7 每種型號傳感器的溫度的最大誤差如圖8所示傳感器SHT10的原理圖圖8 傳感器SHT10的原理圖如果與SHT10通訊中斷,可通過下列信號時序復位:當DATA 保持高電平時,觸發(fā)SCK 時鐘9次或更多,參閱圖9。接著發(fā)送一個“傳輸啟動”時序。這些時序只復位串口,狀態(tài)寄存器內容仍然保留。圖9 復位時序用一組“ 啟動傳輸”時序,來完成數(shù)據(jù)傳輸?shù)某跏蓟?。它包括:當SCK 時鐘高電平時DATA 翻轉為低電平,緊接著SCK 變?yōu)榈碗娖剑S后是在SCK時鐘高電平時DATA 翻轉為高電平。參見圖10。圖10啟動時序命令代碼預留0000x溫度測量00011濕度測量00101讀狀態(tài)寄存器00111寫狀態(tài)寄存器00110預留0101x-1110x軟復位,接口復位,狀態(tài)寄存器復位即恢復為默認狀態(tài),在要發(fā)送下一個命令前,至少等待11ms.11110表3 指令代碼圖11 SHT10工作的整個時序如圖12所示傳感器SHT10的電路連接圖圖12 傳感器SHT10的電路連接圖 312 智能溫濕度傳感器DHT11DHT11數(shù)字溫濕度傳感器是一款含有已校準數(shù)字信號輸出的溫濕度復合傳感器,它應用專用的數(shù)字模塊采集技術和溫濕度傳感技術,確保產品具有極高的可靠性和卓越的長期穩(wěn)定性。傳感器包括一個電阻式感濕元件和一個NTC測溫元件,并與一個高性能8位單片機相連接。因此該產品具有品質卓越、超快響應、抗干擾能力強、性價比極高等優(yōu)點。每個DHT11傳感器都在極為精確的濕度校驗室中進行校準。校準系數(shù)以程序的形式存在OTP內存中,傳感器內部在檢測型號的處理過程中要調用這些校準系數(shù)。單線制串行接口,使系統(tǒng)集成變得簡易快捷。超小的體積、極低的功耗,使其成為給類應用甚至最為苛刻的應用場合的最佳選擇。產品為4針單排引腳封裝,連接方便。技術參數(shù)供電電壓: 3.35.5V DC輸 出: 單總線數(shù)字信號測量范圍: 濕度20-90%RH, 溫度050測量精度: 濕度+-5%RH, 溫度+-2分 辨 率: 濕度1%RH, 溫度1互 換 性: 可完全互換 ,長期穩(wěn)定性: 1%RH/年電氣特性MCUDHT115KDATAVDDVDD1Pin2Pin4PinGND圖13 單片機與DHT11連接圖型號測量范圍測濕精度測溫精度分辨力封裝DHT112090%RH 0505%RH214 針單排直插表4 DHT11的信息DHT11引腳說明pin名稱注釋1VDD供電 35.5VDC2DATA串行數(shù)據(jù),單總線3NC空腳,請懸空4GND接地,電源負極表5 DHT11引腳說明VDD=5V,T = 25,除非特殊標注參數(shù)條件mintypmax單位供電DC355.5V供電電流測量0.52.5mA平均0.21mA待機100150uA采樣周期秒1次表6 DHT11參數(shù)傳感器上電后,要等待 1s 以越過不穩(wěn)定狀態(tài)在此期間無需發(fā)送任何指令。電源引腳(VDD,GND)之間可增加一個100nF 的電容,用以去耦濾波。串行接口(單線雙向) DATA 用于微處理器與 DHT11之間的通訊和同步,采用單總線數(shù)據(jù)格式,一次通訊時間4ms左右,數(shù)據(jù)分小數(shù)部分和整數(shù)部分,具體格式在下面說明,當前小數(shù)部分用于以后擴展,現(xiàn)讀出為零.操作流程如下: 一次完整的數(shù)據(jù)傳輸為40bit,高位先出。 數(shù)據(jù)格式:8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù) +8bit溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù) +8bit校驗和 數(shù)據(jù)傳送正確時校驗和數(shù)據(jù)等于“8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bit溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)”所得結果的末8位。用戶MCU發(fā)送一次開始信號后,DHT11從低功耗模式轉換到高速模式,等待主機開始信號結束后,DHT11發(fā)送響應信號,送出40bit的數(shù)據(jù),并觸發(fā)一次信號采集,用戶可選擇讀取部分數(shù)據(jù).從模式下,DHT11接收到開始信號觸發(fā)一次溫濕度采集,如果沒有接收到主機發(fā)送開始信號,DHT11不會主動進行溫濕度采集.采集數(shù)據(jù)后轉換到低速模式。1.通訊過程如圖14所示圖14通訊過程總線空閑狀態(tài)為高電平,主機把總線拉低等待DHT11響應,主機把總線拉低必須大于18毫秒,保證DHT11能檢測到起始信號。DHT11接收到主機的開始信號后,等待主機開始信號結束,然后發(fā)送80us低電平響應信號.主機發(fā)送開始信號結束后,延時等待20-40us后, 讀取DHT11的響應信號,主機發(fā)送開始信號后,可以切換到輸入模式,或者輸出高電平均可, 總線由上拉電阻拉高。圖15總線為低電平,說明DHT11發(fā)送響應信號,DHT11發(fā)送響應信號后,再把總線拉高80us,準備發(fā)送數(shù)據(jù),每一bit數(shù)據(jù)都以50us低電平時隙開始,高電平的長短定了數(shù)據(jù)位是0還是1.格式見下面圖示.如果讀取響應信號為高電平,則DHT11沒有響應,請檢查線路是否連接正常.當最后一bit數(shù)據(jù)傳送完畢后,DHT11拉低總線50us,隨后總線由上拉電阻拉高進入空閑狀態(tài)。數(shù)字0信號表示方法如圖16所示 圖16數(shù)字1信號表示方法.如圖17所示圖17圖18 DHT11溫濕度采集模塊鑒于溫濕度DHT11測量精度高、單片機讀取數(shù)據(jù)方便、電路簡單、性價比較高,因此本設計采用DHT11。32 顯示電路設計和論證 321 LCD顯示采用LCD顯示。LCD具有輕薄短小、低耗電量,平面直角顯示以及影像穩(wěn)定不閃爍等優(yōu)勢,可視面積大,畫面效果好,分辯率高,抗干擾能力強等特點。但由于只需要顯示溫度和濕度值,信息量少,且LCD液晶顯示的成本相對來說比較高。圖19 LCD顯示模塊 322 數(shù)碼管顯示 采用普通的LED數(shù)碼管作為顯示器件。數(shù)碼管具有低能耗、低損耗、低壓、壽命長、耐老化、防曬、防潮、防火、防高(低)溫,對外界環(huán)境要求低,易于維護,同時其精度比較高,操作簡單;編程容易,資源占用較少。74HC573介紹:74HC573是一款高速CMOS器件,74HC573引腳兼容低功耗肖特基TTL(LSTTL)系列。74HC573包含八路D型透明鎖存器,每個鎖存器具有獨立的D型輸入,以及適用于面向總線的應用的三態(tài)輸出。所有鎖存器共用一個鎖存使能(LE)端和一個輸出使能(OE)端。當LE為高時,數(shù)據(jù)從Dn輸入到鎖存器,在此條件下,鎖存器進入透明模式,也就是說,鎖存器的輸出狀態(tài)將會隨著對應的D輸入每次的變化而改變。當LE為低時,鎖存器將存儲D輸入上的信息一段就緒時間,直到LE的下降沿來臨。當OE為低時,8個鎖存器的內容可被正常輸出;當OE為高時,輸出進入高阻態(tài)。OE端的操作不會影響鎖存器的狀態(tài)。8數(shù)據(jù)鎖存器。主要用于數(shù)碼管、按鍵等等的控制 八進制 3 態(tài)非反轉透明鎖存器74HC573高性能硅門CMOS器件鎖存器:輸入是和標準 CMOS 輸出兼容的;加上拉電阻,他們能和 LS/ALSTTL 輸出兼容。當鎖存使能端LE為高時,這些器件的鎖存對于數(shù)據(jù)是透明的(也就是說輸出同步)。當鎖存使能變低時,符合建立時間和保持時間的數(shù)據(jù)會被鎖存。u36755X出能直接接到 CMOS,NMOS 和 TTL 接口上u25805X作電壓范圍:2.0V6.0V 圖20 74HC573引腳圖u20302X輸入電流:1.0uACMOS 器件的高噪聲抵抗特性74HC573 特性:輸入輸出分布在芯片封裝的兩側,為微處理器提供簡便的接口用于微控制器和微型計算機的輸入輸出口三態(tài)正相輸出,用于面向總線的應用共用三態(tài)輸出使能端邏輯功能與74HC563、74HC373相同遵循JEDEC標準no.7AESD保護HBM EIA/JESD22-A114-C超過2000 VMM EIA/JESD22-A115-A超過200 V溫度范圍-40+85 -40+125 數(shù)據(jù)鎖存:當輸入的數(shù)據(jù)消失時,在芯片的輸出端,數(shù)據(jù)仍然保持; 這個概念在并行數(shù)據(jù)擴展中經常使用到。74HC573功能表:(X=不用關心,Z=高阻抗)輸入輸出OELEDQLHHHLHLLLLXQ0HXXZ表7 74HC573真值表LE為鎖存控制端;OE為使能端。74HC573引腳功能表:PIN No 引腳號SYMBOL符號NAME AND FUNCTION名稱及功能1OE3 State output Enable Input (Active LOW)3態(tài)輸出使能輸入(低電平)2, 3, 4, 5, 6, 7, 8, 9D0 to D7Data Inputs數(shù)據(jù)輸入12,13,14,15,16,17,18,19Q0 to Q73 State Latch Outputs 3態(tài)鎖存輸出11LELatch Enable Input 鎖存使能輸入10GNDGround接地(0V)20VCCPositive Supply Voltage電源電壓表8 74HC573引腳功能表1腳三態(tài)允許控制端低電平有效1D8D為數(shù)據(jù)輸入端1Q8Q為數(shù)據(jù)輸出端74HC573引腳圖圖21 74HC573內部原理圖圖22 LED顯示模塊鑒于數(shù)碼管低能耗、低損耗、低壓、壽命長、耐老化、防曬、防潮、防火、防高(低)溫,對外界環(huán)境要求低,易于維護,同時其精度比較高,操作簡單;編程容易,資源占用較少,性價比高,故選擇數(shù)碼管較好。4 軟件設計41程序流程411系統(tǒng)主程序流程圖等上電穩(wěn)定計數(shù)為60開始調用函數(shù)讀溫濕度設定定時器重新計數(shù),次數(shù)加1讀溫濕度觸發(fā)次數(shù)為偶數(shù)顯示溫度顯示濕度YN返回0有數(shù)據(jù)YN圖23 主程序流程圖412各子程序流程圖定義變量開始關閉中斷總允許位拉低數(shù)據(jù)線延時20毫秒釋放數(shù)據(jù)線延時40us檢測應答信號是高電平返回錯誤信號等待應答信號結束讀數(shù)據(jù)錯誤,退出函數(shù)檢測計數(shù)器超范圍釋放數(shù)據(jù)線應答信號為高電平,等待80us打開中斷總允許位,退出函數(shù)讀數(shù)據(jù)出錯數(shù)據(jù)和等于校驗值讀出次數(shù)不是5求出數(shù)據(jù)和溫度、濕度擴大10倍返回正確信號打開中斷總允許位,退出函數(shù)YNYN打開中斷總允許位檢測計數(shù)器超范圍i5將數(shù)據(jù)賦值給數(shù)組打開中斷總允許位,退出函數(shù)釋放數(shù)據(jù)線打開中斷總允許位結束i+i=0圖24 讀溫度和濕度子程序42程序 421主程序/SCHEMATIC.除了dht11的接口外其他的電路原理圖與天祥電子的C51板對應 /只要在keil下建三個文件后將兩個C后綴的文件添加到工程就可以進行編譯.單片機時鐘為11.0592M/現(xiàn)象是循環(huán)顯示溫度和濕度各顯示三秒小數(shù)位顯示0/若需將dht11.c和其他的硬件結合使用只需在需用到溫濕度值的文件加下面聲明 /extern int temp_value, humi_value;(temp_value是溫度值,humi_value是濕度值,比實際的溫濕度值擴大了十倍 )/一、 /文件名保存為main.c/*/ /除了dht11的接口外其他的電路原理圖與天祥的C51板對應 /現(xiàn)象是循環(huán)顯示溫度和濕度各顯示三秒 #include dht11.h#include /數(shù)碼管位定義 sbit DULA= P26; sbit WELA=P27; #define SET_DULA() (DULA=1) #define RESET_DULA() (DULA=0) #define SET_WELA() (WELA=1) #define RESET_WELA() (WELA=0) /中斷計數(shù)標志 static unsigned char flag; /數(shù)碼管編碼 static unsigned char code array=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f; extern int temp_value, humi_value ;static void InitTime(void); void Delay_1ms(unsigned int ms); static void SMG_Display(unsigned int value); int main(void) unsigned char mark=0; /先等上電穩(wěn)定 Delay_1ms(1000); /因為讀一次數(shù)據(jù)dht11才會觸發(fā)一次采集數(shù)據(jù). /即在先使用數(shù)據(jù)時采集一次數(shù)據(jù) ReadTempAndHumi(); /因為在兩次采集數(shù)據(jù)需一定的時間間隔這里還可減少 Delay_1ms(3000) /設定定時器 InitTime(); while(1) /三秒讀一次溫濕度 if(flag=60) flag=0; mark+; /* /讀溫濕度可檢測函數(shù)調用是否失敗 /函數(shù)返回OK(1)表示成功,返回ERROR(0)表示失敗 /OK和ERROR是在DHT11.H中定義的宏 */ ReadTempAndHumi(); if(mark%2=0) /顯示溫度 SMG_Display(temp_value); else /顯示濕度 SMG_Display(humi_value); return 0 ;/設定定時器 static void InitTime(void) TH0=(unsigned char)(65535U - 50000) 8); TL0=(unsigned char)(65535U - 50000); TMOD=0X01; TR0=1; ET0=1; EA=1; /數(shù)碼管顯示函數(shù) static void SMG_Display(unsigned int value) unsigned char ge, bai, shi; ge=value%10; shi=value%100 / 10; bai=value%1000 / 100; SET_WELA(); P0=0XFE; RESET_WELA(); P0=0XFF; SET_DULA(); P0=arraybai; RESET_DULA(); Delay_1ms(2); SET_WELA(); P0=0XFD; RESET_WELA(); P0=0XFF; SET_DULA(); P0=arrayshi; P0=0x80; /*顯示小數(shù)點*/ RESET_DULA(); Delay_1ms(2); SET_WELA(); P0=0XFB; RESET_WELA(); P0=0XFF; SET_DULA(); P0=arrayge; RESET_DULA(); Delay_1ms(2);/中斷函數(shù) void timer(void) interrupt 1 TH0=(unsigned char)(65535 - 50000) 8); TL0=(unsigned char)(65535 - 50000); flag+; /*/422 各子程序二、 保存文件名dht11.h(保存時必須命名為dht11.h)/*/*/ #ifndef _DHT11_H_ #define _HDT11_H_ /設定標志(static unsigned char status)的宏值#define OK 1 #define ERROR 0 extern void Delay_1ms(unsigned int ms);/函數(shù)的返回值表示讀取數(shù)據(jù)是否成功 OK表示成功 ERROR表示失敗 extern unsigned char ReadTempAndHumi(void);#endif/*/ /*/三、 保存的文件名是dht11.c /單片機時鐘為11.0592M #include #include dht11.h/請根據(jù)自己的dht11接的IO口來改動位定義 /防止在與硬件通信時發(fā)生死循環(huán)的計數(shù)范圍 #define NUMBER 20 #define SIZE 5 sbit dht11 = P20; static unsigned char status;/存放五字節(jié)數(shù)據(jù)的數(shù)組 static unsigned char value_arraySIZE;/*可在其他的文件引用溫濕度值實際是溫度的整數(shù)的10倍 如dht11讀回的溫度是26,則temp_value=260, 濕度同理*/ int temp_value, humi_value; static unsigned char ReadValue(void);extern void Delay_1ms(unsigned int ms) unsigned int x,y; for(x=ms;x0;x-) for(y=124;y0;y-); static void Delay_10us(void) unsigned char i; i-; i-; i-; i-; i-; i-; /*讀一個字節(jié)的數(shù)據(jù)*/ static unsigned char ReadValue(void) unsigned char count, value=0, i; status=OK; /設定標志為正常狀態(tài) for(i=8;i0;i-) /高位在先 value=1; count=0;/每一位數(shù)據(jù)前會有一個50us的低電平時間,等待50us低電平結束 while(dht11=0&count+=NUMBER) status=ERROR; /設定錯誤標志 return 0;/函數(shù)執(zhí)行過程發(fā)生錯誤就退出函數(shù) /26-28us的高電平表示該位是0,為70us高電平表示為1 Delay_10us(); Delay_10us(); Delay_10us(); /延遲30us后檢測數(shù)據(jù)線是否還是高電平 if(dht11!=0) /進入這里表示該位是1 value+; /等待剩余(約40us)的高電平結束 while(dht11 !=0&count+=NUMBER) status=ERROR; /設定錯誤標志 return 0;/函數(shù)執(zhí)行過程發(fā)生錯誤就退出函數(shù) return(value);/讀一次的數(shù)據(jù),共五字節(jié) extern unsigned char ReadTempAndHumi(void) unsigned char i=0, check_value=0,count=0; EA=0; dht11=0; /拉低數(shù)據(jù)線大于18ms發(fā)送開始信號 Delay_1ms(20); /需大于18毫秒 dht11=1; /釋放數(shù)據(jù)線,用于檢測低電平的應答信號 /延時20-40us,等待一段時間后檢測應答信號,應答信號是從機拉低數(shù)據(jù)線80us Delay_10us(); Delay_10us(); Delay_10us(); Delay_10us(); if(dht11!=0)/檢測應答,信號應答信號是低電平 /沒應答信號 EA=1; return ERROR; else /有應答信號 while(dht11=0&count+= NUMBER) /檢測計數(shù)器是否超過了設定的范圍 dht11=1; EA=1; return ERROR; /讀數(shù)據(jù)出錯,退出函數(shù) count=0; dht11=1;/釋放數(shù)據(jù)線 /應答信號后會有一個80us的高電平,等待高電平結束 while(dht11!= 0& count+= NUMBER) dht11=1; EA=1; return ERROR;/退出函數(shù) /讀出濕.溫度值 for(i=0;iSIZE;i+) value_arrayi= ReadValue(); if(status=ERROR)/調用ReadValue()讀數(shù)據(jù)出錯會設定status為ERROR dht11=1; EA=1; return ERROR; /讀出的最后一個值是校驗值不需加上去 if(i!= SIZE-1) /讀出的五字節(jié)數(shù)據(jù)中的前四字節(jié)數(shù)據(jù)和等于第五字節(jié)數(shù)據(jù)表示成功 check_value +=value_arrayi; /end for /在沒用發(fā)生函數(shù)調用失敗時進行校驗 if(check_value=value_arraySIZE-1) /將溫濕度擴大10倍方便分離出每一位 humi_value=value_array0*10; temp_value=value_array2*10; dht11=1; EA=1; return OK; /正確的讀出dht11輸出的數(shù)據(jù) else /校驗數(shù)據(jù)出錯 EA=1; return ERROR; /*/ /*/ 5軟硬件系統(tǒng)的調試(一)調試軟件介紹Protel 99SE是應用于Windows9X/2000/NT操作系統(tǒng)下的EDA設計軟件,采用設計庫管理模式,可以進行聯(lián)網設計,具有很強的數(shù)據(jù)交換能力和開放性及3D模擬功能,可以完成電路原理圖設計,印制電路板設計和可編程邏輯器件設計等工作,可以設計32個信號層,16個電源-地層和16個機加工層。按照系統(tǒng)功能來劃分,Protel 99se主要包含6個功能模塊:電路工程設計部分、印刷電路板設計系統(tǒng)、自動布線系統(tǒng)、電路模擬仿真系統(tǒng)、可編程邏輯設計系統(tǒng)、高級信號完整性分析系統(tǒng)。存儲器和特殊功能寄存器的存取、中斷功能、靈活的指針Keil C51軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調試工具,如W
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

人人文庫網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。