📄 验钞机程序.c
字号:
}
P2_0=0;P2_1=0;P2_2=1;P2_3=1; /*电机正转*************************/
TIME=0;
while(1)
{if(TIME>=150)
break;
}
XS_TYPE=1; /*使显示变为第一种显示方式*********/
P0_3=1;
P0_4=1;
/****************************************************************************************/
initial(); /*程序初始化***********************/
while(1){
while(1)
{ZB=1;WJ=0; /*真币标志位置位,钱未进标志位复位**/
if(P1_1==0) /*如果按下清零按钮则币值清0********/
{TIME=0;
delay(100);
if(P1_1==1)
{RMB=0;
XS_TYPE=1;
break;
}
}
if(P1_4==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))/*当钱到了后端检测点时退出循环*****/
{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;
}
}
}
/****************************************************************************************/
if(166<=PULSE_NUMBER&&PULSE_NUMBER<=171&&DFICLD_NUMBER>=4) /*测试人民币类型*/
rmb_type=1;
else if(176<=PULSE_NUMBER&&PULSE_NUMBER<=179&&DFICLD_NUMBER>=4)
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&&DFICLD_NUMBER>=2)
rmb_type=3;
else if(150<=PULSE_NUMBER&&PULSE_NUMBER<=154&&DFICLD_NUMBER>=2)
rmb_type=4;
else if(145<=PULSE_NUMBER&&PULSE_NUMBER<=149&&DFICLD_NUMBER>=2)
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 + -