遠程溫濕度測量系統(tǒng)_第1頁
遠程溫濕度測量系統(tǒng)_第2頁
遠程溫濕度測量系統(tǒng)_第3頁
遠程溫濕度測量系統(tǒng)_第4頁
遠程溫濕度測量系統(tǒng)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、遠程溫濕度測量系統(tǒng)任務制作一個遠程溫濕度測量儀,該測試儀具有溫濕度測量和遠程顯示等功能。其結構框圖如下:、要求1、基本要求(1)通過可編程控制器、變換器和溫濕度傳感器采集溫濕度數(shù)據(jù)并在LED上顯示;(2)溫度誤差1C,濕度誤差1%溫度測量范圍0c120C,濕度測量范圍1%99%(3)可用電池供電;2、發(fā)揮部分(1)設計紅外二極管發(fā)射電路和紅外接收電路,實現(xiàn)溫濕度數(shù)據(jù)的準確可靠發(fā)送和接收;(2)設計射頻發(fā)射電路和接收電路,實現(xiàn)溫濕度數(shù)據(jù)的準確可靠發(fā)送和接收;(3)最好采用微型化的溫濕度傳感器,無線傳輸距離5米;2.2.1無線數(shù)據(jù)發(fā)射接收模塊模塊所選用工作頻率為315M,采用聲表諧振器SAW穩(wěn)頻,

2、頻率穩(wěn)定度極高。電路采用ASK方式調制,當數(shù)據(jù)信號停止時發(fā)射電流降為零,功耗很低。電路本身未設編碼集成電路,而增加了一只數(shù)據(jù)調制三極管Q1,這種結構使得它可以方便地和其它固定編碼電路、滾動碼電路及單片機接口,而不必考慮編碼電路的工作電壓和輸出幅度信號值的大小。模塊輸出功率由電壓決定,電壓變化時發(fā)射頻率基本不變,發(fā)射電壓為3V時,空曠地傳輸距離約2050m,發(fā)射功率較小,當電壓5V時約100200m,當電壓9V時約300500m,當發(fā)射電壓為12V時,為最佳工作電壓,具有較好的發(fā)射效果,發(fā)射電流約60mA,空曠地傳輸距離700800m,發(fā)射功率約500mWo綜合考慮路面狀況,通過試驗選擇了70m

3、左右的發(fā)射距離。地址及數(shù)據(jù)信息的標識采用PT2262芯片。A0A7為地址,采用三進制編碼,即可為3的8次方共6561組編碼;D0D3為數(shù)據(jù)編碼引腳,采用二進制編碼即8421碼,可以編2的4次方共16組狀態(tài)碼。數(shù)據(jù)解碼器PT2272在嵌入式單片微機控制系統(tǒng)的干預下,對信息采集器送來的信息編碼數(shù)據(jù),進行數(shù)據(jù)融合,并完整、準確地解析出站址標識的數(shù)據(jù)信息。無線數(shù)據(jù)發(fā)射接收電路如圖2、圖3所示:快DOUTOGtlDSCEAll/MAW1的物67圖2無線數(shù)據(jù)發(fā)射模塊圖3無線數(shù)據(jù)接收模塊2.2.7溫度檢測模塊:溫度傳感器對室內(nèi)溫度進行測量,測量結果將被放置在DS18B20內(nèi)存中,并可以讓閱讀發(fā)出記憶功能的指

4、揮,閱讀內(nèi)容的片上存儲器。DS18B20為一線通信接口,必須在先完成ROM設定,否則記憶和控制功能將無法使用。主要首先提供以下功能命令之一:1)讀ROM,2)ROM匹配,3)搜索ROM,4)跳過ROM,5)報警檢查。這些指令操作作用在沒有一個器件的64位光刻ROM序列號,可以在掛在一線上多個器件選定某一個器件,同時,總線也可以知道總線上掛有有多少,什么樣的設備。電路如圖12所示:圖12溫度傳感電路DS18B20簡介:DS18B20是Dallas半導體公司生產(chǎn)的數(shù)字化溫度傳感器,一線總線的接口方式獨特切經(jīng)濟,可輕松地組建傳感網(wǎng)絡。其管腳圖如圖13所示:引和酢列Mg,底視叫2口幽.陽*Ml舊叫於g

