找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 5192|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

rc522的讀卡程序,主要實(shí)現(xiàn)讀卡功能 串口發(fā)送卡號(hào)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:541219 發(fā)表于 2019-7-19 17:23 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
利用串口發(fā)送卡號(hào)

單片機(jī)源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"                           
  5. #include "lcd.h"
  6. #include "spi2.h"
  7. #include "rc522.h"
  8. #include "usb_lib.h"
  9. #include "hw_config.h"
  10. #include "usb_pwr.h"         



  11. unsigned char SN[4]; //卡號(hào)
  12. extern u8  IDA[10];
  13. extern u8  IDB[10];

  14. int main(void)
  15. {                        
  16.         u8 cmdb[2];
  17.         u8 status;
  18. //         u16 t;
  19. //        u16 len;        
  20. //        u16 times=0;   
  21.         u8 usbstatus=0;        
  22.   Stm32_Clock_Init(9);        //系統(tǒng)時(shí)鐘設(shè)置
  23.         uart_init(72,115200);        //串口初始化為115200
  24.         delay_init(72);                            //延時(shí)初始化
  25.         OUTPUT_Init();                         //輸出模塊初始化
  26.         LED_Init();                                  //初始化與LED連接的硬件接口
  27.          LCD_Init();                                //初始化LCD
  28.         SPI1_Init();
  29.   SPI1_SpeedSet(6); //APB1的256分頻
  30.          POINT_COLOR=RED;                //設(shè)置字體為紅色
  31.         LCD_ShowString(30,50,200,16,16,"WarShip STM32");        
  32.         LCD_ShowString(30,70,200,16,16,"USB Virtual USART TEST");        
  33.         LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
  34.         LCD_ShowString(30,110,200,16,16,"2015/1/28");  
  35.          LCD_ShowString(30,130,200,16,16,"USB Connecting...");//提示USB開始連接
  36.         delay_ms(1800);
  37.         USB_Port_Set(0);         //USB先斷開
  38.         delay_ms(700);
  39.         USB_Port_Set(1);        //USB再次連接
  40.          Set_USBClock();   
  41.          USB_Interrupts_Config();   
  42.          USB_Init();        
  43.         CLR_NFC_RST;
  44.         delay_ms(10);
  45.         SET_NFC_RST;
  46.         delay_ms(1);
  47.         PcdConfig('A');
  48.         delay_ms(1);
  49.         while(1)
  50.         {
  51.                         if(usbstatus!=bDeviceState)//USB連接狀態(tài)發(fā)生了改變.
  52.                         {
  53.                                         usbstatus=bDeviceState;//記錄新的狀態(tài)
  54.                                         if(usbstatus==CONFIGURED)
  55.                                         {
  56.                                                         POINT_COLOR=BLUE;
  57.                                                         LCD_ShowString(30,130,200,16,16,"USB Connected    ");//提示USB連接成功
  58.                                                         LED1=0;//DS1亮
  59.                                         }else
  60.                                         {
  61.                                                         POINT_COLOR=RED;
  62.                                                         LCD_ShowString(30,130,200,16,16,"USB disConnected ");//提示USB斷開
  63.                                                         LED1=1;//DS1滅
  64.                                         }
  65.                         }
  66.                         #if 1
  67.                         
  68.                         PcdConfig('A');
  69.                         delay_ms(1);
  70.                         cmdb[1] = 0x52;
  71.                         delay_ms(1);
  72.                         
  73.                         status = ComReqA(cmdb);
  74.                         if(status == MI_OK)
  75.                         {
  76.                                         LED0 = 0;
  77.                                         usb_printf("ID:%02x %02x %02x %02x\r\n",IDA[0],IDA[1],IDA[2],IDA[3]);//發(fā)送卡號(hào)
  78.                                         //printf("ID:%02x %02x %02x %02x\r\n",IDA[0],IDA[1],IDA[2],IDA[3]);//發(fā)送卡號(hào)
  79.                         }
  80.                         else LED0 = 1;
  81.                         delay_ms(10);
  82.                         
  83.                         #endif
  84.                         #if 1
  85.         
  86.                         PcdConfig('B');
  87.                         delay_ms(1);
  88.                         
  89.                         cmdb[1] = 0x08;
  90.                         status = ComReqB(cmdb);
  91.                         if(status == MI_OK)
  92.                         {
  93.                                         LED1 = 0;
  94.                                         usb_printf("ID:%02x %02x %02x %02x %02x\r\n",IDB[0],IDB[1],IDB[2],IDB[3],IDB[4]);
  95.                                         //printf("ID:%02x %02x %02x %02x %02x\r\n",IDB[0],IDB[1],IDB[2],IDB[3],IDB[4]);//發(fā)送卡號(hào)
  96.                         }      
  97.                         #endif
  98.                         CLR_NFC_RST;
  99.                         delay_ms(250);
  100.                         LED1 = 1;
  101.                         LED0 = 1;
  102.                         
  103.                         #if 0
  104.                         if(USB_USART_RX_STA&0x8000)
  105.                         {                                          
  106.                                         len=USB_USART_RX_STA&0x3FFF;//得到此次接收到的數(shù)據(jù)長度
  107.                                         printf("\r\n您發(fā)送的消息為:%d\r\n\r\n",len);
  108.                                         for(t=0;t<len;t++)
  109.                                         {
  110.                                                         USB_USART_SendData(USB_USART_RX_BUF[t]);//以字節(jié)方式,發(fā)送給USB
  111.                                         }
  112.                                         printf("\r\n\r\n");//插入換行
  113.                                         USB_USART_RX_STA=0;
  114.                         }
  115.                         else
  116.                         {
  117.                                         times++;
  118.                                         if(times%5000==0)
  119.                                         {
  120.                                                         usb_printf("\r\n戰(zhàn)艦STM32開發(fā)板USB虛擬串口實(shí)驗(yàn)\r\n");
  121.                                                         usb_printf("正點(diǎn)原子@ALIENTEK\r\n\r\n");
  122.                                         }
  123.                                         if(times%200==0)usb_printf("請輸入數(shù)據(jù),以回車鍵結(jié)束\r\n");  
  124.                                         if(times%30==0)LED0=!LED0;//閃爍LED,提示系統(tǒng)正在運(yùn)行.
  125.                                         delay_ms(10);   
  126.                         }
  127.                         #endif
  128.                
  129.         }
  130. }
復(fù)制代碼

所有資料51hei提供下載:
RC522_AB.7z (182.62 KB, 下載次數(shù): 68)



評分

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

查看全部評分

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

使用道具 舉報(bào)

沙發(fā)
ID:221340 發(fā)表于 2020-3-9 17:30 | 只看該作者
非常漂亮
回復(fù)

使用道具 舉報(bào)

板凳
ID:930776 發(fā)表于 2021-6-1 16:48 | 只看該作者
非常漂亮
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表