智能停車場設(shè)計(jì)_第1頁
智能停車場設(shè)計(jì)_第2頁
智能停車場設(shè)計(jì)_第3頁
智能停車場設(shè)計(jì)_第4頁
智能停車場設(shè)計(jì)_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、齊齊哈爾大學(xué) 創(chuàng)新杯(論文) 題 目: 智能停車場系統(tǒng)的設(shè)計(jì) 作者姓名: 敖 健 學(xué) 號: 2012131071 單 位: 通信與電子工程學(xué)院 指導(dǎo)教師: 張 勁 松 2015年5月 20日1目 錄1. 引 言12. 相關(guān)背景121 停車場管理系統(tǒng)概述122 研究意義以及前景23. 方案論證231 總體論證2311 設(shè)計(jì)要求2312實(shí)現(xiàn)方案232 方案分析2321檢測探頭的選用2322從機(jī)微處理器的選用2323從機(jī)顯示模塊選擇34. 系統(tǒng)設(shè)計(jì)341 硬件設(shè)計(jì)3411系統(tǒng)模型3412硬件簡介35. 結(jié) 論5附 錄7摘 要本文將介紹基于51單片機(jī)的智能停車場系統(tǒng)設(shè)計(jì),重點(diǎn)是方案論證、系統(tǒng)設(shè)計(jì)及優(yōu)化

2、幾個(gè)方面。整個(gè)智能停車場系統(tǒng),分為四大模塊:IC讀卡器控制模塊、12864液晶顯示模塊、步進(jìn)電機(jī)控制模塊、紅外線控制模塊。12864液晶顯示模塊以微控制器51單片機(jī)為核心,采集各停車位車輛的信息指導(dǎo)車主停車;IC讀卡器控制模塊通過讀取IC卡信息實(shí)現(xiàn)身份驗(yàn)證、門控等功能;關(guān)鍵詞:智能停車場系統(tǒng);IC讀卡;51單片機(jī);12864液晶顯示屏25智能停車場管理系統(tǒng)1. 引 言隨著科學(xué)技術(shù)的不斷發(fā)展和人們生活水平的提高,汽車數(shù)量迅速增加,車位日益緊張,給人們?nèi)粘M\噹砹酥T多麻煩,迫切需要高級停車場和智能的停車管理系統(tǒng)。 然而目前大部分停車場不僅規(guī)模小且相對分散,停車管理存在以下弊端:1、人們不能及時(shí)掌

3、握各停車場的信息2、在進(jìn)入停車場時(shí)更不能及時(shí)找到空車位3、服務(wù)質(zhì)量不高,車輛進(jìn)出混亂該智能停車場管理系統(tǒng)將會克服上述不足,設(shè)計(jì)更智能化、人性化。不僅給車主停車和管理停車場帶來了方便,更能充分利用車位資源,減少了擁堵,改善了交通秩序。2. 相關(guān)背景隨著中國現(xiàn)代化進(jìn)程的加快,各停車場車流量日漸增多,單單依靠人工管理,其日常保安與管理工作也日漸繁重。現(xiàn)代企業(yè)和政府管理部門為樹立良好的形象,對所轄小區(qū)進(jìn)行規(guī)范的現(xiàn)代化管理,已廣泛地采用智能停車場,對出入車輛的進(jìn)行高效管制。21 停車場管理系統(tǒng)概述智能停車場管理系統(tǒng)是一種高效快捷、公正準(zhǔn)確、科學(xué)經(jīng)濟(jì)的停車場管理手段,是停車場對于車輛實(shí)行動(dòng)態(tài)和靜態(tài)管理的綜

4、合。從用戶的角度看,其服務(wù)高效;從管理者的角度看,其易于操作維護(hù)、動(dòng)化程度高、大大減輕管理者的勞動(dòng)強(qiáng)度。采用先進(jìn)的單片機(jī)控制,從高標(biāo)準(zhǔn)、高可靠、高安全的設(shè)備,利用了高度自動(dòng)化的機(jī)電和微機(jī)設(shè)備對停車場進(jìn)行安全、有效的管理,包括、保安、監(jiān)控、防盜等。22 研究意義以及前景隨著科技的進(jìn)步和人類文明的發(fā)展,大型停車場在住宅小區(qū)、大廈、機(jī)關(guān)單位的應(yīng)用越來越普遍。而人們對停車場管理的要求也越來越高,智能化程度也越來越高,使用更加方便快捷,也給人類的生活帶來了方便和快樂。不僅提高了現(xiàn)代人類的工作效率,也大大的節(jié)約了人力物力,價(jià)低了公司的運(yùn)營成本,并使得整個(gè)停車場安全可靠,因此該智能停車場管理系統(tǒng)將會得到極大

