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




- # 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;
- }
- }
- }
