MSTS电源检测
void setup() {// put your setup code here, to run once:
pinMode(2,OUTPUT);//触发上升沿的时钟信号引脚
pinMode(3,OUTPUT);// 移位/载入数据 引脚
pinMode(4,INPUT); //串行输入1
pinMode(5,INPUT); //串行输入2
pinMode(6,INPUT); //串行输入3
pinMode(7,INPUT); //串行输入4
pinMode(8,INPUT); //串行输入5
pinMode(9,INPUT); //串行输入6
pinMode(10,INPUT);//串行输入7
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
int i,j,l=0;
int a,b,c,d,e,f,g=0;
long ta,tb,tc,td,te,tf,tg= 0;//每次循环从高到低读出的数据位
int DA; //最后读出的外部数据A
int DB; //最后读出的外部数据B
int DC; //最后读出的外部数据C
int DD; //最后读出的外部数据D
int DE; //最后读出的外部数据E
int DF; //最后读出的外部数据F
int DG; //最后读出的外部数据G
int A10,A11,A12,A13,A14,A15,A16,A17= 0;//A组逐位取数
int A20,A21,A22,A23,A24,A25,A26,A27= 0;//B组逐位取数
int A30,A31,A32,A33,A34,A35,A36,A37= 0;//C组逐位取数
int A40,A41,A42,A43,A44,A45,A46,A47= 0;//D组逐位取数
int A50,A51,A52,A53,A54,A55,A56,A57= 0;//E组逐位取数
int A60,A61,A62,A63,A64,A65,A66,A67= 0;//F组逐位取数
int A70,A71,A72,A73,A74,A75,A76,A77= 0;//G组逐位取数
//初始化数组
for(l=0;l<5;l++)
{
DA=0;
DB=0;
DC=0;
DD=0;
DE=0;
DF=0;
DG=0;
}
for(j=0;j<5;j++)//循环5次采集数据
{
digitalWrite(3,LOW);//载入数据
delay(1);
digitalWrite(3,HIGH); //移位使能
for(i=0;i<8;i++) //获取8位数据
{
ta=digitalRead(4); //A组取数
tb=digitalRead(5); //B组取数
tc=digitalRead(6); //C组取数
td=digitalRead(7); //D组取数
te=digitalRead(8); //E组取数
tf=digitalRead(9); //F组取数
tg=digitalRead(10); //G组取数
//判断为第几位数
if(i==0){A17=ta;A27=tb;A37=tc;A47=td;A57=te;A67=tf;A77=tg;}
if(i==1){A16=ta;A26=tb;A36=tc;A46=td;A56=te;A66=tf;A76=tg;}
if(i==2){A15=ta;A25=tb;A35=tc;A45=td;A55=te;A65=tf;A75=tg;}
if(i==3){A14=ta;A24=tb;A34=tc;A44=td;A54=te;A64=tf;A74=tg;}
if(i==4){A13=ta;A23=tb;A33=tc;A43=td;A53=te;A63=tf;A73=tg;}
if(i==5){A12=ta;A22=tb;A32=tc;A42=td;A52=te;A62=tf;A72=tg;}
if(i==6){A11=ta;A21=tb;A31=tc;A41=td;A51=te;A61=tf;A71=tg;}
if(i==7){A10=ta;A20=tb;A30=tc;A40=td;A50=te;A60=tf;A70=tg;}
//取完整数
DA |= (ta<<(7-i));
DB |= (tb<<(7-i));
DC |= (tc<<(7-i));
DD |= (td<<(7-i));
DE |= (te<<(7-i));
DF |= (tf<<(7-i));
DG |= (tg<<(7-i));
digitalWrite(2,LOW);
delay(10);
digitalWrite(2,HIGH);
}
delay(2000);
}
//数据比较,防误报
for(a=0;a<5;a++) //A组采集5次数据循环比较
{
if(DA!=DA)
break;
}
for(b=0;b<5;b++) //B组采集5次数据循环比较
{
if(DB!=DB)
break;
}
for(c=0;c<5;c++) //C组采集5次数据循环比较
{
if(DC!=DC)
break;
}
for(d=0;d<5;d++) //D组采集5次数据循环比较
{
if(DD!=DD)
break;
}
for(e=0;e<5;e++) //E组采集5次数据循环比较
{
if(DE!=DE)
break;
}
for(f=0;f<5;f++) //F组采集5次数据循环比较
{
if(DF!=DF)
break;
}
for(g=0;g<5;g++) //G组采集5次数据循环比较
{
if(DG!=DG)
break;
}
//数据输出
if(a==5)//A组5次数据均相等
{
Serial.print("#A10=");
Serial.print(A10,BIN);
Serial.print("#A11=");
Serial.print(A11,BIN);
Serial.print("#A12=");
Serial.print(A12,BIN);
Serial.print("#A13=");
Serial.print(A13,BIN);
Serial.print("#A14=");
Serial.print(A14,BIN);
Serial.print("#A15=");
Serial.print(A15,BIN);
Serial.println();
}
if(b==5)//B组5次数据均相等
{
Serial.print("#A20=");
Serial.print(A20,BIN);
Serial.print("#A21=");
Serial.print(A21,BIN);
Serial.print("#A22=");
Serial.print(A22,BIN);
Serial.print("#A23=");
Serial.print(A23,BIN);
Serial.print("#A24=");
Serial.print(A24,BIN);
Serial.print("#A25=");
Serial.print(A25,BIN);
Serial.println();
}
if(c==5)//C组5次数据均相等
{
Serial.print("#A30=");
Serial.print(A30,BIN);
Serial.print("#A31=");
Serial.print(A31,BIN);
Serial.print("#A32=");
Serial.print(A32,BIN);
Serial.print("#A33=");
Serial.print(A33,BIN);
Serial.print("#A34=");
Serial.print(A34,BIN);
Serial.print("#A35=");
Serial.print(A35,BIN);
Serial.println();
}
if(d==5)//D组5次数据均相等
{
Serial.print("#A40=");
Serial.print(A40,BIN);
Serial.print("#A41=");
Serial.print(A41,BIN);
Serial.print("#A42=");
Serial.print(A42,BIN);
Serial.print("#A43=");
Serial.print(A43,BIN);
Serial.print("#A44=");
Serial.print(A44,BIN);
Serial.print("#A45=");
Serial.print(A45,BIN);
Serial.println();
}
if(e==5)//E组5次数据均相等
{
Serial.print("#A50=");
Serial.print(A50,BIN);
Serial.print("#A51=");
Serial.print(A51,BIN);
Serial.print("#A52=");
Serial.print(A52,BIN);
Serial.print("#A53=");
Serial.print(A53,BIN);
Serial.print("#A54=");
Serial.print(A54,BIN);
Serial.print("#A55=");
Serial.print(A55,BIN);
Serial.println();
}
if(f==5)//F组5次数据均相等
{
Serial.print("#A60=");
Serial.print(A60,BIN);
Serial.print("#A61=");
Serial.print(A61,BIN);
Serial.print("#A62=");
Serial.print(A62,BIN);
Serial.print("#A63=");
Serial.print(A63,BIN);
Serial.print("#A64=");
Serial.print(A64,BIN);
Serial.print("#A65=");
Serial.print(A65,BIN);
Serial.println();
}
if(g==5)//G组5次数据均相等
{
Serial.print("#A70=");
Serial.print(A70,BIN);
Serial.print("#A71=");
Serial.print(A71,BIN);
Serial.print("#A72=");
Serial.print(A72,BIN);
Serial.print("#A73=");
Serial.print(A73,BIN);
Serial.print("#A74=");
Serial.print(A74,BIN);
Serial.print("#A75=");
Serial.print(A75,BIN);
Serial.println();
}
Serial.println();
Serial.println();
Serial.println();
delay(3000);
}
页:
[1]