欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: MSP430通過RC522實(shí)現(xiàn)門禁卡功能(RFID) [打印本頁(yè)]

作者: sdb194200    時(shí)間: 2019-9-19 13:08
標(biāo)題: MSP430通過RC522實(shí)現(xiàn)門禁卡功能(RFID)
本帖最后由 sdb194200 于 2019-9-19 15:58 編輯



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



  1.                                                                        //
  2. //===========================================================================//
  3. /********************************************************************
  4. //MSP430F149單片機(jī) + RC522 +M1
  5. //實(shí)現(xiàn)門禁卡功能
  6. //刷卡實(shí)現(xiàn)LCD燈亮  +  12864LCD屏幕顯示相應(yīng)內(nèi)容
  7. //調(diào)試環(huán)境:IAR + MSP430F149 +RC522
  8. //作者:孫登波 119104010574
  9. //時(shí)間: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. //                 初始化主時(shí)鐘: 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不分頻,默認(rèn)

  45.   BCSCTL2 |= SELS;            //SMCLK=XT2
  46.   //BCSCTL2 |= DIVS_0;        //控制SMCLK不分頻,默認(rèn)
  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); //防沖撞處理,輸出卡片序列號(hào),4字節(jié)
  77.     if (status == MI_OK)
  78.       status = PcdSelect(UID); //選擇卡片,輸入卡片序列號(hào),4字節(jié)
  79.     if (status == MI_OK)
  80.       status = PcdAuthState(PICC_AUTHENT1A, 1, Password_Buffer, UID); //在進(jìn)行讀寫操作之前需要先進(jìn)行認(rèn)
  81.     if (status == MI_OK)
  82.     {
  83.       led_run();
  84.       lcd_success();
  85.       Delay(2500);
  86.       goto loop;
  87.     }

  88.   }
  89.   }
復(fù)制代碼

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

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

如果有感興趣,想尋找到其他解決方法的師兄,可以先嘗試將開機(jī)畫面放回main()函數(shù)中,觀察實(shí)際運(yùn)行情況,尋找更佳的解決辦法。
希望能找到更佳的解決辦法,因?yàn)?/font>goto函數(shù)不符合結(jié)構(gòu)化程序設(shè)計(jì)要求,不到萬不得已不建議采用。
[qq]969357166[/qq]
具體程序見附件
主要實(shí)現(xiàn)刷卡燈亮(可以連續(xù)實(shí)現(xiàn))
[qq]969357166[/qq]

門禁卡.rar

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

RFID門禁卡MSP430/RC522


作者: sdb194200    時(shí)間: 2019-9-19 15:41
有什么問題可以QQ找我,我也是剛剛學(xué)習(xí),互幫互助。
有人幫助會(huì)學(xué)的很快
作者: glj888    時(shí)間: 2019-12-5 21:03
好!樓主的東西 做的真好 對(duì)我的學(xué)習(xí)幫助極大  謝謝樓主  謝謝學(xué)長(zhǎng)  南理工歡迎您




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1