5、的推廣。3. 方案論證31 總體論證311 設(shè)計(jì)要求設(shè)計(jì)一款具備停車指導(dǎo),安全監(jiān)控的智能停車場管理系統(tǒng)。312實(shí)現(xiàn)方案為了實(shí)現(xiàn)以上功能從大的方面有以下三個(gè)方案可供選擇:方案一:采用高端CPU利用Internet網(wǎng)絡(luò)進(jìn)行信息傳輸和遠(yuǎn)程監(jiān)控。方案二:采用廉價(jià)51單片機(jī)對各個(gè)車位進(jìn)行信息采集同時(shí)利用電力線載波通信技術(shù)或無線網(wǎng)絡(luò)技術(shù)進(jìn)行信息傳輸和控制,并將信息提交的主控單片機(jī)進(jìn)行。方案三:采用廉價(jià) 51單片機(jī)對各個(gè)車位進(jìn)行信息采集并提供給將尋找車位的車主。比較:方案一該設(shè)計(jì)智能化程度高、控制相當(dāng)準(zhǔn)確,便于與網(wǎng)絡(luò)連接;但是施工工程量很大,費(fèi)用高;方案二避免了布線安裝施工的困難,但成本高,網(wǎng)絡(luò)性能一般;方

6、案三不僅技術(shù)成熟、成本低廉而且通信性能高布線簡單,易于實(shí)現(xiàn)。通過以上比較決定采用方案三。32 方案分析321檢測探頭的選用紅外檢測原理實(shí)現(xiàn)簡單、成本低廉,利用紅外線控制模塊檢測車輛不僅抗干擾性強(qiáng)、檢測距離遠(yuǎn),提高智能化程度,故在停車位選用紅外控制模塊檢測,在停車場門口選用IC讀卡控制模塊控制車輛出入。322從機(jī)微處理器的選用單片機(jī)選用深圳宏晶的STC89C52。此單片機(jī)與AT89C52完全兼容,而且STC89C52功能更強(qiáng)、更穩(wěn)定,特別的一點(diǎn)是STC系列單片機(jī)支持串口在線編程功能,且價(jià)格與AT89C52相當(dāng),故選用STC89C52為控制核心。323從機(jī)顯示模塊選擇 選用12864液晶顯示器,功

7、耗低,顯示功能強(qiáng)大。4. 系統(tǒng)設(shè)計(jì)41 硬件設(shè)計(jì)411系統(tǒng)模型圖1系統(tǒng)整體模型圖使相對分散的停車場形成一個(gè)統(tǒng)一的整體,便于調(diào)度和協(xié)調(diào)。停車場內(nèi)部自成獨(dú)立的系統(tǒng)適用于小型停車場和獨(dú)立停車場,擴(kuò)大了適用范圍,此外本系統(tǒng)具有良好的擴(kuò)展性,便于和監(jiān)控系統(tǒng)的對接,使其更具有推廣應(yīng)用價(jià)值。412硬件簡介(1)單片機(jī)STC89C52STC89C52單片機(jī)是深圳宏晶科技代理美國一家高科技公司的產(chǎn)品,它具有無法解密、超低功耗、高速高可靠、抗靜電抗干擾的眾多優(yōu)點(diǎn)。而且STC89C52向下完全兼容ATMEL公司的AT89C52,其中STC89C52支持串口在線編程的功能給實(shí)驗(yàn)者帶來了很大的方便。內(nèi)置8K的FLASH

