【Proteus仿真】【51单片机】水箱液位检测控制装置设计


一、主要功能

1、压力液位检测
2、阈值设定,超限报警
3、压力液位显示
4、补排水自动控制

二、硬件资源

1、51单片机核心模块
2、PCF8591 AD/DA模块
3、LCD1602液晶模块
4、蜂鸣器模块
5、排水、补水控制电路
6、按键模块

三、软件设计

#include "appdemo.h"
#include "lcd1602.h"
#include "key.h"
#include "beep.h"
#include "pcf8591.h"
#include "exti.h"


//定义补水控制脚
sbit MOTOR_BS=P1^0;
//定义排水控制脚
sbit MOTOR_PS=P1^1;


//定义结构体
_sys_ctrl sys_ctrl;


//阈值设定
void key_set_threshold(void)
{
	u8 key=0;

   	key=key_scan(0);
	//模式设定显示
	if(key==KEY3_PRESS)
	{
		sys_ctrl.mode++;
		if(sys_ctrl.mode>=3)sys_ctrl.mode=1;
		lcd1602_clear();
		switch(sys_ctrl.mode)
		{
			case 1://液位上限设置显示界面 
				lcd1602_show_string(0,0,"LevelH Set:");
				break;
			case 2://液位下限设置显示界面 
				lcd1602_show_string(0,0,"LevelL Set:");
				break;
			default : 
				lcd1602_show_string(0,0,"Display Error");
				break;
		}	
	}
	//确定,返回主界面
	else if(key==KEY4_PRESS)
	{
		sys_ctrl.mode=0;
		lcd1602_clear();
		lcd1602_show_string(0,0," Current Level  ");
		lcd1602_show_string(0,1,"    mm");
	}

	//液位上限设置
	if(sys_ctrl.mode==1)
	{  	
		if(key==KEY1_PRESS)//加
		{
			sys_ctrl.levelh+=THRESHOLD_STEP;
			if(sys_ctrl.levelh>MAX_VALUE)sys_ctrl.levelh=0;		
		}
		else if(key==KEY2_PRESS)//减
		{
			sys_ctrl.levelh-=THRESHOLD_STEP;
			if(sys_ctrl.levelh<0)sys_ctrl.levelh=MAX_VALUE;				
		}
		lcd1602_show_nums(0,1,sys_ctrl.levelh,4,0);					
	}
	//液位下限设置
	else if(sys_ctrl.mode==2)
	{  	
		if(key==KEY1_PRESS)//加
		{
			sys_ctrl.levell+=THRESHOLD_STEP;
			if(sys_ctrl.levell>MAX_VALUE)sys_ctrl.levell=0;			
		}
		else if(key==KEY2_PRESS)//减
		{
			sys_ctrl.levell-=THRESHOLD_STEP;
			if(sys_ctrl.levell<0)sys_ctrl.levell=MAX_VALUE;				
		}
		lcd1602_show_nums(0,1,sys_ctrl.levell,4,0);			
	}
}
 
//参数初始化
void sys_para_init(void)
{
	sys_ctrl.mode=0;
	sys_ctrl.levelh=80;
	sys_ctrl.levell=20;	
}

//数据采集
void sys_get_data(void)
{
	u8 i=0;
	u8 ad_value=0;
	float vol=0;

	while(sys_ctrl.mode==0)
	{
		i++;
		if(i%200==0)
		{
			//读取压力AD值
			ad_value=pcf8591_read_adcvalue(0);
			//计算电压
			vol=(float)ad_value*5.0/256;
			//计算液位高度VO=K*H+∮=0.038*H+1.105(V)	//H单位mm
			sys_ctrl.level=(vol-1.105)/0.038;
			if(sys_ctrl.level<=0)sys_ctrl.level=0;
			break;				
		}
		delay_ms(1);			
	}			
}

//采集数据显示
void sys_data_show(void)
{
	while(sys_ctrl.mode==0)
	{
		lcd1602_show_nums(0,1,sys_ctrl.level,4,0);
		break;				
	}
}

