EDABOSS电子论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 673|回复: 0

[资料共享] 用dht11做的温湿度传感器 msp430源码

[复制链接]

69

主题

0

回帖

243

E币

技术员

Rank: 2

积分
138
发表于 2017-5-2 14:42:06 | 显示全部楼层 |阅读模式
用msp430单片机做的温度湿度测量,使用的是DHT11传感器,用lcd1602显示,可正常的显示湿度温度

捕获.PNG

下载:
dht11湿度温度测量.rar (2.13 KB, 下载次数: 1)

msp430源码:
  1. /*
  2. * humidity.h
  3. *
  4. *  Created on: 2016年11月5日
  5. *      Author: Administrator
  6. */

  7. #ifndef HUMIDITY_H_
  8. #define HUMIDITY_H_

  9. #include "lcd1602.h"
  10. #define CPU_F ((double)1000000)
  11. #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))  //微秒延时程序
  12. #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))

  13. uchar Read_dht11_byte();
  14. void Get_dat();

  15. uint R_H,R_L,T_H,T_L,RH,RL,TH,TL,check1,check;
  16. uchar H1[1],T1[1],H[1],T[1];

  17. uchar Read_dht11_byte()
  18. {
  19.         uchar i = 0,dat = 0,k;
  20.         P2DIR &= ~BIT1;

  21.         for(i=0;i<8;i++)
  22.         {
  23.                 while(!(P2IN & BIT1));
  24.                 delay_us(20);
  25.                 if((P2IN&BIT1))
  26.                 {
  27.                         k = 1;
  28.                         while((BIT1 & P2IN));
  29.                 }
  30.                 else
  31.                         k = 0;
  32.                 dat <<= 1;
  33.                 dat |= k;
  34.         }
  35.         return dat;
  36. }
  37. void Get_dat()
  38. {

  39.         P2DIR |= BIT1;
  40.         P2OUT &= ~BIT1;

  41.         P2OUT |= BIT1;
  42.         P2OUT &= ~BIT1;
  43.         delay_ms(18);
  44.         P2OUT |= BIT1;
  45.         delay_us(20);
  46.         P2DIR &= ~BIT1;
  47.         if(!(P2IN & BIT1))//等待DHT低电平响应
  48.         {
  49.                 while (!(P2IN & BIT1));//等待80us响应电平过去
  50.                 while((P2IN & BIT1));//等待80us的准备信号过去
  51.             R_H = Read_dht11_byte();
  52.             R_L = Read_dht11_byte();
  53.             T_H = Read_dht11_byte();
  54.             T_L = Read_dht11_byte();
  55.             check1 = Read_dht11_byte();

  56.     check = (R_H+R_L+T_H+T_L);
  57.         if(check == check1)
  58.         {
  59.                 RH = R_H;
  60.                 RL = R_L;
  61.                 TH = T_H;
  62.                 TL = T_L;
  63.         }
  64.         H1[0] =(char) (0x30 + RH /10);
  65.         H[0] = (char)(0x30 + RH %10);
  66.         T1[0] =(char) (0x30 + TH /10);
  67.         T[0] = (char)(0x30 + TH %10);

  68.         LCDShowStr(0,0,"H:");
  69.         LCDShowStr(2,0,H1);
  70.         LCDShowStr(3,0,H);
  71.         LCDShowStr(4,0,"%RH");
  72.         LCDShowStr(0,1,"T:");
  73.         LCDShowStr(2,1,T1);
  74.         LCDShowStr(3,1,T);
  75.         LCDShowStr(4,1,"C");
  76.         }
  77. }
  78. #endif /* HUMIDITY_H_ */
复制代码


积分规则
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|EDABOSS电子论坛

GMT+8, 2024-4-20 10:16 , Processed in 0.042004 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表