📄 获取湿度值.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 + -