freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機(jī)的rfid讀寫器設(shè)計(jì)_畢業(yè)論文-資料下載頁

2025-08-19 18:00本頁面

【導(dǎo)讀】,是一種利用射頻信號(hào)自動(dòng)識(shí)別目標(biāo)對(duì)象并獲取相關(guān)信息的技術(shù)。技術(shù)的進(jìn)步,RFID應(yīng)用領(lǐng)域日益擴(kuò)大,現(xiàn)已涉及到人們?nèi)粘I畹母鱾€(gè)方面,并將成為未來信息社會(huì)建設(shè)的一項(xiàng)基礎(chǔ)技術(shù)。統(tǒng)具有十分重要的理論意義和實(shí)際意義。中的許多關(guān)鍵技術(shù),并提出了射頻識(shí)別讀卡器的設(shè)計(jì)方案。本文首先分析了射頻識(shí)別技術(shù)的基本原理、研究方向和應(yīng)用情況。設(shè)計(jì)采用MFRC522射頻讀寫模塊在。STC11F32單片機(jī)的控制下實(shí)現(xiàn)對(duì)Mifare卡的讀寫訪問操作。軟件設(shè)計(jì)包括單片機(jī)處理程序,射頻基站芯片RC522的基本操作、Mifare卡操作程序設(shè)計(jì)、聲音提示及顯示部分程序等。論文中系統(tǒng)地討論了軟

  