8、程序存儲器更是能夠反復(fù)擦鞋10000次,使實(shí)驗(yàn)者不必?fù)?dān)心FLASH存儲器的老化。下面是STC89C52的引腳定義: (2)IC讀卡器模塊RFID系列的rc522射頻讀卡器,是采用先進(jìn)的射頻接收線路設(shè)計(jì)及嵌入式微控制器,結(jié)合高效解碼算法,完成對64bits Read-Only EM4100兼容式ID卡的接收,具有接收靈敏度高,工作電流小,單直流電源供電,低價(jià)位高性能等特點(diǎn),適用于門禁,巡更等各種射頻應(yīng)用領(lǐng)域。有效距離10cm以上,在有效距離內(nèi)數(shù)據(jù)接收時(shí)間小于100ms,單直流電源+5V供電,工作電流小于70mA。接口描述: IC讀卡器接口定義5. 結(jié) 論本設(shè)計(jì)利用微型計(jì)算機(jī)作上位機(jī)提供友好的人機(jī)

9、界面、語音服務(wù)、網(wǎng)絡(luò)服務(wù),對停車場的管理和監(jiān)控更加人性化、智能化、合理化,真正實(shí)現(xiàn)了對停車場的綜合控制管理。而且本系統(tǒng)利用性能可靠、價(jià)格廉價(jià)的51單片機(jī)作從機(jī)微處理器降低了系統(tǒng)成本,便于普通小區(qū)普及應(yīng)用。系統(tǒng)參數(shù):工作電壓:220V,50Hz磁卡有效距離:10cm紅外檢測探頭: 3cm致 謝本設(shè)計(jì)的順利完成得到了院系領(lǐng)導(dǎo)老師的大力支持和幫助,尤其是我的張勁松老師在百忙之中抽出寶貴的休息時(shí)間,仔細(xì)耐心地指導(dǎo)我、鼓勵(lì)我、讓我有了解決問題的信心,使設(shè)計(jì)得以順利的完成。本設(shè)計(jì)的過程中曾多次與同學(xué)探討問題,通過探討使自己的想法更完善。另外,我院學(xué)生創(chuàng)新實(shí)驗(yàn)室的全體師生,也為本設(shè)計(jì)提供了很大的幫助,在模型

10、的制作中我的女朋友也參與其中幫助我完成了模型制作。在此,對他們表示由衷的感謝!電子信息技術(shù)日新月異地飛速發(fā)展,人們總是處在不斷學(xué)習(xí)階段,再加上我水平有限,所以本設(shè)計(jì)肯定存在許多不盡如人意的地方,歡迎廣大老師和同學(xué)批評指正。最后,我在這里要感謝系里的所有老師,是他們精心的栽培與悉心指導(dǎo)為我以后的學(xué)習(xí)、工作打下了堅(jiān)實(shí)的基礎(chǔ)。謝謝通信與電子信息工程學(xué)院所有老師。附 錄實(shí)物圖: 智能停車場管理系統(tǒng)程序:12864液晶顯示程序:#ifndef _LCD12864_H#define _LCD12864_H/-包含頭文件-/#include"LPCREG.H"/-重定義關(guān)鍵詞-/#ifn

11、def uchar#define uchar unsigned char#endif#ifndef uint #define uint unsigned int#endif/-如果使用畫圖模式定義這個(gè)-/#define LCD12864_PICTURE/-定義使用的IO口-/#define LCD12864_DATAPORT P1 /數(shù)據(jù)IO口sbit LCD12864_RS = P07; /(數(shù)據(jù)命令)寄存器選擇輸入 sbit LCD12864_RW = P06; /液晶讀/寫控制sbit LCD12864_EN = P05; /液晶使能控制sbit LCD12864_PSB = P35;

12、/串/并方式控制sbit LCD12864_RST = P34; /復(fù)位端/-聲明全局函數(shù)-/void LCD12864_Delay1ms(uint c);uchar LCD12864_Busy(void);void LCD12864_WriteCmd(uchar cmd);void LCD12864_WriteData(uchar dat);void LCD12864_Init();void LCD12864_ClearScreen(void);void LCD12864_SetWindow(uchar x, uchar y);#endif#include"lcd12864.h&q

13、uot;/* 函 數(shù) 名 : LCD12864_Delay1ms* 函數(shù)功能 : 延時(shí)1MS* 輸 入 : c* 輸 出 : 無*/void LCD12864_Delay1ms(uint c) uchar a,b;for(; c>0; c-) for(b=199; b>0; b-) for(a=1; a>0; a-);/* 函 數(shù) 名 : LCD12864_Busy* 函數(shù)功能 : 檢測LCD是否忙* 輸 入 : 無* 輸 出 : 1或0(1表示不忙,0表示忙)*/uchar LCD12864_Busy(void)uchar i = 0;LCD12864_RS = 0; /選

