【单片机毕业设计】【mcuclub-jj-048】基于单片机的水表的设计

news2024/12/29 10:27:04

         最近设计了一个项目基于单片机的水表系统,与大家分享一下:

一、基本介绍

项目名:水表
项目编号:mcuclub-jj-048
单片机类型:STC89C52
具体功能:
1、通过继电器控制水泵,将水抽出经过流速传感器测出流速
2、通过防水式DS18B20测量水温,当超过上下限值时进行声光报警
3、通过按键设置温度上下限、水单价、以及启停水泵
4、通过显示屏显示水温、水流量、水单价、水总价
扩展功能:通过蓝牙模块将测量数据发送到手机端,并可以控制开关水泵

二、51实物图

单片机型号:STC89C52

板子为绿色PCB板,两层板,厚度1.2,上下覆铜接地。元器件基本上为插针式,个别降压芯片会使用贴片式。

供电接口:TYPE-C

 

三、51仿真图

仿真软件版本:proteus8.9

电路连线方式:网络标号连线方式

注意:部分实物元器件仿真中没有,仿真中会用其他工作原理相似的元件代替,这样可能导致实物程序和仿真程序不一样

 

 四、32实物图

单片机型号:STM32F103C8T6

板子为绿色PCB板,两层板,厚度1.2,上下覆铜接地。元器件基本上为插针式,个别降压芯片会使用贴片式。

供电接口:TYPE-C

 

 五、原理图

软件版本:AD2013

电路连线方式:网络标号连线方式

注意:原理图只是画出了模块的引脚图,而并不是模块的内部结构原理图

 

 六、PCB图

由原理图导出,封装很大一部分都是作者自己绘制,不提供封装库,只提供连接好的源文件。中间有一个项目编号,隐藏在单片机底座下,插入单片机后不会看到。

两层板,上下覆铜接地。

 

七、系统框图

设计以单片机为核心控制器,加上其他模块一起组成此次设计水表的整个系统,其中包括中控部分、输入部分和输出部分。中控部分采用了单片机控制器,其主要作用是获取输入部分的数据,经过内部处理,逻辑判断,最终控制输出部分。输入由四部分组成,第一部分是温度检测模块,通过该模块检测当前水温的温度;第二部分是水流量检测模块,通过该模块获取当前水流量;第三部分是按键模块,通过该模块可以切换界面、设置阈值、切换模式等;第四部分是供电模块,通过该模块可给整个系统进行供电。输出由三部分组成,第一部分是显示模块,通过该模块可以显示监测的数据以及设置的阈值;第二部分是继电器模块,通过继电器控制水泵的开关;第三部分是声光报警模块,如果温度值大于上限或小于下限,声光报警。除此之外,蓝牙模块既作为输入又作为输出,蓝牙模块和手机进行连接,可以将监测的数据传输到用户手机端,用户也可以通过手机端发送指令控制继电器的工作及其模式的切换。具体系统框图如图所示。

 

 八、软件设计流程

系统的主流程图如图4-2所示。在主程序中:首先对各个模块进行初始化,随后进入while主循环,在主循环中,首先进入第一个函数按键函数,该函数主要分为两部分,第一部分为调用按键扫描函数获取按键键值,第二部分通过键值进行相应的处理操作,包括切换界面、设置阈值等;紧接着进入第二个函数监测函数,该函数主要通过调用相应的驱动函数获取测量值,并通过蓝牙模块将监测的数据传输到手机端,用户也可以通过手机端发送指令,设备根据用户发送的指令执行对应的处理;紧接着进入第三个函数显示函数,该函数显示监测值及阈值;最后进入第四个函数处理函数,如果温度值大于上限或小于下限,声光报警。

 

 九、部分程序展示

软件版本:keil5

逻辑程序和驱动程序分开,分布于main.c和其他.c文件

