基于51单片机智能鱼缸仿真LCD1602显示( proteus仿真+程序+设计报告+讲解视频)

news2025/1/18 7:42:54

基于51单片机智能鱼缸仿真LCD显示

  • 1. 主要功能:
  • 2. 讲解视频:
  • 3. 仿真
  • 4. 程序代码
  • 5. 设计报告
  • 6. 设计资料内容清单&&下载链接
    • 资料下载链接:

基于51单片机智能鱼缸仿真LCD显示( proteus仿真+程序+设计报告+讲解视频)

仿真图proteus7.8及以上

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:S0080

1. 主要功能:

基于51单片机的智能鱼缸检测控制系统proteus仿真

1.系统通过DS18B20检测鱼缸温度,通过DAC0832采集PH传感器和水位传感器数据;

2.温度低于阈值系统启动加热功能;默认正常范围是大于25摄氏度;

3.水位过低系统自动启动加水阀,水位过高系统自动启动排水阀;默认正常范围90-100cm;

4.PH值过高或者过低,系统亮报警灯;默认正常范围6-8;

5.可以通过按键调整鱼缸温度,PH酸碱度和水位阈值;

6.通过LCD1602显示温度,PH酸碱度和水位测量值和相关的阈值;

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

img

资料下载链接:

【腾讯文档】S0080 网盘链接

https://docs.qq.com/doc/DS0J3RGp0aWFTakhG

以下为本设计资料展示图:

2. 讲解视频:

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

基于51单片机的智能鱼缸LCD1602显示proteus仿真+程序+设计报告

3. 仿真

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。显示温度,PH酸碱度和水位测量值和相关的阈值;

img

通过调整PH值滑动变阻器模拟传感器数值动态变化,当PH大于默认阈值,警告灯亮。

img

水位低于阈值,进水阀开始工作,指示灯点亮。水位大于阈值,出水阀开始工作,指示灯点亮。默认水位正常范围90-100cm;

imgimg

调整温度低于阈值,加热器启动开始工作。

img

4. 程序代码

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