14、擇命令LCD12864_RW = 1;/選擇讀取LCD12864_EN = 1;LCD12864_Delay1ms(1);while(LCD12864_DATAPORT & 0x80) = 0x80)/檢測讀取到的值i+;if(i > 100)LCD12864_EN = 0;return 0; /超過等待時(shí)間返回0表示失敗LCD12864_EN = 0;return 1;/* 函 數(shù) 名 : LCD12864_WriteCmd* 函數(shù)功能 : 寫命令* 輸 入 : cmd* 輸 出 : 無*/void LCD12864_WriteCmd(uchar cmd)uchar i;i =

15、 0;while( LCD12864_Busy() = 0)LCD12864_Delay1ms(1);i+;if( i>100)return; /超過等待退出LCD12864_RS = 0; /選擇命令LCD12864_RW = 0; /選擇寫入LCD12864_EN = 0; /初始化使能端LCD12864_DATAPORT = cmd; /放置數(shù)據(jù)LCD12864_EN = 1; /寫時(shí)序LCD12864_Delay1ms(5);LCD12864_EN = 0; /* 函 數(shù) 名 : LCD12864_WriteData* 函數(shù)功能 : 寫數(shù)據(jù)* 輸 入 : dat* 輸 出 : 無

16、*/void LCD12864_WriteData(uchar dat)uchar i;i = 0;while( LCD12864_Busy() = 0)LCD12864_Delay1ms(1);i+;if( i>100)return; /超過等待退出LCD12864_RS = 1; /選擇數(shù)據(jù)LCD12864_RW = 0; /選擇寫入LCD12864_EN = 0; /初始化使能端LCD12864_DATAPORT = dat; /放置數(shù)據(jù)LCD12864_EN = 1; /寫時(shí)序LCD12864_Delay1ms(5);LCD12864_EN = 0; /* 函 數(shù) 名 : LCD

17、12864_ReadData* 函數(shù)功能 : 讀取數(shù)據(jù)* 輸 入 : 無* 輸 出 : 讀取到的8位數(shù)據(jù)*/#ifdef LCD12864_PICTUREuchar LCD12864_ReadData(void)uchar i, readValue;i = 0;while( LCD12864_Busy() = 0)LCD12864_Delay1ms(1);i+;if( i>100)return 0; /超過等待退出LCD12864_RS = 1; /選擇命令LCD12864_RW = 1;LCD12864_EN = 0;LCD12864_Delay1ms(1); /等待LCD12864_

18、EN = 1;LCD12864_Delay1ms(1);readValue = LCD12864_DATAPORT;LCD12864_EN = 0;return readValue;#endif/* 函 數(shù) 名 : LCD12864_Init* 函數(shù)功能 : 初始化LCD12864* 輸 入 : 無* 輸 出 : 無*/void LCD12864_Init()LCD12864_PSB = 1; /選擇并行輸入LCD12864_RST = 1; /復(fù)位LCD12864_WriteCmd(0x30); /選擇基本指令操作LCD12864_WriteCmd(0x0c); /顯示開,關(guān)光標(biāo)LCD128

19、64_WriteCmd(0x01); /清除LCD12864的顯示內(nèi)容/* 函 數(shù) 名 : LCD12864_SetWindow* 函數(shù)功能 : 設(shè)置在基本指令模式下設(shè)置顯示坐標(biāo)。注意:x是設(shè)置行,y是設(shè)置列* 輸 入 : x, y* 輸 出 : 無*/void LCD12864_SetWindow(uchar x, uchar y)uchar pos;if(x = 0) / 第一行的地址是80Hx = 0x80;else if(x = 1) /第二行的地址是90Hx = 0x90;else if(x = 2) /第三行的地址是88Hx = 0x88;else if(x = 3)x = 0x9

20、8;pos = x + y;LCD12864_WriteCmd(pos); RC522射頻讀卡器程序:#include "intrins.h"#include "LPCREG.H"#include "mfrc522.h"#define MAXRLEN 18sbit MF522_NSS = P00;/SDAsbit MF522_SCK = P01;sbit MF522_SI = P02; /MOSIsbit MF522_SO = P03; /MISOsbit MF522_RST = P04;/功 能:尋卡/說明參數(shù):req_codeIN