5、引腳說明GNDDQVDDNC-地*城據(jù)1/口可選VU二一空腳圖13DS18B20引腳圖DS18B20功能特點:1 .圖特的單線接口,僅需一個端口引腳進行通訊。2 .簡單的多點分布應用。3 .無需外部器件。4 .可通過數(shù)據(jù)線供電。5 .零待機功耗。6 .測溫范圍-55+125C,以0.5C遞增,華氏期間-67C+257C,以0.9F遞增。7 .溫度以9位數(shù)字量讀出。8 .溫度數(shù)字轉換時間200ms供型值)。9 .用戶可定義的非易失性溫度報警設置。10 .報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件。11 .應用包括溫度控制、工業(yè)系統(tǒng)、消費品、溫度計或任何熱感測系統(tǒng)。液晶顯示LCD

6、128X64本系統(tǒng)采用液晶顯示模塊是128X64點陣的漢字圖形型液晶顯示模塊,可顯示漢字及圖形,內(nèi)置國標GB2312碼簡體中文字庫(16X16點陣)、128個字符(8X16點陣)及64X256點陣顯示RAM(GDRAM)??膳cCPU直接接口,提供兩種界面來連接微處理機:8-位并行及串行兩種連接方式。具有多種功能:光標顯示、畫面移位、睡眠模式等。該部分電路圖如下所示:腔4用M12S6RP1.OT2Or、P0.6VAD0P1.1/T2EXApo.i/ju:iiPl3P0AD2Pl.3Pl4P0.4/AD4Pl.5PO-SlADlPl.6PQ6TAD6Pl.7P0.7/AD?P3.3/MT1P2.0

7、SP2UA3P2.2/A3QP3.5FTIP3.4ITDP2J/A12喀如3EAJVPP2.6ZA34P2.1IAMXTALSTAL2RESETPS.lfTKDP3.7/RDsALEiPROGsP3.6WRAPSEJT12864送己35己己三己口AQVDDAlWPA2KLGHDSDA最小應用系統(tǒng)設計AT89S52是片內(nèi)有ROM/EPROM的單片機,因此,這種芯片構成的最小系統(tǒng)簡單、可靠。用AT單片機構成最小應用系統(tǒng)時,只要將單片機接上時鐘電路和復位電路即可,如圖3.1AT89S52單片機最小系統(tǒng)所示。由于集成度的限制,最小應用系統(tǒng)只能用作一些小型的控制單元。其應用特點:(1) 有可供用戶使用的

8、大量I/O口線。(2) 內(nèi)部存儲器容量有限。(3) 應用系統(tǒng)開發(fā)具有特殊性。圖3-2-151系列單片機最小系統(tǒng)1、時鐘電路AT89S52雖然有內(nèi)部振蕩電路,但要形成時鐘,必須外部附加電路。AT89S52單片機的時鐘產(chǎn)生方法有兩種。內(nèi)部時鐘方式和外部時鐘方式。本設計采用內(nèi)部時鐘方式,利用芯片內(nèi)部的振蕩電路,在XTAL1、XTAL2引腳上外接定時元件,內(nèi)部的振蕩電路便產(chǎn)生自激振蕩。本設計采用最常用的內(nèi)部時鐘方式,即用外接晶體和電容組成的并聯(lián)諧振回路。振蕩晶體可在1.2MHZ到12MHZ之間選擇。電容值無嚴格要求,但電容取值對振蕩頻率輸出的穩(wěn)定性、大小、振蕩電路起振速度有少許影響,CX1、CX2可在