【正文】 //////////////////////////////////////// //功 能:選定卡片 //參數(shù)說明 : pSnr[IN]:卡片序列號(hào), 4字節(jié) //返 回 : 成功返回 MI_OK ///////////////////////////////////////////////////////////////////// char PcdSelect(unsigned char *pSnr) { char data status。 unsigned char data i。 unsigned int data unLen。 unsigned char data ucComMF522Buf[MAXRLEN]。 ucComMF522Buf[0] = PICC_ANTICOLL1。 ucComMF522Buf[1] = 0x70。 ucComMF522Buf[6] = 0。 for (i=0。 i4。 i++) { ucComMF522Buf[i+2] = *(pSnr+i)。 ucComMF522Buf[6] ^= *(pSnr+i)。 } CalulateCRC(ucComMF522Buf,7,amp。ucComMF522Buf[7])。 ClearBitMask(Status2Reg,0x08)。 status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,9,ucComMF522Buf,amp。unLen)。 if ((status == MI_OK) amp。amp。 (unLen == 0x18)) { status = MI_OK。 } else { status = MI_ERR。 } return status。 } ///////////////////////////////////////////////////////////////////// //功 能:驗(yàn)證卡片密碼 //參數(shù)說明 : auth_mode[IN]: 密碼驗(yàn)證模式 // 0x60 = 驗(yàn)證 A密鑰 // 0x61 = 驗(yàn)證 B密鑰 // addr[IN]:塊地址 // pKey[IN]:密碼 // pSnr[IN]:卡片序列號(hào), 4字節(jié) //返 回 : 成功返回 MI_OK ///////////////////////////////////////////////////////////////////// char PcdAuthState(unsigned char data auth_mode,unsigned char data addr,unsigned char *pKey,unsigned char *pSnr) { char data status。 unsigned int data unLen。 unsigned char data i,ucComMF522Buf[MAXRLEN]。 ucComMF522Buf[0] = auth_mode。 ucComMF522Buf[1] = addr。 for (i=0。 i6。 i++) { ucComMF522Buf[i+2] = *(pKey+i)。 } for (i=0。 i6。 i++) { ucComMF522Buf[i+8] = *(pSnr+i)。 } // memcpy(amp。ucComMF522Buf[2], pKey, 6)。 // memcpy(amp。ucComMF522Buf[8], pSnr, 4)。 status = PcdComMF522(PCD_AUTHENT,ucComMF522Buf,12,ucComMF522Buf,amp。unLen)。 if ((status != MI_OK) || (!(ReadRawRC(Status2Reg) amp。 0x08))) { status = MI_ERR。 } return status。 } ///////////////////////////////////////////////////////////////////// //功 能:讀取 M1卡一塊數(shù)據(jù) //參數(shù)說明 : addr[IN]:塊地址 // pData[OUT]:讀出的數(shù)據(jù), 16字節(jié) //返 回 : 成功返回 MI_OK ///////////////////////////////////////////////////////////////////// char PcdRead(unsigned char data addr,unsigned char *pData) { char data status。 unsigned int data unLen。 unsigned char data i,ucComMF522Buf[MAXRLEN]。 ucComMF522Buf[0] = PICC_READ。 ucComMF522Buf[1] = addr。 CalulateCRC(ucComMF522Buf,2,amp。ucComMF522Buf[2])。 status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,amp。unLen)。 if ((status == MI_OK) amp。amp。 (unLen == 0x90)) // { memcpy(pData, ucComMF522Buf, 16)。 } { for (i=0。 i16。 i++) { *(pData+i) = ucComMF522Buf[i]。 } } else { status = MI_ERR。 } return status。 } ///////////////////////////////////////////////////////////////////// //功 能:寫數(shù)據(jù)到 M1卡一塊 //參數(shù)說明 : addr[IN]:塊地址 // pData[IN]:寫入的數(shù)據(jù), 16字節(jié) //返 回 : 成功返回 MI_OK ///////////////////////////////////////////////////////////////////// char PcdWrite(unsigned char data addr,unsigned char *pData) { char data status。 unsigned int data unLen。 unsigned char data i,ucComMF522Buf[MAXRLEN]。 ucComMF522Buf[0] = PICC_WRITE。 ucComMF522Buf[1] = addr。 CalulateCRC(ucComMF522Buf,2,amp。ucComMF522Buf[2])。 status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,amp。unLen)。 if ((status != MI_OK) || (unLen != 4) || ((ucComMF522Buf[0] amp。 0x0F) != 0x0A)) { status = MI_ERR。 } if (status == MI_OK) { //memcpy(ucComMF522Buf, pData, 16)。 for (i=0。 i16。 i++) { ucComMF522Buf[i] = *(pData+i)。 } CalulateCRC(ucComMF522Buf,16,amp。ucComMF522Buf[16])。 status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,18,ucComMF522Buf,amp。unLen)。 if ((status != MI_OK) || (unLen != 4) || ((ucComMF522Buf[0] amp。 0x0F) != 0x0A)) { status = MI_ERR。 } } return status。 } ///////////////////////////////////////////////////////////////////// //功 能:命令卡片進(jìn)入休眠狀態(tài) //返 回 : 成功返回 MI_OK ///////////////////////////////////////////////////////////////////// char PcdHalt(void) { char data status。 unsigned int data unLen。 unsigned char data ucComMF522Buf[MAXRLEN]。 ucComMF522Buf[0] = PICC_HALT。 ucComMF522Buf[1] = 0。 CalulateCRC(ucComMF522Buf,2,amp。ucComMF522Buf[2])。 status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,amp。unLen)。 return MI_OK。 } ///////////////////////////////////////////////////////////////////// //用 MF522計(jì)算 CRC16函數(shù) ///////////////////////////////////////////////////////////////////// void CalulateCRC(unsigned char *pIndata,unsigned char data len,unsigned char *pOutData) { unsigned char data i,n。 ClearBitMask(DivIrqReg,0x04)。 WriteRawRC(CommandReg,PCD_IDLE)。 SetBitMask(FIFOLevelReg,0x80)。 for (i=0。 ilen。 i++) { WriteRawRC(FIFODataReg, *(pIndata+i))。 } WriteRawRC(CommandReg, PCD_CALCCRC)。 i = 0xFF。 do { n = ReadRawRC(DivIrqReg)。 i。 } while ((i!=0) amp。amp。 !(namp。0x04))。 pOutData[0] = ReadRawRC(CRCResultRegL)。 pOutData[1] = ReadRawRC(CRCResultRegM)。 } ///////////////////////////////////////////////////////////////////// //功 能:復(fù)位 RC522 //返 回 : 成功返回 MI_OK ///////////////////////////////////////////////////////////////////// char PcdReset(void) { //PORTD|=(1RC522RST)。 SET_RC522RST。 delay_ns(10)。 //PORTDamp。=~(1RC522RST)。 CLR_RC522RST。 delay_ns(10
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1