void Manage_function(void)
{
	if(flag_display == 0)                  //测量界面
	{
		if((temp_value > temp_max*10) || (temp_value < temp_min*10))  //如果温度值大于上限或小于下限,声光报警
    {
      if(time_num % 20 == 0)
      {
        BEEP = ~BEEP;
        LED = ~LED;
      }
    }
    else
    {
      BEEP = 1;
      LED = 1;
    }
	}
	else													        //设置界面,关闭声光报警
	{
		LED = 1;
		BEEP = 1;
		flag_timer_begin = 0;               //计时关闭
		pulse_num = 0;                      //脉冲数清零
    flow_value = 0;                     //流速清除
	}
}

资料请点击跳转到官网下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/876.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis实战篇一 (短信登录)

Redis企业实战&#xff08;黑马点评&#xff09;项目整体架构项目部署后端部署前端部署短信登陆基于Session实现登录集群的Session共享问题基于Redis实现共享session登录解决状态登录刷新的问题——登录拦截器的优化本期学习路线短信登陆: Redis的共享session应用 商户查询缓存…

jar包突然过大解决方法,解决ffmpeg剪辑视频导致jar过大

jar包突然过大解决方法 缘由&#xff1a; ​ 项目中要需要用到视频文件&#xff0c;为了方便用户使用&#xff0c;那么页面中就需要增加视频剪辑的相关功能&#xff0c;让用户上传视频后能够自定义的进行剪辑&#xff0c;对自己的视频做出相应的更改 结果&#xff1a; ​ 打jar…

Vue复刻华为官网 (二)

文章目录1 推荐信息1.1 思路1.2 代码1.3 知识补充1.4 效果图2 宣传海报2.1 思路2.2 代码2.3 效果图3 新闻与活动3.1 思路3.2 代码3.3 效果图1 推荐信息 1.1 思路 看了这个gif后&#xff0c;可以清楚的看到产生了三个动画效果&#xff1a;图片"拉近"&#xff0c;"…

js 实现页面隐藏、关闭、刷新给出对应的提示

我们在做项目的时候经常会遇到一些需求&#xff0c;比如在某些页面当点击浏览器刷新 或者关闭的时候会有对应的提示&#xff0c;是否离开或者重新加载此网站。比如csdn写文章的时候就有这个弹窗&#xff0c;这功能就是用onbeforeunload实现的。 注意&#xff1a;如果你加载下面…

学会用Linux用户管理命令

目录 useradd 添加新用户 1&#xff09;基本语法 2&#xff09;案例实操 passwd 设置用户密码 1&#xff09;基本语法 id 查看用户是否存在 1&#xff09;基本语法 2&#xff09;案例实操 cat /etc/passwd 查看创建了哪些用户 1&#xff09;案例实操 su 切换用户 1…

Linux基本工具(上)

目录 粘滞位&#xff1a;t yum yum install yum list ​编辑 yum list | grep 软件名 yum search 软件名 软件卸载&#xff1a;yum remove rz sz表示下载&#xff1a; Linux开发工具&#xff1a; vim编辑器&#xff1a; vim的几种模式&#xff1a; 粘滞位&#xff1a…

蛇形矩阵求解

题目&#xff1a; 题解思考&#xff1a; 这个题目我有两种解题方法&#xff1a; 1&#xff09;利用数组&#xff0c;数组的下标。 2&#xff09;利用等差数列的规律&#xff08;这个可能比较难理解&#xff09;&#xff0c;行和列的递增规律。 注意输出格式的处理和多组输入…

三分钟带你手撕带头双向循环链表

数据结构——带头双向循环链表 &#x1f3d6;️专题&#xff1a;数据结构 &#x1f648;作者&#xff1a;暴躁小程序猿 ⛺简介&#xff1a;双非大二小菜鸟一枚&#xff0c;欢迎各位大佬指点~ 文章目录数据结构——带头双向循环链表前言一、什么是双向链表&#xff1f;二、带头…

图像智能处理黑科技,让图像处理信手拈来

图像智能处理黑科技&#xff0c;让图像处理信手拈来0. 前言1. 图像智能处理简介2. 图像切边增强3. PS 检测4. 图像水印去除5. 图像矫正6. 图像去屏幕纹7. 调用图像智能处理 API小结0. 前言 计算机视觉 (Computer Vision, CV) 通过研究如何令机器“看懂”世界&#xff0c;构建从…

嵌入式分享合集84

