|
之前測試時出現(xiàn)信號勿動的問題,并且燈太多,不容易判斷。又重新改了一下板子和程序。程序如下:
#include <reg51.h>
#include <stdio.h>
#define uint unsigned int
#define uchar unsigned char
sbit s1=P1^0; //合閘信號(常開)
sbit s2=P1^1; //分閘信號(常閉)
sbit s3=P1^2; //合閘信號(常開)
sbit s4=P1^3; //分閘信號(常閉)
sbit s5=P1^4; //合閘信號(常開)
sbit s6=P1^5; //分閘信號(常閉)
sbit s7=P1^6; //儲能信號(常開)
sbit s8=P1^7; //儲能信號(常開)
sbit k1=P2^0; //分閘測試按鈕
sbit k2=P2^1; //合閘測試按鈕
sbit k3=P2^2; //儲能測試按鈕
sbit led1=P0^0; //分閘測試合格,燈亮;綠色,不合格閃爍,且紅燈亮
sbit led2=P0^1; //合閘測試合格,燈亮;黃色,不合格閃爍,且紅燈亮
sbit led3=P0^2; //儲能測試合格,燈亮;藍(lán)色,不合格閃爍,且紅燈亮
sbit led4=P0^3; //信號錯誤指示燈
void delayms(uint);//延時定義
void f1();//定義F-D分閘信號
void h1();//定義F-D合閘信號
void c1();//定義F-D儲能信號
void bj1();//定義警示燈閃爍
void bj2();//定義警示燈閃爍
void bj3();//定義警示燈閃爍
/**************************************
*延時程序
**************************************/
void delayms(uint xms) //延時函數(shù)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
/**************************************
*分閘信號異常報警
**************************************/
void bj1()//分閘信號異常報警
{
while(1)
{
led4=0;
led1=0;
delayms(200);
led4=1;
led1=1;
delayms(200);
}
}
/**************************************
*合閘信號異常報警
**************************************/
void bj2()//合閘信號異常報警
{
while(1)
{
led4=0;
led2=0;
delayms(200);
led4=1;
led2=1;
delayms(200);
}
}
/**************************************
*儲能信號異常報警
**************************************/
void bj3()//儲能信號異常報警
{
while(1)
{
led4=0;
led3=0;
delayms(200);
led4=1;
led3=1;
delayms(200);
}
}
/**************************************
*SOG分閘信號判斷
**************************************/
void f1()
{
if(k1==0)
{
if(s1==1&&s2==0&&s3==1&&s4==0&&s5==1&&s6==0&&s7==1&&s8==1)
{
led1=0;
}
else
{
bj1();
}
}
while(!k1);
}
/**************************************
*SOG合閘信號判斷
**************************************/
void h1()
{
if(k2==0)
{
if(s1==0&&s2==1&&s3==0&&s4==1&&s5==0&&s6==1&&s7==0&&s8==0)
{
led2=0;
}
else
{
bj2();
}
}
while(!k2);
}
/**************************************
*SOG儲能信號判斷
**************************************/
void c1()
{
if(k3==0)
{
if(s1==0&&s2==1&&s3==0&&s4==1&&s5==0&&s6==1&&s7==1&&s8==1)
{
led3=0;
}
else
{
bj3();
}
}
while(!k3);
}
/**************************************
*主程序
**************************************/
void main()
{
while(1)
{
f1();
h1();
c1();
}
}
|
-
捕獲.PNG
(66.92 KB, 下載次數(shù): 97)
下載附件
2017-10-3 18:08 上傳
|