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

📄 card_verify.c

📁 环保型IC卡门禁系统的C程序
💻 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 + -