久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4838|回復: 3
打印 上一主題 下一主題
收起左側

MSP430通過RC522實現門禁卡功能(RFID)

[復制鏈接]
跳轉到指定樓層
樓主
本帖最后由 sdb194200 于 2019-9-19 15:58 編輯



//實現門禁卡功能
//刷卡實現LCD燈亮 + 12864LCD屏幕顯示相應內容
屏幕效果如下:



  1.                                                                        //
  2. //===========================================================================//
  3. /********************************************************************
  4. //MSP430F149單片機 + RC522 +M1
  5. //實現門禁卡功能
  6. //刷卡實現LCD燈亮  +  12864LCD屏幕顯示相應內容
  7. //調試環境:IAR + MSP430F149 +RC522
  8. //作者:孫登波 119104010574
  9. //時間:2019.09.10
  10. ********************************************************************/
  11. #include "msp430x14x.h"
  12. #include "PIN_DEF.H"
  13. #include "RC522.H"
  14. #include "UART0_Func.c"
  15. #include "ctype.h"
  16. #include "BoardConfig.h"
  17. #include "lcd.h"
  18. #include "led8run.h"

  19. unsigned char UID[5],Temp[4]                                       ;
  20. unsigned char RF_Buffer[18]                                        ;
  21. unsigned char Password_Buffer[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}   ; // Mifare One 缺省密碼
  22. char          MBRX[30]                                             ;
  23. char          MBKeyTP[30]                                          ;
  24. char          Event                                                ;
  25. unsigned char DISP_MODE,i                                            ; // 編輯控件顯示模式
  26. unsigned char des_on       = 0                                     ; // DES加密標志
  27. void Key_TP_Task(void)                                             ;

  28. //***************************************************************************//
  29. //                                                                           //
  30. //                 初始化主時鐘: MCLK = XT1×(FLL_FACTOR+1)                  //
  31. //                                                                           //
  32. //***************************************************************************//
  33. void Init_CLK(void)
  34. {
  35.   unsigned int qq;
  36.   WDTCTL     = WDTPW + WDTHOLD                                     ; // 關看門狗
  37.   BCSCTL1 &= ~XT2OFF;           //打開XT2高速晶體振蕩器  
  38.   do
  39.   {
  40.     IFG1 &= ~OFIFG;           //Clear oscFault flag清除振蕩器失效標志
  41.     for(qq=0xff;qq>0;qq--);
  42.   }while((IFG1&OFIFG));       //oscFault flag still set

  43.   BCSCTL2 |= SELM_2;          //MCLK=XT2
  44.   //BCSCTL2 |= DIVM_0;        //控制MCLK不分頻,默認

  45.   BCSCTL2 |= SELS;            //SMCLK=XT2
  46.   //BCSCTL2 |= DIVS_0;        //控制SMCLK不分頻,默認
  47. }

  48. void Delay(unsigned int time)
  49. {
  50.   unsigned int i,k                             ;
  51.   for(i=0;i<255;i++)
  52.     for(k=0;k<time;k++)
  53.       _NOP()                                   ;   
  54. }

  55. void Init_Port(void)
  56. {
  57.   P4DIR   =   RF_LPCTL + RF_SS   + RF_SCLK  + RF_DATA_OUT                     ;
  58.   P2DIR |= BIT0+RF_LPCTL + RF_SS   + RF_SCLK  + RF_DATA_OUT;
  59.   P1DIR   =   RF_LPCTL + RF_SS   + RF_SCLK  + RF_DATA_OUT                     ;
  60. }

  61. void main( void )
  62. {
  63.   unsigned char status;
  64.   WDTCTL     = WDTPW + WDTHOLD                                     ; // 關看門狗
  65.   BoardConfig(0xf0);
  66.   Init_Port();
  67.   InitUART();
  68.   _EINT()                                            ;
  69. loop:lcd_welcome();
  70.   PcdReset();//復位RC522
  71.   PcdAntennaOn();//開啟天線發射
  72.   while(1)
  73.   {
  74.     status = PcdRequest(PICC_REQIDL, Temp); ////尋卡,輸出為卡類型
  75.     if (status == MI_OK)
  76.       status = PcdAnticoll(UID); //防沖撞處理,輸出卡片序列號,4字節
  77.     if (status == MI_OK)
  78.       status = PcdSelect(UID); //選擇卡片,輸入卡片序列號,4字節
  79.     if (status == MI_OK)
  80.       status = PcdAuthState(PICC_AUTHENT1A, 1, Password_Buffer, UID); //在進行讀寫操作之前需要先進行認
  81.     if (status == MI_OK)
  82.     {
  83.       led_run();
  84.       lcd_success();
  85.       Delay(2500);
  86.       goto loop;
  87.     }

  88.   }
  89.   }
復制代碼

這里要注意,為了使main函數的簡潔性,分別將LEDLCD函數構建成.h頭文件,直接實現在main中的調用。

關于goto loop的解釋:
在實際程序實現過程中發現,如果將開機歡迎界面寫入到while(1)函數中,會導致未刷卡的時候,屏幕一直在刷新。所以為了避免這種情況,將開機歡迎界面函數放在while(1)外,并且用goto函數實現跳出循環。有效地解決了這個問題。

如果有感興趣,想尋找到其他解決方法的師兄,可以先嘗試將開機畫面放回main()函數中,觀察實際運行情況,尋找更佳的解決辦法。
希望能找到更佳的解決辦法,因為goto函數不符合結構化程序設計要求,不到萬不得已不建議采用。

具體程序見附件
主要實現刷卡燈亮(可以連續實現)


門禁卡.rar

110.55 KB, 下載次數: 37, 下載積分: 黑幣 -5

RFID門禁卡MSP430/RC522

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:594608 發表于 2019-9-19 15:41 | 只看該作者
有什么問題可以QQ找我,我也是剛剛學習,互幫互助。
有人幫助會學的很快
回復

使用道具 舉報

板凳
ID:657082 發表于 2019-12-5 21:03 | 只看該作者
好!樓主的東西 做的真好 對我的學習幫助極大  謝謝樓主  謝謝學長  南理工歡迎您
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久国内 | 久久久久国产一级毛片 | 国产精品欧美一区二区三区 | 国产精品看片 | 日韩三级一区 | 激情五月综合网 | 一区二区视频在线观看 | 欧美不卡一区二区三区 | 亚洲网视频 | 成人免费精品 | 日韩欧美国产精品综合嫩v 一区中文字幕 | 日本a v在线播放 | 精品欧美乱码久久久久久1区2区 | 精品久久久久久亚洲精品 | 性高湖久久久久久久久 | 91啪亚洲精品 | 久久久亚洲 | 久久av一区二区三区 | 久久精品小视频 | 国产色 | 真人一级毛片 | 一级a爱片久久毛片 | 国产精品毛片久久久久久久 | 免费av观看 | 亚洲黄色高清视频 | 日韩免费在线观看视频 | 午夜精品久久 | 黄色日本视频 | 特a毛片| 一区二区不卡高清 | 亚洲精品一区二区三区蜜桃久 | 爱爱视频在线观看 | 日韩乱码一二三 | 免费的一级视频 | 亚洲欧洲成人av每日更新 | 久久99网站 | 欧美一区二区在线观看 | 精品国产伦一区二区三区观看说明 | 亚洲天堂影院 | 99在线精品视频 | 亚洲日产精品 |