📄 card_verify.c
字号:
#include <iom8v.h>
#include <macros.h>
#include "lcd1602.h"
unsigned char Card_ID = 0 ;
void Balance_dis(void)
{
unsigned char i = 0 , j = 0 , flag = 0 , IC_Balance[4] = { 0 } ;
unsigned int Balance = 0 ; // 余额变量
for(i=0;i<4;i++)
{
flag=0x01 ;
for(j=0;j<8;j++)
{ // 计算出IC_Value[4]中每个字节中有多少位为1
if((IC_Codes_8[9+i]&flag)!=0) // 并记在IC_Balance[4]数组中
{
IC_Balance[i]++ ;
}
flag=flag<<1;
}
}
/**************计算出卡内金钱的单元数(一个单元对应0.1元)********************/
Balance = IC_Balance[0]*512 + IC_Balance[1]*64 + IC_Balance[2]*8 +IC_Balance[3] ;
IC_Balance[0] = Balance / 1000 ; // 计算出卡内金钱的单元数的千位
IC_Balance[1] = ( Balance / 100 ) % 10 ; // 计算出卡内金钱的单元数的百位
IC_Balance[2] = ( Balance / 10 ) % 10 ; // 计算出卡内金钱的单元数的十位
IC_Balance[3] = Balance % 10 ; // 计算出卡内金钱的单元数的个位
for(i=0;i<3;i++)
{
display(IC_Balance[i] , 27+i); // 显示卡内金额
}
display(IC_Balance[3] , 31);
}
void Right_Card(void)
{
unsigned char Card_ID_shi = 0 , Card_ID_ge = 0 , Key = 0 , i = 0 , tem = 0 ;
LCD_write_char(0x01,0); //清屏
delay_nms(2);
Card_ID_shi = ( Card_ID / 10 ) ;
Card_ID_ge = ( Card_ID % 10 ) ;
LCD_write_string(2,0,"Card_ID : ");
if(Menu_flag==1)
{
LCD_write_string(0,1,"Del this Card ?");
}
else
{
LCD_write_string(0,1,"Welcome! $: . ");
Balance_dis();
LED_ON ;
}
display( Card_ID_shi , 12 );
display( Card_ID_ge , 13 );
if(Menu_flag==1)
{
Menu_flag=0;
while(1)
{
Key = Key_Scan() ;
if(Key == 11)
{
Menu_0();
}
if(Key == 12)
{
for(i=0;i<6;i++)
{
EEPROM_write((Card_ID*6)+i, 0);
}
tem = EEPROM_read(511) - 1 ;
EEPROM_write(511, tem);
LCD_write_string(0,1,"Del Successfully");
while(1)
{
if(IC_SW!=0)
{
delay_nms(50); // 检测是否有卡插入
if(IC_SW!=0)
{
Menu_0();
}
}
}
}
}
}
while(1)
{
if(IC_SW!=0)
{
delay_nms(50); // 检测是否有卡插入
if(IC_SW!=0)
{
LED_OFF ;
menu_Init();
}
}
Key = Key_Scan() ;
if(Key == 12)
{
Write_Card_Value();
}
}
}
void Wrong_Card(void)
{
unsigned char Key = 0 ;
LCD_write_char(0x01,0); //清屏
delay_nms(2);
LCD_write_string(3,0,"Wrong Card");
if ( (Menu_flag==1) || (Wrong_flag==1) )
{
LCD_write_string(4,1,"Sorry !!");
}
else
{
LCD_write_string(0,1," Sorry! $: . ");
Balance_dis();
}
while(1)
{
if(IC_SW!=0)
{
delay_nms(50); // 检测是否有卡插入
if(IC_SW!=0)
{
if (Menu_flag==1)
{
Menu_flag=0;
Wrong_flag=0;
Menu_0();
}
if(Wrong_flag==1)
{
Wrong_flag=0;
menu_Init();
}
menu_Init();
}
}
if(Menu_flag==0)
{
Key = Key_Scan() ;
if(Key == 12)
{
Write_Card_Value();
}
}
}
}
void Card_Verify(void)
{
unsigned char i = 0 ;
for(Card_ID=0;Card_ID<83;Card_ID++)
{
if ( IC_Codes_8[2] == EEPROM_read(i) )
{
if ( IC_Codes_8[3] == EEPROM_read(1+i) )
{
if ( IC_Codes_8[4] == EEPROM_read(2+i) )
{
if ( IC_Codes_8[5] == EEPROM_read(3+i) )
{
if ( IC_Codes_8[6] == EEPROM_read(4+i) )
{
if ( IC_Codes_8[7] == EEPROM_read(5+i) )
{
if( Exist_flag == 1)
{
Exist_flag = 0 ;
LCD_write_char(0x01,0); //清屏
delay_nms(2);
LCD_write_string(2,0,"Card Existed");
LCD_write_string(4,1,"Sorry !!");
while(1)
{
if(IC_SW!=0)
{
delay_nms(50); // 检测是否有卡插入
if(IC_SW!=0)
{
Menu_0();
}
}
}
}
Right_Card();
}
}
}
}
}
}
i = i + 6 ;
}
if( Exist_flag == 0)
{
Wrong_Card();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -