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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9513|回復: 13
收起左側

RC522射頻模塊實現M1卡錢包功能STM32源碼與資料分享

  [復制鏈接]
ID:258850 發表于 2018-5-17 16:31 | 顯示全部樓層 |閱讀模式
硬件:
1、MCU(該程序使用STM32F103開發板)
2、RFID RC522讀寫器(會送兩張MI卡)
軟件:
1、串口調試助手
2、KEIl5開發工具
參考資料:
1、MCU(該程序使用STM32F103開發板)
2、stm32中文參考手冊(V10)
3、Mifare1 S50IC卡中文說明書

實驗說明:本程序可在51等單片機上運行,只需SPI接口,電源,注意RFID的電源范圍,一塊開發板,看懂程序后容易移植

實驗程序內容:程序在網上下載案例,只實現讀卡功能(網上大部分的資源大多是這種情況),于是對程序修改后進行編寫,主要增加了STORE文件,
還可進行拓展。

程序實現功能:
最主要的功能是進行管理員認證后執行相應操作
1、管理員權限卡(具有全部權限)
2、用戶卡(只能獲取本卡信息,用戶卡消費,需先獲取管理員權限),認證管理員卡后可進行等操作

實驗步驟:
1、按key0鍵進行管理員認證
2、按key1鍵進行密碼修改,密碼內容沒有做輸入,暫時沒做界面(需管理員認證,實際是無需管理員認證的,只是偷懶了以下)
3、按key2鍵進行(需管理員認證)

調試錯誤:
1、SPi的時鐘極性和時鐘相位沒有設置正確,調試發現發送命令字后返回的結果不一致
2、RC522復位時間和啟動時間間隔太短,導致讀卡不靈敏
3、將扇區控制塊的內容寫錯(格式錯誤,存儲控制的數據和反碼不一致,粗心導致),導致不能讀寫這個

錢包數據格式:
示例1:01 ff ff ff f7  0  0  0  01 ff ff ff 28 D7 28 D7           //數據存放在0x28
示例2:3  0  0  0  fc  ff ff ff  3  0  0  0  8 f7  8 f7         //數據存放在0x08
前4字節:金額
4-7    :反碼
8-11   :備份金額
12-15  :地址 地址反碼 地址 地址反碼

管理員卡:扇區使用0x18-0x1B
1B:秘鑰A:888888   控制字:f0 f0 f0 69  秘鑰B:654321
18:塊數據 FF BB E0 A8 C9 56 FE AC C4 D2 B6 7B 55 6B 3F 19
0f:秘鑰A:123321   控制字:ff 07 80 69  秘鑰B:010101
控制字說明:
塊 0: C10 C20 C30  101        秘鑰B認證后可讀不可寫
塊 1: C11 C21 C31        101        秘鑰B認證后可讀不可寫
塊 2: C12 C22 C32        101        秘鑰B認證后可讀不可寫
塊 3: C13 C23 C33        101 秘鑰A、B不可讀寫,驗證秘鑰B可改寫控制字

用戶卡:扇區使用0x0C-0x0F
0X0F:秘鑰A:初始值:123456(用戶可更改)  控制字:80 ff 87 69  秘鑰B:960917
0X0C作為錢包存儲
塊 0: C10 C20 C30  110        秘鑰A可讀,可減,秘鑰B:可讀可寫可增可減
塊 1: C11 C21 C31        110        秘鑰B認證后可讀不可寫
塊 2: C12 C22 C32        110        秘鑰B認證后可讀不可寫
塊 3: C13 C23 C33        101 秘鑰A、B不可讀寫,驗證秘鑰B可改寫控制字

120315h594j0jlz60looio.png.thumb.jpg


