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

標題: msp430f5529 RC522射頻卡程序 [打印本頁]

作者: wubaqian    時間: 2019-9-3 11:10
標題: msp430f5529 RC522射頻卡程序
/*
波特率設置為9600
特別說明:
單片機與PC的通訊:
    PC與單片機的連接:需要一個usb轉ttl調試器B,B的RXD接P4.5口,TXD接4.4口,VCC接5v電壓,GND接地即可。
    PC端使用的串口調試助手是X—COM,將調試器B連接好單片機。單片機的數據線接到電腦上,編譯好程序后,點擊CCS上的開始調試。
然后將調試器插入電腦,在X-COM中 設置波特率為9600,停止位1,數據位8,串口選擇調試器B的usb接口!(這步很重要)打開串口,即可開始串口調試。
此刻能實現的功能:
1.PC發送除A, F外的字符,單片機發送給電腦菜單信息。
單片機與RC522的通訊:
    SDA p2.2
    SCK P2.7
    MOSI P3.3
    MISO p3.4
    IRQ 不接
    RST p2.3
連接好上述引線后,能實現以下功能:
1.PC發送字符A,讀出卡的型號和UID信息。
2.PC發送字符F,單次尋卡模式,接觸一次顯示一次卡的型號信息。
*/

#include "msp430.h"
#include "PIN_DEF.H"
#include "RC522.H"
#include "UART_Func.h"//串口已修改
#include "ctype.h"

unsigned char UID[5],Temp[4]; /*UID里面有5個元素,Temp有4個元素*/
unsigned char RF_Buffer[18];
unsigned char Password_Buffer[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}   ; // Mifare One 缺省密碼

char          MBRX[30]                                             ;
char          MBKeyTP[30]                                          ;
char          Event                                                ;
unsigned char DISP_MODE,i                                          ; // 編輯控件顯示模式
unsigned char des_on       = 0                                     ; // DES加密標志
void Key_TP_Task(void)                                             ;
void function1(void)
{
    ;
}


//***************************************************************************//
//                                                                           //
//                 初始化主時鐘: MCLK = XT1×(FLL_FACTOR+1)                  //
//                  我自己打的時鐘,能成功。
//                                                                           //
//***************************************************************************//
void Init_CLK(void)
{
  P5SEL |= BIT2 + BIT3;//P5.2和P5.3選擇XT2晶振功能
  UCSCTL6 &= ~XT2OFF;//使能XT2
  UCSCTL3 |= SELREF_2;//FLL模塊的參考時鐘源選擇REFO
  UCSCTL4 |= SELA_2;
  do
  {
      UCSCTL7 &= ~(XT2OFFG+XT1LFOFFG+DCOFFG);//清除XT2,XT1,DCO故障失效標志位
      SFRIFG1 &= ~OFIFG;//清除晶振故障失效中斷標志位
  }while(SFRIFG1&OFIFG);//測試晶振故障失效中斷標志位
  UCSCTL6 &= ~XT2DRIVE0;//減少XT2驅動能力,降低功耗
  UCSCTL4 |= SELS_5 + SELM_5;//SMCLK=MCLK=XT2
}

void Delay(unsigned int time)
{
    volatile int i,k;
    for(i=0;i<255;i++)
        for(k=0;k<time;k++)
        _NOP();
}

void Auto_Reader(void)
{
    while(1)
    {
        if(PcdRequest(0x52,Temp)==MI_OK)
        {
            if(Temp[0]==0x04&&Temp[1]==0x00)
              PutString("MFOne-S50");
            else if(Temp[0]==0x02&&Temp[1]==0x00)
              PutString("MFOne-S70");
            else if(Temp[0]==0x44&&Temp[1]==0x00)
              PutString("MF-UltraLight");
            else if(Temp[0]==0x08&&Temp[1]==0x00)
              PutString("MF-Pro");
            else if(Temp[0]==0x44&&Temp[1]==0x03)
              PutString("MF Desire");
            else
              PutString("Unknown");
            if(PcdAnticoll(UID)==MI_OK)
            {
                PutString0("Card Id is:");
                tochar(UID[0]);
                tochar(UID[1]);
                tochar(UID[2]);
                tochar(UID[3]);
                while (!(UCA1IFG & UCTXIFG));//等待上一個字符發送完成
                UCA1TXBUF = '\n';                              //發送換行指令
                RED_LED_ON;
                Delay(200);
                RED_LED_OFF;
                Delay(200);//綠燈交替亮滅
            }
            function1();//可以在這里編寫一下如何區別使用UID信息的函數。
         }
    else GRE_LED_OFF;
        Delay(100);//延時一端時間
    }
}

