概述: 本实例是基于51单片机的智能热水器控制系统,主要硬件由51单片机最小系统,LCD1602显示屏屏电路,水位传感器电路,ADC转换电路,DS18B20数字温度传感器,蜂鸣器报警电路,按键电路,加水继电器电路,加热继电器电路电路构成。
功能:
1.显示屏显示内容:第一行:当前的水位高度(单位:cm);第二行:当前水箱的温度。
2.三个按键:按键1:设置键;按键2:加一键;按键3:减一键。当设置键按下后,进入阈值调整界面,可分别调整水位上限值、下限值;水箱温度上值、下限值。
3.当系统测量水箱水位,如果水位过低,加水继电器启动加水功能。高于上限值,继电器关闭加水功能。
4.当系统测量水箱温度,如果水温过低,加热继电器启动加热功能。高于上限值,继电器关闭加热功能。
5.当系统检测到水箱温度过高或水位过高时,开启蜂鸣器报警。
原理图:
(1)单片机最小系统:由51单片机,晶振电路,复位电路组成,其中晶振电路的功能是给单片机运行程序提供时钟节拍,复位电路是为单片机上电时提供一个高电平的复位信号。
(2)采用3路按键电路:当按键按下后,相应的引脚为低电平;按键释放后,引脚为高电平;独立按键为复位按键。
(3)水位信号采集电路:水位电路采用模拟式传感器,水位传感器接上电源后,根据水位的高低输出相应的电压,AD转换芯片AD0832将电压转换为8位的数字值,并通过计算得出当前的水位。
(4)加热、加水控制电路:采用继电器电路进行控制。单片机引脚通过三极管S9012,以此驱动继电器的开关。引脚输出高电平,继电器关闭;引脚输出低电平,继电器开启。
(5)蜂鸣器报警电路:蜂鸣器也用三极管S9012进行驱动。开启与关闭和继电器控制一样。
(6)温度传感器电路:温度感应采用数字型传感器DS18B20,单片机根据温度传感器的控制时序,读取温度传感器内部寄存器,并转化为当前温度。
Protues仿真:
程序设计:
//主函数
void main()
{
disp2[9]=0xdf;
init_1602();
TMOD|=0X01;
TH0=0X3C;
TL0=0XB0;
ET0=1;//打开定时器0中断允许
EA=1;//打开总中断
TR0=1;//打开定时器
while(1)
{
if(!k1)//设置
{
if(mode<4)
mode++;
else
mode=0;
while(!k1);
}
if(mode==1)//设置水位下限
{
if(!k2)
{
if(lim3<lim4)
lim3++;
while(!k2);
}
if(!k3)
{
if(lim3>0)
lim3--;
while(!k3);
}
}
if(mode==2)//设置水位上限
{
if(!k2)
{
if(lim4<100)
lim4++;
while(!k2);
}
if(!k3)
{
if(lim4>lim3)
lim4--;
while(!k3);
}
}
if(mode==3)//设置温度下限
{
if(!k2)
{
if(lim1<lim2)
lim1++;
while(!k2);
}
if(!k3)
{
if(lim1>0)
lim1--;
while(!k3);
}
}
if(mode==4)//设置温度上限
{
if(!k2)
{
if(lim2<100)
lim2++;
while(!k2);
}
if(!k3)
{
if(lim2>lim1)
lim2--;
while(!k3);
}
}
//输出控制
if((high>lim4)||(ds18b20_temp>lim2))
beep=0;
else
beep=1;
if(high<lim3)
out2=0;
if(high>(lim3+lim4)/2)
out2=1;
if(ds18b20_temp<lim1)
out1=0;
if(ds18b20_temp>(lim1+lim2)/2)
out1=1;
}
}
关注公众号-电子应用学习馆,首页回复“热水器”获取。