單片機源程序如下:
  1. #include "output.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "rc522.h"
  5. #include "lcd.h"                         //顯示模塊
  6. #include "key.h"             //
  7. #include "usart.h"
  8. #include "string.h"
  9. #include "led.h"
  10. #include "store.h"
  11. /*******************************
  12. *連線說明:
  13. *1--SS  <----->PF0
  14. *2--SCK <----->PB13
  15. *3--MOSI<----->PB15
  16. *4--MISO<----->PB14
  17. *5--懸空
  18. *6--GND <----->GND
  19. *7--RST <----->PF1
  20. *8--VCC <----->VCC
  21. ************************************/
  22. int main(void)
  23. {               
  24.         unsigned char status;
  25.         u8 key=0;
  26.         u8 i=0;
  27.         u8 RETRY=0x10; //最多十次驗證管理員用戶卡
  28.         u8 flag=1;
  29.         Stm32_Clock_Init(9);
  30.         MY_NVIC_PriorityGroupConfig(2);          //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
  31.          delay_init(72);                     //延時函數初始化        
  32.          OUTPUT_Init();                         //輸出模塊初始化
  33.         uart_init(72,115200);
  34.         LCD_Init();
  35.         KEY_Init();
  36.         LED_Init();
  37.         InitRc522();                                //初始化射頻卡模塊
  38.         POINT_COLOR=RED;
  39.         LCD_ShowString(40,80,240,24,24,(u8*)"open the ");
  40.         LCD_ShowString(20,110,240,24,24,(u8*)"serial assistant.");
  41.         LCD_ShowString(0,140,240,16,16,(u8*)"KEY0:administrator operation");
  42.         LCD_ShowString(0,160,240,16,16,(u8*)"KEY1:change password");
  43.         LCD_ShowString(0,180,240,16,16,(u8*)"KEY2:rechargeable card");
  44.         printf("***************************操作說明***************************************\r\n");
  45.         printf("先按key0進入管理員驗證,需先初始化管理員卡,用戶卡,再按key1或key2進行用戶卡操作\r\n");
  46.           printf("**************************************************************************\r\n");
  47.         while(1)
  48.         {
  49.                 key=KEY_Scan(0);
  50.                 if(key==1)
  51.                 {
  52.                         RETRY=0x10;
  53.                         do
  54.                         {
  55.                                 status=store(addrAdmin,KEYB_1B,0);  //管理員認證   
  56.                                 if(status==MI_OK){
  57.                                         break;
  58.                                 }
  59.                                 RETRY--;
  60.                         }while(RETRY!=0);
  61.                         if(RETRY!=0&&IsManager==1){ //驗證管理身份成功
  62.                                 while(flag)
  63.                                 {
  64.                                         key=KEY_Scan(0);
  65.                                         if(key==3)  //金額可在STORE.c文件中修改
  66.                                         {
  67.                                                 status=userRecharge(addrUserDat,USERKEYINITB,Recharge,0);  //金額
  68.                                                 if(status==MI_OK)
  69.                                                 {
  70.                                                         printf(":%d :%d 現:%d\r\n",prevMoney,Recharge,laterMoney);
  71.                                                 }
  72.                                         }
  73.                                         if(key==2)  //改密
  74.                                         {
  75.                                                 status=changeUserPwd(addrUserDat,addrUserCon,USERKEYINITB,(u8*)"123456",(u8*)"123321",0);
  76.                                                 if(status==MI_OK)
  77.                                                 {
  78.                                                         printf("密碼修改成功\r\n");
  79.                                                 }
  80.                                         }
  81.                                 }
  82.                         }
  83.                         else{
  84.                                 printf("請檢查你放置的管理員卡是否正確\r\n");


  85. ……………………

  86. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
RFID射頻.rar (168.91 KB, 下載次數: 241)

評分

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

查看全部評分

回復

使用道具 舉報

ID:335252 發表于 2018-9-16 20:56 | 顯示全部樓層
點贊!
RFID文檔資料.rar
第二個壓縮文檔,打不開
回復

使用道具 舉報

ID:388341 發表于 2018-10-16 20:34 | 顯示全部樓層
要是SPI接口的吧
回復

使用道具 舉報

ID:407498 發表于 2018-10-25 15:13 | 顯示全部樓層
謝了,很需要這種資料
回復

使用道具 舉報

ID:104982 發表于 2018-11-7 08:41 | 顯示全部樓層
請問管理員卡如何初始化呢?
回復

使用道具 舉報

ID:365360 發表于 2018-12-27 11:02 | 顯示全部樓層
非常需要這個!
回復

使用道具 舉報

ID:67443 發表于 2019-6-16 15:19 | 顯示全部樓層
謝謝分享!
回復

使用道具 舉報

ID:561907 發表于 2019-6-17 17:08 | 顯示全部樓層
收藏了,以備下載學習。
回復

使用道具 舉報

ID:614825 發表于 2019-9-23 10:16 | 顯示全部樓層
積分有點多啊,過幾天下載吧
回復

使用道具 舉報

ID:511461 發表于 2019-10-19 16:49 | 顯示全部樓層
如何進行管理員的初始化
回復

使用道具 舉報

ID:323384 發表于 2019-10-19 19:06 | 顯示全部樓層
謝謝分享,對我非常有用,謝謝您!
回復

使用道具 舉報

ID:718503 發表于 2020-3-29 23:51 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:730070 發表于 2020-6-13 08:23 | 顯示全部樓層
學習了,不知道有沒有protues仿真圖或原理圖
回復

使用道具 舉報

ID:190564 發表于 2021-3-27 09:17 | 顯示全部樓層
是不是沒有初始化數據格式,扣和充函數不能通信
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩成人在线 | www.男人天堂.com | 日韩精品激情 | 成人免费视频网站在线看 | 成人在线观看免费爱爱 | 在线中文av| xxxxx免费视频 | 国产精品区二区三区日本 | 男人av的天堂 | 免费一级片 | 国产日韩精品在线 | 国产乱一区二区三区视频 | 国产精品夜夜夜一区二区三区尤 | 成人av电影天堂 | 狠狠久 | 亚洲精品综合 | 夜久久| 久久这里只有精品首页 | 日韩一区二区免费视频 | 国产区免费视频 | 在线欧美亚洲 | 日韩成人专区 | 91视频精选 | 久久影音先锋 | 一区二区三区在线免费观看 | 91高清视频 | 色吧色综合 | 国产真实精品久久二三区 | 亚洲区视频 | 国产欧美久久精品 | 午夜电影网站 | 欧美日韩综合一区 | 91爱啪啪| 99只有精品 | 国产一区二区三区免费 | 国产黄色麻豆视频 | www国产精品 | 草草精品 | av国产精品| 精精国产xxxx视频在线 | 一区二区亚洲 |