基于單片機(jī)sht11溫濕度傳感器電路圖于程序_第1頁
基于單片機(jī)sht11溫濕度傳感器電路圖于程序_第2頁
基于單片機(jī)sht11溫濕度傳感器電路圖于程序_第3頁
基于單片機(jī)sht11溫濕度傳感器電路圖于程序_第4頁
基于單片機(jī)sht11溫濕度傳感器電路圖于程序_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、-. z基于89C51單片機(jī)SHT11溫濕度傳感器電路圖于程序張志杰SHT11.h文件:#ifndef _SHT11_H_#define _SHT11_H_/*SHT11相關(guān)命令*/#define uchar unsigned char#define uint unsigned int#define TEM_TEST 0*03/溫度檢測(cè)命令#define HUM_TEST 0*05/濕度檢測(cè)命令#define REG_READ 0*07/讀存放器#define REG_WRITE 0*06/寫存放器#define FUNCTION_SET 0*01/設(shè)置SHT11的工作精度為8位/濕度 12位

2、溫度/*SHT11端口定義*/sbit SHT11_DATA=P31;sbit SHT11_SCK=P30;sbit P33=P33;sbit P32=P32;sbit P36=P36;sbit P37=P37;uchar flag_tempeture=0; /顯示溫度位置的標(biāo)志uchar flag_humidity=0; /顯示濕度位置的標(biāo)志uchar code str1= 0*10,0*06,0*09,0*08,0*08,0*09,0*06,0*00;/溫度圖標(biāo)uchar code str6_sht11=%RH ; uchar code str4_sht11=humi=;uchar cod

3、e str2_sht11=temp=;uchar code str7_sht11= ;/去除沒不要的顯示/*函數(shù)名稱:Delay()函數(shù)功能:SHT11內(nèi)部延時(shí)*/void Delay() ; ;/*函數(shù)名稱:Delay_Ms()函數(shù)功能:SHT11檢測(cè)等待延時(shí)函數(shù)說明:11ms/55ms/210ms 分別對(duì)應(yīng)8位/12位/14位 測(cè)量結(jié)果對(duì)應(yīng)的形參為N 則延時(shí)Nms*/void Delay_Ms(uint ms) / ms延時(shí)函數(shù) (AT89C51 11.0592MHz) uint i; uchar j; for(i=0;ims;i+) for(j=0;j200;j+); for(j=0;j

4、102;j+); /*函數(shù)功能:SHT11啟動(dòng)時(shí)序*/void SHT11_Start() SHT11_SCK=1; SHT11_DATA=1; Delay(); SHT11_DATA=0; Delay(); SHT11_SCK=0; Delay(); SHT11_SCK=1; Delay(); SHT11_DATA=1;/*函數(shù)名稱:SHT11_Sendbyte(uchar dat)函數(shù)功能: 向SHT11發(fā)送8bite數(shù)據(jù)*/void SHT11_Sendbyte(uchar dat) uchar i; SHT11_SCK=0; Delay(); for(i=0;i8;i+) if(dat

5、&0*80) SHT11_DATA=1; Delay(); else SHT11_DATA=0; Delay(); dat=dat1; SHT11_SCK=1; Delay(); SHT11_SCK=0; /*函數(shù)名稱SHT11_Answer():函數(shù)功能:檢測(cè)SHT11的響應(yīng)信號(hào)(在第九個(gè)時(shí)鐘周期)*/void SHT11_Answer() SHT11_SCK=1; Delay(); while(SHT11_DATA=1); SHT11_SCK=0; SHT11_DATA=1;/*函數(shù)名稱:SHT11_Test_Finish()函數(shù)功能:檢測(cè)SHT11溫濕度檢測(cè)是否完畢*/void SHT1