21、:尋卡方式/ 0x52 = 尋感應(yīng)區(qū)內(nèi)所有符合14443A標(biāo)準(zhǔn)的卡/ 0x26 = 尋未進(jìn)入休眠狀態(tài)的卡/ pTagTypeOUT:卡片類型的代碼/ 0x4400 = Mifare_UltraLight/ 0x0400 = Mifare_One(S50)/ 0x0200 = Mifare_One(S70)/ 0x0800 = Mifare_Pro(X)/ 0x4403 = Mifare_DESFire/返 回: 成功返回MI_OK/ PICC_REQIDLchar PcdRequest(unsigned char req_code,unsigned char *pTagType) char s

22、tatus; /idata unsigned int unLen; /idata unsigned char ucComMF522BufMAXRLEN; /idata ClearBitMask(Status2Reg,0x08); WriteRawRC(BitFramingReg,0x07); SetBitMask(TxControlReg,0x03); ucComMF522Buf0 = req_code; status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,1,ucComMF522Buf,&unLen); if (status = MI_

23、OK) && (unLen = 0x10) *pTagType = ucComMF522Buf0; *(pTagType+1) = ucComMF522Buf1; else status = MI_ERR; return status;/功 能:防沖撞/參數(shù)說明:pSnrOUT:卡片序列號,4字節(jié)/返 回:成功返回MI_OK/ char PcdAnticoll(unsigned char *pSnr) char status; /idata unsigned char i,snr_check=0; unsigned int unLen; unsigned char ucComM

24、F522BufMAXRLEN; ClearBitMask(Status2Reg,0x08); WriteRawRC(BitFramingReg,0x00); ClearBitMask(CollReg,0x80); ucComMF522Buf0 = PICC_ANTICOLL1; ucComMF522Buf1 = 0x20; status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,2,ucComMF522Buf,&unLen); if (status = MI_OK) for (i=0; i<4; i+) *(pSnr+i) = ucCo

25、mMF522Bufi; snr_check = ucComMF522Bufi; if (snr_check != ucComMF522Bufi) status = MI_ERR; SetBitMask(CollReg,0x80); return status;/功 能:選定卡片/參數(shù)說明: pSnrIN:卡片序列號 4字節(jié)/返 回:成功返回MI_OK/char PcdSelect(unsigned char *pSnr) char status;/idata unsigned char i; /idata unsigned int unLen; /idata unsigned char ucC

26、omMF522BufMAXRLEN; ucComMF522Buf0 = PICC_ANTICOLL1; ucComMF522Buf1 = 0x70; ucComMF522Buf6 = 0; for (i=0; i<4; i+) ucComMF522Bufi+2 = *(pSnr+i); ucComMF522Buf6 = *(pSnr+i); CalulateCRC(ucComMF522Buf,7,&ucComMF522Buf7); ClearBitMask(Status2Reg,0x08); status = PcdComMF522(PCD_TRANSCEIVE,ucComMF5

27、22Buf,9,ucComMF522Buf,&unLen); if (status = MI_OK) && (unLen = 0x18) status = MI_OK; else status = MI_ERR; return status;/功 能:驗(yàn)證卡片密碼/參數(shù)說明: auth_modeIN:密碼驗(yàn)證模式/ 0x60 = 驗(yàn)證A秘鑰/ 0x61 = 驗(yàn)證B秘鑰/ addrIN:塊地址/ pKeyIN:密碼/ pSnrIN:卡片序列號 4字節(jié)/返 回: 成功返回MI_OK/ char PcdAuthState(unsigned char auth_mode,uns

28、igned char addr,unsigned char *pKey,unsigned char *pSnr) char status; /idata unsigned int unLen; /idata unsigned char i ; /idata unsigned char ucComMF522BufMAXRLEN; ucComMF522Buf0 = auth_mode; ucComMF522Buf1 = addr; for (i=0; i<6; i+) ucComMF522Bufi+2 = *(pKey+i); for (i=0; i<6; i+) ucComMF522

