|
舉例1 - 副本.jpg (184.99 KB, 下載次數(shù): 31)
下載附件
2023-8-30 00:21 上傳
DSC_0006.JPG (337.25 KB, 下載次數(shù): 34)
下載附件
2023-8-30 00:21 上傳
ZXC-003 環(huán)保公廁蹲坑控制器原理圖_00.jpg (387.29 KB, 下載次數(shù): 38)
下載附件
2023-8-30 00:22 上傳
*********************************************************************
程序,描述:)按下啟動按鈕,y1四個220V輸出,y2一個24V負輸出,
兩個同步工作延時3秒斷開y3閉合延時3秒斷,y4閉合延時2秒斷開。這是一個
循環(huán)計數(shù),當循環(huán)50次后y5閉合5秒斷開。自動工作完成。默認模式,優(yōu)先級
別,5秒內(nèi)連續(xù)按5次觸發(fā)y4y5閉合10秒斷開。節(jié)水便器控制器,要求防水防
潮,引線快接插頭,220供電。
*********************************************************************/
#include<STC15W408AS.h>
#define uchar unsigned char//宏定義無符號字符型
#define uint unsigned int //宏定義無符號整型
sbit IN1 = P3^2; /*S1*/
sbit COM1 = P1^1; /*output1*/
sbit COM2 = P1^0; /*output2*/
sbit COM3 = P3^3; /*output3*/
sbit COM4 = P5^5; /*output4*/
sbit COM5 = P5^4; /*output5*/
bit bz1=0;
bit bz2=0;
bit bz3=0;
bit bz4=0;
bit bz5=0;
bit bz6=0;
bit bz7=0;
bit bz8=0;
uchar dsbz=0;
uchar sj1=0;
uchar sj2=0;
uchar sj3=0;
uchar sj4=0;
uchar sj5=0;
uchar sj6=0;
uchar sj7=0;
uchar sj8=0;
bit sjbz1=0;
bit sjbz2=0;
bit sjbz3=0;
bit sjbz4=0;
bit sjbz5=0;
bit sjbz6=0;
bit sjbz7=0;
bit sjbz8=0;
uchar bjz=0;
uchar xhcs=0;//循環(huán)次數(shù)
bit qdbz=0;//啟動標志
bit kzbz=0;
/********************************************************************
初始定義
*********************************************************************/
uint sec; //定義計數(shù)值,每過1/10 秒,sec 加一
uchar keycnt=0;//按下次數(shù)值
uint tcnt; //鍵值判斷
/********************************************************************
延時函數(shù)
*********************************************************************/
void delay(uchar dat)//延時程序
{
uchar m,n,s;
for(m=dat;m>0;m--)
for(n=2;n>0;n--)
for(s=18;s>0;s--);
}
void xuze()
{
if((P12==1)&&(P13==1)&&(P14==1)&&(P15==1)){bjz=1;}//0秒 15
if((P12==0)&&(P13==1)&&(P14==1)&&(P15==1)){bjz=10;}//1秒 14
if((P12==1)&&(P13==0)&&(P14==1)&&(P15==1)){bjz=20;}//2秒 13
if((P12==0)&&(P13==0)&&(P14==1)&&(P15==1)){bjz=30;}//3秒 12
if((P12==1)&&(P13==1)&&(P14==0)&&(P15==1)){bjz=40;}//4秒 11
if((P12==0)&&(P13==1)&&(P14==0)&&(P15==1)){bjz=50;}//5秒 10
if((P12==1)&&(P13==0)&&(P14==0)&&(P15==1)){bjz=60;}//6秒 9
if((P12==0)&&(P13==0)&&(P14==0)&&(P15==1)){bjz=70;}//7秒 8
if((P12==1)&&(P13==1)&&(P14==1)&&(P15==0)){bjz=80;}//8秒 7
if((P12==0)&&(P13==1)&&(P14==1)&&(P15==0)){bjz=90;}//9秒 6
if((P12==1)&&(P13==0)&&(P14==1)&&(P15==0)){bjz=100;}//10秒 4
if((P12==0)&&(P13==0)&&(P14==1)&&(P15==0)){bjz=110;}//11秒 4
if((P12==1)&&(P13==1)&&(P14==0)&&(P15==0)){bjz=120;}//12秒 3
if((P12==0)&&(P13==1)&&(P14==0)&&(P15==0)){bjz=130;}//13秒 2
if((P12==1)&&(P13==0)&&(P14==0)&&(P15==0)){bjz=140;}//14秒 1
if((P12==0)&&(P13==0)&&(P14==0)&&(P15==0)){bjz=150;}//15秒 0
}
/********************************************************************
*********************************************************************/
void main()
{
TMOD=0x02; //定時器工作在方式2
TH0=0x06; //對TH0 TL0 賦值
TL0=0x06;
TR0=1; //開始定時
ET0=1;
EA=1;
sec=0;
while(1)
{
//xuze();
if((IN1==0)&&(bz1==0)){delay(20);if((IN1==0)&&(bz1==0)){keycnt++;sj3=0;bz1=1;}}
if((IN1==1)&&(bz1==1)){delay(20);if((IN1==1)&&(bz1==1)){bz1=0;}}
}
}
/********************************************************************
定時中斷服務函數(shù)
*********************************************************************/
void t0(void) interrupt 1 using 0 //定時中斷服務函數(shù)
{
tcnt++; //每過250ust tcnt 加一
if(tcnt==400) //計滿400 次(1/10 秒)時
{
tcnt=0; //重新再計
if(keycnt>0)
{
sj2++;
sj3++;if(sj3==12){sj3=0;if(qdbz==0){COM1=0;COM2=0;qdbz=1;tcnt=0;sec=0;sj1=0;xhcs=0;}}
if(sj2==50){if(keycnt<5){keycnt=0;sj2=0;}}
if(keycnt>=5){COM1=1;COM2=1;COM3=1;COM4=0;COM5=0;tcnt=0;sec=0;sj1=0;xhcs=0;}
if(sj2==150){if(keycnt>=5){COM4=1;COM5=1;sj2=0;qdbz=0;keycnt=0;}}
}
if(qdbz==1)
{
if(xhcs<51)
{
sec++;
if(sec==30){{COM1=1;COM2=1;COM3=0;}}
if(sec==60){{COM3=1;COM4=0;}}
if(sec==80){{COM4=1;COM1=0;COM2=0;xhcs++;if(xhcs>=51){COM1=1;COM2=1;}sec=0;}}
}
if(xhcs>=51)
{
COM5=0;
sj1++;{if(sj1>=5) {COM1=1;COM2=1;COM5=1;sj1=0;qdbz=0;}}
}
}
}
}
/********************************************************************
結(jié)束
*********************************************************************/
|
|