⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ycj_ls.c

📁 一款新型能识别钞票面值的验钞机程序
💻 C
📖 第 1 页 / 共 2 页
字号:
                     if(P1_4==0)                      /*当有钱进入时就可以检测了*/
                       {PULSE_NUMBER1=0;              /*脉冲数清零*/
                        TIME=0;                       /*时间数清零*/
                        DFICLD_NUMBER=0;              /*磁信号脉冲数清零*/
                        P2_0=0;P2_1=0;P2_2=1;P2_3=1;  /*电机正转*/
                        DFICLD_TIMER=0;
                        while(1)
                             {if(DFICLD_TIMER>=20)    /*可以检测磁信号了*/
                                 IE=0x86;
                                 
                              if(DFICLD_BZ==1)
                                {
                                 IE=0x82;             
                                 for(j=0;j<200;j++)
                                    {
                                    if(P0_0==0||P0_1==0) i++;
                                    }
                                 if(i>40)
                                   {DFICLD_NUMBER++;                       /*只有当钱进去后才计数*/
                                    DFICLD_BZ=0;
                                    IE=0x86;
                                   }
                                }
                                
                              if((P1_2==0)&&(P1_3==0))/*当钱到了LEN检测点时退出循环*/
                                {delay(1);
                                 if((P1_2==0)&&(P1_3==0))
                                   {IE=0x87;
                                    break;
                                   }
                                }
                              if(TIME>=200)            /*当设定时间到时退出循环*/
                                {WJ=1;                 /*钱未进标志位置位*/
                                 break;
                                }
                             }
                        if(WJ)                         /*如果钱未进去,则初使化*/
                          {P2_0=1;P2_1=1;P2_2=1;P2_3=1;/*电机停转*/
                           XS_TYPE=2;                  /*使显示变为第二种显示方式*/
                           while(1)
                                {if(P1_4==1)
                                    break;
                                }
                           initial();
                           break;
                          }
                        while(1)                        /*当钱出LEN检测点时才停止循环*/
                             {if(DFICLD_BZ==1)
                                {
                                 IE=0x83;             
                                 for(j=0;j<200;j++)
                                    {
                                    if(P0_0==0||P0_1==0) i++;
                                    }
                                 if(i>40)
                                   {DFICLD_NUMBER++;                       /*只有当钱进去后才计数*/
                                    DFICLD_BZ=0;
                                    IE=0x87;
                                   }
                                }
                             
                              if((P1_2==1)&&(P1_3==1))
                                {delay(1);
                                 if((P1_2==1)&&(P1_3==1))
                                   {IE=0x82;
                                    break;
                                   }
                                }
                             }
/****************************************************************************************/

/****************************************************************************************/
                        if(DFICLD_NUMBER<15)
                           ZB=0;
                        else ZB=1;
/****************************************************************************************/



/****************************************************************************************/
                           PULSE_NUMBER=PULSE_NUMBER1;
                           if((166<=PULSE_NUMBER)&&(PULSE_NUMBER<=171)&&(ZB==1)) /*测试人民币类型*/
                             rmb_type=1;
                           else if((161<=PULSE_NUMBER)&&(PULSE_NUMBER<=165)&&(ZB==1))
                                  rmb_type=2;
                           else if((155<=PULSE_NUMBER)&&(PULSE_NUMBER<=159))
                                  {if(esw==0)
                                    rmb_type=3;
                                  if(esw==1)
                                    if(ZB)
                                       rmb_type=3;
                                    else rmb_type=0;
                                  }
                           else if((150<=PULSE_NUMBER)&&(PULSE_NUMBER<=154))
                                  {if(esw==0)
                                    rmb_type=4;
                                  if(esw==1)
                                    if(ZB)
                                       rmb_type=4;
                                    else rmb_type=0;
                                  }
                           else if((145<=PULSE_NUMBER)&&(PULSE_NUMBER<=149))
                                   {if(esw==0)
                                    rmb_type=5;
                                  if(esw==1)
                                    if(ZB)
                                       rmb_type=5;
                                    else rmb_type=0;
                                   }
                           else rmb_type=0;
                           switch(rmb_type)                 /*根据面额累加,并显示*/
                                 {case 1:RMB=RMB+100;ZB=2;break;
                                  case 2:RMB=RMB+50;ZB=2;break;
                                  case 3:RMB=RMB+20;ZB=2;break;
                                  case 4:RMB=RMB+10;ZB=2;break;
                                  case 5:RMB=RMB+5;ZB=2;break;
                             /*如果检测的人民币不在设定的币种范围内就判为假币*/
                                  default:P2_0=1;P2_1=1;P2_2=0;P2_3=0; /*电机反转*/
                                          P2_7=0;                      /*报警*/
                                          XS_TYPE=2;                   /*使显示变为第二种显示方式*/
                                          TIME=0;
                                          while(1)
                                               {if(P1_4==0)
                                                  {P2_7=1;             /*关报警电路*/
                                                   delay(1);
                                                   if(P1_4==0)
                                                      break;
                                                  }
                                                if(TIME>=200)/*当设定时间到时退出循环*/
                                                  {P2_7=1;   /*关报警电路*/
                                                   WJ=1;     /*钱未进标志位置位*/
                                                   break;
                                                  }
                                               }
                                          if(WJ)             /*如果钱还未退回,则初使化*/
                                            {initial();
                                             break;
                                            }
                                          TIME=0;
                                          while(1)
                                               {if(TIME>=100)
                                                   break;
                                               }
                                          P2_0=1;P2_1=1;P2_2=1;P2_3=1; /*电机停转*/

                                          break;
                                   }
                           if(RMB>=1000)                      /*如果人民币超出显示范围就减一千*/
                             {RMB=RMB-1000;}



/******************************************************************************************/
                       if(P1_4==0)                   /*直到钱退出后才能再次检测*/
                          while(1)
                            {if(P1_4==1)
                                break;
                            }
                       if(ZB==2)                              /*如果钱的确是真的就将其安全送出*/
                         {MOTOL_DELAY_TIME=0;
                          XS_TYPE=1;                          /*使显示变为第一种显示方式*/
                          while(1)
                               {if(MOTOL_DELAY_TIME==10)
                                   break;
                               }
                         }
                       initial();                             /*程序初使化*/
                       }

                    }
              }
            }
  /******************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -