}
   delay_nus(27) ;                      // 延时27us  
www.751com.cn
      if ( ( PINB & 0x02 ) == 0 )     
   {
      IC_Codes_2[i] = 0 ;   //  读取IC卡地址1~127的数据(数据为0时)
   }
   else 
   {                       
      IC_Codes_2[i] = 1 ;   //  读取IC卡地址1~127的数据(数据为1时)
   }
   delay_nus(20) ;
   }
   for( i = 0 ; i < 16 ; i++ )     //  将128bit 数据按顺序转换成16个字节
   {               
      for ( j = 0 ; j < 8 ; j++ )     
   {                  //  把16个字节存储到数组IC_Codes_8[16]
         IC_Codes_8[i] |= ( IC_Codes_2[k] << ( 8 - j ) ) ;
       k++ ;
   }
   }
}
4.3  液晶显示与键盘扫描程序                                                   单片机应用系统通常都需要进行人—机对话。其中包括人对应用系统的状态干预与数据输入,应用系统向操作者显示状态与运行结果等信息。显示器与键盘是单片机应用系统中最常用的人—机交互设备。本系统应用到的液晶显示与键盘扫描程序如下:4.3.1  液晶显示程序(主要部分):                                          // 液晶显示器命令、数据写入函数     // 命令形参   //  数据形参               void LCD_write_char( unsigned command , unsigned data ) 
{
   unsigned command_temp , data_temp ;       // 变量定义
 
   command_temp = command ;     //  命令传递
   data_temp = data ;             //  数据传递
   delay_nus(16) ;                  //  延时16us
 
   if( command == 0 )         //   如果命令为0则写入数据
   {
      LCD_RS_PORT |= LCD_RS ;  // RS=1
      LCD_DATA_PORT& = 0Xf0 ;         // 初始化I/O口
      LCD_DATA_PORT |= ( ( data_temp & 0xf0 ) >> 4 ) ;  
      LCD_en_write() ;         //  调整位置后写高四位数据
      LCD_DATA_PORT &= 0Xf0 ;        // 初始化I/O口
      LCD_DATA_PORT |= data_temp & 0x0f ;   
      LCD_en_write() ;          //  写低四位数据
   }
   else                    //   如果命令为1则写入命令
   {
      LCD_RS_PORT& = ~LCD_RS ;   // RS=0
      LCD_DATA_PORT &= 0Xf0 ;        // 初始化I/O口
      LCD_DATA_PORT |= ( ( command_temp & 0xf0 ) >> 4 ) ; 
      LCD_en_write() ;          //  调整位置后写高四位命令
      LCD_DATA_PORT &= 0xf0 ;        // 初始化I/O口
      LCD_DATA_PORT |= command_temp & 0x0f ;  
      LCD_en_write() ;          //  写低四位命令
   }
}
4.3.2  键盘扫描程序:                                                      unsigned char Key_Scan( void )    // 键盘扫描程序  (返回按键值)
{
   unsigned char Key = 0 ;    //   定义按键值变量