1、主要功能
该系统由AT89C51单片机+LCD1602模块+DS18B20温度传感器模块+DS1302时间模块+继电器驱动模块+电位器模块构成。适用于智能饮水机、智能水杯等相似项目。
可实现功能:
版本一:
1、LCD1602实时显示时间、水杯温度、水位高度、是否出水
2、DS18B20采集水杯温度数据
3、DS1302采集时间数据
4、超声波检测,靠近一定范围自动感应出水
6、水温和水位超过下限时声光报警,对应继电器闭合,自动加热/加水
7、可以通过按键手动加热、加水、清洗
8、可选择冷热水
版本二:
加入模拟GMS、蓝牙、上位机等模块的上传数据功能,按键按下上传实时的温度数据,已加注释,可以手动更改需要上传的数据内容。
2、仿真
protues 仿真使用的是8.10版本,由于该软件版本迭代原因,不能确保其他版本软件能够正常运行,请安装好对应软件(版本一致或者高于这个版本都可以)
版本一:
版本二:
3、程序代码
附上部分代码,仅供参考。
/* 按键控制 */
void KEY_Control(void)
{
if(key_scan() == 1) //加水
{
add_flag =!add_flag;
ADD_Water =!ADD_Water;
di();
}
if(key_scan() == 2) //清洗
{
CLEAN =!CLEAN;
di();
}
if(key_scan() == 3) //加热
{
HOT =!HOT;
di();
}
if(key_scan() == 4) //冷热水切换
{
LED3 =!LED3;
di();
}
}
/* 主函数 */
void main(void)
{
TMOD = 0x11; //配置定时器0为工作方式1,定时器1位工作方式1
TH0 = 0;
TL0 = 0;
TH1 = 0x0EC; //定时5ms
TL1 = 0x78;
EA = 1; //打开总中断
ET1 = 1; //打开定时器0中断
TR1 = 1; //打开定时器1
TR0 = 0; //打开定时器0
L1602_init(); //屏幕初始化
date_init(); //时间初始化
Ds1302ReadTime();//读取时间
TIME[0]&=0X7F;
Ds1302Init(); //DS1302初始化
while(1)
{
display_shuiwei(); //显示水位
Ds1302ReadTime(); //读取时间
display_time(); //显示时间
display_temp(); //显示水杯水温
if(key_scan() !=0) //判断是否按下按键
{
KEY_Control(); //进行对应按键控制
}
count_instance(); //超声波测算距离,判断是否自动出水
}
}
4、原理图
5、常见问题汇总
里面包含了我对各个模块的详细解析,可以结合代码一起理解。(不定时更新,讲解模块也会越来越多)
6、资源获取
扫描如下二维码,后台回复"51智能饮水机"获取~
项目没有开源,浅浅一杯奶茶💴,支持答疑~
希望可以对你有所帮助哈!