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

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

ID:58819708

大小:27.00 KB

页数:8页

时间:2020-10-25

DHT11传感器STC12单片机程序.doc_第1页
DHT11传感器STC12单片机程序.doc_第2页
DHT11传感器STC12单片机程序.doc_第3页
DHT11传感器STC12单片机程序.doc_第4页
DHT11传感器STC12单片机程序.doc_第5页
资源描述:

《DHT11传感器STC12单片机程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、#include#include<12864.h>#includesbitDHT=P0^0;//管脚定义,DHT11总线输入输出;uchardata_byte;ucharTem_Z,Tem_X,Hum_Z,Hum_X,Check;voidLCD_Display();//声明LCD_Display液晶显示函数;voidRec_DHT();//声明Rec_DHT,DHT11接收数据函数;voidreceive();//主函数voidmain(){lcd_init();while

2、(1){Rec_DHT();LCD_Display();delayms(1000);}}//延时函数,//延时msvoiddelays()//@12.000MHz{uchari,j,k;i=1;j=234;k=113;do{do{while(--k);}while(--j);}while(--i);}//延时iusvoiddelay10us(){uchari;for(i=0;i<6;i++){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_

3、();}}/********主机发出开始信号*******/voidDHT11_Start(){DHT=1;delay10us();DHT=0;delays();//保持电平时间大于18ms,延时20msDHT=1;delay10us();//延迟等待20-40us,延时20usdelay10us();delay10us();delay10us();DHT=1;//拉高等待DHT11响应}//DHT11接收一个字节数据ucharreceive_data(){uchari,temp,count;data_byte=

4、0;for(i=0;i<8;i++){count=2;while((!DHT)&&count++);//等待50us低电平结束delay10us();//等待40us高电平,后判断电平高低,高:DHT为1,低:DHT为0delay10us();delay10us();delay10us();temp=0;if(DHT==1)temp=1;//DHT为高:1,位为1count=2;while((DHT)&&count++);//等待DHT高电平结束if(count==1)break;//DHT为低:0,位为0dat

5、a_byte<<=1;//字节左移data_byte

6、=temp;}returndata_byte;//返回读取值}//DHT11接收数据voidRec_DHT(){ucharflag;ucharT_H,T_L,H_H,H_L,check,num_check;//定义采集参数中间变量DHT11_Start();//主机发出开始信号if(!DHT)//等待从机响应信号输出低电平{flag=2;while((!DHT)&&flag++);//判断从机是否发出80us的低电平响应信号是否结束flag=2;while(D

7、HT&&flag++);//判断从机是否发出80us的高电平,若发出则开始采集数据H_H=receive_data();//采集湿度整数部分H_L=receive_data();//采集湿度小数部分T_H=receive_data();//采集温度整数部分T_L=receive_data();//采集温度小数部分check=receive_data();//采集校验位DHT=1;num_check=H_H+H_L+T_H+T_L;//if(num_check=check)//进行校核//{Hum_Z=H_H;Hu

8、m_X=H_L;Tem_Z=T_H;Tem_X=T_L;//}}}/**********12864液晶显示*********/voidLCD_Display(){//液晶显示第一行:温度显示;lcd_pos(1,1);write_data('T');write_data('e');write_data('m');write_data('p');write_data(':');write_data(Tem_Z/10+0x30);//输出温度的十位write_data(Tem_Z%10+0x30);//输出温度的个位

9、write_data('.');write_data(Tem_X/10+0x30);//输出温度的分位write_data(Tem_X%10+0x30);//输出温度的十分位write_data(0x27);//输出℃write_data(0x43);//液晶第二行:温度提示;lcd_pos(2,4);if(Tem_Z>35)write("注意防署");elseif(Te

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。