功能:
0.本系统采用STC89C52作为单片机
1.液晶实时显示当前的设定温度/实际温度/水龙头状态和水流量
2.按键可开关水龙头,当温度低于设定温度时,启动加热控制继电器,给水加热, 当加热到(设定温度+1)时,停止加热,使水温在一定范围
3.当水温超过55摄氏度时,蜂鸣器报警
4.按键可设定水温,设定范围20℃~50℃
5.采用DC002作为电源接口可直接输入5V给整个系统供电

原理图:

PCB :

主程序:

#include "main.h"/*******************变量定义*********************/
int tempBuf;
float temperature; //温度
int setTemp = 40; //设定温度
float flow = 0; //水流量
char dis[16];bit dispFlag = 0; //显示标志
bit openFlag = 0; //水龙头开启标志
int pulseCnt;/********************************************************
函数名称:void mian()
函数作用:主函数
参数说明:
********************************************************/
void main()
{LCD_Init();   //初始化液晶DelayMs(200); //延时有助于稳定LCD_DispStr(4, 0, "Welcome!");DelayS(1);LCD_Clear();  //清屏Timer0_Init(); //初始化定时器0Ext0_Init();while (1) //死循环{if (dispFlag == 1) //200ms刷新一次{EX0 = 0; //关闭外部中断0dispFlag = 0;flow = (float)pulseCnt*5/43; //推算每秒计数,计算水流量L/min  f = (43*Q) Q=L/minDispNormal();pulseCnt = 0; //清零EX0 = 1; //打开外部中断0}if (openFlag == 1) //水龙头打开{RELAY_WATER = ON;if (temperature < setTemp){RELAY_HEAT = ON;}else if (temperature > setTemp + 1) //大于设定温度1度后,停止加热,以使温度在设定范围附近{RELAY_HEAT = OFF;}if (temperature > 55) //大于55度蜂鸣器报警{BUZZER = ON;}else{BUZZER = OFF;}}else //水龙头关闭{RELAY_WATER = OFF;RELAY_HEAT = OFF;BUZZER = OFF;}KeyProcess();}
}/************************* 正常显示模式 *************************/
void DispNormal(void)
{bit ack;DS18B20_Start();ack  = DS18B20_GetTemp(&tempBuf);if (ack == 1){temperature = (float)tempBuf * 0.0625; //温度值转换}else {temperature = 0;}sprintf(dis, "Set:%3d", setTemp); //打印温度值LCD_DispStr(0, 0, dis);  //显示第一行LCD_DispOneChar(7, 0, 0xdf); //写入温度右上角点LCD_DispOneChar(8, 0, 'C'); //写入温度右上角点if (openFlag == 1){LCD_DispStr(10, 0, "Open ");}else{LCD_DispStr(10, 0, "Close");}sprintf(dis, "%5.1f", temperature); //打印温度值LCD_DispStr(0, 1, dis); //显示第二行LCD_DispOneChar(5, 1, 0xdf); //写入温度右上角点LCD_DispOneChar(6, 1, 'C'); //写入温度右上角点sprintf(dis, " %3.1fL/min", flow); //打印当前流量LCD_DispStr(7, 1, dis); //显示第二行
}/************************* 定时器0初始化 *************************/
void Timer0_Init(void)
{TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响TH0 = (65536 - 9216) / 256; //重新赋值 10msTL0 = (65536 - 9216) % 256;EA = 1;  //总中断打开ET0 = 1; //定时器中断打开TR0 = 1; //定时器开关打开
}/************************* 定时器0中断 *************************/
void Timer0_Interrupt(void) interrupt 1
{static unsigned char time10ms  = 0;TH0 = (65536 - 9216) / 256; //重新赋值 10msTL0 = (65536 - 9216) % 256;time10ms++;if (time10ms > 20){dispFlag = 1; //显示标志time10ms = 0;}}/************************* 外部中断0初始化 *************************/
void Ext0_Init(void)
{IT0 = 1; //下降沿触发EX0 = 1; //使能外部中断0EA = 1; //打开总中断
}/************************* 外部中断0 *************************/
void EXT0_Interrupt() interrupt 0
{pulseCnt++;
}

仿真演示视频:
https://www.bilibili.com/video/BV1254y1d7fP/

实物演示视频:
https://www.bilibili.com/video/BV1654y1d7Jm/

基于51单片机的水温水流量检测/智能水龙头控制系统proteus仿真原理图PCB相关推荐

  1. 基于51单片机的智能水龙头控制系统proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.液晶实时显示当前的设定温度/实际温度/水龙头状态和水流量 2.按键可开关水龙头,当温度低于设定温度时,启动加热控制继电器,给水加热, 当加热到 ...

  2. 基于51单片机的数字电容容值测量仪proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.系统支持15pF~450uF电容测量 2.按键可更改测量量程 3.除了采用LCD1602可以实时显示测量参数,同时具有LED可以显示各个档位 ...

  3. 基于51单片机的三路超声测距仪设计wifi通信proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时循环显示3路超声波探测距离,同时WIFI串口上报 2.带有WiFi模块,可与手机实现数据交互,WiFi模块型号采用是常见 ...

  4. 基于51单片机的温度甲烷监测报警串口上报proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前温度和甲烷浓度 2.超过甲烷浓度阈值,蜂鸣器报警 3.按键可更改甲烷浓度阈值上限和启动/暂停检测 4.0`20% ...

  5. 基于51单片机的八路多路温度测控系统proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时滚动显示8路温度传感器检测的温度值及设定温度值 2.当8路平均温度超过设定温度阈值范围,蜂鸣器报警,同时启动加热或降温装 ...

  6. 基于51单片机NRF24L01的远程水压监控及控制proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.系统分为主机和从机. 2.从机负责设定压力阈值.屏幕显示及蜂鸣器报警. 3.从机负责检测当前的水压值,并通过对比设定压力阈值,控制水泵继电器 ...

  7. 基于51单片机的万年历(带温湿度)带闹钟功能proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶显示当前时间和温湿度 2.按键可切换页面,显示农历,显示闹钟设置 3.当时间到达设定闹钟时间时,蜂鸣器报警 原理图: PCB ...

  8. 基于51单片机的大棚环境土壤湿度光强监测系统proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.系统实时监测当前温湿度/土壤湿度/环境光强并显示 2.温湿度超过设定阈值范围,蜂鸣器响,同时开启对应控制继电器 3.土壤湿度低于设定下限,开启 ...

  9. 基于51单片机的汽车超声波防撞声光报警系统proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时距离阈值/测试距离 2.低于距离阈值将声光报警 3.按键可更改距离阈值 原理图: PCB: 主程序: #include ...

最新文章

  1. [置顶] 正则表达式应用:匹配IP地址
  2. VTK:Points之ExtractEnclosedPoints
  3. python学习笔记(十)标准库pprint
  4. 使用ASP.NET Core 3.x 构建 RESTful API - 2. 什么是RESTful API
  5. gridview获取当前行索引的方法
  6. Java 实例 - 测试两个字符串区域是否相等
  7. dell屏幕亮度调节不了_?戴尔XPS13 7390笔电测评:10代酷睿加持,屏幕/散热/续航升级...
  8. 设计师 VR 成型设计知识收集
  9. 64位电脑上安装MySQL进行MFC开发的相关问题
  10. 拷贝构造函数什么时候调用?
  11. 智慧供水:整体解决方案建设需求
  12. 平面设计素材的优秀网站有哪些?好用的都放在这里啦!
  13. c语言解6位数密码程序,牛逼了!C语言打造的6位密码随机生成器,小白也可以学会...
  14. Android 简历模板
  15. Django学习路线之Django自带模板语言DTL
  16. Laravel-Vue开发初探二:Inertia拾遗
  17. c++ template aliases
  18. 2020诺贝尔文学奖得主,死亡的诗歌
  19. PHM2010刀具磨损数据集分享
  20. 《程序员健康指南》阅读笔记

热门文章

  1. Bayesian Convolution Neural Networks with Bernoulli Approximate Variational Inference
  2. 祝各位SAPER元旦快乐!
  3. 电影推荐之《指环王:双塔奇兵》 隐私策略(Privacy policy)
  4. java swt 双屏_YOTA3手机和kindle合二为一,让你玩的同时享受阅读的乐趣
  5. python星号和双星号的区别
  6. 深度学习——MSRA初始化
  7. FPGA设计进阶1--XilineFPGA结构(UltraScale)
  8. NB-IoT使用笔记(3)在linux下使用python搭建UDP服务
  9. .NET 组件集 Componentone 发布更新:Blazor Edition + 跨平台数据组件
  10. 天上掉馅饼?英国推出全球首个无人机派送披萨服务