目录
具体实现功能
具体功能:
(1)对淋浴器进行调温,水温低则加热,水温高则加冷水,直到到达设定的温度;
(2)淋浴器水箱没水则自动补水;
(3)LCD1602显示当前温度、时间和设定温度;
(4)报警时蓝牙发送时间和温度值(用串口模拟)。

仿真演示视频:
178-基于51单片机的智能调温淋浴器
设计介绍

51单片机简介
51单片是一种低功耗、高性能CMOS-8位微控制器,拥有灵巧的8位CPU和可编程Flash,使得51单片机为众多嵌入式控制应用系统提供灵活、高效的解决方案。
本设计所使用的芯片可兼容以下所有的51系列单片机(包括AT系列和STC系列)。

资料内容
仿真实现(protues8.7)
本设计利用protues8.7软件实现仿真设计,具体如图。

程序(Keil5)
本设计利用KEIL5软件实现程序设计。
主函数如下:
///////////////////////////////////////////////////
//*******************主函数**************************
//***************************************************
void main()
{
P1=0xff;
lcd_init(); //调用液晶屏初始化子函数
ds1302_init(); //调用DS1302时钟的初始化子函数
uart_cfg(); //???4800 ,0xf9
warn=450;
warn_L=150;
warn_H=600;
while(1) //无限循环下面的语句:
{
miao = BCD_Decimal(read_1302(0x81));
fen = BCD_Decimal(read_1302(0x83));
shi = BCD_Decimal(read_1302(0x85));
ri = BCD_Decimal(read_1302(0x87));
yue = BCD_Decimal(read_1302(0x89));
nian=BCD_Decimal(read_1302(0x8d));
write_temp(0,12,warn);//显示温度设定值
delayms(500);
//week=BCD_Decimal(read_1302(0x8b)); //不读取,直接通过日期计算得到
//显示温度、秒、时、分数据:
if(wd)
{
flag=ReadTemperature();
write_temp(1,10,flag);//显示温度,从第二行第12个字符后开始显示
delayms(500);
}
KEY();
Alarm();
if(low==0)
{
motor=0;
}
if(high==0)
{
motor=1;
}
write_sfm(6,miao);//秒,从第二行第8个字后开始显示(调用时分秒显示子函数)
write_sfm(3,fen);//分,从第二行第5个字符后开始显示
write_sfm(0,shi);//小时,从第二行第2个字符后开始显示
//显示日、月、年数据:
write_nyr(9,ri);//日期,从第二行第9个字符后开始显示
write_nyr(6,yue);//月份,从第二行第6个字符后开始显示
write_nyr(3,24);//年,从第二行第3个字符后开始显示
}
}
程序运行结果如图:

全部内容
全部资料包括程序(keil5)、protues仿真(protues8.7)、设计说明、答辩PPT、开发资料、资料使用介绍、仿真视频、最小系统介绍视频等。
