}
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 ; // 定义按键值变量