51单片机的温湿度控制系统

硬件方案

        本设计采用51单片机作为控制核心,每2秒钟从DHT11温湿度传感器中读入温度和湿度,在液晶屏上即时显示。液晶屏上同时显示温湿度上限值,该上限值保存外外部EEPROM存储器中,掉电不失,并且可以通过四只按键上调或下调。当温度或湿度值超过上限值时,报警信号点亮相应报警灯。该报警信号可以通过三极管驱动继电器,以控制外部风机或加热器。整体电路主要由51单片机最小系统,LCD1602液晶显示模块,温湿度采集模块,继电器驱动模块,风扇模块,LED指示灯模块,按键模块,AT24C02存储模块,蜂鸣器报警模块;原理图如图:

PCB及仿真图如下:

设计功能

  • AT24c02芯片掉电存储设置的上下限。
  • LCD1602液晶显示,上面行显示当前的温度和湿度,下面行显示相应的冷、热、干、湿。配用全数字型温湿度传感器DHT11,温度测量范围0℃--50℃,湿度测量范围20%RH—90%RH,可以满足一般需要。
  • 四个按键为设置、加、减、确定,实现了阀值的调节。当超过阀值的时候,有蜂鸣器闪烁报警提示。并有开关可以关闭或打开报警。
  • 当温度或湿度超限后,报警信号灯点亮同时相应的继电器吸合。继电器可以驱动打开或切断通风机、抽湿机、加热器、制冷器、加湿器、报警器等外部设备;

主程序源码

//数据初始化
void Data_Init()
{
   Led_qushi = 1;
   Led_jiashi=1;
   Led_jiangwen = 1;
   Led_shengwen = 1;
}

/********************************************************************
* 名称 : Main()
* 功能 : 主函数
***********************************************************************/
void main()
{
    uint i, j, testnum;

    EA = 0;

    Timer0_Init();  //定时器0初始化

    Data_Init();
    EA = 1;

    L1602_init();
    //延时
    for (i=0;i<1000;i++)
       for (j=0;j<1000;j++)
       {;}
    //清屏
    L1602_string(1,1,"                ");
    L1602_string(2,1,"                ");
    L1602_string(1,1,"Tem:   C Hum:  %");
    L1602_string(2,1,"Smalldi@2017");
    
    /***载入温度上限和湿度上限设定值***/
    TH=rdeeprom(0);     
    Delay1(20);         //加延时可以存取稳定
    TL=rdeeprom(1);
    Delay1(20);
    HH=rdeeprom(2);
    Delay1(20);
    HL=rdeeprom(3);

    while(1)
    {
       
         if (FlagStartRH == 1)     //温湿度转换标志检查
         {
             TR0 = 0;
             testnum = RH();
              FlagStartRH = 0;
             TR0 = 1;
             humidity = U8RH_data_H;     //读出温湿度,只取整数部分
             temperature = U8T_data_H;

             
             if(Mode==0)        //温湿度控制
             {
                 if (temperature > TH)
                {
                    Led_jiangwen = 0;
                    hot=1;
                    Led_shengwen = 1;
                    cold=0;
                }
                else if(temperature<TL)
                {
                    Led_shengwen = 0;
                    cold=1;
                    Led_jiangwen = 1;
                    hot=0;
                    buzz=0;
                }                  
                else
                {
                    Led_jiangwen=1;
                    Led_shengwen=1;
                    hot=0;
                    cold=0;
                    buzz=1;
                }
                if (humidity > HH)
                {
                    Led_qushi = 0;
                    humid=1;
                    Led_jiashi = 1;
                    dry=0;
                }
                else if(humidity<HL)
                {
                    Led_jiashi = 0;
                    dry=1;
                    Led_qushi = 1;
                    humid=0;
                }        
                else
                {
                    Led_qushi=1;
                    Led_jiashi=1;
                    humid=0;
                    dry=0;
                }    
             }
             else
             {
                 Led_shengwen=1;
                Led_jiangwen=1;
                Led_jiashi=1;
                Led_qushi=1;
                hot=0;
                cold=0;
                humid=0;
                dry=0;
                BJ=0;
             }    
        }
        display();
        KEY();
    }    
}

资料链接:https://pan.baidu.com/s/1Ru6ygqaDvrfOXg6h7sqrbg?pwd=nger 
提取码:nger

  • 3
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值