29、Bufi+8 = *(pSnr+i); / memcpy(&ucComMF522Buf2, pKey, 6); / memcpy(&ucComMF522Buf8, pSnr, 4); status = PcdComMF522(PCD_AUTHENT,ucComMF522Buf,12,ucComMF522Buf,&unLen); if (status != MI_OK) | (!(ReadRawRC(Status2Reg) & 0x08) status = MI_ERR; return status;/功能:讀取MI卡一塊數(shù)據(jù)/參數(shù)說明: addrIN:塊地址&#

30、183;/ pDataOUT:讀出的數(shù)據(jù),16數(shù)據(jù)/返回:成功返回MI_OK/ char PcdRead(unsigned char addr,unsigned char *pData) char status; /idata unsigned int unLen; /idata unsigned char i; /idata unsigned char ucComMF522BufMAXRLEN; ucComMF522Buf0 = PICC_READ; ucComMF522Buf1 = addr; CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf2)

31、; status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen); if (status = MI_OK) && (unLen = 0x90) / memcpy(pData, ucComMF522Buf, 16); for (i=0; i<16; i+) *(pData+i) = ucComMF522Bufi; else status = MI_ERR; return status; /功 能:寫數(shù)據(jù)到MI卡一塊/參數(shù)說明: addrIN:塊地址/ pDataIN:寫入數(shù)據(jù) 16

32、字節(jié)/返 回: 成功返回MI_OK/ char PcdWrite(unsigned char addr, unsigned char *pData) char status; unsigned int unLen; unsigned char i,ucComMF522BufMAXRLEN; ucComMF522Buf0 = PICC_WRITE; ucComMF522Buf1 = addr; CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf2); status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,

33、ucComMF522Buf,&unLen); if (status != MI_OK) | (unLen != 4) | (ucComMF522Buf0 & 0x0F) != 0x0A) status = MI_ERR; if (status = MI_OK) /memcpy(ucComMF522Buf, pData, 16); for (i=0; i<16; i+) ucComMF522Bufi = *(pData+i); CalulateCRC(ucComMF522Buf,16,&ucComMF522Buf16); status = PcdComMF522(P

34、CD_TRANSCEIVE,ucComMF522Buf,18,ucComMF522Buf,&unLen); if (status != MI_OK) | (unLen != 4) | (ucComMF522Buf0 & 0x0F) != 0x0A) status = MI_ERR; return status; /功 能:扣款和充值/參數(shù)說明: dd_modeIN命令字/ 0xC0 = 扣款/ 0xC1 = 充值/ addrIN:錢包地址/ pValueIN4字節(jié)增(減)值,低位在前/返 回: 成功返回MI_OK/ char PcdValue(unsigned char dd_

35、mode,unsigned char addr,unsigned char *pValue) char status; unsigned int unLen; unsigned char i,ucComMF522BufMAXRLEN; ucComMF522Buf0 = dd_mode; ucComMF522Buf1 = addr; CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf2); status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen); if (

36、status != MI_OK) | (unLen != 4) | (ucComMF522Buf0 & 0x0F) != 0x0A) status = MI_ERR; if (status = MI_OK) / memcpy(ucComMF522Buf, pValue, 4); for (i=0; i<16; i+) ucComMF522Bufi = *(pValue+i); CalulateCRC(ucComMF522Buf,4,&ucComMF522Buf4); unLen = 0; status = PcdComMF522(PCD_TRANSCEIVE,ucComM

37、F522Buf,6,ucComMF522Buf,&unLen); if (status != MI_ERR) status = MI_OK; if (status = MI_OK) ucComMF522Buf0 = PICC_TRANSFER; ucComMF522Buf1 = addr; CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf2); status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen); if (status != MI_OK)

38、| (unLen != 4) | (ucComMF522Buf0 & 0x0F) != 0x0A) status = MI_ERR; return status; /用MF522計(jì)算crc16函數(shù)/void CalulateCRC(unsigned char *pIndata,unsigned char len,unsigned char *pOutData) unsigned char i,n; ClearBitMask(DivIrqReg,0x04); WriteRawRC(CommandReg,PCD_IDLE); SetBitMask(FIFOLevelReg,0x80); f

39、or (i=0; i<len; i+) WriteRawRC(FIFODataReg, *(pIndata+i); WriteRawRC(CommandReg, PCD_CALCCRC); i = 0xFF; do n = ReadRawRC(DivIrqReg); i-; while (i!=0) && !(n&0x04); pOutData0 = ReadRawRC(CRCResultRegL); pOutData1 = ReadRawRC(CRCResultRegM);/功 能:復(fù)位RC522/返 回: 成功返回MI_OK/char PcdReset(void)/unsigned char i

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論