//液位自动控制
void auto_control(void)
{
	while(sys_ctrl.mode==0)
	{
		//上限阈值,排水开启,补水关闭,蜂鸣器报警
		if(sys_ctrl.level>sys_ctrl.levelh)
		{
			MOTOR_PS=0;
			MOTOR_BS=1;
			beep_alarm(100,20);			
		}
		//下限阈值,排水关闭,补水开启,蜂鸣器报警
		else if(sys_ctrl.level<sys_ctrl.levell)
		{
			MOTOR_PS=1;
			MOTOR_BS=0;
			beep_alarm(100,20);			
		}
		//正常液位,排水关闭,补水关闭
		else
		{
			MOTOR_PS=1;
			MOTOR_BS=1;	
		}

		break;				
	}	
}

//智能温湿度大棚控制系统
void appdemo_show(void)
{
	lcd1602_init();
	//初始界面
	lcd1602_show_string(0,0," Current Level  ");
	lcd1602_show_string(0,1,"    mm");
	
	sys_para_init();//系统参数初始化
	sys_get_data();

	while(1)
	{
		key_set_threshold();//阈值设定
		sys_get_data();//数据采集
		sys_data_show();//采集数据显示
		auto_control();//温湿度自动控制
	}
}

四、实验现象

B站演示视频:https://space.bilibili.com/444388619
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


联系作者

B站演示视频:https://space.bilibili.com/444388619
专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

  • 10
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Proteus仿真是一种电子仿真软件,可以帮助电子工程师快速设计电路并进行仿真。而51单片机路灯控制设计是利用51单片机实现路灯的自动控制,提高灯具的使用效率和节约能源。 在此过程中,首先要了解路灯的工作原理、电路结构和运行条件,以便更好地进行控制器的设计。接着,选择合适的51单片机设计其硬件电路和连接方式,并编写相应的程序,实现路灯的自动开关和亮度调节等功能。此外,还需要选择合适的传感器和光控组件,用于感知周围环境光强度和路况等信息,从而更好地控制路灯的使用。 利用Proteus仿真软件,可以对设计的电路进行仿真验证,检查硬件连接情况和程序运行情况,并对存在的问题进行调整和优化。最终,可以将控制器制作出来,并进行现场测试,确保其稳定可靠,达到预期效果。 总之,Proteus仿真51单片机路灯控制设计的相结合,可以帮助电子工程师更好地进行电路设计仿真验证,从而实现更优秀的电路控制效果。 ### 回答2: Proteus仿真软件是一款广泛应用于电子电路设计、模拟和布局的工具,它可以帮助工程师们在实际生产前构建并测试电路原型,降低了开发成本和时间压力。 在51单片机路灯控制设计中,我们可以依照实际仿真情况,快速定位并修复电路中的问题,以确保电路设计的正确性和可靠性。在仿真的过程中,我们可以设置不同的条件和参数,来测试领先的电路设计,实现更加高效和精准的结果。 具体来说,在51单片机路灯控制设计中,我们需要配合Proteus仿真软件来完成单片机程序的编写、调试和测试,以确保电路的稳定性和可靠性。通过仿真,我们可以更加准确地预测电路的输出情况和电路响应的条件,以优化电路的性能和质量。 总之,Proteus仿真软件在51单片机路灯控制设计中可以起到重要的作用。它不仅可以提高电路设计的精度和效率,同时也可以大大缩短生产时间和降低成本,是开发者必备的一款强大工具。 ### 回答3: Proteus仿真51单片机路灯控制设计涉及到多个步骤。首先,我们需要选择适当的51单片机芯片,并开发相应的控制算法。其次,我们需要设计路灯控制器的电路板,并对其进行模拟。在这一过程中,我们需要确保路灯控制器能够在各种条件下正常工作,例如在恶劣的天气条件下。最后,我们需要在实验室环境下进行测试,并对控制器的性能进行评估。 在接下来的具体实现中,我们需要设计一个51单片机控制程序,以掌控整个路灯控制器。我们需要将该程序与电路板结合在一起,并使用Proteus仿真软件进行模拟。在模拟过程中,我们需要验证控制器在不同情况下的响应能力,例如在不同输入电压下应如何调整LED的亮度平。此外,我们还需要测试控制器在极端条件下的反应能力,例如在信号干扰或电力波动的情况下。 最后,在测试阶段结束后,我们需要对仿真结果进行分析,并确定该路灯控制器的性能是否符合我们的需求。如果需要,我们可以进行调整并重新测试,以保证该系统能够稳定,并且能够在实际道路环境下正常运行。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值