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

📄 ycj_jcfs1.c

📁 一款新型能识别钞票面值的验钞机程序
💻 C
📖 第 1 页 / 共 2 页
字号:
                       {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((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((P1_2==1)&&(P1_3==1))
                                {delay(1);
                                 if((P1_2==1)&&(P1_3==1))
                                   {IE=0x82;
                                    break;
                                   }
                                }
                             }

/**********当钱刚出LEN检测点时就可以根据磁信号判断真伪,如果是假币就执行下面的程序*********/
                        if(DFICLD_NUMBER<5)              /*磁信号脉冲数少于一个则认为是假币
                                                           ,如果要提高精度则多加几个*/
                          {P2_0=1;P2_1=1;P2_2=0;P2_3=0;  /*电机反转*/
                           P2_7=0;                       /*开报警电路*/
                           XS_TYPE=2;                    /*使显示变为第二种显示方式*/
                           TIME=0;
                           while(1)
                                {if(P1_1==0)                      /*如果按下清零按钮则币值清0********/
                                   {TIME=0;
                                    delay(100);
                                    if(P1_1==0)
                                      {RMB=0;
                                       XS_TYPE=1;
                                       break;
                                      }
                                   }
                                 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)                       /*延时0.8秒*/
                                {if(TIME>=100)
                                 break;
                                }
                           P2_0=1;P2_1=1;P2_2=1;P2_3=1;   /*电机停转*/
                           ZB=0;                          /*真币标志位复位*/
                          }
/****************************************************************************************/

/**如果有磁信号,初步判定为真币,执行下面的程序区分币种,如果不在设置范围内,就判为假币**/
                        if(ZB)
                          {PULSE_NUMBER=PULSE_NUMBER1;
                           if((166<=PULSE_NUMBER)&&(PULSE_NUMBER<=171)) /*测试人民币类型*/
                              rmb_type=1;
                           else if((161<=PULSE_NUMBER)&&(PULSE_NUMBER<=165))
                                   rmb_type=2;
                           else if((155<=PULSE_NUMBER)&&(PULSE_NUMBER<=159))
                                   rmb_type=3;
                           else if((150<=PULSE_NUMBER)&&(PULSE_NUMBER<=154))
                                   rmb_type=4;
                           else if((145<=PULSE_NUMBER)&&(PULSE_NUMBER<=149))
                                   rmb_type=5;
                           else rmb_type=0;
                           switch(rmb_type)                 /*根据面额累加,并显示*/
                                 {case 1:RMB=RMB+100;ZB++;break;
                                  case 2:RMB=RMB+50;ZB++;break;
                                  case 3:RMB=RMB+20;ZB++;break;
                                  case 4:RMB=RMB+10;ZB++;break;
                                  case 5:RMB=RMB+5;ZB++;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 + -