9、20pF到100pF之間取值,但在60pF到70pF時振蕩器有較高的頻率穩(wěn)定性。所以本設計中,振蕩晶體選擇6MHZ,電容選擇65pFo2、復位電路AT89S52的復位是由外部的復位電路來實現(xiàn)的。復位引腳RST通過一個斯密特觸發(fā)器用來抑制噪聲,在每個機器周期的S5P2,斯密特觸發(fā)器的輸出電平由復位電路采樣一次,然后才能得到內(nèi)部復位操作所需要的信號。復位電路通常采用上電自動復位和按鈕復位兩種方式。最簡單的上電自動復位電路中上電自動復位是通過外部復位電路的電容充電來實現(xiàn)的。只要Vcc的上升時間不超過1ms,就可以實現(xiàn)自動上電復位。時鐘頻率用6MHZ時C取22uF,R取1KQo除了上電復位外,有時還需

10、要按鍵手動復位。本設計就是用的按鍵手動復位。按鍵手動復位有電平方式和脈沖方式兩種。其中電平復位是通過RST端經(jīng)電阻與電源Vcc接通而實現(xiàn)的。按鍵手動復位電路見圖3.2。時鐘頻率選用6MHZ時,C取22uF,Rs取200Q,Rk取1KQ。KSTAT89S52圖3-2-2AT89S52復位電路溫度檢測采用HS1101型溫度傳感器,HS1101是HUMIRE公司生產(chǎn)的變?nèi)菔较鄬穸葌鞲衅?,采用獨特的工藝設計。HS1101測量濕度采用將HS1101置于555振蕩電路中,將電容值的變化磚換成電壓頻率信號,可以直接被微處理器采集。設計的電路如圖1所示。IKvccTRIGOUTGND55551KRESETV

11、CCDISCHGTHOLDCVOLTTR58頌KR59IM_LC1彳二MHS1101圖1濕度測量電路555芯片外接電阻R57,R58與HS1101構成對HS1101的充電回路。7端通過芯片內(nèi)部的晶體管對地短路實現(xiàn)對HS1101的放電回路,并將引腳2,6端相連引入到片內(nèi)比較器,構成一個多諧波振蕩器,其中,R57相對于R58必須非常的小,但決不能低于一個最小值。R51是防止短路的保護電阻。HS1101作為一個變化的電容器,連接2和6弓I腳。引腳作為R57的短路弓|腳。HS1101的等效電容通過R57和R58充電達到上限電壓(近似于0.67VCC,時間記為T1),這時555的引腳3由高電平變?yōu)榈碗娖?/p>

