admin 发表于 2022-7-20 21:45:23

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]
查看完整版本: MSTS电源检测