// 引入51单片机头文件
完整代码见文章后面下载链接压缩包
#include "reg51.h"
// 引入LCD1602液晶显示模块驱动头文件
#include "lcd1602.h" 
// 引入DS18B20温度传感器驱动头文件
#include "Ds18b20.h"
// 引入ADC0832模数转换器驱动头文件
#include "ADC0832.h"
// 引入PID和PWM控制相关头文件
#include"pid_pwm.h"
// 定义uchar类型(无符号字符型)
#define uchar unsigned char
// 定义uint类型(无符号整型)
#define uint unsigned int
// 定义按钮引脚
sbit k1=P3^2; // 按钮k1
sbit k2=P3^3; // 按钮k2
sbit k3=P3^4; // 按钮k3
sbit k4=P3^5; // 按钮k4
sbit k5=P3^6; // 按钮k5
sbit k6=P3^7; // 按钮k6
// 定义输出控制引脚
sbit out1=P2^4; // 输出控制out1
sbit out2=P2^5; // 输出控制out2
sbit out3=P2^6; // 输出控制out3
sbit out4=P2^7; // 输出控制out4
// 定义PH值高低电平检测引脚
sbit ph_h=P3^0;
sbit ph_l=P3^1;
// 定义系统变量
uchar time=0, mode=0; // 计时变量time,模式变量mode
uchar wendu=0, ph=0, water=0; // 温度变量wendu,pH值变量ph,水位变量water
uchar lim1=25, lim2=7, lim3=100; // 温度阈值lim1,pH阈值lim2,水位阈值lim3
uchar disp1[]="T:000 P:00 H:000"; // 显示缓冲区1
uchar disp2[]="  000   00   000"; // 显示缓冲区2
uchar pwm=0; // PWM占空比变量
//主函数
void main()
{
	uchar i=0;
	init_1602(); // 初始化LCD1602液晶显示器
	TMOD|=0X01;
	TH0=0X3C;
	TL0=0XB0;	
	ET0=1;//打开定时器0中断允许
	EA=1;//打开总中断
	TR0=1;//打开定时器
	while(1)
	{
		//PWM输出
		if(i<99)
		 	i++;
		else
			i=0;
		if(i<pwm)
			out4=0;
		else
			out4=1;
		//按键检测
		if(!k1)		  // 温度阈值递增
		{
			if(lim1<120)
				lim1++;
			while(!k1);	 // 等待按键释放
		}
		if(!k2)
		{
			if(lim1>0)
				lim1--;
			while(!k2);	 // 温度阈值递减
		}
		if(!k3)
		{
			if(lim2<14)
				lim2++;	  // PH阈值递增
			while(!k3);
		}
		if(!k4)
		{
			if(lim2>0)
				lim2--;	   // PH阈值递减
			while(!k4);
		}
		if(!k5)
		{
			if(lim3<127)
				lim3++;		  // 水位阈值递增
			while(!k5);
		}
		if(!k6)
		{
			if(lim3>0)
				lim3--;	   // 水位阈值递减
			while(!k6);
		}
	}
}
//定时器中断
void Timer0() interrupt 1
{
	uint i=0;
	if(time<10)//0.5s
		time++;
	else
	{
		time=0;
		Ds18b20ReadTemp();//测温
		wendu=ds18b20_temp;
		ph=ADC(1);//PH
		i=ph;
		ph=i*14/127; // 将模拟值转换为pH范围
		water=ADC(2);//水位
 		// 更新显示缓冲区内容
        // ...更新温度、pH值、水位显示字符串...
		disp1[2]=wendu/100+0x30;
		disp1[3]=wendu%100/10+0x30;
		disp1[4]=wendu%10+0x30;
		disp1[8]=ph/10+0x30;
		disp1[9]=ph%10+0x30;
		disp1[13]=water/100+0x30;
		disp1[14]=water%100/10+0x30;
		disp1[15]=water%10+0x30;
		write_string(1,0,disp1);
		disp2[2]=lim1/100+0x30;
		disp2[3]=lim1%100/10+0x30;
		disp2[4]=lim1%10+0x30;
		disp2[8]=lim2/10+0x30;
		disp2[9]=lim2%10+0x30;
		disp2[13]=lim3/100+0x30;
		disp2[14]=lim3%100/10+0x30;
		disp2[15]=lim3%10+0x30;
		write_string(2,0,disp2);
		// 根据设定阈值计算PWM占空比
		pwm=PID(lim1,wendu);
        // 根据pH值进行高低电平控制
        if(ph>lim2+1)
            ph_h=0; // pH过高关闭高电平
        else
            ph_h=1; // pH正常恢复高电平
        if(ph<lim2-1)
            ph_l=0; // pH过低关闭低电平
        else
            ph_l=1; // pH正常恢复低电平
        
        // 根据水位进行排水阀控制
        if(water>lim3)
            out2=0; // 水位过高开启排水阀
        else
            out2=1; // 水位正常关闭排水阀
  					// 根据水位进行排水阀控制
        if(water<lim3-10)
            out1=0; // 水位过低开启进水阀
        else
            out1=1;  // 水位正常关闭进水阀
	}
	 // 重置定时器初值
	TH0=0X3C;
	TL0=0XB0;
}

5. 设计报告

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

img

设计中的智能鱼缸检测控制系统具备了根据预设阈值自动调节相关设备的能力。例如,当检测到鱼缸内水温低于设定的适宜温度时,系统会立即启动加热装置,确保水温恒定在最适宜鱼类生活的范围内;同时,针对水位过低或过高情况,系统也能自动开启加水阀或排水阀,维持水位在安全合理区间;另外,针对至关重要的水质指标——PH值,系统亦能及时捕捉其波动,并在PH值过高或过低时触发报警提示,甚至联动酸碱度调节设备进行调整。

为了验证并优化设计的智能鱼缸检测控制系统,我们还将借助功能强大的Proteus仿真平台进行详细的系统建模与调试。Proteus的强大仿真能力使得我们在实际硬件搭建前就能完成系统功能的设计与验证,大大缩短开发周期,降低研发成本,从而高效地将设计方案转化为实用性强、可靠性高的智能鱼缸检测控制系统,最终为用户提供一个高度自动化、精准调控、操作便捷的最优养殖环境解决方案。

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

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

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

1、程序

2、proteus仿真

3、功能要求

4、软硬件流程图

5、开题报告

6、设计报告

7、讲解视频

Altium Designer 安装破解

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

KEIL安装破解

Proteus元器件查找

