【Proteus仿真】【32单片机】温湿度控制系统设计

目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

1、温度检测与LCD显示
2、超上限温度降温模块启动
3、低下限升温模块启动
4、温度阈值设置
5、超限报警

二、使用步骤

系统运行后,LCD1602显示当前温湿度值,可通过设置键进入温湿度上限和下限阈值设置,并且LCD1602显示设置的值。通过加一和减一键进行阈值调整,设定好后设置退出。当检测温湿度值高于或低于上下限值时,控制声光报警,加热或降温湿模块工作。

三、硬件资源

1、32单片机核心模块
2、按键模块
3、DS18B20温湿度传感器模块
4、蜂鸣器模块
5、继电器模块
6、LCD1602显示模块

四、软件设计

主要代码

//外部中断
void EXTI15_10_IRQHandler(void)
{
    delay_ms(50);
    if(KEY1 == 0)
    {
        Set_num++;//设置位增加
        TIM_ITConfig( TIM2,TIM_IT_Update,DISABLE );//关闭定时器2
        if(Set_num>2)
        {
            LcdWriteCom(0x0C);//取消光标闪烁    
            TIM_ITConfig( TIM2,TIM_IT_Update,ENABLE );//打开定时器2    
            Set_num=0;
        }
        while(KEY1 == 0);
    }
    if(KEY2 == 0)
    {
        if(Set_num==1)//设置阈值L
        {
            if(TL<TH-1)
                TL++;
            LcdWriteCom(0x80+0x40+3); //第二行
            LcdWriteData(TL/10+0x30);    
            LcdWriteData(TL%10+0x30);
            LcdWriteCom(0x80+0x40+4); //第二行
            LcdWriteCom(0x0f);                                    // 光标闪烁
        }
        else if(Set_num==2)//设置阈值H
        {
            if(TH<99)
                TH++;
            LcdWriteCom(0x80+0x40+13); //第二行
            LcdWriteData(TH/10+0x30);    
            LcdWriteData(TH%10+0x30);    
            LcdWriteCom(0x80+0x40+14); //第二行
            LcdWriteCom(0x0f);                                    // 光标闪烁
        }
        
        
        while(KEY2 == 0);
    }
    if(KEY3 == 0)
    {
        if(Set_num==1)//设置阈值L
        {
            if(TL>0)
                TL--;
            LcdWriteCom(0x80+0x40+3); //第二行
            LcdWriteData(TL/10+0x30);    
            LcdWriteData(TL%10+0x30);    
            LcdWriteCom(0x80+0x40+4); //第二行
            LcdWriteCom(0x0f);                                    // 光标闪烁
        }
        else if(Set_num==2)//设置阈值H
        {
            if(TH>TL+1)
                TH--;
            LcdWriteCom(0x80+0x40+13); //第二行
            LcdWriteData(TH/10+0x30);    
            LcdWriteData(TH%10+0x30);
            LcdWriteCom(0x80+0x40+14); //第二行
            LcdWriteCom(0x0f);                                    // 光标闪烁
        }
        
        while(KEY3 == 0);
    }
    if(EXTI_GetITStatus(EXTI_Line13) != RESET)//判断中断标志线是否13
    {                
        EXTI_ClearITPendingBit(EXTI_Line13); //清除LINE13上的中断标志位
    }
  if(EXTI_GetITStatus(EXTI_Line14) != RESET)//判断中断标志线是否14
    {                
        EXTI_ClearITPendingBit(EXTI_Line14); //清除LINE14上的中断标志位
    }        
  if(EXTI_GetITStatus(EXTI_Line15) != RESET)//判断中断标志线是否15
    {    
        EXTI_ClearITPendingBit(EXTI_Line15); //清除LINE15上的中断标志位
    }
     
}

int main()
{    
    delay_init();             //延时函数初始化
    LCD1602_Init();      //lcd函数初始化
    NVIC_Configuration();      //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 
    EXTIX_Init();//外部中断初始化 
    DS18B20_Init();    
    temperature=DS18B20_Get_Temp();//获取温度
    display_value();     //阈值函数初始化
    TOOL_Init();         //工具初始化
    Delay(1000000);
    Delay(1000000);
    while(1) 
    {        
        temperature=DS18B20_Get_Temp();//获取温度
        switch(Set_num)
        {
            case 0:display_data();Alarm();//警报函数        
                break;
            case 1:
                    BEEP=1;MOT1=1;MOT2=1;//设置阈值关闭警报
                    LcdWriteCom(0xc0+4); //第二行
                  LcdWriteCom(0x0f);  // 光标闪烁                
                break;//阈值L
            case 2:
                    LcdWriteCom(0xc0+14); //第二行
                  LcdWriteCom(0x0f);  // 光标闪烁                
                break;//阈值H
            
        }
    }      
}

五、实验现象

B站演示视频:基于32单片机温度检测DS18B20_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1b1x4e7EVt/?vd_source=8bd503c3c274be4cd70dd0c1370c6729

联系作者

作者B站链接:https://space.bilibili.com/3493294220773802

专注于51单片机、STM32、Proteus、物联网软件开发,PCB设计。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值