12、,然后通過R58開始放電,由于R57被7引腳內(nèi)部短路接地,所以只放電到觸發(fā)界線(近似于0.33VCC,時間記為T2),這時555芯片的引腳3變?yōu)楦唠娖?。通過不同的兩個電阻R19,R20進行傳感器的不停充放電,產(chǎn)生方波輸出。充電、放電時間分別為h=C(&+此7)In2芍=r&gh】2輸出波形的頻率和占空比的計算公式如下:+Z2C(2J?5g+22;7)hi2180j?Fx1291xbi2=62087ZrD二工二餐+/=62+”=月T2R黨+R口620x2-t-51由此可以看出,空氣相對濕度與555芯片輸出頻率存在一定線性關系。表2給出了典型頻率濕度關系(參考點:25C,相對濕度:55%輸出頻率:

13、6.208kHz)??梢酝ㄟ^微處理器采集555芯片的頻率,然后查表即可得出相對濕度值。為了更好提高測量精度,將采用下位機負責采集頻率,將頻率值送入上位機進行分段處理。%:捌二%倒(U038T見6W10-葭RN+3.0114工10=%明1上440”10司工正產(chǎn))表1給出了典型頻率思度關系(參考62Q8Hz為55%RH;25RH0102030405。6070809010。Frequency朋526734661865036388627161?26029590137665623程序:濕度程序:#includereg51.h#defineucharunsignedchar#defineuintunsig

14、nedintuchartem0,tem1;uchartemp0,temp1;/初值uintf=0;/*名稱:timer0()功能:定時器1,每50000us中斷一次。入口參數(shù):*/voidtimer0()interrupt1EA=0;TR0=0;TR1=0;TL0=0xFF;/重裝值定時50000usOX4BFFHTH0=0x4B;tem0=TL1;/讀數(shù)teml=TH1;TL1=0x00;/定時器1清零TH1=0x00;f=1;作標注位TR0=1;TR1=1;EA=1;)/* 名稱:timer1()* 功能:計數(shù)器,用于計數(shù)將555輸出的頻率,以計數(shù)相對濕度。* 入口參數(shù):*1voidtim

15、er1()interrupt3/T1中斷,表示計數(shù)的頻率溢出,超出了可測量的頻率范圍,顯然在這里不可能。所以重新啟動。EA=0;TR0=0;TR1=0;TL0=0x00;/重裝值定時50000usTH0=0x4C;TL1=0x00;/定時器1清零TH1=0x00;TR0=1;TR1=1;EA=1;TMOD=0x51;/01010001定時器0在模式1下工作16位定時器,定時方式定時器1在模式1下工作16位計數(shù)器,T1負跳變加1TL0=0x00;/定時器0初值定時50000USTH0=0x4C;TL1=0x00;/定時器1清零TH1=0x00;ET0=1;/使能定時器0中斷ET1=1;/使能定時

16、器1中斷EA=1;使能總中斷TR0=1;/開始計時TR1=1;voiddelay(unsignedintm)/-(unsignedintn;for(;m0;m-)for(n=0;n125;n-);voidDdisp()(uchari;ucharcodedabit=0xfe,0xfd,0xfb,0xf7;ucharcodeda=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40;/0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40;共陽0f字型碼uchartp2

17、;tp0=temp0;/i是濕度的最后兩位tp1=temp1;/for(i=0;i2;i+)P2=dabiti;/濕度十位P0=datpi;delay;)voidtran()(f=teml;f=(f8)|tem0;f=f*20;/這里f的值是最終讀到的頻率,不同頻率對于不同相對濕度if(5623=f)&(f=6852)相對濕度在有效范圍內(nèi)(0%100%)(if(6734f)&(f=6852)temp0=0;temp1=(6852-f)*10/118;if(6618f)&(f=6734)temp0=1;temp1=(6734-f)*10/116;if(6503f)&(f=6618)temp0=2

18、;temp1=(6618-f)*10/115;if(6388f)&(f=6503)temp0=3;temp1=(6503-f)*10/115;if(6271f)&(f=6388)temp0=4;temp1=(6388-f)*10/117;if(6152f)&(f=6271)temp0=5;temp1=(6271-f)*10/119;if(6029f)&(f=6152)temp0=6;temp1=(6152-f)*10/123;if(5901f)&(f=6029)temp0=7;temp1=(6029-f)*10/128;if(5766f)&(f=5901)temp0=8;temp1=(5901

19、-f)*10/135;if(5623f)&(f=5766)temp0=9;temp1=(5766-f)*10/143;elsetemp0=0;temp1=0;voidmain()(uchari,k;ucharcount;Init_timer();count=0;while(1)(/延時/for(i=0;i200;i+)/for(k=0;k200;k+);tran();/*temp0&=0x0F;temp1&=0x0F;temp0=temp04;count=temp0|temp1;*/Ddisp();)溫度程序:#include#include#include#defineucharunsign

20、edchar#defineuintunsignedint;/*/sbitsbitsbitsbitseg1=P2A0;seg2=P2A1;seg3=P2A2;DQ=P1A7;/ds18b20端口sfrdataled=0x80;/顯示數(shù)據(jù)端口/*/uchartemp;ucharflag_get,count,num,minute,second;ucharcodetab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f);/7段數(shù)碼管段碼表共陰ucharstr3;/*/voiddelay1(ucharMS);unsignedcharReadTemper