Proteus安装

Proteus简易使用教程

单片机学习资料

相关数据手册

答辩技巧

设计报告常用描述

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

img

资料下载链接:

https://docs.qq.com/doc/DS0J3RGp0aWFTakhG

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

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

相关文章

【Web】NewStarCTF 2022 题解(全)

目录 Week1 HTTP Head?Header! 我真的会谢 NotPHP Word-For-You Week2 Word-For-You(2 Gen) IncludeOne UnserializeOne ezAPI Week3 BabySSTI_One multiSQL IncludeTwo Maybe You Have To think More Week4 So Baby RCE BabySSTI_Two UnserializeT…

IDEA 安装、基本使用、创建项目

文章目录 下载基本使用修改颜色主题Keymap插件 创建项目创建模块新建 Java 类运行新建 Package打包 Jar运行 jar 包 查看文档 下载 官方下载地址&#xff1a;https://www.jetbrains.com/zh-cn/idea/download/?sectionmac 这里我下载 macOS 社区版&#xff0c;IDEA 2024.1 (C…

mPEG-Glutaramide Acid结合了聚乙二醇(PEG)和戊二酸(GAA)的性质

【试剂详情】 英文名称 mPEG-GAA&#xff0c;Methoxy PEG GAA&#xff0c; mPEG-Glutaramide Acid 中文名称 聚乙二醇单甲醚酰胺戊二酸&#xff0c; 甲氧基-聚乙二醇-戊二酰胺酸 外观性状 由分子量决定 分子量 400,600&#xff0c;2k&#xff0c;3.4k&#xff0c;5k&…

代码随想录算法训练营第五十七天 | 647. 回文子串、516. 最长回文子序列