void Find_Card(void)
{
    while(1)
    {
        if(PcdRequest(0x52,Temp)==MI_OK)
        {
            RED_LED_OFF;//紅燈熄滅
          if(Temp[0]==0x04&&Temp[1]==0x00)
              PutString("MFOne-S50");
            else if(Temp[0]==0x02&&Temp[1]==0x00)
              PutString("MFOne-S70");
            else if(Temp[0]==0x44&&Temp[1]==0x00)
              PutString("MF-UltraLight");
            else if(Temp[0]==0x08&&Temp[1]==0x00)
              PutString("MF-Pro");
            else if(Temp[0]==0x44&&Temp[1]==0x03)
              PutString("MF Desire");
            else
              PutString("Unknown");
            PutString("SUCCESS!");
            break;//如果滿足條件,退出循環
        }
        else PutString("Faile!");
        GRE_LED_OFF;//綠燈熄滅
        Delay(1000);//延時一端時間
    }
}
/*************************
端口初始化
************************/
void Init_Port(void)
{
    P4DIR  |=  BIT7;//P4.7輸出,控制led
    P3DIR  |=  BIT3;
    P3DIR  &= ~BIT4;//P3.4設為輸入
    P2DIR  |=  BIT2+BIT3+BIT7;
    P1DIR  |=  BIT0;//控制led
}
/*******************************************
函數名稱:HandleConfigMenu
功    能:處理PC的配置函數
參    數:inputvalue--接收到的來自PC機的字符
返回值  :無
********************************************/
void HandleConfigMenu(uchar inputvalue)
{
    switch(toupper(inputvalue))
    {
    case 'A':
              Auto_Reader();
              break;
    case 'F':
              Find_Card();
              break;
    default:
              DisplayConfigMenu();  
    }
}


void main( void )
{
  WDTCTL  = WDTPW + WDTHOLD; // 關看門狗
  Init_Port();//這里是引腳的配置函數,想要知道怎么連,就看這里
  InitUART();//初始化串口通信
  _EINT();//使能全局中斷
  PcdReset();//復位RC522
  PcdAntennaOn();//開啟天線發射
  DisplayConfigMenu();//向PC發送菜單信息
  while(1)
  {
        Send1Char('>');
        Send1Char('\n');
        i=Get1Char();//i暫存電腦發來的數據,已驗證
        HandleConfigMenu(i);//本函數用于數據分析
  }
}

在此只顯示部分內容,更多內容請下載后查看

proj 5529 RC522.zip

180.88 KB, 下載次數: 16, 下載積分: 黑幣 -5






歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 青草av在线 | av中文网 | 国产盗摄一区二区三区 | 国产麻豆一区二区 | 又黄又爽又刺激的视频 | 亚洲自拍网站 | 成人免费小视频 | 丰满岳乱妇一区二区 | 99国产精品99久久久久久粉嫩 | 视频一区中文字幕 | 日韩免费一区二区三区 | 哦┅┅快┅┅用力啊┅aps | 国产伦精品一区二区三区视频网站 | 在线免费黄色网址 | 亚洲va视频 | 亚洲高清在线观看 | 91久久综合亚洲鲁鲁五月天 | 欧美精品在线免费观看 | 日本免费一级 | 国产精品美女久久久久av爽 | 91亚洲国产成人久久精品网站 | 538精品视频 | 在线观看黄色小视频 | 天天爽 | 一级毛片a | 日韩黄网| 黄色日皮视频 | 亚洲国产成人av | 国产精品亚洲精品 | 黄色大片av | 久久久国产精品人人片 | 亚洲黄色在线视频 | 日韩黄网 | 一区二区三区精品 | 国产www在线观看 | 色中色av | 一区二区免费看 | 98在线视频 | 91免费视频 | 成人福利视频在线观看 | 一区二区三区在线免费观看 |