|
系統(tǒng)程序如下
#include<reg51.h>
//定義一個數(shù)組,使數(shù)碼管顯示的數(shù)字和數(shù)組元素的下標(biāo)相等
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
sbit shuiman=P1^0;//水滿
sbit sw5=P1^1;//水位5
sbit sw4=P1^2;//水位4
sbit sw3=P1^3;//水位3
sbit sw2=P1^4;//水位2
sbit sw1=P1^5;//水位1
sbit shougong=P1^6;//手工上水
sbit dianji=P1^7;//電機(jī)控制位
sbit state=P3^7;//電機(jī)工作指示
/*延時(shí)程序*/
void delay02s(void)
{
unsigned char i,j,k;
for(i=100;i>0;i--)
for(j=100;j>0;j--)
for(k=248;k>0;k--);
}
main()
{
P0=0;
while(1)
{ /*************************傳感器是設(shè)計(jì)的一次只能觸發(fā)一個傳感器單?****************************
//水滿
if(shuiman==0&&sw5==1&&sw4==1&&sw3==1&&sw2==1&&sw1==1)//當(dāng)唯一的閉合一個傳感器單元:水位6時(shí)發(fā)生
{
dianji=1;//關(guān)電機(jī)
state=1;//電機(jī)工作指示燈熄滅
P0=table[6];//顯示水位深度:6**** 已滿
delay02s();//延時(shí)一段時(shí)間讓數(shù)碼管顯示給人以提示:水已滿
}
//水位5
if(shuiman==1&&sw5==0&&sw4==1&&sw3==1&&sw2==1&&sw1==1)//當(dāng)唯一的閉合一個傳感器單元:水位5時(shí)發(fā)生
{
P0=table[5];//顯示水位深度:5
}
//水位4
if(shuiman==1&&sw5==1&&sw4==0&&sw3==1&&sw2==1&&sw1==1)//當(dāng)唯一的閉合一個傳感器單元:水位4時(shí)發(fā)生
{
P0=table[4];//顯示水位深度:4
}
//水位3
if(shuiman==1&&sw5==1&&sw4==1&&sw3==0&&sw2==1&&sw1==1)//當(dāng)唯一的閉合一個傳感器單元:水位3時(shí)發(fā)生
{
P0=table[3];//顯示水位深度:5
}
//水位2
if(shuiman==1&&sw5==1&&sw4==1&&sw3==1&&sw2==0&&sw1==1)//當(dāng)唯一的閉合一個傳感器單元:水位2時(shí)發(fā)生
{
P0=table[2];//顯示水位深度:2
}
//水位低
if(shuiman==1&&sw5==1&&sw4==1&&sw3==1&&sw2==1&&sw1==0)//當(dāng)唯一的閉合一個傳感器單元:水位1時(shí)發(fā)生
{
dianji=0;//開電機(jī)
state=0;//電機(jī)工作指示燈打開
P0=table[1];//顯示水位深度:1
}
//手工上水
if(shougong==0)//當(dāng)按手工上水按鈕時(shí)發(fā)生
{
dianji=0;//開電機(jī)
state=0;//電機(jī)工作指示燈打開
P0=table[0];//顯示0表示手工上水已有反應(yīng)
delay02s();//延時(shí)一段時(shí)間讓數(shù)碼管顯示給人以提示:已開始手工上水
}
}
}
|
|