php中文网 | cnphp.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 484|回复: 0

MSTS电源检测

[复制链接]

3138

主题

3148

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

UID
1
威望
0
积分
7946
贡献
0
注册时间
2021-4-14
最后登录
2024-11-21
在线时间
763 小时
QQ
发表于 2022-7-20 21:45:23 | 显示全部楼层 |阅读模式
[mw_shl_code=cpp,true]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[10];     //最后读出的外部数据A
  int DB[10];     //最后读出的外部数据B
  int DC[10];     //最后读出的外部数据C
  int DD[10];     //最后读出的外部数据D
  int DE[10];     //最后读出的外部数据E
  int DF[10];     //最后读出的外部数据F
  int DG[10];     //最后读出的外部数据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[l]=0;
    DB[l]=0;
    DC[l]=0;
    DD[l]=0;
    DE[l]=0;
    DF[l]=0;
    DG[l]=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[j] |= (ta<<(7-i));
      DB[j] |= (tb<<(7-i));
      DC[j] |= (tc<<(7-i));
      DD[j] |= (td<<(7-i));
      DE[j] |= (te<<(7-i));
      DF[j] |= (tf<<(7-i));
      DG[j] |= (tg<<(7-i));

      digitalWrite(2,LOW);
      delay(10);
      digitalWrite(2,HIGH);
    }
    delay(2000);
  }


  //数据比较,防误报
  for(a=0;a<5;a++)   //A组采集5次数据循环比较
  {
    if(DA[a]!=DA[4])
    break;
  }
  for(b=0;b<5;b++)   //B组采集5次数据循环比较
  {
    if(DB!=DB[4])
    break;
  }
  for(c=0;c<5;c++)   //C组采集5次数据循环比较
  {
    if(DC[c]!=DC[4])
    break;
  }
  for(d=0;d<5;d++)   //D组采集5次数据循环比较
  {
    if(DD[d]!=DD[4])
    break;
  }
  for(e=0;e<5;e++)   //E组采集5次数据循环比较
  {
    if(DE[e]!=DE[4])
    break;
  }
  for(f=0;f<5;f++)   //F组采集5次数据循环比较
  {
    if(DF[f]!=DF[4])
    break;
  }
  for(g=0;g<5;g++)   //G组采集5次数据循环比较
  {
    if(DG[g]!=DG[4])
    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);
}
[/mw_shl_code]

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|php中文网 | cnphp.com ( 赣ICP备2021002321号-2 )

GMT+8, 2024-11-22 02:46 , Processed in 0.992635 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

申明:本站所有资源皆搜集自网络,相关版权归版权持有人所有,如有侵权,请电邮(fiorkn@foxmail.com)告之,本站会尽快删除。

快速回复 返回顶部 返回列表