21、ature(void);voidInit_DS18B20(void);unsignedcharReadOneChar(void);voidWriteOneChar(unsignedchardat);voiddelay(unsignedinti);/*/main()TMOD|=0x01;/定時器設置TH0=0xef;TL0=0xf0;IE=0x82;TR0=1;P2=0x00;count=0;while(1)str2=0x39;/顯示C符號str0=tabtemp/10;十位溫度str1=tabtemp%10;個位溫度if(flag_get=1)/定時讀取當前溫度temp=ReadTempera

22、ture();flag_get=0;)voidtim(void)interrupt1using1中斷,用于數(shù)碼管掃描和溫度檢測間隔(TH0=0xef;/定時器重裝值TL0=0xf0;num+;/*count1+;if(count1=100)(count1=0;*/if(num=50)/200ms檢測一次(num=0;flag_get=1;/標志位有效second+;if(second=60)(second=0;minute+;count+;if(count=1)P2=0xfe;dataled=str0;/數(shù)碼管掃描if(count=2)P2=0xfd;dataled=str1;if(count

23、=3)P2=0xfb;dataled=str2;count=0;/*/voiddelay(unsignedinti)延時函數(shù)while(i-);)/*/18b20初始化函數(shù)voidInit_DS18B20(void)(unsignedcharx=0;DQ=1;/DQ復位delay(8);/稍做延時DQ=0;/單片機將DQ拉低delay(80);/精確延時大于480usDQ=1;拉高總線delay(10);x=DQ;/稍做延時后如果x=0則初始化成功x=1則初始化失敗delay(5);)/讀一個字節(jié)unsignedcharReadOneChar(void)(unsignedchari=0;uns

24、ignedchardat=0;for(i=8;i0;i-)(DQ=0;/給脈沖信號dat=1;DQ=1;/給脈沖信號if(DQ)dat|=0x80;delay(5);)return(dat);)/寫一個字節(jié)voidWriteOneChar(unsignedchardat)unsignedchari=0;for(i=8;i0;i-)(DQ=0;DQ=dat&0x01;delay(5);DQ=1;dat=1;delay(5);/讀取溫度unsignedcharReadTemperature(void)(unsignedchara=0;unsignedcharb=0;unsignedchart=0;

25、/floattt=0;Init_DS18B20();WriteOneChar(0xCC);/跳過讀序號列號的操作WriteOneChar(0x44);/啟動溫度轉換delay(200);Init_DS18B20();WriteOneChar(0xCC);/跳過讀序號列號的操作WriteOneChar(0xBE);/讀取溫度寄存器等(共可讀9個寄存器)前兩個就是溫度a=ReadOneChar();b=ReadOneChar();b4;t=b;/tt=t*0.0625;/t=tt*10+0.5;/放大10倍輸出并四舍五入return(t);紅外發(fā)射程序:#includesbitDQ=P1A7;/d

26、s18b20端口staticbitOP,flag;紅外發(fā)射管的亮滅staticunsignedintcount;/延時計數(shù)器staticunsignedintendcount;/終止延時計數(shù)staticunsignedcharFlag,temp,count1,count2;紅外發(fā)送標志floattt;codeunsignedcharshuju10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/數(shù)碼管顯示數(shù)字0-9voidSendIRdata(charp_irdata);voiddelay();/*/voiddelay2(unsignedi

27、nti)/延時函數(shù)while(i-);voidhongwai_Delay(intj)延時函數(shù)intm;for(m=0;mj;m+)inti;for(i=0;i0;i-)DQ=0;/給脈沖信號dat=1;DQ=1;/給脈沖信號if(DQ)dat|=0x80;delay2(5);)return(dat);/EA=1;)/寫一個字節(jié)voidWriteOneChar(unsignedchardat)unsignedchari=0;/EA=0;for(i=8;i0;i-)DQ=0;DQ=dat&0x01;delay2(5);DQ=1;dat=1;)delay2(5);/EA=1;)/讀取溫度unsignedcharReadTemperature(void)(unsignedchara=0;unsignedcharb=0;unsignedchart=0;/floattt=0;Init_DS18B20();WriteOneChar(0xCC);/跳過讀序號列號的操作WriteOneChar(0x44);/啟動溫度轉換delay2(200);Init_DS18B20();WriteOneChar(0xCC);/跳過

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論