一、msp430单片机
二、0.96寸OLED显示屏12864液晶屏模块IIC接口
三、ST042 5V蜂鸣器模块 无源蜂鸣器模块 音乐发声模块 脉冲信号控制
四、ST021 加热片模块 加热部件 恒温控制 升温模块 5V发热体 电热片
五、ST035 温湿度传感器模块 DHT11温度 湿度测量 数字传感器
这个智能温度控制系统基于MSP430单片机设计,能够实时监测环境温度并根据预设的温度报警值自动调节风扇和加热片的工作状态。主要功能包括:
实时显示当前温度。
通过OLED屏幕显示温度报警值。
通过按键设置温度报警值。
实际温度超过报警值时,自动开启风扇。
实际温度低于报警值时,自动开启加热片。
MSP430 单片机
DS18B20 温度传感器
OLED 显示屏
风扇
加热片
按键
DS18B20 温度传感器
VCC 接 3.3V
GND 接 GND
DATA 接 P1.5
OLED 显示屏
VCC 接 3.3V
GND 接 GND
SCL 接 P2.0
SDA 接 P2.2
加热片
VCC 接 5 V
GND 接 GND
DATA 接 P2.3
风扇
VCC 接 5 V
GND 接 GND
DATA 接 P2.6
按键
按键1 接 P1.1 (板子上有)
按键2 接 P2.1 (板子上有)
初始化了OLED显示屏并在屏幕上设置了温度控制相关的汉字显示位置,同时配置了按键和传感器的端口。
cWDTCTL = WDTPW + WDTHOLD; // Stop WDT
OLED_Init(); // OLED初始化
// 第一排显示 "温度检测控制"
OLED_ShowCHinese(16 * 1, 0, 0);
OLED_ShowCHinese(16 * 2, 0, 1);
OLED_ShowCHinese(16 * 3, 0, 2);
OLED_ShowCHinese(16 * 4, 0, 3);
OLED_ShowCHinese(16 * 5, 0, 4);
OLED_ShowCHinese(16 * 6, 0, 5);
// 第二排显示 "温度:"
OLED_ShowCHinese(16 * 0, 2, 6);
OLED_ShowCHinese(16 * 1, 2, 7);
OLED_ShowCHinese(16 * 2, 2, 8);
// 第三排显示 "临界:"
OLED_ShowCHinese(16 * 0, 4, 9);
OLED_ShowCHinese(16 * 1, 4, 10);
OLED_ShowCHinese(16 * 2, 4, 11);
// 显示临界值
display_num_oled(16 * 3, 4, Temp_critical_value);
在主循环中,系统会不断读取温度传感器的值并更新显示。如果按下按键1,增加临界值;按下按键2,减少临界值。根据当前温度和临界值的比较,自动控制风扇和加热片的开关。
cwhile (1) {
delay_ms(10);
t = (t + 1) % 20;
if (t == 1) {
temperature = get_one_temperature(); // 读取温度
display_num_oled(16 * 3, 2, temperature); // 显示温度
}
// 按键1:增加临界值
if (!(P1IN & BIT1)) {
while (!(P1IN & BIT1));
if (Temp_critical_value < 400) {
Temp_critical_value += 10;
}
display_num_oled(16 * 3, 4, Temp_critical_value); // 显示临界值
}
// 按键2:减少临界值
if (!(P2IN & BIT1)) {
while (!(P2IN & BIT1));
if (Temp_critical_value > 20) {
Temp_critical_value -= 10;
}
display_num_oled(16 * 3, 4, Temp_critical_value); // 显示临界值
}
// 温度控制逻辑
if (temperature > (Temp_critical_value + 10)) {
P2OUT |= BIT3; // 关闭加热片
P2OUT &= ~BIT6; // 打开风扇
OLED_ShowCHinese(16 * 0, 6, 14); // 显示"制冷"
OLED_ShowCHinese(16 * 1, 6, 15); // 显示"制冷"
} else if (temperature < (Temp_critical_value - 10)) {
P2OUT &= ~BIT3; // 打开加热片
P2OUT |= BIT6; // 关闭风扇
OLED_ShowCHinese(16 * 0, 6, 12); // 显示"加热"
OLED_ShowCHinese(16 * 1, 6, 13); // 显示"加热"
} else {
P2OUT |= BIT3; // 关闭加热片
P2OUT |= BIT6; // 关闭风扇
OLED_ShowString(0, 6, " ");
}
}
cpphttps://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2
本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!