-
实验内容及要求
自来水供水是现代生活的一大特点,水塔作为储水装置是自来水系统必不可少的重要设施,让水塔保持一定的水量是自来水不断供的必要条件,本设计模拟自来水系统中水塔的自动抽水机制,设计分为控制系统和虚拟水塔两部分,参考电路如下:
设计要求:
- 虚拟水塔模拟水塔的功能,水塔水量低于一定值时,发信息给控制系统,控制系统启动抽水机住水塔注水,注放水指示灯点亮,数码管显示当前水塔中的水量,当水量高于一定值时,向控制系统发出水满信号,控制系统停止抽水机运转。水塔设有两个阀门,每个阀门可以单独放水,水位低向控制系统发出抽水信号,相应的指灯显示当前水塔状态。
- 控制系统设自动抽水和手动抽水两种模式,自动抽水依据水塔发出的信号启动或停止抽水,手面模式是通于手动开关进行启动或停止抽水。
- 利用C51设计程序完成以上功能,上述电路仅供参考,可自行创新设计。
- 在keil中利用C51进行程序设计,利用ptotues设计电路并进行仿真。
- 控制系统使用单片机的中断机制。
-
涉及的主要知识点
- 51单片机的中断系统。
- 7段数据管的编码与显示原理。
- Keil及protues软件的使用。
-
提示及预备知识
- 水塔水满或水空时,利用I/O引脚向控制系统发出负脉冲作为中断源,控制系统根据不同的中断源,作出启动或停止抽水动作。
- 抽水机用直流电机模拟,通过I/O引脚控制MOS管驱动直流电机。
- 参考流程图如下:
-
控制系统
-
虚拟水塔
实验图纸如下:
文章来源:https://www.toymoban.com/news/detail-754605.html
部分代码:
# 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;
}
}
}
部分运行结果:
文章来源地址https://www.toymoban.com/news/detail-754605.html
到了这里,关于单片机实验——水塔自动抽水系统设计(基于Proteus仿真)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!