欢迎来到天天文库
浏览记录
ID:1598393
大小:1.09 MB
页数:6页
时间:2017-11-12
《温湿度传感器dht11程序编写》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、/******************DHT11********************************FileName:dht11.cAuthor:沧海麒麟Date:2011.05.29Version:1.0Description:适用于ATmega16(L)Function:利用串口发送温度和湿度到电脑,同时用液晶显示*/#include#include#include#include"delay.c"#include"LCM1602.c"#defineucharunsignedchar#defineui
2、ntunsignedint#defineDDR_1DDRA
3、=BIT(PA0)#defineDDR_0DDRA&=~BIT(PA0)#definePORT_1PORTA
4、=BIT(PA0)#definePORT_0PORTA&=~BIT(PA0)#defineMOSIN(PINA&0X01)ucharU8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;ucharDHT11_5DATA[5];ucharU8temp;ucharflag=0;ucharhumidity[]="humidity:";uchartempe
5、rature[]="temperature:";voidCOM(void){uchari,j,m;for(i=0;i<5;i++){DHT11_5DATA[i]=0X00;for(j=0;j<8;j++){while(!MOSIN);//等待高电平的到来,当高电平到来后便开始计时Delay(60);//for(m=0;m<50;m++);//延时50us后看还是不是高电平,如果是高那么这位就为1,否则为0if(MOSIN){DHT11_5DATA[i]
6、=BIT(7-j);while(MOSIN);}//endofif}//endoffor}//endoffor}voidDH
7、T11(void){uchari;DDR_1;PORT_0;Delay_Nms(20);//主机拉低18msPORT_1;//总线由上拉电阻拉高主机延时20usDelay(30);//for(i=0;i<23;i++);//此操作为微秒级的延时DDR_0;//主机设为输入判断从机响应信号Delay(15);//for(i=0;i<10;i++);//判断从机是否有低电平响应信号如不响应则跳出,响应则向下运行if(!MOSIN)//{while(!MOSIN);//判断从机是否发出80us的低电平响应信号是否结束while(MOSIN);//判断从机是否发出80us的高电平,如
8、发出则进入数据接收状态COM();//数据接收状态DDR_1;PORT_1;U8temp=(DHT11_5DATA[0]+DHT11_5DATA[1]+DHT11_5DATA[2]+DHT11_5DATA[3]);//数据校验if(DHT11_5DATA[4]==U8temp){U8RH_data_H=DHT11_5DATA[0];U8RH_data_L=DHT11_5DATA[1];U8T_data_H=DHT11_5DATA[2];U8T_data_L=DHT11_5DATA[3];U8checkdata=DHT11_5DATA[4];}}}/***********端口初
9、始化函数**********************/voidinit_port(void){PORTD
10、=0x02;//注意这两个管脚要配置为输出DDRD
11、=0x02;}/************串口初始化函数*********************/voidinit_uart0(void){UCSRB=0x00;UBRRH=0x00;UBRRL=0x67;UCSRA=(1<12、(1<13、(1<14、(1<15、(1<16、***********发送一个字节函数********************/voidSend_Uart0(uchardata){while(!(UCSRA&(1<
12、(1<13、(1<14、(1<15、(1<16、***********发送一个字节函数********************/voidSend_Uart0(uchardata){while(!(UCSRA&(1<
13、(1<14、(1<15、(1<16、***********发送一个字节函数********************/voidSend_Uart0(uchardata){while(!(UCSRA&(1<
14、(1<15、(1<16、***********发送一个字节函数********************/voidSend_Uart0(uchardata){while(!(UCSRA&(1<
15、(1<16、***********发送一个字节函数********************/voidSend_Uart0(uchardata){while(!(UCSRA&(1<
16、***********发送一个字节函数********************/voidSend_Uart0(uchardata){while(!(UCSRA&(1<
此文档下载收益归作者所有