RFID-RC522+STC89C52+IC卡號識別教程 by小伍子 一、將排針焊到板子上,切記要焊好,不要虛焊,如下圖:
二、 識別模塊與單片機之間通過SPI進行通信,硬件引腳與程序中引腳的對應情況如下:
SDA——MF522_NSS
SCK——MF522_SCK
MOSI——MF522_SI
MISO——MF522_SO
RST——MF522_RST
單片機IO口引腳與程序中引腳對應關系可在MAIN.H文件中修改,位置如下:
三、 RC522模塊的電源問題(筆者曾經因為這個問題被困擾了很久)
電壓最大不能超過3.6V,單片機供電為5V,切記不要直接供電,否則會出現不識卡的情況,可以使用“穩壓LM1117-3.3”這個原件,或者這樣:
四、 本人程序中設置RC522與單片機的連接如下:
五、 程序中設置好的串口通信波特率為4800,當尋卡成功后io口ff連著的LED燈或者蜂鳴器發光或者發聲,同時通過串口傳輸4個字節的數據,數據內容如下:
如果不使用十六進制解析的話,得到的可能是亂碼,使用十六進制得到的就是8個字符。
六、本人也是菜鳥,如果有寫的不好的地方,還請諒解!
MFRC522中文手冊目錄:
MFRC522單片機源程序如下(主程序):
- #include<reg52.h>
- #include<main.h>
- #include<mfrc522.h>
- unsigned char UID[5],Temp[4];
- void feeb(){ //尋卡成功響應函數
- ff=0;
- delay_10ms(1);
- ff=1;
- delay_10ms(1);
- }
- void Auto_Reader(void){
- while(1){
- if(PcdRequest(0x52,Temp)==MI_OK){ //尋卡,成功后Temp數組為卡類型
- if(PcdAnticoll(UID)==MI_OK){ //防沖突,UID數組數據為卡序列號
- CALL_isr_UART(); //開串口中斷將UID數組前四個字節上傳到串口調試助手
- feeb(); //調用蜂鳴器提示
- }
- }else ff = 0;//尋卡失敗
- }
- }
- void InitializeSystem(){
- SCON=0X50; //設置為工作方式1
- TMOD=0X21; //設置計數器工作方式2
- PCON=0X80; //波特率加倍
- TH1=0XF3; //計數器初始值設置,注意波特率是4800的
- TL1=0XF3;
- REN = 1;
- ES=1; //打開接收中斷
- EA=1; //打開總中斷
- TR1=1;
- ff = 0;
- PcdReset();
- PcdAntennaOff();
- PcdAntennaOn();
- M500PcdConfigISOType( 'A' );
- }
- void isr_UART(void) interrupt 4 using 1{
- unsigned char i;
- if(TI){
- TI=0;
- for(i=0;i<4;i++){
- SBUF=UID[i];
- while(!TI);
- TI=0;
- }
- REN=1;
- }
- }
- void main( ){
- InitializeSystem( );
- Auto_Reader();
- }
復制代碼
所有資料51hei提供下載:
RC522 STC89C52 串口通信.zip
(9.35 MB, 下載次數: 1122)
2017-8-23 11:12 上傳
點擊文件名下載附件
RC522
|