📄 y_4_26.c
字号:
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<2) /*磁信号脉冲数少于一个则认为是假币
,如果要提高精度则多加几个*/
{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)&&(DFICLD_NUMBER>=4)) /*测试人民币类型*/
rmb_type=1;
else if((176<=PULSE_NUMBER)&&(PULSE_NUMBER<=179)&&(DFICLD_NUMBER>=8))
rmb_type=1;
else if((161<=PULSE_NUMBER)&&(PULSE_NUMBER<=165)&&(DFICLD_NUMBER>=4))
rmb_type=2;
else if((171<=PULSE_NUMBER)&&(PULSE_NUMBER<=174)&&(DFICLD_NUMBER>=4))
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 + -