找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2120|回复: 0
打印 上一主题 下一主题
收起左侧

单片机DHT11温湿度检验程序 超过范围报警

[复制链接]
跳转到指定楼层
楼主
用的DHT11,用来检测温湿度,超过范围报警
  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. #include <intrins.h>

  5. typedef bit BOOL  ;

  6. sbit io = P1^1 ;//(口线定义)
  7. sbit bee=P1^0;
  8. sbit rs = P2^5 ;
  9. sbit rw = P2^6 ;
  10. sbit ep = P2^7 ;
  11. bit flag_300ms ;

  12. sbit K1=P1^2;
  13. sbit K2=P1^3;
  14. sbit K3=P1^4;

  15. uchar yemian=0;//(定义变量)
  16. uchar flat=1;
  17. uchar data_byte;
  18. uchar RH,RL,TH,TL;
  19. uchar WenDu,ShiDu;//报警的温度和湿度
  20. #include "eeprom52.h"


  21. /****************************延时程序****************************/
  22. void delay(uchar ms)
  23. {       // 延时子程序
  24.          uchar i ;
  25.          while(ms--)
  26.          {
  27.                   for(i = 0 ; i<250;i++) ;
  28.          }
  29. }

  30. void delay1()//延时10us
  31. {
  32.         uchar i;
  33.         i--;
  34.         i--;
  35.         i--;
  36.         i--;
  37.         i--;
  38.         i--;
  39. }
  40. void longdelay(uchar s) //长延时
  41. {
  42.          while(s--)
  43.          {
  44.                   delay(20) ;
  45.          }
  46. }



  47. /******************把数据保存到单片机内部eeprom中******************/
  48. void write_eeprom()
  49. {
  50.         SectorErase(0x2000);
  51.          byte_write(0x2000, WenDu);
  52.         byte_write(0x2001, ShiDu);
  53.         byte_write(0x2060, a_a);        
  54. }

  55. /******************把数据从单片机内部eeprom中读出来*****************/
  56. void read_eeprom()
  57. {
  58.         WenDu   = byte_read(0x2000);
  59.   ShiDu = byte_read(0x2001);
  60.         a_a      = byte_read(0x2060);
  61. }

  62. /**************开机自检eeprom初始化*****************/
  63. void init_eeprom()
  64. {
  65.         read_eeprom();                //先读
  66.         if(a_a != 2)                //新的单片机初始单片机内问eeprom
  67.         {
  68.         WenDu   = 30;
  69.         ShiDu   = 80;
  70.                 a_a = 2;
  71.                 write_eeprom();
  72.         }        
  73. }



  74. /********************报警程序部分*******************/
  75. void warn()  //报警函数
  76. {
  77.         
  78.   if(TH>=WenDu)  //检测的温度高于设定温度报警值
  79.                                              
  80.      {
  81.       bee=0; //报警
  82.                         
  83.      }      
  84.                  
  85.         if(RH>=ShiDu)  //检测的湿度高于设定的湿度值
  86.                                              
  87.      {
  88.       bee=0; //报警
  89.      }      

  90.                  
  91.         if( TH<WenDu  &&  RH<ShiDu )         
  92.     {
  93.                   bee=1; //停止报警
  94.                 }
  95.                  
  96.   
  97. }
复制代码
由于篇幅限制,详情见附件

原理图.png (59.67 KB, 下载次数: 30)

原理图.png

基于单片机的温度湿度采集系统.rar

87.72 KB, 下载次数: 16, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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