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

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
word完美格式 精心整理 学习帮手 #includereg52.h #include12864.h #includeintrins.h sbit 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); } } //延时函数,//延时ms void delays()//@12.000MHz { uchar i, j, k; i = 1; j = 234; k = 113; do { do { while (--k); } while (--j); } while (--i); } //延时ius void delay10us() { uchar i; for(i=0;i6;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;i8;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(); //采集湿度整数部分

文档评论(0)

文档分享 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档