各位老师,我对温度湿度进行测量,使用数字温湿度传感器DHT11,显示测量值时发现一 上电湿度数值就不停跳动,跳动数值幅度有十几,温度数值基本没变,感觉测量湿度数 值不正确,请各位帮忙指导下,谢谢。 程序如下,MCU为16F873,晶振为10MHz #include "pic.h" #define uchar unsigned char #define uint unsigned int #define LCD_RS RC5 #define LCD_RW RC6 #define LCD_EN RC7 #define DH RC4 //定义DHT11数据端口 #define DH_HIGH() TRISC4=1 //设置数据口为输入 #define DH_LOW() TRISC4=0;DH = 0 //设置数据口为输出 uchar RH_data_H_temp,RH_data_L_temp,T_data_H_temp,T_data_L_temp,checkdata_temp; uchar RH_data_H,RH_data_L,T_data_H,T_data_L,checkdata; uchar flag,temp,comdata; void delayus(uint x,uchar y) { uint i; uchar j; for(i=x;i>0;i--); for(j=y;j>0;j--); } void COM() { uchar i; for(i=0;i<8;i++) { flag=2; while((!(DH))&&flag++);//等待高电平 if(flag==1)break; delayus(0,2); delayus(0,2); delayus(0,2); //delayus(0,2); temp=0; if(DH)temp=1; flag=2; while((DH)&&flag++); //等待低电平 //超时则跳出for循环 if(flag==1)break; //判断数据位是0还是1 // 如果高电平高过预定0高电平值则数据位为 1 comdata<<=1; comdata"=temp; //0 } } //-------------------------------- //-----湿度读取子程序 ------------ //-------------------------------- //----以下变量均为全局变量-------- //----温度高8位== U8T_data_H------ //----温度低8位== U8T_data_L------ //----湿度高8位== U8RH_data_H----- //----湿度低8位== U8RH_data_L----- //----校验 8位 == U8checkdata----- //-------------------------------- void RH(void) { //主机拉低18ms DH_LOW(); delayus(5000,200); DH_HIGH(); //总线由上拉电阻拉高 主机延时20-40us delayus(0,2); delayus(0,2); delayus(0,2); delayus(0,2); //主机设为输入 判断从机响应信号 DH_HIGH(); //判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行 if(!DH) { flag=2; //判断从机是否发出 80us 的低电平响应信号是否结束 while((!(DH))&&flag++); flag=2; //判断从机是否发出 80us 的高电平,如发出则进入数据接收状态 while((DH)&&flag++); //数据接收状态 COM(); RH_data_H_temp=comdata; COM(); RH_data_L_temp=comdata; COM(); T_data_H_temp=comdata; COM(); T_data_L_temp=comdata; COM(); checkdata_temp=comdata; DH_HIGH(); //数据校验 temp=(T_data_H_temp+T_data_L_temp+RH_data_H_temp+RH_data_L_te mp); if(temp==checkdata_temp) { RH_data_H=RH_data_H_temp; RH_data_L=RH_data_L_temp; T_data_H=T_data_H_temp; T_dataL=T_data_L_temp; checkdata=checkdata_temp; } } //fi } void
- 粉丝: 167
- 资源: 3万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- pta题库答案c语言之排序4统计工龄.zip
- pta题库答案c语言之树结构7堆中的路径.zip
- pta题库答案c语言之树结构3TreeTraversalsAgain.zip
- pta题库答案c语言之树结构2ListLeaves.zip
- pta题库答案c语言之树结构1树的同构.zip
- 基于C++实现民航飞行与地图简易管理系统可执行程序+说明+详细注释.zip
- pta题库答案c语言之复杂度1最大子列和问题.zip
- 三维装箱问题(Three-Dimensional Bin Packing Problem,3D-BPP)是一个经典的组合优化问题
- 以下是一些关于Linux线程同步的基本概念和方法.txt
- 以下是一个简化的示例,它使用pygame库来模拟烟花动画的框架.txt