1666|0

1140

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

MSP430通过RC522实现门禁卡功能(RFID) [复制链接]

//实现门禁卡功能
//刷卡实现LCD灯亮 + 12864LCD屏幕显示相应内容
屏幕效果如下:
  
 
  1.  
  2.                                                                        //
  3. //===========================================================================//
  4. /********************************************************************
  5. //MSP430F149单片机 + RC522 +M1 
  6. //实现门禁卡功能
  7. //刷卡实现LCD灯亮  +  12864LCD屏幕显示相应内容
  8. //调试环境:IAR + MSP430F149 +RC522
  9. //作者:孙登波 119104010574
  10. //时间:2019.09.10
  11. ********************************************************************/
  12. #include "msp430x14x.h"
  13. #include "PIN_DEF.H"
  14. #include "RC522.H"
  15. #include "UART0_Func.c"
  16. #include "ctype.h" 
  17. #include "BoardConfig.h"
  18. #include "lcd.h"
  19. #include "led8run.h"
  20.  
  21. unsigned char UID[5],Temp[4]                                       ;
  22. unsigned char RF_Buffer[18]                                        ;
  23. unsigned char Password_Buffer[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}   ; // Mifare One 缺省密码
  24. char          MBRX[30]                                             ;
  25. char          MBKeyTP[30]                                          ;
  26. char          Event                                                ;
  27. unsigned char DISP_MODE,i                                            ; // 编辑控件显示模式
  28. unsigned char des_on       = 0                                     ; // DES加密标志
  29. void Key_TP_Task(void)                                             ;
  30.  
  31. //***************************************************************************//
  32. //                                                                           //
  33. //                 初始化主时钟: MCLK = XT1×(FLL_FACTOR+1)                  //
  34. //                                                                           //
  35. //***************************************************************************//
  36. void Init_CLK(void)
  37. {
  38.   unsigned int qq;
  39.   WDTCTL     = WDTPW + WDTHOLD                                     ; // 关看门狗
  40.   BCSCTL1 &= ~XT2OFF;           //打开XT2高速晶体振荡器  
  41.   do
  42.   {
  43.     IFG1 &= ~OFIFG;           //Clear oscFault flag清除振荡器失效标志
  44.     for(qq=0xff;qq>0;qq--);
  45.   }while((IFG1&OFIFG));       //oscFault flag still set
  46.  
  47.   BCSCTL2 |= SELM_2;          //MCLK=XT2
  48.   //BCSCTL2 |= DIVM_0;        //控制MCLK不分频,默认
  49.  
  50.   BCSCTL2 |= SELS;            //SMCLK=XT2
  51.   //BCSCTL2 |= DIVS_0;        //控制SMCLK不分频,默认
  52. }
  53.  
  54. void Delay(unsigned int time)
  55. {
  56.   unsigned int i,k                             ;
  57.   for(i=0;i<255;i++)
  58.     for(k=0;k<time;k++)
  59.       _NOP()                                   ;    
  60. }
  61.  
  62. void Init_Port(void)
  63. {
  64.   P4DIR   =   RF_LPCTL + RF_SS   + RF_SCLK  + RF_DATA_OUT                     ;
  65.   P2DIR |= BIT0+RF_LPCTL + RF_SS   + RF_SCLK  + RF_DATA_OUT;
  66.   P1DIR   =   RF_LPCTL + RF_SS   + RF_SCLK  + RF_DATA_OUT                     ;
  67. }
  68.  
  69. void main( void )
  70. {
  71.   unsigned char status;
  72.   WDTCTL     = WDTPW + WDTHOLD                                     ; // 关看门狗
  73.   BoardConfig(0xf0);
  74.   Init_Port();
  75.   InitUART();
  76.   _EINT()                                            ;
  77. loop:lcd_welcome();
  78.   PcdReset();//复位RC522
  79.   PcdAntennaOn();//开启天线发射 
  80.   while(1)
  81.   {
  82.     status = PcdRequest(PICC_REQIDL, Temp); ////寻卡,输出为卡类型
  83.     if (status == MI_OK)
  84.       status = PcdAnticoll(UID); //防冲撞处理,输出卡片序列号,4字节
  85.     if (status == MI_OK)
  86.       status = PcdSelect(UID); //选择卡片,输入卡片序列号,4字节
  87.     if (status == MI_OK)
  88.       status = PcdAuthState(PICC_AUTHENT1A, 1, Password_Buffer, UID); //在进行读写操作之前需要先进行认
  89.     if (status == MI_OK)
  90.     {
  91.       led_run();
  92.       lcd_success();
  93.       Delay(2500);
  94.       goto loop;
  95.     }
  96.  
  97.   }
  98.   }
 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表