一.硬件方案
该设计以单片机STC89C52为核心,作为控制器件,控制一定空间内的温度稳定在预设值,当温度低于预设温度时加热片通电加热,当温度回升到设定温度停止加热;当温度高于设定温度时风扇开始工作当温度处于设定温度是风扇停止运行;空间温度值可根据需要设定。增加蓝牙通信功能,可将温度温度数据通过蓝牙模块传输中至手机APP上显示,同时可以通过App设置温度的上下限。
二.设计功能
(1)系统可检测当前环境的温度,并采用液晶屏显示;手机APP通过蓝牙功能与系统进行连接之后,系统可通过蓝牙模块将温度数据发送至手机APP并显示;
(2)可通过按键和APP设置温度报警值的上下限;
(3)系统带有断电记忆功能,下次启动时,记忆上次设置的温度上下限值,无需再次设置;
(4)当温度超过上限报警值时,红灯亮,相应继电器开关吸合(可接散热风扇);
(5)当温度低于下限报警值时,绿灯亮,相应继电器开关吸合(可接加热片)。
(6)蓝牙功能:手机安装相应APP后,打开APP,点击连接模块蓝牙;
a.APP可同步显示温度值;
b.设置温度下限发送TL:XX.X+回车;
c.设置温度上限发送TH:XX.X+回车;
三.设计原理图
原理图主要采用AD软件进行设计,如图:
Protues仿真图:
四.程序设计
主程序源码如下:
/****** ******主函数(程序的入口)****************/
void main()
{
unsigned char a = 0;
ConfigTimer0(5);
ConfigUART(9600);
InitLcd1602(); //初始化液晶
LcdShowStr(2, 0,"Temperature"); //显示屏显示:Temperature
Start18B20(); //开始读取温度信号
for(a=0;a<10;a++)
{
wendu_init();
Delay_Ms(10);
}
wendu_chuli(); //读取温度并显示
TH_chushihua(); //温度上下限报警值初始化
while(1)
{
Key_set_scan();//按键扫描
if(moshi == 0) //当在检测模式时
{
wendu_chuli(); //温度检测并显示
if(wendu>=H_baojing) //当温度大于温度上限时
{
BUZZER = 0; //蜂鸣器响
LED_R = 0; //红灯亮
LED_G = 1; //绿灯灭
if(lanya==1)
{
send_string_com("Temp:",5); //发送到电脑上
send_string_com(str_wd,4);
send_char_com('\x0a');
send_string_com("Temp High",9); //发送到电脑上
send_char_com('\x0a');
lanya = 0;
}
}
else if (wendu>T_baojing&&wendu<H_baojing) //当温度在温度下限和温度上限之间时
{
BUZZER = 1; //蜂鸣器不响
LED_R = 1; //红灯灭
LED_G = 1; //绿灯灭
if(lanya==1)
{
send_string_com("Temp:",5); //发送到电脑上
send_string_com(str_wd,4);
send_char_com('\x0a');
lanya = 0;
}
}
else if (wendu<=T_baojing) //当温度小于温度下限时
{
BUZZER = 0; //蜂鸣器响
LED_R = 1; //红灯灭
LED_G = 0; //绿灯亮
if(lanya==1)
{
send_string_com("Temp:",5); //发送到电脑上
send_string_com(str_wd,4);
send_char_com('\x0a');
send_string_com("Temp Low",8); //发送到电脑上
send_char_com('\x0a');
lanya = 0;
}
}
} else BUZZER = 1;
}
}
资料链接:https://pan.baidu.com/s/1KN7itwwRyg8BD2djFORE7g?pwd=m5nv