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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4999|回復(fù): 3
收起左側(cè)

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

[復(fù)制鏈接]
ID:594608 發(fā)表于 2019-9-19 13:08 | 顯示全部樓層 |閱讀模式
本帖最后由 sdb194200 于 2019-9-19 15:58 編輯


1568850881(1).jpg
//實現(xiàn)門禁卡功能
//刷卡實現(xiàn)LCD燈亮 + 12864LCD屏幕顯示相應(yīng)內(nèi)容
屏幕效果如下:

刷卡提示

刷卡提示

刷卡成功

刷卡成功



  1.                                                                        //
  2. //===========================================================================//
  3. /********************************************************************
  4. //MSP430F149單片機 + RC522 +M1
  5. //實現(xiàn)門禁卡功能
  6. //刷卡實現(xiàn)LCD燈亮  +  12864LCD屏幕顯示相應(yīng)內(nèi)容
  7. //調(diào)試環(huán)境: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加密標(biāo)志
  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                                     ; // 關(guān)看門狗
  37.   BCSCTL1 &= ~XT2OFF;           //打開XT2高速晶體振蕩器  
  38.   do
  39.   {
  40.     IFG1 &= ~OFIFG;           //Clear oscFault flag清除振蕩器失效標(biāo)志
  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                                     ; // 關(guān)看門狗
  65.   BoardConfig(0xf0);
  66.   Init_Port();
  67.   InitUART();
  68.   _EINT()                                            ;
  69. loop:lcd_welcome();
  70.   PcdReset();//復(fù)位RC522
  71.   PcdAntennaOn();//開啟天線發(fā)射
  72.   while(1)
  73.   {
  74.     status = PcdRequest(PICC_REQIDL, Temp); ////尋卡,輸出為卡類型
  75.     if (status == MI_OK)
  76.       status = PcdAnticoll(UID); //防沖撞處理,輸出卡片序列號,4字節(jié)
  77.     if (status == MI_OK)
  78.       status = PcdSelect(UID); //選擇卡片,輸入卡片序列號,4字節(jié)
  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.   }
復(fù)制代碼

這里要注意,為了使main函數(shù)的簡潔性,分別將LEDLCD函數(shù)構(gòu)建成.h頭文件,直接實現(xiàn)在main中的調(diào)用。

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

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

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


門禁卡.rar

110.55 KB, 下載次數(shù): 37, 下載積分: 黑幣 -5

RFID門禁卡MSP430/RC522

評分

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

查看全部評分

回復(fù)

使用道具 舉報

ID:594608 發(fā)表于 2019-9-19 15:41 | 顯示全部樓層
有什么問題可以QQ找我,我也是剛剛學(xué)習(xí),互幫互助。
有人幫助會學(xué)的很快
回復(fù)

使用道具 舉報

ID:657082 發(fā)表于 2019-12-5 21:03 | 顯示全部樓層
好!樓主的東西 做的真好 對我的學(xué)習(xí)幫助極大  謝謝樓主  謝謝學(xué)長  南理工歡迎您
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一本色道久久综合亚洲精品小说 | 国产精品一区二区在线免费观看 | 日韩在线视频观看 | 91在线一区二区 | 亚洲乱码在线 | 日产精品久久久一区二区 | 欧美综合一区二区 | 国产一区二区在线观看视频 | 草草福利影院 | 男女啪啪免费 | 99在线免费视频 | 国产日韩欧美亚洲 | 日韩黄色在线视频 | 久久夜视频| 黄色一级片网站 | 国产三区四区 | 日韩欧美专区 | 中国农村毛片免费播放 | 日韩视频专区 | 欧美综合在线观看 | 99热这里都是精品 | 亚洲国产小视频 | 黄色小说视频 | 国产一区二区三区四区 | 成年人小视频 | 国产精品欧美激情 | 亚洲视频免费看 | 午夜性福利 | 国产一区二区在线免费 | 五月婷婷婷| 在线看片a | 黄色大片av | 69av在线| 国产wwwwww| 精品在线播放 | 日本视频一区二区三区 | 国产精品二区一区二区aⅴ污介绍 | 日韩在线资源 | 国产黄av| 午夜av在线| 日韩三级久久 |