AVR meg128 mega16驱动温湿度传感器DHT11调试说明.docVIP

  • 10
  • 0
  • 约 5页
  • 2016-10-09 发布于广东
  • 举报

AVR meg128 mega16驱动温湿度传感器DHT11调试说明.doc

AVR meg128 mega16驱动温湿度传感器DHT11调试说明

DHT11调试说明 器件:DHT11模块, mega128核心板 , USB转串口线 , max232电平装换模块 电路图 注意:DHT11带标签的向下,从左边引脚分别是1,2,3,4;千万不可接错否则容易烧坏器件,即便不烧坏也使传感器精度大大降低。 mega128 用PD.0采集传感器数值 用串口0发送数据 测试程序如下 开发环境:AVR Studio V4.17 +WinAVR 晶振:外部 16M #include avr/io.h #include util/delay.h #define uchar unsigned char #define uint unsigned int #define sint signed int #define Crystal /***************************USAR0初始化函数*******************************/ void USART0_Init(uint baud) { uint temp; temp=Crystal/16/baud-1; DDRE = 0XFF; //E.0,E.1为RXD,TXD // PORTE = 0X00; //E口不上拉 UCSR0B=0x00; //清零 UCSR0A=0X00; UCSR0C=0x06; //8个数据位,1个停止位 UBRR0H = 0; // 设置波特率 UBRR0L = 0X67; UCSR0B = (1RXEN0)|(1TXEN0); // 接收器与发送器使能 } /*******************************发送一个字符函数**************************/ void USART0_Transmit( uchar data ) { while ( !( UCSR0A (1UDRE0)) ); /* 等待发送缓冲器为空 */ UDR0 = data; /* 将数据放入缓冲器,发送数据*/ } /************************调试函数******************************************/ void debug(uchar temp) { USART0_Transmit(temp); //_delay_ms(200); } /***************************发送一个字符串********************************/ void USART0_str_send(char *s) { while(*s) //字符串是以\0结束; { USART0_Transmit( *s); s++;//s的地址加1个单元; } } /***************************USART接收数据函数******************************/ unsigned char USART0_Receive( void ) { while ( !(UCSR0A (1RXC0)) ); /* 等待接收数据*/ return UDR0; /* 从缓冲器中获取并返回数据*/ } /***************************DHT11采集数据函数*****************************/ uchar DHTReadByte()//从DHT11中读一个字节 { uchar i,Data=0 ; DDRD=0X00; //设置PD7为输ru for(i=0;i8;i++) { while(!(PIND0X80)); //等待50us低电平数据位间隙过去,等高电平到来 _delay_us(15); //延时40us ,延时必须(26-28us) _delay_us(15); _delay_us(10); Data=1; if((PIND0X80)) //如果40us以后采集到数据还是高电平,则输出为高电平 {

文档评论(0)

1亿VIP精品文档

相关文档