DHT111 数字湿温度传感器的原理和应用范例


    奥松电子限公司 wwwaosongcom
    DHT11 数字湿温度传感器原理应范例


    概述:DHT11 广州奥松限公司生产款湿温度体化数字传感器
    该传感器包括电阻式测湿元件 NTC 测温元件高性 8 位
    单片机相连接通单片机等微处理器简单电路连接够实时采集湿
    度温度DHT11 单片机间采简单单总线进行通信仅仅需
    IO 口传感器部湿度温度数 40Bit 数次性传单片机数采
    校验方式进行校验效保证数传输准确性DHT11 功耗低5V 电
    源电压工作均电流 05mA
    性指标特性:
    z 工作电压范围:35V55V
    z 工作电流 :均 05mA
    z 湿度测量范围:20-90%RH
    z 温度测量范围:0-50℃
    z 湿度分辨率 :1%RH 8位
    z 温度分辨率 :1℃ 8 位
    z 采样周期 :1S
    z 单总线结构
    z TTL 兼容(5V)

    脚排列:


    引脚说明:
    Vcc 正电源
    Dout 输出
    NC 空脚
    GND













    1应电路连接说明
    DHT11数字湿温度传感器连接方法极简单第脚接电源正第四脚接电源端
    数端第二脚直接接机(单片机) IO 口提高稳定性建议数端电源
    正间接 47K 拉电阻第三脚空脚脚悬空


    1 奥松电子限公司 wwwaosongcom

    2DHT11 数结构
    DHT11数字湿温度传感器采单总线数格式单数引脚端口完成输
    入输出双传输数包5Byte(40Bit)组成数分数部分整数部分具
    体格式面说明
    次完整数传输40bit高位先出
    数格式:8bit湿度整数数+8bit湿度数数
    +8bit温度整数数+8bit温度数数
    +8bit校验
    校验数前四字节相加
    传感器数输出未编码二进制数数(湿度温度整数数)间
    应该分开处理果某次传感器中读取5Byte数:

    byte4 byte3 byte2 byte1 byte0
    00101101 00000000 00011100 00000000 01001001
    整数 数 整数 数 校验
    湿度 温度 校验

    数湿度温度值计算方法:
    humi (湿度) byte4 byte3450 (%RH)
    temp (温度) byte2 byte1280 ( ℃)
    jiaoyan(校验) byte4+ byte3+ byte2+ byte173(humi+temp)(校验正确)
    注意:DHT11次通讯时间3ms机连续采样间隔建议100ms

    3DHT11传输时序

    31DHT11 开始发送数流程

    机发送开始信号延时等 20us40us 读取 DH11T 回应信号读取
    总线低电说明 DHT11 发送响应信号DHT11 发送响应信号总线拉
    高准备发送数 bit 数低电开始格式见面图示果读取响应
    信号高电 DHT11 没响应请检查线路否连接正常



    2 奥松电子限公司 wwwaosongcom
    32 机复位信号 DHT11 响应信号

    33 数字0’信号表示方法

    34 数字1’信号表示方法
    3 奥松电子限公司 wwwaosongcom
    4实例应
    41 硬件描述
    项目采两三位体阳数码做湿度温度显示模块采 ATMEL 公司
    ATmega8 做控芯片详细图 41 示
    42 脚分配


    设备 脚
    传感器(HDT11) PC5
    LED[18] PB[07]
    P3 PC3
    P4 PD5 S2(温度显示)
    P5 PD4
    LED[18] PB[07]
    P1 PD7
    P2 PD6 S1(湿度显示)
    Pm3 PD0





    图 41 典型实例原理图



    4 奥松电子限公司 wwwaosongcom

    *原程序清单示程序 ICCAVR 631A 测试通*
    *************************************************************************
    编译环境 :ICCAVR
    功:读取湿温度传感器 DTH11 数显示
    公司:奥松电子限公司
    芯片:Mega 8
    晶振:部 80000MHz
    创建:木工
    修改 :宁佐文
    **************************************************************************
    #include
    #include
    typedef unsigned char U8 defined for unsigned 8bits integer variable
    typedef signed char S8 defined for signed 8bits integer variable
    typedef unsigned int U16 defined for unsigned 16bits integer variable
    typedef signed int S16 defined for signed 16bits integer variable
    typedef unsigned long U32 defined for unsigned 32bits integer variable
    typedef signed long S32 defined for signed 32bits integer variable
    typedef float F32 single precision floating point variable (32bits)
    typedef double F64 double precision floating point variable (64bits)
    **************************************************************************
    数码显示赋值区
    ***************************************************************************
    #define _a 0x01
    #define _b 0x02
    #define _c 0x04
    #define _d 0x08
    #define _e 0x10
    #define _f 0x20
    #define _g 0x40
    #define _dp 0x80

    #define num0 _g 灭数码
    #define num1 _a|_d|_e|_f|_g
    #define num2 _c|_f
    #define num3 _e|_f
    #define num4 _a|_d|_e
    #define num5 _b|_e
    #define num6 _b
    #define num7 _d|_e|_f|_g
    #define num8 0x00
    #define num9 _e
    #define num_ _a|_b|_c|_d|_e|_f|_dp
    5 奥松电子限公司 wwwaosongcom
    #define num_11 _a|_d|_e|_f
    #define num_E _b|_c|_dp Err 代码
    #define num_r _a|_b|_c|_d|_f|_dp

    #define dc2 0x04
    #define dc3 0x08
    #define dd 0x03
    #define dd4 0x10
    #define dd5 0x20
    #define dd6 0x40
    #define dd7 0x80
    #define dd2 0x04
    #define dd3 0x08 数码控制端口

    #define led1 dc3 时先数码全熄灭掉
    #define led2 dd5
    #define led3 dd4
    #define led4 dd7
    #define led5 dd6
    #define led6 dd2

    U8 PLAY[6]{000000}
    unsigned char Flag 0
    unsigned int u16ReadDownStreamTimer
    const U8 LED[14]{num0num1num2num3num4num5num6num7num8num9
    num_num_11num_Enum_r } 数码笔形码数组
    函数声明:
    void init_devices(void)
    void time1_start(void)
    void port_init(void)
    void timer0_init(void)
    void timer1_init(void)
    void Delay(unsigned int i)
    void DelayNS (U16 dly)
    *****************************************************************************
    显示模块
    *****************************************************************************
    void Display (void)
    {
    U8 i
    for(i0i<5i++)
    {
    DDRD | 0XFC
    PORTD&0x03
    6 奥松电子限公司 wwwaosongcom
    DDRC | 0X0C
    PORTC&0xF3
    Delay(10)
    switch(i)
    {
    case 0 PORTC|led1break
    case 1 PORTD|led2break
    case 2 PORTD|led3break
    case 3 PORTD|led4break
    case 4 PORTD|led5break
    case 5 PORTD|led6break
    default break
    }
    PORTBLED[PLAY[i]] 送数
    if((i0)|(i2)|(i3)|(i5)) 消数点
    {
    PORTB|0x80
    }
    DelayNS(1)
    }
    PORTD&0x03
    PORTC&0xF3
    }
    *****************************************************************************
    delay()
    *****************************************************************************
    void DelayNS (U16 dly) 延时子程序 1010ms
    {
    U16 i
    for ( dly>0 dly)WDR()
    for (i0 i<1131 i++)
    }
    void Delay(unsigned int i)
    {
    while(i)
    }
    void delay1N(unsigned int Dcount)
    {
    while(Dcount)
    {
    NOP()NOP()NOP()
    }
    }
    void Timer2_Delay150ms(void) Timer 2
    7 奥松电子限公司 wwwaosongcom
    {
    TCCR2 0x00
    TCNT2 0xDE
    TIFR | 0X40
    TCCR2 0x02
    }
    *****************************************************************************
    系统初始化函数
    *****************************************************************************
    void init_devices(void)
    {
    CLI()
    port_init()
    timer0_init()
    TIMSK 0x05
    SEI()
    }
    *****************************************************************************
    端口初始化
    *****************************************************************************
    void port_init(void)
    {
    DDRB 0xFF
    PORTB 0x00
    DDRC 0x0C
    PORTC 0x03
    DDRD 0xF0
    PORTD 0x00
    }
    *****************************************************************************
    TIMER0 initialize prescale256
    desired value 1mSec
    actual value 0992mSec (08)
    *****************************************************************************
    void timer0_init(void)
    {
    TCCR0 0x00
    TCNT0 0xE1
    TCCR0 0x04
    }
    *****************************************************************************
    TIMER2 initialize prescale8
    WGM Normal
    desired value 35uSec
    8 奥松电子限公司 wwwaosongcom
    actual value 34000uSec (29)
    *****************************************************************************
    void timer2_init(void)
    {
    TCCR2 0x00
    ASSR 0x00
    TCNT2 0xDE
    OCR2 0x22
    TCCR2 0x02
    }
    *****************************************************************************
    定时器 TIMER0 中断
    *****************************************************************************
    #pragma interrupt_handler timer0_ovf_isr10
    void timer0_ovf_isr(void)
    {
    TCNT0 0xE1
    u16ReadDownStreamTimer++
    }
    *****************************************************************************
    main() function
    *****************************************************************************
    void main(void)
    {
    U16 u16Flag 超时计数
    unsigned char iiii
    unsigned long u32I 接收数时变量
    unsigned long ReceiveValue 0 接收数包变量
    unsigned long ReceiveValue1 0 接收校验变量
    unsigned int ReceiveHighByte 分解数包 湿度
    unsigned int ReceiveLowByte 分解数包 温度
    WDR()
    DelayNS(2) 提高稳定性延时
    init_devices()
    timer2_init()
    u16ReadDownStreamTimer 0
    DDRC & ~0X20
    PORTC | 0X20
    while(1)
    {
    Display() 显示
    WDR()
    if(u16ReadDownStreamTimer > 1000) 1s 采集次
    {
    9 奥松电子限公司 wwwaosongcom
    if(iiii 0)
    {
    DDRC | 0X20
    PORTC & ~0X20 发送 0
    iiii++
    u16ReadDownStreamTimer 991
    }
    else
    {
    iiii 0
    delay1N(200) 延时等方响应
    DDRC & ~0X20 输入
    PORTC | 0X20 拉高
    delay1N(40) 延时等方响应
    if((PINC&0X20)) 检测方否响应
    {
    u16Flag 0
    while(((PINC&0X20)) && ((u16Flag++)<50000))
    等响应低电拉高 拉高开始传输数
    ReceiveValue 0
    ReceiveValue1 0
    u16Flag 0
    while((PINC&0X20) && ((u16Flag++)<50000))
    等数 第'0'出现
    for(u32I0x80000000 u32I>0 u32I>>1)
    4 字节数 湿度(8+8)+温度(8+8)32(Bit)
    {
    u16Flag 0
    while(((PINC&0X20))&& ((u16Flag++)<30))
    Timer2_Delay150ms()
    u16Flag 0
    while((PINC&0X20) && ((u16Flag++)<300))
    if(TIFR&0x40)
    {
    ReceiveValue | u32I
    }
    }
    for(u32I0x80 u32I>0 u32I>>1) 1 BYTE 校验字节
    {
    u16Flag 0
    while(((PINC&0X20))&& ((u16Flag++)<30))
    Timer2_Delay150ms()
    u16Flag 0
    while((PINC&0X20) && ((u16Flag++)<300))
    10 奥松电子限公司 wwwaosongcom
    if(TIFR&0x40)
    {
    ReceiveValue1 | u32I
    }
    }
    DDRC | 0X20 输出
    PORTC | 0X20 高拉
    ReceiveLowByte (unsigned int )( ReceiveValue&0x0000FFFF)
    ReceiveHighByte ReceiveValue>>16
    if((U8)(*((U8*)(&ReceiveHighByte)+1)+*((U8*)(&ReceiveLowByte)+1))
    *(U8 *)(&ReceiveValue1))
    { 校验
    PLAY[3] *((U8*)(&ReceiveHighByte) + 1)10
    PLAY[4] *((U8*)(&ReceiveHighByte) + 1)10
    PLAY[2] 0
    PLAY[0] *((U8*)(&ReceiveLowByte) + 1)10
    PLAY[1] *((U8*)(&ReceiveLowByte) + 1)10
    PLAY[5] 0
    }
    else 校验正确显示 6 8
    {
    PLAY[0] 8 PLAY[1] 8
    PLAY[2] 8 PLAY[3] 8
    PLAY[4] 8 PLAY[5] 8
    }
    }
    else 没检测信号 发送 Err 显示
    {
    PLAY[0] 12PLAY[1] 13PLAY[2] 13
    PLAY[3] 12PLAY[4] 13PLAY[5] 13
    }
    DDRC | 0X20
    PORTC | 0X20
    u16ReadDownStreamTimer 0 清定时计数位
    }
    }
    else 没等
    {
    DelayNS(1)DelayNS(1)
    DelayNS(1)DelayNS(1)
    }
    }
    }
    *************************************END************************************
    11

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载pdf到电脑,查找使用更方便

    pdf的实际排版效果,会与网站的显示效果略有不同!!

    需要 2 香币 [ 分享pdf获得香币 ]

    下载pdf

    相关文档

    PN结温度传感器温度特性实验

    了解PN结温度传感器的特性及工作情况。

    6年前   
    6603    0

    DWI原理和应用

    一、DWI的概念1.定义:弥散又称扩散,是指分子从周围环境的热能中获取运动能量而使分子发生的一连串的、小的、随机的位移现象并相互碰撞,也称分子的热运动或布朗运动。2. DWI技术就是检测扩散运...

    4年前   
    1323    0

    2018年传感器毕业论文:温度传感器

    传感器毕业论文:温度传感器  论文最好能建立在平日比较注意探索的问题的基础上,写论文主要是反映学生对问题的思考, 详细内容请看下文传感器毕业论文。  温度是一个基本的物理量,自然界中的一切过程...

    6年前   
    775    0

    5.2常见传感器的工作原理及其应用同步练习(word版含答案)

    5.2常见传感器的工作原理及其应用同步练习2021—2022学年高中物理人教版(2019)选择性必修第二册一、选择题(共15题)1.下列关于传感器说法中不正确的是(  )A.电子秤所使用的测力...

    1年前   
    321    0

    温度和温度计教学反思

    《温度和温度计》是三年级科学第三单元第一课,上课之前我反复读了教科书及教学用书,整体感觉这课知识内容比较简单却难于突破,而且像这类认识一种实验工具的课,以学生观察教师指导讲授为主的课,没有实验但...

    5年前   
    1946    0

    温度和温度计教学设计

    温度表示物体的冷热程度,物体的温度可以用温度计测量;

    5年前   
    1334    0

    DSP原理及应用大作业

     DSP原理及应用大作业题 目: IIR算法的软件实验 学生姓名: 学 号: 院(系): 信息工程学院 专...

    3年前   
    871    0

    作业:电大EPR原理与应用

    本次实验练习期末企业各系统结账的一些工作。包括:存货月结、应收/应付月结、自动分录抛转及总账结账。实现月底财务信息汇总,生成财务报表。

    3年前   
    702    0

    《数字测图原理与方法》实践报告

    学院实践报告   课程名称:《数字测图原理与方法》     学生姓名:*** 班    级:**         系    别:资源工程系                学    ...

    14年前   
    15966    0

    基于单片机的数字温度计设计课程设计

    基于单片机的数字温度计设计引言随着现代信息技术的飞速发展和传统工业改造的逐步实现.能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需...

    3年前   
    919    0

    基于51单片机的数字温度计毕业设计

    数字测温计设计摘要:随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术。在工业生产中温度是常用的被控参数,而采用单片机来对这些被控参数进行控制...

    3年前   
    1186    0

    基于单片机的数字温度计课程设计

    摘要 本文提出了关于MCS-51系列单片机的数字温度计的制作电路方法和编程思想。设计一直灌输着电子电路制作软硬结合,以硬件为主的理念。采用模块化的设计思想。硬件模块分为温度的感应模块、时钟...

    3年前   
    771    0

    基于51单片机数字温度计设计课程设计

    课 题: 基于51单片机数字温度计设计专 业: 电子信息工程班 级: 班学 号: 姓 名: ...

    3年前   
    960    0

    基于热敏电阻数字温度计课程设计

    单片机应用系统(三级)项目设计说明书(2012/2013学年第二学期)题 目 : 基于热敏电阻的数字温度计 __专业班级 : 电子信息工程 学生姓...

    4年前   
    642    0

    人教版选择性必修2物理 5.2常见传感器的工作原理及应用 能力提升(word版含答案)

    人教版选择性必修2物理 5.2常见传感器的工作原理及应用 能力 一、单项选择题(共1小题;共4分)1. 如图甲所示为在温度为 10∘C 左右的环境中工作的某自动恒温箱原理简图,箱内的电阻 R...

    1年前   
    366    0

    5.1常见传感器的工作原理课后练习(word版含答案)

    5.1常见传感器的工作原理一、选择题(共15题)1.下列关于信息化社会的说法不正确的是(  )A.现代信息技术的三大基础是信息的拾取、传输和处理B.传感器能代替、补充、延伸人的感觉器官功能C....

    4个月前   
    92    0

    2017粤教版高中物理选修第三章《认识传感器 传感器的原理》word学案

    学案1 认识传感器 传感器的原理[学习目标定位] 1.了解传感器的概念和种类,知道将非电学量转换成电学量的技术意义.2.知道常见敏感元件的工作原理.3.通过实验了解温度传感器、光电传感器的工作...

    2年前   
    350    0

    温度

    温 度窗外的银杏叶又渐渐染上了金黄色,好像在提醒我们秋天又来了。回想十年前,我们初次相遇时也是一个秋天。那时,大学刚毕业的我只身来到一个陌生的城市,虽然没有亲人和朋友的守护陪伴,但却丝毫没有在...

    4年前   
    637    0

    《温度与温度计》说课稿

    《温度与温度计》是教科版三年级下册《温度与水的变化》这一单元的起始课。属于“物质世界”中能量表现形式之二---热现象的教学内容。教材按“比较水的冷热——观察温度计——摄氏温度的读与写——读出温度...

    5年前   
    1061    0

    各房间室内风量温度测量记录填写范例

    各房间室内风量温度表B.0.7 测量 报审、报验表资料号工程名称:XXXXXXXXXXXXXXXXX项目致: XXXXXXXXXX监理有...

    2年前   
    1169    0