-
實驗內(nèi)容及要求
自來水供水是現(xiàn)代生活的一大特點,水塔作為儲水裝置是自來水系統(tǒng)必不可少的重要設(shè)施,讓水塔保持一定的水量是自來水不斷供的必要條件,本設(shè)計模擬自來水系統(tǒng)中水塔的自動抽水機制,設(shè)計分為控制系統(tǒng)和虛擬水塔兩部分,參考電路如下:
設(shè)計要求:
- 虛擬水塔模擬水塔的功能,水塔水量低于一定值時,發(fā)信息給控制系統(tǒng),控制系統(tǒng)啟動抽水機住水塔注水,注放水指示燈點亮,數(shù)碼管顯示當(dāng)前水塔中的水量,當(dāng)水量高于一定值時,向控制系統(tǒng)發(fā)出水滿信號,控制系統(tǒng)停止抽水機運轉(zhuǎn)。水塔設(shè)有兩個閥門,每個閥門可以單獨放水,水位低向控制系統(tǒng)發(fā)出抽水信號,相應(yīng)的指燈顯示當(dāng)前水塔狀態(tài)。
- 控制系統(tǒng)設(shè)自動抽水和手動抽水兩種模式,自動抽水依據(jù)水塔發(fā)出的信號啟動或停止抽水,手面模式是通于手動開關(guān)進行啟動或停止抽水。
- 利用C51設(shè)計程序完成以上功能,上述電路僅供參考,可自行創(chuàng)新設(shè)計。
- 在keil中利用C51進行程序設(shè)計,利用ptotues設(shè)計電路并進行仿真。
- 控制系統(tǒng)使用單片機的中斷機制。
-
涉及的主要知識點
- 51單片機的中斷系統(tǒng)。
- 7段數(shù)據(jù)管的編碼與顯示原理。
- Keil及protues軟件的使用。
-
提示及預(yù)備知識
- 水塔水滿或水空時,利用I/O引腳向控制系統(tǒng)發(fā)出負脈沖作為中斷源,控制系統(tǒng)根據(jù)不同的中斷源,作出啟動或停止抽水動作。
- 抽水機用直流電機模擬,通過I/O引腳控制MOS管驅(qū)動直流電機。
- 參考流程圖如下:
-
控制系統(tǒng)
-
虛擬水塔
實驗圖紙如下:
文章來源:http://www.zghlxwxcb.cn/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; //高阻態(tài)自動,低電頻手動
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 //1?±?
pump = 0;
}
}
}
部分運行結(jié)果:
文章來源地址http://www.zghlxwxcb.cn/news/detail-754605.html
到了這里,關(guān)于單片機實驗——水塔自動抽水系統(tǒng)設(shè)計(基于Proteus仿真)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!