电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

DHT11传感器STC12单片机程序文件

DHT11传感器STC12单片机程序文件_第1页
1/8
DHT11传感器STC12单片机程序文件_第2页
2/8
DHT11传感器STC12单片机程序文件_第3页
3/8
#include#include<12864.h>#includesbit DHT = P0^0; //管脚定义,DHT11 总线输入输出;uchar data_byte;uchar Tem_Z,Tem_X,Hum_Z,Hum_X,Check;void LCD_Display(); //声明 LCD_Display 液晶显示函数;void Rec_DHT(); //声明 Rec_DHT,DHT11 接收数据函数;void receive();//主函数void main(){lcd_init(); while(1) { Rec_DHT(); LCD_Display(); delayms(1000); }}//延时函数,//延时 msvoid delays()//12.000MHz{ uchar i, j, k;i = 1;j = 234;k = 113;do{do{while (--k);} while (--j);} while (--i);}//延时 iusvoid delay10us(){ uchar i; for(i=0;i<6;i++) { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); }}/********主机发出开始信号*******/ void DHT11_Start() { DHT=1; delay10us(); DHT=0; delays(); //保持电平常间大于 18ms,延时 20ms DHT=1; delay10us(); //延迟等待 20-40us,延时 20us delay10us(); delay10us(); delay10us(); DHT=1; //拉高等待 DHT11 响应}//DHT11 接收一个字节数据uchar receive_data(){ uchar i,temp,count; data_byte=0; for(i=0;i<8;i++) { count=2; while((!DHT)&&count++); //等待 50us 低电平完毕 delay10us(); //等待 40us 高电平,后推断电平高低,高:DHT为 1,低:DHT 为 0 delay10us(); delay10us(); delay10us(); temp=0; if(DHT==1) temp=1; //DHT 为高:1,位为 1 count=2; while((DHT)&&count++); //等待 DHT 高电平完毕 if(count==1) break; //DHT 为低:0,位为 0 data_byte<<=1; //字节左移 data_byte|=temp; } return data_byte; //返回读取值}//DHT11 接收数据void Rec_DHT(){ uchar flag; uchar T_H,T_L,H_H,H_L,check,num_check; //定义采集参数中间变量 DHT11_Start(); //主机发出开始信号 if(!DHT) //等待从机响应信号输出低电平 { flag = 2; while((!DHT) && flag++); //推断从机是否发出 80us 的低电平响应信号是否完毕 flag = 2; while(DHT && flag++); //推断从机是否发出 80us 的高电平,若发出则开始采集数据 H_H=receive_data(); //采集湿度整数部分 H_L=receive_data(); //采集湿度小数部分 T_H=receive_data(); //采集温度整数部分 T_L=receive_data(); //采集...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

DHT11传感器STC12单片机程序文件

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部