今天做的某地区的项目, 了解了一下 很是不开心 原来这几年丢的不仅是某公湖 真呵呵 一、学习单片机 如何系统地入门学习STM32&#xff1f; 假如你会使用8051 &#xff0c; 会写C语言&#xff0c;那么STM32本身并不需要刻意的学习。 你要考虑的是&#xff0c; 我可以用STM32实…

Scratch软件编程等级考试三级——20200913

Scratch软件编程等级考试三级——20200913理论单选题判断题实操幻影小猫打气球游戏猫咪抓老鼠游戏理论 单选题 1、要使以下代码运行后画出如图所示三角形风车&#xff0c;则以下代码中①②③④处应分别填入多少&#xff1f;&#xff08;&#xff09; A、3 4 90 120 B、4 3 90…

实验项目一:【文本反爬网站的分析和爬取】

一、实验目的 熟悉使用Selenium、Pyppeteer等工具爬取网站基本内容&#xff0c;通过分析具有文本反爬技术网站&#xff0c;设计爬取策略来获取文本正确的内容。 二、实验预习提示 安装Python环境 &#xff08;Python 3.x&#xff09;&#xff1a;Pychram社区版Anaconda为Pytho…

[SpringBoot] YAML基础语法

✨✨个人主页:沫洺的主页 &#x1f4da;&#x1f4da;系列专栏: &#x1f4d6; JavaWeb专栏&#x1f4d6; JavaSE专栏 &#x1f4d6; Java基础专栏&#x1f4d6;vue3专栏 &#x1f4d6;MyBatis专栏&#x1f4d6;Spring专栏&#x1f4d6;SpringMVC专栏&#x1f4d6;SpringBoot专…

四线法与电桥

目录&#xff1a; 一、基本电桥电路 二、开尔文四线检测 三、惠斯通与开尔文电桥 1、电阻桥定义解释 2、电阻桥相关计算 3、开尔文双电桥 4、电阻桥的应用 --------------------------------------------------------------------------------------------------------…

java中的垃圾回收算法与垃圾回收器

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

Swift学习笔记笔记(五) Swift扩展协议类

一、 实验目的&#xff1a; 1.掌握Swift扩展型 2.掌握Swift协议 3.掌握Swift类 二、实验原理&#xff1a; 1.Swift扩展的定义 2.Swift协议的定义 3.Swift类的定义 三、实验步骤及内容&#xff1a; 1.方法 //实例方法 class Website { var visitCount 0 func visiting(){…

【LC】二叉树应用强化OJ

✨博客主页: 心荣~ ✨系列专栏:【LeetCode/牛客刷题】 ✨一句短话: 难在坚持,贵在坚持,成在坚持! 文章目录1. 检查两颗树是否相同2. 另一颗树的子树3. 二叉树最大深度4. 判断—颗二叉树是否是平衡二叉树5. 对称二叉树6. 二叉树的构建及遍历7. 二叉树的分层遍历8. 给定一个二叉树…

JAVAweb第一次总结作业

1.什么是html HTML的全称为超文本标记语言(Hyper Text Markup Language)&#xff0c;是一种标记语言。它包括一系列标签&#xff0c;通过这些标签可以将网络上的文档格式统一&#xff0c;使分散的Internet资源连接为一个逻辑整体。 HTML文本是由HTML命令组成的描述性文本&…

【Python】import模块的多种操作

前言 记录一下关于Python在导入模块时候一些操作~ 知识点&#x1f4d6;&#x1f4d6; Python魔法方法&#xff1a;__all__ Python内置模块&#xff1a;importlib 实现 指定导出的变量 当你在使用 from xxx import * 时候&#xff0c;可以通过 __all__ 来指定可被导出的变…

每天五分钟机器学习:通过学习曲线判断模型是过拟合还是欠拟合

本文重点 本节课程我们学习使用学习曲线来判断某一个学习算法是否处于偏差、方差问题。学习曲线其实就是训练误差和验证误差关于样本m的曲线,我们将通过学习曲线来判断该算法是处于高偏差问题,还是处于高方差问题。 高偏差问题(欠拟合) 注意:这个m表示训练集数据样本…