毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

IC卡门禁系统设计(原理图+流程图) 第3页

更新时间:2010-4-29:  来源:毕业论文
IC卡门禁系统设计(原理图+流程图) 第3页
 图8  整体流程图
4.2  IC电话卡验证、显示及减钱程序
当系统检测到有IC卡插入时,CPU Atmega8首先将IC卡内的全部数据读出并存储在数组IC_Codes_8[16]内,然后将数组与预先存储在EEPROM中的IC卡数据作比较,如果全部数据相同则表示该卡允许放行,以绿灯提示,并将IC电话卡内的余额显示在液晶显示器上;如果此时按下确定键,则进入IC卡减钱程序,在提示处输入要减去的金额(每次最多可减0.9元),按下确定键即可。部分程序如下:
void Read_Card ( void )         // 读卡程序(读取IC电话卡内的数据)
{
   unsigned char  I = 0 , j = 0 , k = 0 ,    // 循环用变量                                IC_Codes_2[128] = { 0 } ;   // IC卡内128bit数据
   for( i = 0 ; i < 16 ; i++ )
   {
      IC_Codes_8[i] = 0 ;     // 上次读卡的全局变量数据清除
   }
 
   Reset_0 ;                     // IC电话卡复位
   CLK_0 ;               
   delay_nms(10) ;                      // 延时10ms
 
   Reset_1 ;              //   为使地址计数器复位到0,先让Reset端变高。
   delay_nus(8) ;        //  紧跟着一个Clock脉冲(从低到高再降到0),
   CLK_1 ;            //  Reset重新变低,把Clock脉冲包住。随着Reset
   delay_nus(44) ;       //  端变低,地址0单元的数据从I/O上输出。对应
   CLK_0 ;            //  Clock端的每个脉冲,其上升沿使地址计数器增加。
   delay_nus(8) ;       //   其下降沿使被选通地址单元的数据从I/O上输出。
   Reset_0 ;             //  地址计数器增加到127后返回到0。
   delay_nus(5) ;      
   if ( ( PINB & 0x02 ) == 0 )
   {
   IC_Codes_2[0] = 0 ;       //   读取IC卡地址0的数据(数据为0时)
   }
   else                    
   {                    
   IC_Codes_2[0] = 1 ;       //   读取IC卡地址0的数据(数据为1时)

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

上一页  [1] [2] [3] [4] 下一页

IC卡门禁系统设计(原理图+流程图) 第3页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。