数字温湿度传感器DHT11使用

     最近因为要为省里中小学生竞赛做写小玩意接触到了一种数字温湿度传感器,广东奥松的,型号是DHT11。到网上一查资料很多就随意下载了一份。用了一下发现还是蛮好用的。这里贴出来给大家分享。

     DHT11是一种单总线结构的传感器,内部含有一个小型的单片机。所以我们事实上我们对该款传感器的操作就是单片机与单片机的通信问题。是纯数字接口,所以只要严格按照传感器的要求来做,驯服它还是挺简单的。先来看一看说明书上的给它的几点说明。

1。先认识一下DHT11,图1是DHT11的正面图。图2是引脚电气定义。

 

还是很好认的吧。

DHT11的数据都是通过2号脚串行的送出来的,一次40位,5个字节。对于串行输出的最重要的要明白是按照一个什么样的顺序输出。好,再来看看DHT11的输出数据结构。下面两个图应该比较清楚的表明了数据顺序,箭头方向表示数据的先后顺序。输出是从最高位也就是b39开始的一直到b0。如此也就是b39-b32构成了湿度值。b23-b16构成了温度值。

 下面是使用AVR做微控制器的程序,因为AVR内部含有上拉电阻,所以与DHT11的连接电路中就不需要使用外部上拉电阻了,不过要注意内部上拉电阻的使用。程序中使用外部中断0的上升沿延时判断DHT11输出数据。判断依据是检测到上升沿后延时40us,如果是低电平则输出是‘0’,否则是’1‘。当然如果更精确的可以采用ICP。

 

#include #include #include #define uchar unsigned char #define uint unsigned int uchar digit[10]={0x3f,0x30,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar dht_data[5]={0,0,0,0,0}; uchar FLAG_int0=0; uchar bit_seq=0; uint FLAG_test=0; #define delay1us asm("nop");asm("nop");asm("nop");asm("nop"); #define delay5us delay1us;delay1us;delay1us;delay1us;delay1us; #define delay20us delay5us;delay5us;delay5us;delay5us; #define delay40us delay20us;delay20us; #define BIT_DDR DDRB #define BIT_PORT PORTB #define SEG_DDR DDRA #define SEG_PORT PORTA void init_LED(void); void display(uint data); void init_DHT11(void); void read_DHT11(void); int main(void) { uint i=0,j=0; init_LED(); while(1) { init_DHT11(); read_DHT11(); for(i=0;i<5;i++) { for(j=0;j<50;j++) display(i+1); for(j=0;j<100;j++) display(dht_data[4-i]); } } return 0; } void init_LED(void) { BIT_DDR=0xFF; BIT_PORT=0x00; SEG_DDR|=0xF0; // 高4位驱动共阳型LED SEG_PORT&=~0x0F;// 高四位置低,全灭 } void display(uint data) { uchar bit[4]={0,0,0,0}; bit[3]=data/1000;; bit[2]=data/100%10; bit[1]=data/10%10; bit[0]=data%10; SEG_PORT=0x10; BIT_PORT=~digit[bit[3]]; _delay_ms(10); SEG_PORT=0x20; BIT_PORT=~digit[bit[2]]; _delay_ms(10); SEG_PORT=0x40; BIT_PORT=~digit[bit[1]]; _delay_ms(10); SEG_PORT=0x80; BIT_PORT=~digit[bit[0]]; _delay_ms(10); SEG_PORT=0x00; // 熄灭LED } void init_DHT11(void) { PORTD|=(1<

DHT11的资料很多 这里给个链接:http://www.aosong.com/Upload/PicFiles/20091121029421455.pdf 

有需要的朋友可以去下载。

 

你可能感兴趣的:(传感器)