基于单片机的智能饮水机设计

一.硬件方案

        基于单片机的饮水机的温度控制系统可以实时检测饮水机水箱的水温,并且可以通过数码管显示饮水机水箱水温度数,可以通过键盘或开关选择制冷或加热,可以人为设置水的温度的上下限,如加热,当温度在设定的范围内时正常工作,当低于水温下限时控制加热器加热;如制冷,当温度高于水温上限时控制压缩机制冷,温度检测范围0~95℃,精度±1℃,当温度超过设定值时具有示警功能。整体电路主要由用51单片机+防水型温度传感器DS18b20+液晶屏LCD1602+液位开关+时钟芯片+继电器+小风扇+按键;

        原理图如图:

基于单片机的智能饮水机设计_第1张图片

        仿真图:

基于单片机的智能饮水机设计_第2张图片  

二.设计功能

(1)系统上电后,LCD1602显示当前的时间、日期和水温。
(2)使用不锈钢液位开关来检测是否有水源,有水则根据设定时间段和水温来判断是否需要加热,没水时启动对应指示灯和蜂鸣器报警,同时启动小风扇转动模拟加水动作(可更换成抽水泵);
(3)使用防水型温度传感器DS18B20进行测温,需要将测温体放入水中,才能测量水温,范围0-100度;
(4)可以通过按键设定实时时间、定时时间段、水温,水温范围是0-100度;
(5)具有定时烧水功能,即设置时间段,比如设置19:00~20:00,在这个时间段中如果有水源,并且水温低于设定值则启动自动加热功能,加热LED点亮,同时继电器闭合,控制插座得电,使加热装置工作,当温度超过设定值时自动停止加热,即继电器断开(使加热装置断电);
(6)具有自动清洗功能,固定每周一早上6点-7点自动启动清洗装置,即开启小风扇模拟清洗,不在该时间段内小风扇不转动;

三.软件设计

/*******************************************************************************************************/
void T0_init(void)
{
    TMOD=0x11;                          //设置定时器0为工作方式1
    TH0=(65536-50000)/256;          //50MS定时
    TL0=(65536-50000)%256;
    EA=1;                              //开定时器T0的中断    总中断
    ET0=1;                           //允许T0中断
    TR0=1;                           //开启定时器
}

void main()
{
    BEEP=0;                         //关闭蜂鸣器
    T0_init();                     //定时器初始化
    init();                         //液晶初始化
    while(1)
    {
        if(Adjust==0)             //非调节模式下显示时间温度
        {
            Time_Display();         //显示时间
            if(Count>=20)                            //50ms*20次=1s
            {
                EA=0;
                temperature=readtemperature();        //读取温度
                EA=1;
                Temperature_dispaly(0x80+0x40+2,temperature);//显示温度
                Temperature_dispaly(0x80+2,temp_set);         //显示设置温度
                Count=0;                            //清除计数
            }
            Open();                  //动作判断,根据定时 温度 水位
        }
        Keyscan();                 //扫描键盘
        
    }
}

void Timer0() interrupt 1                    //定时器T0中断函数
{
    TH0=(65536-50000)/256;                    //赋初值=50ms
    TL0=(65536-50000)%256;                    //TH0=3C,TL0=B0
    Count++;                                //每中断一次,Count加一,计数20次,表示1s的时间到
}

链接:https://pan.baidu.com/s/18bGWzk2qVihKSpexgBIbew?pwd=cxol 
提取码:cxol

你可能感兴趣的:(单片机教程,单片机,嵌入式硬件)