6、1_Test_Finish() while(SHT11_DATA=1);/*函數(shù)名稱:SHT11_Receivebyte()函數(shù)功能:從SHT11接收8bite數(shù)據(jù)*/uchar SHT11_Receivebyte() uchar i; uchar dat; SHT11_SCK=0; Delay(); for(i=0;i8;i+) SHT11_SCK=1; Delay(); dat=dat2.47V 當(dāng)位6為1時(shí)說明VDD2.47V即電量缺乏 位0說明當(dāng)前的測(cè)量分辨率 當(dāng)位0為1時(shí)說明測(cè)量精度:8位/濕度 12位溫度 當(dāng)位0為0時(shí)說明測(cè)量精度:12位濕度 14位溫度 默認(rèn)為0*/uchar S

7、HT11_Read_Register(uchar mand) uchar dat; SHT11_Start(); SHT11_Sendbyte(mand); SHT11_Answer(); dat=SHT11_Receivebyte(); SHT11_End(); return(dat);/*函數(shù)名稱:SHT11_Measure(uchar mand,uint time);函數(shù)功能:設(shè)置SHT11檢測(cè)功能,并返回相應(yīng)的檢測(cè)結(jié)果函數(shù)說明:mand形參用于設(shè)定溫度檢測(cè)還是濕度檢測(cè),time形參用于設(shè)定檢測(cè)過程中的等待時(shí)間,以確定檢測(cè)結(jié)果的位數(shù)11ms/55ms/210ms 分別對(duì)應(yīng)8位/12位/1

8、4位 */uint SHT11_Measure(uchar mand,uchar time) uint dat=0; uchar data_high,data_low; SHT11_Start(); SHT11_Sendbyte(mand); SHT11_Answer(); Delay_Ms(time); SHT11_Test_Finish(); data_high=SHT11_Receivebyte(); MCU_Answer(); data_low=SHT11_Receivebyte(); SHT11_End(); dat=(dat|data_high); dat=(dat23) temp

9、eture1=tempeture1+1; if(tempeture155) tempeture1=tempeture1+1; if(P37=1) if(tempeture1=16&tempeture1=400&r=600) P32=1; else P32=0; return(r);#endifDisplay.c文件:#include #include SHT11.h#define uchar unsigned char#define uint unsigned int#define TEM_TEST 0*03/溫度檢測(cè)命令#define HUM_TEST 0*05/濕度檢測(cè)命令#define

10、REG_READ 0*07/讀存放器#define REG_WRITE 0*06/寫存放器#define FUNCTION_SET 0*01/設(shè)置SHT11的工作精度為8位/濕度 12位溫度uchar DispData4 = 0, 1, 2, 3;code uchar DispSegmentP010=0*3f,0*06,0*1b,0*0f,0*26,0*2d,0*3d,0*07,0*3f,0*2f;code uchar DispSegmentP210=0*00,0*00,0*22,0*22,0*22,0*22,0*22,0*00,0*22,0*22; / 0 1 2 3 4 5 6 7 8 9

11、 %code uchar DispCtrl4 = 0*ef, 0*dF, 0*bf ,0*7F;sbit P16=P16;sbit P26=P26;sbit P34=P34;void Temp_delay(unsigned int j) uchar i; for(i=100;i0;i-) for(j;j0;j-); void Show(uchar *Buffer) uchar i; for (i=0; i4; i+) P1 = DispCtrli; P0 = DispSegmentP0*Buffer; P2 = DispSegmentP2*Buffer; if(P16=0) P26=1; Te

12、mp_delay(2); Buffer+; void DispConvert(uchar *DispAddr, uint Temp2Con) DispAddr0 = Temp2Con/1000; DispAddr1 = (Temp2Con - DispAddr0*1000)/100; DispAddr2 = (Temp2Con - DispAddr0*1000 - DispAddr1*100)/10; DispAddr3 = Temp2Con - DispAddr0*1000 - DispAddr1*100 - DispAddr2*10; void main() uint temp; uint dat; uint Hum; /float f; while(1) Show(DispData); SHT11_Write_Register(REG_WRITE,FUNCTION_SET); temp=SHT11_Measure(TEM_TEST,0*37); temp=SHT11_Convert_Tempeture12

溫馨提示

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