单片机实验——水塔自动抽水系统设计(基于Proteus仿真)

  • 实验内容及要求

自来水供水是现代生活的一大特点,水塔作为储水装置是自来水系统必不可少的重要设施,让水塔保持一定的水量是自来水不断供的必要条件,本设计模拟自来水系统中水塔的自动抽水机制,设计分为控制系统和虚拟水塔两部分,参考电路如下:

设计要求:

  1. 虚拟水塔模拟水塔的功能,水塔水量低于一定值时,发信息给控制系统,控制系统启动抽水机住水塔注水,注放水指示灯点亮,数码管显示当前水塔中的水量,当水量高于一定值时,向控制系统发出水满信号,控制系统停止抽水机运转。水塔设有两个阀门,每个阀门可以单独放水,水位低向控制系统发出抽水信号,相应的指灯显示当前水塔状态。
  2. 控制系统设自动抽水和手动抽水两种模式,自动抽水依据水塔发出的信号启动或停止抽水,手面模式是通于手动开关进行启动或停止抽水。
  3. 利用C51设计程序完成以上功能,上述电路仅供参考,可自行创新设计。
  4. 在keil中利用C51进行程序设计,利用ptotues设计电路并进行仿真。
  5. 控制系统使用单片机的中断机制。
  • 涉及的主要知识点

  1. 51单片机的中断系统。
  2. 7段数据管的编码与显示原理。
  3. Keil及protues软件的使用。
  • 提示及预备知识

  1. 水塔水满或水空时,利用I/O引脚向控制系统发出负脉冲作为中断源,控制系统根据不同的中断源,作出启动或停止抽水动作。
  2. 抽水机用直流电机模拟,通过I/O引脚控制MOS管驱动直流电机。
  3. 参考流程图如下:
  1. 控制系统

  1. 虚拟水塔

实验图纸如下:

部分代码:

# include<reg52.h>
# define empty 1
# define full 10

sbit Lful = P1^0;
sbit Lemp = P1^1;
sbit pour = P1^2;
sbit star = P1^3;
sbit stop = P1^4;
sbit k1 = P1^5;		//放水阀门1
sbit k2 = P1^6;		//放水阀门2
sbit pump = P1^7;
char mod[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,	  //led字模
						  0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71};

void delay(unsigned int time)   //延时time ms
{
    unsigned char a,b;
    for(;time>0;time--)
        for(b=142;b>0;b--)
            for(a=2;a>0;a--);
}

void display(char water)
{
	char shi,ge;
	shi = water/10;
	ge = water%10;
	P2 = mod[shi];
	P0 = mod[ge];
}

void main()
{
	char water=5;
	Lful=Lemp=pour=0;
	display(water);

	while(1)
	{
		pump = 1;	//读取前先置1
		if(pump == 1)
		{
			delay(300);
			water++;
			display(water);
			
			if(water==full)
			{
				Lful=1;
				stop=0;
				delay(1);
				stop=1;
			}						
		}
		
		if(k1==0||k2==0)
		{
			delay(300);
			water--;
			display(water);
			
			if(water==empty)
			{
				Lemp=1;
				star=0;
				delay(1);
				star=1;
			}	
		}
	}
}
# include<reg52.h>

sbit man = P1^0;	//高阻态自动,低电频手动
sbit aut = P1^1;	//低电平手动抽水
sbit Lful = P1^2;
sbit Nful = P1^3;
sbit pump = P1^7;
char mod[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,	  //led字模
						  0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71};

void full() interrupt 0
{
	pump = 1;
	Nful = 1;
	Lful = 0;	
}
void empty() interrupt 2
{
//	pump = !pump;
	pump = 0;
	Lful = 1;
	Nful = 0;
}

void main()
{
	Lful=Nful=pump=0;
	IT0=IT1=EX0=EX1=EA=1;
	while(1)
	{
		if(aut==0)	//自动			
			{
				man = 1;
				if(man==0)	//打开
				{
					pump = 1;
					Nful = 1;
				}
				else	//¹Ø±Õ
					pump = 0;
			}
	}
}

部分运行结果:

  • 6
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
抢答器是一种常见的电子设备,主要用于比赛或课堂上,用于快速确定参与者或学生谁最先回答问题或按下按钮。基于单片机设计是一种常见的抢答器设计方法。 基于单片机的抢答器设计可以使用实验箱或Proteus仿真软件进行开发和测试。 首先,设计需求包括:按钮开关、显示屏、倒计时功能和正确错误指示灯。 接下来,根据设计需求,我们需要选取适当的单片机,例如常见的51单片机。然后,将单片机与按钮开关、显示屏、指示灯等外部元件进行连接。 通过编程,可以实现以下功能: 1. 开关检测:使用单片机的IO口来检测按钮开关是否按下。当按钮按下时,发送信号给单片机,触发抢答动作。 2. 倒计时功能:使用定时器功能,实现倒计时功能。可以设置倒计时的时间,并在倒计时结束后触发相应的动作,例如熄灭指示灯或开启下一轮抢答。 3. 显示屏:连接显示屏到单片机的IO口,实现显示倒计时时间或其他相关信息。可以利用数码管或LCD显示屏作为显示装置。 4. 正确错误指示灯:设计两个指示灯,一个代表正确答案,一个代表错误答案。根据参与者的回答情况,触发相应的指示灯亮起。 在Proteus仿真软件中,可以进行电路图的设计和模拟,通过添加相应的元件和连接线,模拟实验箱中的硬件连接。然后,编写单片机的程序,并在仿真软件中进行调试和测试。 通过基于单片机设计,可以实现一个功能完善的抢答器。这种设计不仅能提高交互效果,还可以增加比赛或课堂的趣味性和互动性,提高学生参与度和竞技性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杪商柒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值