|
這是是基于STM32F103ZET6的MFRC522讀卡實(shí)驗(yàn)
程序正常運(yùn)行時(shí),LED0一閃一閃
讀到卡片時(shí),LED1燈點(diǎn)亮,并串口打印卡片類型和UID
接口定義如下:
SPI2_SCK PB13
SPI2_MISO PB14
SPI2_MOSI PB15
RCC522_NSS(SDA PB0
RCC522_RST(CE) PC4
LED0 PD13
LED1 PG14
stm32單片機(jī)源程序如下:
- #include "main.h"
- u8 Byte_HexDispaly(u8 dat)
- {
- if(dat>=10&&dat<16) dat+=0x07; //A-F +0x37
- dat+=0x30; //0-9 +0x30
- return dat;
- }
- void Uart1_SendByte(u8 ch)
- {
- while((USART1->SR&0X40)==0);//循環(huán)發(fā)送,直到發(fā)送完畢
- USART1->DR = (u8) ch;
- }
- void Uart1_SendHexDisplay(u8 ch)
- {
- Uart1_SendByte(Byte_HexDispaly(ch>>4)); //高半字節(jié)
- Uart1_SendByte(Byte_HexDispaly(ch&0x0f)); //低半字節(jié)
- }
- void Uart1_SendString(char *s)
- {
- while (*s) //
- {
- Uart1_SendByte(*s++);
- }
- }
- //==============================================================================
- //讀取卡的類型
- //讀取卡的ID號
- //==============================================================================
- void ReaderCard(void)
- {
- if(PcdRequest(PICC_REQALL,Temp)==MI_OK) //選卡
- {
- if(Temp[0]==0x04&&Temp[1]==0x00)
- printf("MFOne-S50");
- else if(Temp[0]==0x02&&Temp[1]==0x00)
- printf("MFOne-S70");
- else if(Temp[0]==0x44&&Temp[1]==0x00)
- printf("MF-UltraLight");
- else if(Temp[0]==0x08&&Temp[1]==0x00)
- printf("MF-Pro");
- else if(Temp[0]==0x44&&Temp[1]==0x03)
- printf("MF Desire");
- else
- printf("Unknown");
- if(PcdAnticoll(UID)==MI_OK) //防沖撞
- {
- printf("Card Id is:");
- Uart1_SendHexDisplay(UID[0]);
- Uart1_SendHexDisplay(UID[1]);
- Uart1_SendHexDisplay(UID[2]);
- Uart1_SendHexDisplay(UID[3]);
- printf("\r\n"); //發(fā)送換行指令
-
- LED0=1;
- delay_ms(500);
- LED0=0;
- delay_ms(500);
- }
- else LED0=0; ;
- }
- }
- int main(void)
- {
- delay_init(); //延時(shí)函數(shù)初始化
- NVIC_Configuration(); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級
- uart_init(9600); //串口初始化為9600
- SPI2_Init();
- LED_Init(); //LED端口初始化
- KEY_Init();
-
- delay_ms(50);
- LED0=0;
- PcdReset();//復(fù)位RC522讀卡器
- delay_ms(10);
-
- PcdReset();//復(fù)位RC522讀卡器
- delay_ms(10);
-
- PcdAntennaOff();
- delay_ms(10);
- PcdAntennaOn();//開啟天線發(fā)射
- printf("RFID-MFRC522 TEST\r\nFindCard Starting ...\r\n");
- while(1)
- {
- ReaderCard();
- delay_ms(200);
- LED1=!LED1;
-
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
65520772STM32-RC522.rar
(616.07 KB, 下載次數(shù): 125)
2017-11-6 12:30 上傳
點(diǎn)擊文件名下載附件
RC522模塊 下載積分: 黑幣 -5
|
|