?? 獲取濕度值.c
字號:
/*****************************讀補償前的SHT11的返回值返回值:濕度值******************************/uchar ReadData(void){ uchar i,RHData; Start(); ///啟動傳輸命令 _nop_(); _nop_(); _nop_(); SAL=0; ///發送地址000 for (i=0;i<3;i++){ _nop_(); SCK=0; _nop_(); SCK=1; } ///發送讀濕度測量命令碼00101 for (i=0;i<5;i++){ if (i==2||i==4) SAL=1; else SAL=0; _nop_(); SCK=0; _nop_(); SCK=1; } ///時鐘保持一個周期的 _nop_(); SCK=0; _nop_(); SCK=1; SAL=1;///等待轉換完成 while(SAL) { WDI=0;WDI=1;//清看門狗 } ///開始讀取,第一字節忽略 for (i=0;i<8;i++){ SCK=0; _nop_(); SCK=1; _nop_(); } SCK=0; _nop_(); SAL=0; SCK=1; _nop_(); RHData=0; for (i=0;i<8;i++){///開始讀取一個字節的數據 SCK=0; _nop_(); SCK=1; _nop_(); if (SAL) RHData=RHData||0x01; else RHData=RHData&&0xfe; } SAL=1;///不再接收CRC檢驗字節 return RHData;}/**********************************獲取補償后的濕度值返回值:濕度值***********************************/int GetRH(void){ double c1,c2,c3,RH; uchar RH1; RH1=ReadData();///讀取SHT11返回值 c1=-4; c2=0.648; c3=-0.00000076; RH=c1+c2*RH1+c3*RH1*RH1;///補償后的濕度值 return (int)(RH+0.5); ///四舍五入取整 }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -