基于51单片机水位监测控制报警仿真设计( proteus仿真+程序+设计报告+讲解视频)

这里写目录标题

  • 💥1. 主要功能:
  • 💥2. 讲解视频:
  • 💥3. 仿真
  • 💥4. 程序代码
  • 💥5. 设计报告
  • 💥6. 设计资料内容清单&&下载链接
    • 💥[资料下载链接:](https://docs.qq.com/doc/DS2RGaVBRcHhId3Bk)

51单片机水位监测控制报警仿真设计 ( proteus仿真+程序+设计报告+讲解视频)

仿真图proteus7.8及以上

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:S0064

💥1. 主要功能:

基于51单片机AT89C51/52(与AT89S51/52、AT89C51/52、STC89C51/52等51内核单片机通用)

基于51单片机水位监测控制报警仿真设计

1、监测并通过数码管显示当前水位;

2、利用电机模拟水泵,具有蜂鸣器,显示灯等装置;

3、带有水位上下限设置功能,低于水位下限加水,高于上限停止加水;

4、当前水位高于水位上限蜂鸣器报警,并抽水,水泵抽水时显示灯亮,抽到水位上限时则停止抽水;

需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。

💥2. 讲解视频:

讲解视频包含仿真运行讲解和代码讲解

💥3. 仿真

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。开始仿真后,数码管显示水位,如果水位偏高,偏高指示灯亮红色

img

当前水位高于水位上限蜂鸣器报警,并抽水,水泵抽水时显示灯亮,抽到水位上限时则停止抽水;

img

💥4. 程序代码

使用keil4或者keil5编译,代码有注释,可以结合报告理解代码含义。

img
main.c


#include "reg51.h"
#include <PCF8591.h>
#define uchar unsigned char
#define uint unsigned int
sbit out=P3^3;//抽水机
sbit led1=P3^6;//指示灯
sbit led2=P3^7;
sbit smg1=P2^0;//数码管
sbit smg2=P2^1;	 
sbit smg3=P2^2;
sbit smg4=P2^3;
sbit k1=P1^0;//按钮
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
sbit k5=P1^4;
sbit beep=P1^7;//蜂鸣器
uchar time=0,mode=0;//系统变量	 
uchar water=0;//水位
uchar lim1=40,lim2=60;//阀值
uchar key=0;
uchar code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9,无小数点
//延时
部分函数,工程文件压缩包解压后即可获取
void delay(uint i)
{
	while(i--);
}
 //按键检测
uchar key_scan()
{
	uchar i=0;
	if(!k1 &&(key!=1))
	{
		key=1;
		i=1;
	}
	if(!k2 &&(key!=2))
	{
		key=2;
		i=2;
	}
	if(!k3 &&(key!=3))
	{
		key=3;
		i=3;
	}
	if(!k4 &&(key!=4))
	{
		key=4;
		i=4;
	}
	if(!k5 &&(key!=5))
	{
		key=5;
		i=5;
	}
	if(k1 && k2 && k3 && k4 && k5 )
		key=0;
	return i;
}
//主函数
void main()
{
	uchar i=0,k=0;

	TMOD|=0X01;
	TH0=0X3C;
	TL0=0XB0;	
	ET0=1;//打开定时器0中断允许
	EA=1;//打开总中断
	TR0=1;//打开定时器
	while(1)
	{
		i=key_scan();//按键检测
		//设置按钮
		if(i==2)
		{
			mode=1;
		}
		if(i==1)
		{
			mode=2;
		}
		if(mode==1)//设置下限
		{
		if(i==4)
		{
			if(lim1<lim2)
				lim1++;
		}
		if(i==5)
		{
			if(lim1>0)
				lim1--;
		}
		}
		if(mode==2)//设置上限
		{
		if(i==4)
		{
			if(lim2<100)
				lim2++;
		}
		if(i==5)
		{
			if(lim2>lim1)
				lim2--;
		}
		}
		if(i==3)//OK
		{
			mode=0;
		}
		//点亮LED
		if(water<lim1)//水位低
		{
			led1=0;led2=1;
		}
		else if(water>lim2)//水位高
		{
			led1=1;led2=0;
		}
		else
		{
			led1=1;led2=1;
		}
		//显示水位
		if(mode==0)
		{
			P0=smgduan[water/100];		smg2=0;delay(100);smg2=1;
			P0=smgduan[water%100/10];	smg3=0;delay(100);smg3=1;
			P0=smgduan[water%10];		smg4=0;delay(100);smg4=1;
		}
		//显示下限
		if(mode==1)
		{
			P0=0x38;		smg1=0;delay(100);smg1=1;
			P0=smgduan[lim1/100];		smg2=0;delay(100);smg2=1;
			P0=smgduan[lim1%100/10];	smg3=0;delay(100);smg3=1;
			P0=smgduan[lim1%10];		smg4=0;delay(100);smg4=1;
		}
		//显示上限
		if(mode==2)
		{
			P0=0x76;		smg1=0;delay(100);smg1=1;
			P0=smgduan[lim2/100];		smg2=0;delay(100);smg2=1;
			P0=smgduan[lim2%100/10];	smg3=0;delay(100);smg3=1;
			P0=smgduan[lim2%10];		smg4=0;delay(100);smg4=1;
		}
	}
}
//定时器中断
void Timer0() interrupt 1
{
	if(time<10)//0.5s
		time++;
	else
	{
		time=0;
		water=PCF8591_read(0);//测量水位
//		water=water*5.0/255; 
	
		//抽水控制
		if(mode==0)//自动模式
		{
			if(water<lim1)//抽水
			{
				out=0;
				beep=0;
			}
			else
				beep=1;
			if(water>lim2)//停止抽水
				out=1;
		}
	}
	TH0=0X3C;
	TL0=0XB0;
}

💥5. 设计报告

4909字设计报告,内容包括硬件设计、软件设计、软硬件框图、调试、结论等

img

💥6. 设计资料内容清单&&下载链接

资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。

0、常见使用问题及解决方法–必读!!!!

0、常见使用问题及解决方法–必读!!!!

1、仿真图

2、程序源码

3、功能要求

4、开题报告

5、软硬件流程框图

6、讲解视频

7、设计报告

Altium Designer 安装破解

filename.bat

KEIL+proteus 单片机仿真设计教程

KEIL安装破解

Proteus元器件查找

Proteus安装

Proteus简易使用教程

单片机学习资料

相关数据手册

答辩技巧

设计报告常用描述

鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url

img

💥资料下载链接:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Docker中的RabbitMQ已经启动运行,但是管理界面打不开

文章目录 前言一、解决方法方法一方法二 总结 前言 肯定有好多小伙伴在学习RabbitMQ的过程中&#xff0c;发现镜像运行&#xff0c;但是我的管理界面怎么进不去&#xff0c;或者说我第一天可以进去&#xff0c;怎么第二天进不去了&#xff0c;为什么每次重新打开虚拟机都进不去…

【沐风老师】3DMAX一键云生成器插件使用教程

3DMAX云生成器插件使用教程 3DMAX云生成器插件&#xff0c;是一款将物体变成云的简单而富有创意的工具。该工具通过在物体周围创建粒子结合材质&#xff0c;最终形成渲染后的云的效果。 【支持版本】 3dMax2018 – 2023 默认的扫描线渲染器 【安装方法】 1.复制“安装文件”…

PyQt(学习笔记)

学习资料来源&#xff1a; PyQt快速入门——b站王铭东老师 PyQt&#xff08;学习笔记&#xff09; Pycharm环境准备运行第一个程序QPushButtonQLabelQLineEdit调整窗口大小、位置、图标布局信号与槽PyQt引入多线程 Pycharm环境准备 新建环境——添加PyQt5模块——验证版本 如果…

python表白程序,无法拒绝

# codinggbk import tkinter as tk import random import tkinter.messagebox as messagebox# 创建主窗口并隐藏 root tk.Tk() root.attributes(-alpha, 0) # 设置主窗口为不可见# 表白内容 message "做我女朋友好不好&#xff1f;"# 获取屏幕宽度和高度 screen_w…

Java读写Jar

Java提供了读写jar的类库Java.util.jar&#xff0c;Java获取解析jar包的工具类如下&#xff1a; import java.io.File; import java.io.IOException; import java.net.URL; import java.net.URLClassLoader; import java.util.Enumeration; import java.util.HashMap; import …

Linux:补充一些常用命令

Linux&#xff1a;补充一些常用命令 1. free -h2. df -lh3. du -sh *4. uname -a5. which6. mvn install 编译打包7. find -name *.jar8. cd -9. nohup java -jar *.jar &10. ps -ef|grep java11. netstat -ntlp 1. free -h free 命令显示系统使用和空闲的内存情况&#x…

Java多线程核心技术第一阶段-Java多线程基础 02

接上篇&#xff1a;Java多线程核心技术第一阶段-Java多线程基础 01 3.3 清除中断状态的使用场景 this.interrupted()方法具有清除状态标志值的功能&#xff0c;借用此特性可以实现一些效果。 【示例3.3.1】在MyThread4线程中向list1和list2存放数据&#xff0c;基于单一职责原…

2023年【安全员-B证】考试内容及安全员-B证考试资料

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 安全员-B证考试内容参考答案及安全员-B证考试试题解析是安全生产模拟考试一点通题库老师及安全员-B证操作证已考过的学员汇总&#xff0c;相对有效帮助安全员-B证考试资料学员顺利通过考试。 1、【多选题】《中华人民…

跟随鼠标的粒子特效分享

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 广告打完,我们进入正题,先看效果: 上代码: html, body {padding: 0;margin: 0;overflow: hidden; }import * as PIXI from https://cdn.skypack.dev/pixi.js@7.2.…

Autox.js和Auto.js4.1.1手机编辑器不好用我自己写了一个编辑器

功能有 撤销 重做 格式化 跳转关键词 下面展示一些 内联代码片。 "ui"; ui.layout( <drawer id"drawer"><vertical><appbar><toolbar id"toolbar"title""h"20"/></appbar><horizontal b…

录制第一个jmeter性能测试脚本2(http协议)

我们手工编写了一个测试计划&#xff0c;现在我们通过录制的方式来实现那个测试计划。也就是说‘’测试计划目标和上一节类似&#xff1a;让5个用户在2s内登录webtour&#xff0c;然后进入 页面进行查看。 目录 一.性能测试脚本录制的原理 二、性能测试脚本录制的实操&#…

算法设计与分析复习--动态规划

文章目录 上一篇动态规划性质矩阵连乘问题凸多边形最优三角部分最长公共子序列0-1背包问题下一篇 上一篇 算法设计与分析复习–递归与分治&#xff08;二&#xff09; 动态规划性质 与分析法类似&#xff1a;将原问题分解为子问题 不同点&#xff1a;不是通过递归的方式&…

2.如何使用Python官方文档

文章目录 1.文档什么时候用2.Python 3.11有什么新的功能3.Python 3.11教程4.Python 标准库概述内置函数内置类型内置异常文本处理服务 1.文档什么时候用 一般是在接触到一门新的语言的时候&#xff0c;是要详细阅读的&#xff0c;因为很多在开发的时候踩的这些坑在文档里已经提…

Socket的详细介绍

文章目录 前言1-Socket出现的原因1.1-Socket出现的背景1.2-Socket解决的问题 2-Socket的组成及关键点2.1-What&#xff1a;什么是Socket&#xff1f;2.2-How&#xff1a; Socket通信实现的步骤2.3-How&#xff1a; Socket编写流程 3-Socket的关键实现3.1-socket()函数创建套接字…

在Java代码中指定用JAXB的XmlElement注解的元素的顺序

例如&#xff0c;下面的类RegisterResponse 使用了XmlRootElement注解&#xff0c;同时也使用XmlType注解&#xff0c;并用XmlType注解的propOrder属性&#xff0c;指定了两个用XmlElement注解的元素出现的顺序&#xff0c;先出现flag&#xff0c;后出现enterpriseId&#xff0…

2023.11.19 hadoop之MapReduce

目录 1.简介 2.分布式计算框架-Map Reduce 3.mapreduce的步骤 4.MapReduce底层原理 map阶段 shuffle阶段 reduce阶段 1.简介 Mapreduce是一个分布式运算程序的编程框架&#xff0c;是用户开发“基于hadoop的数据分析应用”的核心框架&#xff1b; Mapreduce核心功能是…

Spring IOC - Bean的生命周期之依赖注入

在Spring启动流程中&#xff0c;创建的factoryBean是DefaultListableBeanFactory&#xff0c;其类图如下所示&#xff1a; 可以看到其直接父类是AbstractAutoireCapableBeanFactory&#xff0c;他主要负责完成Bean的自动装配和创建工作。 具体来说&#xff0c;AbstractAutowire…

Linux 基本语句_11_无名管道文件复制

父子进程&#xff1a; 父子进程的变量之间存在着读时共享&#xff0c;写时复制原则 无名管道&#xff1a; 无名管道仅能用于有亲缘关系的进程之间通信如父子进程 代码&#xff1a; #include <stdio.h> #include <unistd.h> #include <sys/types.h> #inc…

SpringBoot-AOP-基础到进阶

SpringBoot-AOP AOP基础 学习完spring的事务管理之后&#xff0c;接下来我们进入到AOP的学习。 AOP也是spring框架的第二大核心&#xff0c;我们先来学习AOP的基础。 在AOP基础这个阶段&#xff0c;我们首先介绍一下什么是AOP&#xff0c;再通过一个快速入门程序&#xff0c…

Fibonacci 数列与黄金分割

mapp[1 for item in range(30)] for item in range(3,30):mapp[item]mapp[item-1]mapp[item-2]pass numint(input()) if num>19:print("0.61803399")pass else:anss float((mapp[num]*1.0) / (mapp[num 1]*1.0))print(format(anss,.8f))进行短程的打表就可以看出…