-
实验内容及要求
自来水供水是现代生活的一大特点,水塔作为储水装置是自来水系统必不可少的重要设施,让水塔保持一定的水量是自来水不断供的必要条件,本设计模拟自来水系统中水塔的自动抽水机制,设计分为控制系统和虚拟水塔两部分,参考电路如下:
设计要求:
- 虚拟水塔模拟水塔的功能,水塔水量低于一定值时,发信息给控制系统,控制系统启动抽水机住水塔注水,注放水指示灯点亮,数码管显示当前水塔中的水量,当水量高于一定值时,向控制系统发出水满信号,控制系统停止抽水机运转。水塔设有两个阀门,每个阀门可以单独放水,水位低向控制系统发出抽水信号,相应的指灯显示当前水塔状态。
- 控制系统设自动抽水和手动抽水两种模式,自动抽水依据水塔发出的信号启动或停止抽水,手面模式是通于手动开关进行启动或停止抽水。
- 利用C51设计程序完成以上功能,上述电路仅供参考,可自行创新设计。
- 在keil中利用C51进行程序设计,利用ptotues设计电路并进行仿真。
- 控制系统使用单片机的中断机制。
-
涉及的主要知识点
- 51单片机的中断系统。
- 7段数据管的编码与显示原理。
- Keil及protues软件的使用。
-
提示及预备知识
- 水塔水满或水空时,利用I/O引脚向控制系统发出负脉冲作为中断源,控制系统根据不同的中断源,作出启动或停止抽水动作。
- 抽水机用直流电机模拟,通过I/O引脚控制MOS管驱动直流电机。
- 参考流程图如下:
-
控制系统
-
虚拟水塔
实验图纸如下:
部分代码:
# 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;
}
}
}
}