【TB作品】MSP430F5529 单片机,智能温控系统,DS18B20

作品功能

本项目设计并实现了一个基于MSP430单片机的智能温控系统。系统可以实时显示当前温度,并且可以根据设置的临界值对环境进行加热或降温。主要功能如下:

  1. 实时显示当前温度。
  2. 显示并调整温度临界值,临界值可在20~35摄氏度之间调节。
  3. 当前温度高于(临界值+1)摄氏度时,绿灯亮,表示降温状态。
  4. 当前温度低于(临界值-1)摄氏度时,加热片工作,表示加热状态。
  5. 当前温度高于35摄氏度时,蜂鸣器报警。
  6. 设置温度临界值高于30摄氏度时,红灯亮,提醒避免设置温度过高。

作品的硬件材料

  1. MSP430F5529 单片机
  2. DS18B20温度传感器
  3. OLED显示屏(IIC接口)
  4. 绿灯(LED) 板子上有
  5. 红灯(LED) 板子上有
  6. 无源蜂鸣器
  7. 加热片

电子元器件连接

各元器件的连接如下:

  • DS18B20:VCC - VCC, DS - P15, GND - GND
  • OLED:GND - GND, VCC - VCC, SCL - P20, SDA - P22
  • 蜂鸣器:VCC - VCC, GND - GND, IN - P36
  • 加热片:VCC - VCC, GND - GND, IN - P23
  • 按键:P21, P11
  • 绿灯:P47
  • 红灯:P10

部分代码


int main(void)
{
    unsigned char dis[10];
    unsigned char time_cyc = 0;

    WDTCTL = WDTPW + WDTHOLD; /* Stop WDT */

    /* 初始化显示 */
    OLED_Init(); /* OLED初始化 */
    OLED_ShowString(0, 0, "DS18B20:");
    OLED_ShowString(0, 4, "SET:");
    display_set_temp();


    /*按键端口 */
    P1DIR &= ~BIT1;
    P1SEL &= ~BIT1;
    P1REN |= BIT1;
    P1OUT |= BIT1;

    P2DIR &= ~BIT1;
    P2SEL &= ~BIT1;
    P2REN |= BIT1;
    P2OUT |= BIT1;

    /* 绿灯端口 */
    P4DIR |= BIT7;

    /* 红灯端口 */
    P1DIR |= BIT0;

    /* 蜂鸣器端口  P3.6*/
    P3SEL |= BIT6;                       // P3.5-7.6 option select
    P3DIR |= BIT6;                       // P3.5-7.6 outputs

    /* 加热片端口 */
    P2DIR |= BIT3;

    while (1)
    {
        delay_ms(10);
        time_cyc = (time_cyc + 1) % 30;
        if (time_cyc == 1) /* 30 个10ms执行一次 */
        {
            temp_value = get_one_temperature(); /* 读取温度 */
            dis[0] = temp_value % 1000 / 100 + '0';
            dis[1] = temp_value % 100 / 10 + '0';
            dis[2] = '.';
            dis[3] = temp_value % 10 + '0';
            dis[4] = 'C';
            dis[5] = 0;
            OLED_ShowString(0, 2, dis);
        }

        /* 以下是根据温度控制 */
        if (temp_value > (set_temp + 10)) /* 3 实际温度高于(临界值+1)后绿灯亮表示降温。 */
        {
            P4OUT |= BIT7; /* 高电平 绿灯点亮 */
            P2OUT |= BIT3; /* 加热片不工作 */
            OLED_ShowString(0, 6, "cooling");
        }
        else if (temp_value < (set_temp - 10)) /* 4 实际温度低于(临界值-1)后加热片工作表示加热。 */
        {
            P4OUT &= ~BIT7; /* 绿灯不亮 */
            P2OUT &= ~BIT3; /* 低电平 加热片工作 */
            OLED_ShowString(0, 6, "heating");
        }
        else
        {
            P4OUT &= ~BIT7; /* 绿灯不亮 */
            P2OUT |= BIT3; /* 加热片不工作 */
            OLED_ShowString(0, 6, "        ");
        }
        /* 5 实际温度高于35摄氏度无源蜂鸣器报警。 */
        if (temp_value > 350)
        {
            TBCCR6 = 500; //打开蜂鸣器 /* PWM占空比 500/1000  蜂鸣器响 */
        }
        else
        {
            TBCCR6 = 0; //关闭打开蜂鸣器
        }

        /* 6 设置温度时候,临界值高于30摄氏度,红灯亮,提醒避免设置温度过高。 */
        if (set_temp > 300)
        {
            P1OUT |= BIT0; /* 高电平 红灯点亮 */
        }
        else
        {
            P1OUT &= ~BIT0;
        }

        /* 以下是按键处理   2 显示临界值,按键可以加减临界值,临界值在20~35之间可调。 */
        //按键1检测处理
        if (!(P1IN & BIT1))
        {
            while (!(P1IN & BIT1))
                ;
            if (set_temp < 350)
            {
                set_temp += 10;
            }
            display_set_temp();
        }
        //按键2检测处理
        if (!(P2IN & BIT1))
        {
            while (!(P2IN & BIT1))
                ;
            if (set_temp > 200)
            {
                set_temp -= 10;
            }
            display_set_temp();
        }

    }
}



全部代码


https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2

在这里插入图片描述

最近更新

  1. TCP协议是安全的吗?

    2024-06-08 15:46:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-08 15:46:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-08 15:46:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-08 15:46:03       18 阅读

热门阅读

  1. Spring Boot 复习

    2024-06-08 15:46:03       10 阅读
  2. 【Rust】——【面向对象语言的特征】

    2024-06-08 15:46:03       6 阅读
  3. vscode找不到settings.json

    2024-06-08 15:46:03       9 阅读
  4. 【pnpm】安装依赖基础

    2024-06-08 15:46:03       9 阅读
  5. 求前缀表达式的值

    2024-06-08 15:46:03       6 阅读
  6. 深入理解 Vue 中的响应式系统

    2024-06-08 15:46:03       7 阅读
  7. Hudi Spark Sql Procedures 回滚 Hudi 表数据

    2024-06-08 15:46:03       7 阅读
  8. webrtc客户端测试和arm平台测试(待补充)

    2024-06-08 15:46:03       8 阅读
  9. 用r语言处理 Excel数据当中的缺失值方法

    2024-06-08 15:46:03       9 阅读
  10. 【Unity】资源管理与热更 YooAsset+HybridCLR

    2024-06-08 15:46:03       10 阅读