本设计由STC89C52单片机电路+DS18B20温度检测电路+按键电路+继电器控制电路+LCD1602液晶显示电路+电源电路组成。
1、通过DS18B20温度传感器实时检测温度,通过按键可以设置温度的上下限,如果当前温度低于设置的温度下限,则继电器闭合,如果当前温度超过设置的温度上限,则继电器断开。
2、LCD1602液晶实时显示当前温度和温度的阈值。
3、继电器可以外接热得快灯加热负载。
完整版 电路图和程序代码 下载地址
https://pan.baidu.com/s/12piNtvlB4Cj5bxO0WSuJ1g?pwd=8888
部分代码展示
unsigned int setL = 20; // 设置 温度下
unsigned int setH = 40; //设置 温度上
unsigned char SetFlag = 0;//设置标志
void Init_Timer0(void);//定时器初始化
void CheckKey(void);
void main (void)
{
Init_Timer0();
LCD_Init(); //初始化液晶
DelayMs(20); //延时有助于稳定
LCD_Clear(); //清屏
while (1) //主循环
{
CheckKey(); //检测按键
if(DisFlag==1)
{
DisFlag=0;
sprintf(dis0,"NowT:%4.1fC ",temperature);
LCD_Write_String(0,0,dis0); //显示
sprintf(dis1," %02d- %02d ",setL,setH);
LCD_Write_String(0,1,dis1); //初始化显示
if(temperature<setL) //低于下限
{relay = 0;}//打开继电器
else if(temperature>setH) //高于上限
{relay = 1;}//关闭继电器
}
}
}
void CheckKey(void)
{
static unsigned char rekey =0;
if((key1==0)||(key2==0)||(key3==0)) //检测到按键按下
{
DelayMs(10); //小抖动
if(rekey==0)
{
if(key1==0) //检测是否按下
{
rekey=1;
SetFlag++;//设置标志
if(SetFlag >= 3) SetFlag = 0;
}
else if(key2==0)//设置值键
{
rekey=1;
if(SetFlag==1) //处于设置1
{
if(setL > 0 )
{setL=setL-1;}
}
else if(SetFlag==2)//处于设置2
{
if(setH > 0)
{setH=setH-1;}
}
}
else if(key3==0)//设置值键
{
rekey=1;
if(SetFlag==1) //处于设置1
{
if(setL < 99 )
{setL=setL+1;}
}
else if(SetFlag==2)//处于设置2
{
if(setH < 99 )
{setH=setH+1;}
}
}
}
}
else
{
rekey=0; //防止重复检测到按键
}
}
完整版 电路图和程序代码 下载地址