代码随想录算法训练营第五十七天 | 647. 回文子串、516. 最长回文子序列 647. 回文子串题目解法 516. 最长回文子序列题目解法 动态规划总结链接感悟 647. 回文子串 题目 解法 题解链接 动态规划 class Solution { public:int countSubstrings(string s) {// dp[i][j]:表示…

[Java EE] 多线程(二): 线程的创建与常用方法(下)

2.3 启动一个线程–>start() 之前我们已经看到了如何通过重写run()方法来创建一个线程对象,但是线程对象被创建出来并不意味着线程就开始运行了. 覆写run方法是给线程提供了所要做的事情的指令清单创建线程对象就是把干活的人叫了过来.而调用start方法,就是喊一声"行…

Java处理CSV类库:OpenCSV

一&#xff1a;CSV简介 Comma-Separated Values(CSV), 因分隔符没有严格指定规范标准&#xff0c;可以使用逗号&#xff0c;也可以使用其他字符&#xff08;如制表符\t、分号;等&#xff09;&#xff0c;所以CSV也称为 逗号分隔值或者字符分隔值。csv文件是使用纯文本来存储表…

【数据库】为什么要添加一个与业务无关的主键?

关注获取更多&#xff1a; 你是否想过&#xff0c;为什么mysql要设置一个自增的主键&#xff0c;或者使用uuid生成一个和业务无关的主键id&#xff0c;在数据库设计中&#xff0c;主键是用来唯一标识每一行数据的关键。通常情况下&#xff0c;我们会选择与业务相关的字段作为…

CMEF | 澳鹏Appen精彩亮相第89届中国国际医疗器械博览会

4月14日&#xff0c;为期四天的第89届中国国际医疗器械博览会&#xff08;CMEF&#xff09;盛大收官。如今&#xff0c;人们的健康需求在人口老龄化等一系列因素的影响下持续增长&#xff0c;这意味着卫生系统也面对着更多具有复杂健康需求的患者。信息化、数字化、智能化已经成…

Zynq学习笔记--数字视频帧以及同步信号

目录 1. 介绍 2. 重要概念 3. 仿真测试 4. 总结 1. 介绍 Zynq芯片&#xff0c;作为一款集成了高性能FPGA和ARM处理器的系统级芯片(SoC)&#xff0c;为视频处理提供了强大的硬件支持。该芯片内置的丰富视频方面的IP模块&#xff0c;使得从事视频处理项目的开发者能够高效、…

PHP 使用 PHPMailer 发送电子邮件

1. PHPMailer 介绍 phpMailer 是一个非常强大的 php 发送邮件扩展包&#xff0c;可以设定发送邮件地址、回复地址、邮件主题、html邮件内容和上传附件等&#xff0c;使用起来非常方便。它目前有着有近 4 千万的下载量&#xff0c;是 PHP 开发者实现邮件发送功能的首选扩展包 它…

阅读小程序|基于微信阅读网站小程序的系统设计与实现(源码+数据库+文档)

目录 基于微信阅读网站小程序 一、前言 二、系统设计 三、系统功能设计 小程序端&#xff1a; 后台 管理员进入指定功能操作区之后可以管理图书订单。其页面见下图。管理员审核订单&#xff0c;查看订单是否支付&#xff0c;为购买图书的用户推送对应的章节。 管理员进…

西瓜书学习——第一、二章笔记

[] 什么是机器学习? 研究关于“学习算法”(一类能从数据中学习出其背后潜在规律的算法)的一门学科。 PS:深度学习指的是神经网络那一类学习算法&#xff0c;因此是机器学习的子集。 假设空间和版本空间 举个栗子:假设现已收集到某地区近几年的房价和学校数量数据&#xf…

【基础物理实验】【AFM虚拟实验】基于AFM的物质表面微观结构及力学性质表征仿真实验(下)【北京航空航天大学】

本次实验&#xff08;上&#xff09;见博客&#xff1a;【基础物理实验】【AFM虚拟实验】基于AFM的物质表面微观结构及力学性质表征仿真实验&#xff08;上&#xff09;【北京航空航天大学】 本次实验&#xff08;中&#xff09;见博客&#xff1a;【基础物理实验】【AFM虚拟实…

『哈哥赠书 - 51期』-『数字风控体系:设计与实践』

⭐️ 赠书 - 《数字风控体系&#xff1a;设计与实践》 ⭐️ 数字风控概述 从2007年开始到2014年左右&#xff0c;高速移动网络和智能手机迅速在大众中普及&#xff0c;开启了移动互联网时代。在这个背景下&#xff0c;企业的产品与服务也出现了两个重要的趋势。 第一个趋势是…

(十三)C++自制植物大战僵尸游戏多用户存档实现(二)

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/8UFMs UserData.h 在头文件中定义了枚举类型openUserDataReturnType&#xff0c;用于表示打开用户数据文件的返回状态。FileExistError表示文件存在但是打开错误&#xff0c;FileExistCorrect表示文件在且正确&#xff0…

活动理论的散点图

import pandas as pd import matplotlib.pyplot as plt# 假设您已经有一个名为 data.xlsx 的 Excel 文件 # 您可以使用以下代码读取数据# 读取 Excel 文件 try:data pd.read_excel(data.xlsx) except Exception as e:print(f"Error: {e}")# 假设您的数据包含以下列:…

2024 OceanBase开发者大会:专场论坛亮点抢先看

4 月 20 日&#xff0c;2024 OceanBase 开发者大会将在上海闵行区漕宝路 3199 号宝龙艾美酒店召开。 此次盛会专为开发者们量身打造&#xff0c;OceanBase诚挚邀请了来自不同行业的最佳实践用户、业界享有盛誉的技术专家&#xff0c;以及OceanBase数据库领域的精英们齐聚一堂。…

线程池学习(通俗易懂)

线程池 线程池是什么ThreadPoolExecutor模拟实现线程池结语 线程池是什么 假设我们要频繁的创建线程和销毁线程,但是创建线程和销毁线程是有成本的. 所以我们可以提前创建一批线程,后面需要使用的时候,直接拿就可以了,这就是线程池. 当线程不再使用的时候,就归还到池子里.为什…

软考131-上午题-【软件工程】-软件可靠性、可用性、可维护性

可靠性、可用性和可维护性是软件的质量属性&#xff0c;软件工程中&#xff0c;用 0-1 之间的数来度量。 0.66 66% 1、 可靠性 可靠性是指一个系统对于给定的时间间隔内、在给定条件下无失效运作的概率。 可以用 MTTF/ (1MTTF) 来度量&#xff0c;其中 MTTF 为平均无故障时间…

算法练习第18天|111.二叉树的最小深度

111.二叉树的最小深度 111. 二叉树的最小深度 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/minimum-depth-of-binary-tree/description/ 题目描述&#xff1a; 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最…