![單片機溫濕度傳感器課程設計_第1頁](http://file4.renrendoc.com/view/2271d7f3a4a1664f79aa39c8a49ed9c0/2271d7f3a4a1664f79aa39c8a49ed9c01.gif)
![單片機溫濕度傳感器課程設計_第2頁](http://file4.renrendoc.com/view/2271d7f3a4a1664f79aa39c8a49ed9c0/2271d7f3a4a1664f79aa39c8a49ed9c02.gif)
![單片機溫濕度傳感器課程設計_第3頁](http://file4.renrendoc.com/view/2271d7f3a4a1664f79aa39c8a49ed9c0/2271d7f3a4a1664f79aa39c8a49ed9c03.gif)
![單片機溫濕度傳感器課程設計_第4頁](http://file4.renrendoc.com/view/2271d7f3a4a1664f79aa39c8a49ed9c0/2271d7f3a4a1664f79aa39c8a49ed9c04.gif)
![單片機溫濕度傳感器課程設計_第5頁](http://file4.renrendoc.com/view/2271d7f3a4a1664f79aa39c8a49ed9c0/2271d7f3a4a1664f79aa39c8a49ed9c05.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
信息與電氣工程學院課程設計說明書〔2015/2016學年第2學期〕課程名稱: 單片機應用課程設計題目: 溫濕度監(jiān)測系統(tǒng)專業(yè)班級: 自動化3班學生:學號:指導教師:苗敬利、王立國、王靜爽、侯帥、何明星、趙奇設計周數(shù): 2周設計成績:2016年7月6日摘要本設計實現(xiàn)的是單片機溫濕度測量與控制系統(tǒng),通過在LCD1602上實時顯示室內(nèi)環(huán)境的溫度和相對濕度。系統(tǒng)采用集溫濕度傳感器與A/D轉換器為一體的DHT90傳感器芯片,通過單片機AT89C52處理進行顯示,其它模塊包括了實時時鐘/日期產(chǎn)生電路和超限報警處理電路,對所測量的值進行實時顯示和報警處理。 本文介紹了基于ATMEL公司的AT89C52系列單片機的溫濕度實時測量與控制系統(tǒng)和顯示系統(tǒng)的設計,包括介紹了硬件結構原理,并分析了相應的軟件的設計及其要點,包括軟件設計流程及其程序實現(xiàn)。系統(tǒng)結構簡單、實用,提高了測量精度和效率。關鍵詞:溫濕度;SHT10傳感器;單片機;DHT11傳感器1設計目的:制定溫濕度監(jiān)測系統(tǒng)的操作流程,指導溫濕度監(jiān)測系統(tǒng)的正確使用和維護,防止溫濕度監(jiān)測系統(tǒng)操作不當而造成損壞,并保證測試的數(shù)據(jù)準確。2溫濕度檢測的簡介2.1系統(tǒng)的概述溫濕度測量技術在當今的工廠加工、醫(yī)療區(qū)域、農(nóng)業(yè)區(qū)域中已經(jīng)起來重要的位子,例如資源的節(jié)約、產(chǎn)品質量的提高、產(chǎn)品數(shù)目的提高,這些問題現(xiàn)在已經(jīng)越來越受到外界的關注了。當今,知識信息和知識的工業(yè)化已經(jīng)開始了飛一般的進步,溫度與濕度的問題影響的范圍距離已經(jīng)不再之前談到的那些方面,它還表達在科技發(fā)展、衛(wèi)生用品、醫(yī)藥衛(wèi)生、國家安全基礎等多種方面。就上述幾個問題和情況,溫濕度檢測的準確性、穩(wěn)定性、快速性、安全性這些方面的設計要求變得尤其重要。在最近幾年中,使用SHT10控制的溫濕度傳感器和溫濕度數(shù)據(jù)的網(wǎng)上直接檢驗技術現(xiàn)已成為當下的一種發(fā)展方向和追求。本次畢業(yè)設計介紹和實現(xiàn)了一種單片機與自動化溫濕度傳感器互相結合,它們兩就組成了一種簡單的溫濕度檢測器系統(tǒng)。這種檢測系統(tǒng)具有以下的特點:易操作、制作成本低、準確性較高、持續(xù)時間長、較為穩(wěn)定。2.2系統(tǒng)設計選題的背景2.2.1國內(nèi)外研究現(xiàn)狀關于我國國內(nèi)溫濕度研究的時間相對于國外還是比較晚的,畢竟我國對于溫濕度檢測技術的研究才剛剛起步。初期我國只運用了相對落后的溫濕度的微機控制測量技術,而這門技術還是在參考當時國外發(fā)展國家的檢測技術的基礎上,這門技術局限于測量單方面環(huán)境因素,不支持復雜、多項的環(huán)境控制。我國關于溫濕度檢測技術從對國外發(fā)達技術的學習,經(jīng)過慢慢時間的不斷地實驗,現(xiàn)已經(jīng)發(fā)展到微測量電腦應用的層次上。目前,國內(nèi)用的技術基本上包括單片機,這種技術是利用單片機控制的溫濕度檢測的系統(tǒng),過程與步驟都比較簡單,還不能實現(xiàn)多參數(shù)多回路的溫濕度控制系統(tǒng),相對于那些發(fā)達的國家,技術還是比較落后。我國的溫濕度測量存在著以下問題:實現(xiàn)功能少、產(chǎn)量水平低,操作檢修步驟繁瑣。2.2.2國外外研究現(xiàn)狀關于國外溫濕度研究的時間相對于國內(nèi)來說還是較早。國外初期首先設計出通過組合的形式的模擬式器件,運用了就地取材的方法,將其收集的信號進行一系列的指示并加以記錄。近階段世界各國都在研究與開發(fā)基于電腦的控制溫濕度系統(tǒng),此系統(tǒng)受多因子的控制,其主要特點為精確性高、穩(wěn)定性強。以后溫濕度發(fā)展趨勢向著無人操作化、精度穩(wěn)定化發(fā)展。2.3系統(tǒng)的分類水汽壓型:測出大氣中對某一裝置的總壓力,然后再測出大氣中的水汽對同一裝置的壓力,學習文檔僅供參考將測出的兩個壓力進行百分比的比照壓力,即可以得出溫濕度的大小值。電阻式濕度片:通過外界溫濕度變化與電阻值的關系的來設計出的測量儀器。當外界的溫濕度改變時,與其用電路連接的電阻也隨之改變。溫濕度片就是這里的核心器件,它可以感應到外界溫濕度的變化。干濕球溫度表:通過兩只完全相同的溫度表,使他們并列在一起,其中用一只溫度表測量氣溫,另外一支溫度表表頭需要纏繞著浸透過純蒸餾水的脫脂紗布,這兩種溫度表結合起來就是干濕球溫度表。2.4系統(tǒng)設計的內(nèi)容與要求對某一特定環(huán)境下用溫室度傳感器感受到溫度和濕度變化,把這種變化轉化為電信號輸入到單片機中,然后進行各端口的控制使其數(shù)據(jù)顯示在LCD顯示屏上,完成了對倉庫額的溫室與濕度的測量。要求誤差在上下10%之內(nèi)。3數(shù)據(jù)采集部分3.1溫度傳感器采用熱電阻溫度傳感器。熱電阻是利用導體的電阻隨溫度變化的特性制成的測溫元件?,F(xiàn)應用較多的有鉑、銅、鎳等熱電阻。其主要的特點為精度高、測量范圍大、便于遠距離測量。鉑的物理、化學性能極穩(wěn)定,耐氧化能力強,易提純,復制性好,工業(yè)性好,電阻率較高,因此,鉑電阻用于工業(yè)檢測中高精密測溫和溫度標準。缺點是價格貴,溫度系數(shù)小,受到磁場影響大,在復原介質中易被玷污變脆。按IEC標準測溫范圍-200?650°C,百度電阻比W〔100〕=1.3850時,R0為100Q和10Q,其允許的測量誤差A級為土〔0.15C+0.002|t|〕,B級為±〔0.3C+0.005|t|〕。銅電阻的溫度系數(shù)比鉑電阻大,價格低,也易于提純和加工;但其電阻率小,在腐蝕性介質中使用穩(wěn)定性差。在工業(yè)中用于-50?180C測溫。3.2濕度傳感器測量空氣濕度的方式很多,其原理是根據(jù)某種物質從其周圍的空氣吸收水分后引起的物理或化學性質的變化,間接地獲得該物質的吸水量及周圍空氣的濕度。電容式、電阻式和濕漲式濕敏原件分別是根據(jù)其高分子材料吸濕后的介電常數(shù)、電阻率和體積隨之發(fā)生變化而進行濕度測量的。采用HS1100/HS1101濕度傳感器°HS1100/HS1101電容傳感器,在電路構成中等效于一個電容器件,其電容量隨著所測空氣濕度的增大而增大。不需校準的完全互換性,高可靠性和長期穩(wěn)定性,快速響應時間,專利設計的固態(tài)聚合物結構,由頂端接觸〔HS1100〕和側面接觸〔HS1101〕兩種封裝產(chǎn)品,適用于線性電壓輸出和頻率輸出兩種電路,適宜于制造流水線上的自動插件和自動裝配過程等。相對濕度在1%—100%RH范圍內(nèi);
電容量由16pF變到200pF,其誤差不大于土2%RH;響應時間小于5s;溫度系數(shù)為0.04pF/°C。3.3采用的傳感器大連北方測控工程生產(chǎn)的溫濕度傳感器DHT90,將兩者的功能集成在一起,并且輸出的是數(shù)字信號,不需要再進行A/D轉換,其溫度測量的范圍為-40C?123.8C,分辨率為0.01C;測濕范圍為0?100%RH,分辨率為0.03%RH。 綜合上面各種設計的技術要求和傳感器的特性,考慮到設計簡約化,選擇使用傳感器DHT90,輸出的是數(shù)字信號,不需要進行A/D轉換,簡化了系統(tǒng)設計。4系統(tǒng)設計方案4.1系統(tǒng)框架圖本系統(tǒng)由單片機主控電路,DHT11溫濕度采集模塊,1602液晶顯示模塊3部分組成,以下圖為框架圖。單片機AT89C52液晶顯示1602單片機AT89C52液晶顯示16024.2.1方案一:采用溫濕度一體化的傳感器DHT11采集溫濕度數(shù)據(jù),DHT11數(shù)字溫濕度傳感器是一款含有已校準數(shù)字信號輸出的溫濕度復合傳感器。它應用專用的數(shù)字模塊采集技術和溫濕度傳感技術,確保產(chǎn)品具有極高的可靠性與卓越的長期穩(wěn)定性。傳感器包括一個電阻式感濕元件和一個NTC測溫元件,并與一個高性能8位單片機相連接。因此該產(chǎn)品具有品質卓越、超快響應、抗干擾能力強、性價比極高等優(yōu)點。
DHT11實物圖DHT11實物圖4.2.2方案二:由于本實驗proteus庫中無dhtl1模塊,使用shtl1代替。為了營造無人看守狀態(tài),本次設計中還應用了遠程通信系統(tǒng)。方案一中系統(tǒng)的控制核心是AT89C52單片機,它的主要作用是讀取溫濕度傳感器工作時的內(nèi)部參數(shù),測試的結果可以顯示在LCD上面。晶振電路模塊? >單片機 ?顯示模塊LCDLWO16L復位電路< ?AT89C52■ 敏感元件.溫濕度傳感器SHT1O4.3系統(tǒng)功能模塊設計4.3.1中央控制單元本次溫濕度檢測系統(tǒng)設計中,由單片機組成的中央控制單元有十分重要的作用。這是整個系統(tǒng)的大腦,它發(fā)出操作命令指揮系統(tǒng)工作。該單片機不僅可以控制LCD顯示屏幕的工作狀態(tài),還可以時時刻刻管理著監(jiān)測著外部環(huán)境的溫濕度的變化的溫濕度傳感器的工作狀態(tài)。依照所需設計的要求和控制的目的,本次畢業(yè)設計選擇7AT89C52芯片,該芯片里面包含4kBytesISP的能多次燒入的Flash器件,是一類簡單高效率的CMOS8位芯片。AT89C52芯片是使用了ATMEL公司廠家中的較為先進高級的控制與制作技術做為支持動力。AT89C52芯片還包括MCS-52系統(tǒng)的操作命令與89C52管腳的排列,其中較重要的8位CPU和ISPFlash存儲單元是它的核心部件。AT89C52芯片的系統(tǒng)功能具有巨大的優(yōu)勢,它可以滿足設計中系統(tǒng)穩(wěn)定運行的基本要求。AT89C52芯片具16位可編程定時計數(shù)器3個,有引腳40個,全雙工串行通信口2個,外部雙向輸入/輸出〔I/O〕端口32個,外中斷口2個,讀寫口線2個,AT89C52芯片的管腳結構如以下圖所示:5|a§11§i1■7^-i1§§is1i1■r>—'i兵II-;.留Lp■r*—;了二Ll'ilr ,H.%.……單片機4.3.2晶振電路模塊與復位電路模塊晶振電路模塊:單片機的工作條件是要在時鐘驅動的作用下才可以穩(wěn)定的進行工作,所需的電容大小通常為30PF。單片機工作時需要一個信號脈沖,晶振的作用就是提供這個信號脈沖。在時鐘驅動作用下,晶振電路所提供的信號脈沖就是單片機的工作速度。舉個例子來說明,一個頻率為12MHZ的晶振電路芯片,它的工作速度是12MHZ每秒的運行速度,和我們使用的電腦的CPU一個道理。就于多大的頻率才能使單片機更好的更穩(wěn)點的工作的問題,一般情況下其工作時所需要的頻率在24MHZ左右,超過這個值,系統(tǒng)工作就不穩(wěn)定了。單片機系統(tǒng)的工作速度取決于時鐘信號,其內(nèi)部鑲有時鐘振蕩電路,在單片機的外部接通一個振蕩源就可以工作了。復位電路模塊:復位電路在設計的系統(tǒng)中起著重要的作用,它保障了設計的系統(tǒng)可以在穩(wěn)定的環(huán)境下工作,復位電路的主要作用功能就是上電復位。當復位信號消除的時候,系統(tǒng)微機電路才可以穩(wěn)定高效的工作,消除復位信號的條件是VCC的電壓在4.7V與5.2V之間,只有在提供穩(wěn)定無誤差的時鐘信號才能實現(xiàn)本次的設計。以下圖為其仿真圖:
4.3.3顯示模塊LCD顯示電路是本系統(tǒng)的功能具體表達的重要模塊,實現(xiàn)了對溫濕度檢測的液晶屏控制的功能。溫濕度顯示電路的組成有SHT10溫濕度傳感器、LCD液晶顯示屏幕。其顯示模塊先接受來自單片機處理后的信號,再將其結果顯示在液晶屏幕°STC89C52的P2口接1602的8位數(shù)據(jù)線,通過輸出數(shù)據(jù)控制1602顯示不同的提示字符。1602本身內(nèi)置各種字符,還可以自定義顯示字符。本設計中根據(jù)不同場合1602會顯示各種提示字符。P0.0~P0.2接1602控制端,其中P0.0接使能端E,寫操作時,使能端下降沿有效。P0.1接讀寫控制端R/W,R/W=0,讀操作;R/W=1,寫操作。P0.2接寄存器選擇端RS,RS=0,寫操作時指向指令寄存器,讀操作時指向地址寄存器;RS=1,無論讀操作還是寫操作都指向數(shù)據(jù)寄存器。LCD1602的VSS為電源地,需接地;VDD為電源電壓;V0為LCD驅動電壓,接電位器,通過調(diào)節(jié)電位器控制顯示的亮度,使LCD顯示清晰而無黑影。背光電源線LCD正負兩端分別接電源和地即可。。以下圖為其仿真圖:4.3.4溫濕度傳感器利用型號為SHT10的溫濕度傳感器來測試倉庫的溫度和濕度。以下圖為其仿真圖:仿真圖上三個按鍵:fI孑控制操作。當一打到左邊時為濕度的調(diào)節(jié),當T丁到右邊的時候為溫度的調(diào)節(jié);f是增大按鍵,1是減小按鍵。5系統(tǒng)的仿真與調(diào)試5.1Proteus對系統(tǒng)仿真根據(jù)設計要求,從Proteus元件庫中找到所需要用到的元件,畫好電路圖并且檢查有無錯誤。最后通過keiluVision軟件編寫的C語言程序,轉換成HEX文件下載到畫好的的電路上進行調(diào)試。以下是系統(tǒng)的仿真電路圖:系統(tǒng)運行圖|TEFlPa(3*-8C|火(口序魚系統(tǒng)運行圖|TEFlPa(3*-8C|火(口序魚Wr*RH5.2LCD的仿真LCJL?I Lr-<iiiin tTl^-:'l> RV111.vt'exrRV111.vt'exrTEHP:02&■%HUMI:082.1gRH蚩晝歲職差luBoSBaSBET C-4DO'寸'1?-■L?■F-->>>cn!=!7 C-1001■';;—:■:■,:LcdLcd運行圖5.3硬件運行結果ll■1-P1EVTJriimw■:■TTft.HCT*.12PSJVVJuDp3s?mETll■1-P1EVTJriimw■:■TTft.HCT*.12PSJVVJuDp3s?mETfsjfrw-rrra.^-ianajsmOOJW:P3.7-TnrE?治t-+Mt-TSFE1黑MEPP3運行結果圖運行結果圖實物運行圖6總結歷經(jīng)兩周的課設,又懂得了很多的知識,在這兩周的時間里,感受良多吧可以算是。因為我們做的課設里面因為proteus庫中沒有DHT11元件,導致我們做了將近一個星期的課設全部推翻。無奈的對著那一堆程序沒日沒夜的改著。從一開始的不了解,覺得很復雜,有傳感器、單片機和1602,最麻煩的是還要編程序;到最后的完成,對各個模塊都有了更深認知。本設計綜合利用單片機技術、傳感器技術、數(shù)字電子技術和LCD顯示等科學知識,完成了單片機控制的溫度、濕度和顯示裝置的設計,比較系統(tǒng)地介紹了硬件的組成及設計方法并利用單片機C語言完成了系統(tǒng)軟件的設計。把傳感器技術應用到單片機控制系統(tǒng)中,實現(xiàn)了對環(huán)境溫度和濕度的數(shù)據(jù)采集和讀取。利用LCD液晶的顯示技術完成了環(huán)境溫度、濕度及顯示電路的設計。在本設計的基礎上皆有繼電器模塊,可以外接調(diào)溫調(diào)濕電器,把功能擴展延伸為實現(xiàn)對環(huán)境溫濕度的控制。整個系統(tǒng)軟硬件搭配合理,設計、開發(fā)、維護方便,性價比高原理圖的繪制使我從新學習了一次proteus,對軟件種元器件更加熟悉,畫仿真圖時更為流暢。在進行設計之前有著很多要解決的問題,比方元器件的選擇問題、各個模塊的設計和主程序的編程。通過這次設計,我從到圖書館的網(wǎng)站查找相應的資料應用到對應電路參與設計的思考。每個模塊都要經(jīng)過多次的設計,不斷的試驗,讓我對之前在學校所學的書本上的理論知識有了更為深刻的了解。在完成畢業(yè)設計的過程是一次難得的理論與實際相結合的過程,在這段時間我更為深刻的理解和掌握了大學期間所學的一些知識,例如C語言的編程、數(shù)字模擬電路、單片機的簡單應用、proteus和keil軟件的使用與設計。在設計過程中,由于時間和本人能力的限制,設計中存在一些需要改良和優(yōu)化的地方。測量精度有待進一步提高,軟件設計也存在不合理之處。但從設計過程中,對于單片機有更進一步的認識,對用于單片機仿真的軟件操作能力也明顯提高,通過此設計,本人受益頗豐。參考文獻李全利等編著.《單片機原理及應用》.北京:清華大學出版社,2006.02:14?36.楊西明,朱騏主編.《單片機編程與應用入門》.北京:機械工業(yè)出版社,2004.06:24?38.先鋒工作室編著.《單片機程序設計實例》.北京:清華大學出版社,2003.01:68?78.謝宜仁主編.《單片機實用技術問答》.北京:人民郵電出版社,2003.02:11?20. [5]孫江宏,李良玉等編著.《Protel99電路設計與應用》.北京:機械工業(yè)出版社,2004.07.[6]房小翠,王金鳳編著.《單片機實用系統(tǒng)設計技術》.北京:國防工業(yè)出版社,1999.06.[7]南建輝等編著.《MCS-51單片機原理及其應用實例》.北京:清華大學出版社,2004.03.何宏主編.《單片機原理與接口技術》.北京:國防工業(yè)出版社,2006.07:15?30葉健斌.《基于單片機嵌入式系統(tǒng)的GPS應用》.電子質量,2008:〔7〕16?24.王靜.《通用庫房溫濕度測控系統(tǒng)》.青島:中國海洋大學,2009.05:30?33.劉寶元,張玉虹.《基于單片機的溫濕度監(jiān)控系統(tǒng)設計》.國外電子測量技術,2009.12.陳汝全.《實用微機與單片機控制技術》.成都:電子科技大學出版,2005.06:16?17.附錄1:DHT11程序//濕度20-90溫度0-50采樣間隔1S#include<intrins.h>#include"led.h”sbitDQ=P3"7; //DTH11ucharcodeASCII[]=〃0123456789%c〃;ucharcodetable0[]=" Hum:00”;ucharcodetable1[]=" Tem:00”;uchartem;ucharhum;display0[2]={0,0};display1[2]={0,0};//**************************延時函數(shù)voiddelay_ms(uintz){uintx,y;for(x=z;x>0;x—)for(y=114;y>0;y--);}//**************************初始化DTH11bitInit_DTH11(){bitflag;ucharnum;DQ=0;delay_ms(19);//>18msDQ=1;for(num=0;num<10;num++);//20-40us 34.7usfor(num=0;num<12;num++);flag=DQ;for(num=0;num<11;num++);//DTH響應80usfor(num=0;num<24;num++);//DTH拉高80usreturnflag;}//****************************讀DTH11數(shù)據(jù)ucharDTH11_RD_CHAR(){ucharbyte=0;ucharnum;ucharnum1;while(DQ==1);for(num1=0;num1<8;num1++){while(DQ==0);byte<<=1; //高位在前for(num=0;DQ==1;num++);if(num<10)byte|=0x00;elsebyte|=0x01;}returnbyte;}//******************************讀取DTH11溫度和濕度voidDTH11_DUSHU()ucharnum;if(Init_DTH11()==0){hum=DTH11_RD_CHAR(); //比正常值高7度左右DTH11_RD_CHAR();tem=DTH11_RD_CHAR();DTH11_RD_CHAR();DTH11_RD_CHAR();for(num=0;num<17;num++);//最后BIT輸出后拉低總線50usDQ=1;}}//***********************************顯示函數(shù)voidDisplay_DTH11(){display0[1]=hum/10%10;display0[0]=hum%10;LcdShowStr(0,0,table0);DisplayOneChar(8, 0,ASCII[display0[1]]);DisplayOneChar(9, 0,ASCII[display0[0]]);DisplayOneChar(10,0,ASCII[10]); //顯示濕度display1[1]=tem/10%10;display1[0]=tem%10;LcdShowStr(0,1,tablel);DisplayOneChar(8, 1,ASCII[display1[1]]);DisplayOneChar(9, 1,ASCII[display1[0]]);DisplayOneChar(10,1,0xdf);DisplayOneChar(11,1,ASCII[11]); //顯示溫度}//*******************************主函數(shù)main()tem=0;hum=0;delay_ms(1000); //DTH11開始1s有錯誤輸出InitLcd1602();while(1){DTH11_DUSHU();Display_DTH11();delay_ms(2000);}}附錄2:SHT10程序#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#definenoACK0 //繼續(xù)傳輸數(shù)據(jù),用于判斷是否結束通訊#defineACK1 //結束數(shù)據(jù)傳輸;〃地址命令讀/寫#defineSTATUS_REG_W0x06//00000110#defineSTATUS_REG_R0x07//00000111#defineMEASURE_TEMP0x03//00000011#defineMEASURE_HUMI0x05//00000101#defineRESET0x1e//00011110enum{TEMP,HUMI};sbitDATA=P2"5;sbitSCK=P2"4;sbitRS=P2"0;sbitRW=P2"1;sbitE=P2”2;sfrDBPort=0x80; //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.數(shù)據(jù)端口/******** DS1602函數(shù)聲明********/voidLCD_Initial();voidGotoXY(unsignedcharx,unsignedchary);voidPrint(unsignedchar*str);voidLCD_Write(bitstyle,unsignedcharinput);/********SHT10函數(shù)聲明********/voids_connectionreset(void);chars_measure(unsignedchar*p_value,unsignedchar*p_checksum,unsignedcharmode);voidcalc_sth10(float*p_humidity,float*p_temperature);//floatcalc_dewpoint(floath,floatt);/""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""/****************************************************************〃寫字節(jié)程序chars_write_byte(unsignedcharvalue){unsignedchari,error=0;for(i=0x80;i>0;i>>=1) //高位為1,循環(huán)右移{和要發(fā)送的數(shù)相與,結果為發(fā)送的位
elseDATA=0;SCK=1;_nop_();_nop_();_nop_();SCK=0;}DATA=1;SCK=1;error=DATA;常_nop_();_nop_();_nop_();SCK=0;DATA=1;returnerror;}〃讀字節(jié)程序chars_read_byte(unsignedcharack)// —{unsignedchari,val=0;DATA=1;for(i=0x80;i>0;i>>=1){//延時3us//釋放數(shù)據(jù)線////延時3us//釋放數(shù)據(jù)線//檢查應答信號,確認通訊正//error=1通訊錯誤//釋放數(shù)據(jù)線//高位為1,循環(huán)右移SCK=1;〃讀一位數(shù)據(jù)線的值SCK=0;}DATA=!ack;通訊;SCK=1;}DATA=!ack;通訊;SCK=1;_nop_();_nop_();_nop_();SCK=0;_nop_();_nop_();_nop_();DATA=1;returnval;}//如果是校驗,讀取完后結束//延時3us//釋放數(shù)據(jù)線〃啟動傳輸voids_transstart(void)//generatesatransmissionstart// //DATA: ||// — —//SCK:___| |___| | {DATA=1;SCK=0; //準備_nop_();SCK=1;_nop_();DATA=0;_nop_();SCK=0;_nop_();_nop_();_nop_();SCK=1;_nop_();DATA=1;_nop_();SCK=0;}〃連接復位voids_connectionreset(void)//communicationreset:DATA-line=1andatleast9SCKcyclesfollowedbytransstart// //DATA: ||// _ _ _ _ _ _ _ _ _ — —//SCK:__||__||__||__||__||__||__||__||__|| | |___| | {unsignedchari;DATA=1;SCK=0; //準備for(i=0;i<9;i++) //DATA保持高,SCK時鐘觸發(fā)9次,發(fā)送啟動傳輸,通迅即復位{SCK=1;SCK=0;s_transstart();}s_transstart();}//啟動傳輸//軟復位程序chars_softreset(void)//resetsthesensorbyasoftreset{unsignedcharerror=0;s_connectionreset(); //啟動連接復位error+=s_write_byte(RESET); //發(fā)送復位命令returnerror;//error=1通訊錯誤returnerror;/*讀狀態(tài)寄存器chars_read_statusreg(unsignedchar*p_value,unsignedchar*p_checksum)// —//readsthestatusregisterwithchecksum(8-bit){unsignedcharerror=0;s_transstart(); //transmissionstarterror=s_write_byte(STATUS_REG_R);//sendcommandtosensor*p_value=s_read_byte(ACK); //readstatusregister(8-bit)*p_checksum=s_read_byte(noACK); //readchecksum(8-bit)returnerror; //error=1incaseofnoresponseformthesensor}//寫狀態(tài)寄存器chars_write_statusreg(unsignedchar*p_value)//writesthestatusregisterwithchecksum(8-bit){unsignedcharerror=0;s_transstart(); //transmissionstarterror+=s_write_byte(STATUS_REG_W);//sendcommandtosensorerror+=s_write_byte(*p_value);//sendvalueofstatusregisterreturnerror; //error>=1incaseofnoresponseformthesensor}*/〃溫濕度測量chars_measure(unsignedchar*p_value,unsignedchar*p_checksum,unsignedcharmode)〃進行溫度或者濕度轉換,由參數(shù)mode決定轉換內(nèi)容;
unsignederror=0;unsignedinti;s_transstart(); //啟動傳輸switch(mode) //選擇發(fā)送命令//enum{TEMP,HUMI};〃已經(jīng)在頭文件中定義{error+=s_write_byte(MEASURE_TEMP);break; //測量溫度caseHUMI:error+=s_write_byte(MEASURE_HUMI);break;//測量濕度default :break;}for(i=0;i<65535;i++)if(DATA==0)break;//等待測量結束if(DATA)error+=1; //如果長時間數(shù)據(jù)線沒有拉低,說明測量錯誤*(p_value)=s_read_byte(ACK);//讀第一個字節(jié),高字節(jié)(MSB)*(p_value+1)=s_read_byte(ACK); //讀第二個字節(jié),低字節(jié)(LSB)*p_checksum=s_read_byte(noACK);//readCRC校驗碼returnerror; //error=1通訊錯〃溫濕度值標度變換及溫度補償voidcalc_sth10(float*p_humidity,float*p_temperature)
正公式正公式賴性補償constfloatC1=-4.0;constfloatC2=+0.0405;constfloatC3=-0.0000028;constfloatT1=+0.01;//12位濕度精度修正公式//12位濕度精度修正公式//12位濕度精度修正公式//14位溫度精度5V條件修正公式正公式賴性補償constfloatC1=-4.0;constfloatC2=+0.0405;constfloatC3=-0.0000028;constfloatT1=+0.01;//12位濕度精度修正公式//12位濕度精度修正公式//12位濕度精度修正公式//14位溫度精度5V條件修constfloatT2=+0.00008;floatrh=*p_humidity;floatt=*p_temperature;floatrh_lin;floatrh_true;floatt_C;//14位溫度精度5V條件修//rh: 12位濕度//t: 14位溫度//rh_lin:濕度linear值//rh_true:濕度ture值//t_C:溫度°Ct_C=t*0.01-40; //補償溫度rh_lin=C3*rh*rh+C2*rh+C1; //相對濕度非線性補償rhtrue=(tC-25)*(T1+T2*rh)+rhlin; //相對濕度對于溫度依if(rh_true<0.1)rh_true=0.1;*p_temperature=t_C;*p_humidity=rh_true;//濕度最大修正//濕度最小修正//返回溫度結果//濕度最大修正//濕度最小修正//返回溫度結果//返回濕度結果/*floatcalc_dewpoint(floath,floatt){floatlogEx,dew_point;logEx=0.66077+7.5*t/(237.3+t)+(log10(h)-2);dew_point=(logEx-0.66077)*237.3/(0.66077+7.5-logEx);returndew_point;}*/******************************************************************************"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""/*****************************************************************************//DS1602程序〔1602.c〕://#include<tou.h>**************************************************************unsignedcharLCD_Wait(void){RS=0;RW=1; _nop_();E=1; _nop_();E=0;returnDBPort;}//向LCD寫入命令或數(shù)據(jù)********************************************************#defineLCD_COMMAND 0 //Command學習文檔僅供參考#defineLCD_DATA1//Data#defineLCD_CLEAR_SCREEN0x01//清屏#defineLCD_HOMING0x02//光標返回原點voidLCD_Write(bitstyle,unsignedcharinput){E=0;RS=style;RW=0; _nop_();DBPort=input; _nop_();//注意順序E=1; _nop_();//注意順序E=0; _nop_();LCD_Wait();}//設置顯示模式************************************************************#defineLCDSHOW0x04//顯示開#defineLCDHIDE0x00//顯示關#defineLCD_CURSOR0x02//顯示光標#defineLCD_NO_CURSOR0x00//無光標#defineLCD_FLASH0x01//光標閃動#defineLCD_NO_FLASH0x00//光標不閃動voidLCD_SetDisplay(unsignedcharDisplayMode)
LCD_Write(LCD_COMMAND,0x08|DisplayMode);//設置輸入模式************************************************************#defineLCDACUP0x02#defineLCDACDOWN0x00//default#defineLCDMOVE0x01//畫面可平移#defineLCDNOMOVE0x00#defineLCDACUP0x02#defineLCDACDOWN0x00//default#defineLCDMOVE0x01//畫面可平移#defineLCDNOMOVE0x00//defaultvoidLCD_SetInput(unsignedcharInputMode)LCD_Write(LCD_COMMAND,0x04|InputMode);LDvoidLCD_Initial()E=0;LCD_Write(LCD_COMMAND,0x38);//8LCD_Write(LCD_COMMAND,0x38);//8位數(shù)據(jù)端口,2行顯示,5*7點陣LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);//開啟顯示,無光標LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);//清屏LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);//開啟顯示,無光標LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);//清屏LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);//AC遞增,畫面不動//液晶字符輸入的位置************************voidGotoXY(unsignedcharx,unsignedchary){if(y==0)LCD_Write(LCD_COMMAND,0x80|x);if(y==1)LCD_Write(LCD_COMMAND,0x80|(x-0x40));}〃將字符輸出到液晶顯示voidPrint(unsignedchar*str){while(*str!='\0'){LCD_Write(LCD_DATA,*str);str++;}}******************************************************************************"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫巡檢報告
- 2025年汝州職業(yè)技術學院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2025年朔州陶瓷職業(yè)技術學院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 專項07 用轉化思想求不規(guī)則圖形的角度
- 專題01 先秦時期:中國境內(nèi)早期人類與文明的起源、早期國家與社會變革(練習)
- 中班戶外主題活動策劃方案五篇
- 幼兒園綜治宣傳月活動策劃方案三篇
- 公司企業(yè)管理咨詢合同
- 擋土墻施工合同
- 車聯(lián)網(wǎng)技術推廣項目合同
- 2024年湖南高速鐵路職業(yè)技術學院高職單招數(shù)學歷年參考題庫含答案解析
- 上海鐵路局招聘筆試沖刺題2025
- 國旗班指揮刀訓練動作要領
- 春季安全開學第一課
- 植物芳香油的提取 植物有效成分的提取教學課件
- 肖像繪畫市場發(fā)展現(xiàn)狀調(diào)查及供需格局分析預測報告
- 2021-2022學年遼寧省重點高中協(xié)作校高一上學期期末語文試題
- 同等學力英語申碩考試詞匯(第六版大綱)電子版
- 墓地個人協(xié)議合同模板
- 2024年部編版初中語文各年級教師用書七年級(上冊)
- 中日合同范本
評論
0/150
提交評論