找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2542|回复: 0
打印 上一主题 下一主题
收起左侧

单片机+RC522图书馆座位管理系统设计 附程序+电路图

[复制链接]
跳转到指定楼层
楼主
IC模块


单片机源程序如下:
  1. #include "include.h"

  2. INT8U CardRevBuf[16] = { 0 };

  3. void init_port( void )
  4. {
  5.         P0M1 = 0x00;
  6.         P0M0 = 0xff;

  7.         P3M1 &= ~0x10;
  8.         P3M0 |= 0x10;

  9.         P34 = 0;
  10.         P35 = 0;

  11. }

  12. void init_all(void)
  13. {
  14.         EA = 0;

  15.         init_port();
  16.         init_rc522();
  17.         init_lcd();
  18.         
  19.         EA = 1;
  20. }

  21. void display_no_id( void )
  22. {
  23.         DisplayListChar( 0, 0, " ID:            " );
  24. }

  25. void display_id( INT8U * SrcBuf )
  26. {
  27.         char DisplayBuf[10];
  28.         char *pDisplayChar;
  29.         INT8U Tmp, i;

  30.         pDisplayChar = DisplayBuf;

  31.         for( i = 0; i < 4; i++ )
  32.         {
  33.                 Tmp = ( ( *SrcBuf ) >> 4 ) & 0x0F;        
  34.                 if( ( Tmp >=0 ) && ( Tmp <= 9 )        )
  35.                 {
  36.                         *pDisplayChar ++ = '0' + Tmp;        
  37.                 }
  38.                 else
  39.                 {
  40.                         *pDisplayChar ++ = 'A' + Tmp - 10;
  41.                 }

  42.                 Tmp = ( *SrcBuf ) & 0x0F;        
  43.                 if( ( Tmp >=0 ) && ( Tmp <= 9 )        )
  44.                 {
  45.                         *pDisplayChar ++ = '0' + Tmp;        
  46.                 }
  47.                 else
  48.                 {
  49.                         *pDisplayChar ++ = 'A' + Tmp - 10;
  50.                 }

  51.                 SrcBuf ++;
  52.         }
  53.         *pDisplayChar ++ = '\0';

  54.         DisplayListChar( 0, 4, DisplayBuf );   
  55. }

  56. void ctrl( void )
  57. {
  58.         if( PcdRequest( PICC_REQIDL, &CardRevBuf[0] ) != MI_OK )//寻天线区内未进入休眠状态的卡,返回卡片类型 2字节        
  59.         {
  60.                 if( PcdRequest( PICC_REQIDL, &CardRevBuf[0] ) != MI_OK )//寻天线区内未进入休眠状态的卡,返回卡片类型 2字节        
  61.                 {
  62.                         display_no_id();
  63.                         return;
  64.                 }        
  65.         }

  66.         if( PcdAnticoll( &CardRevBuf[2] ) != MI_OK ) //防冲撞,返回卡的序列号 4字节
  67.         {
  68.                 display_no_id();
  69.                 return;        
  70.         }

  71.         if( PcdSelect( &CardRevBuf[2] ) != MI_OK )//选卡
  72.         {
  73.                 display_no_id();
  74.                 return;
  75.         }
  76.         display_id( &CardRevBuf[2] );
  77. }

  78. void main(void)
  79. {
  80.         init_all();

  81.         while(1)
  82.         {
  83.                 ctrl();        
  84.         }
  85. }
复制代码

所有资料51hei提供下载:
IC卡模块资料.7z (11.46 MB, 下载次数: 47)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表