基于單片機(jī)及MFRC522的餐卡充值消費(fèi)系統(tǒng)_第1頁
基于單片機(jī)及MFRC522的餐卡充值消費(fèi)系統(tǒng)_第2頁
基于單片機(jī)及MFRC522的餐卡充值消費(fèi)系統(tǒng)_第3頁
基于單片機(jī)及MFRC522的餐卡充值消費(fèi)系統(tǒng)_第4頁
基于單片機(jī)及MFRC522的餐卡充值消費(fèi)系統(tǒng)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、射頻識別技術(shù)課程設(shè)計(jì)報(bào)告題 目:基于單片機(jī)及MFRC522的餐卡 充值消費(fèi)系統(tǒng) 院 (系):信息與電子工程學(xué)院 專業(yè)班級: 學(xué)生姓名: 學(xué) 號: 目錄1.題目32.目的與要求32.1目的32.2要求32.2.1系統(tǒng)功能32.2.2系統(tǒng)原則33.內(nèi)容與步驟(設(shè)計(jì)思想)43.1硬件設(shè)計(jì)43.1.1系統(tǒng)框架43.1.2最小系統(tǒng)模塊設(shè)計(jì)53.1.3鍵盤模塊設(shè)計(jì)63.1.4 LCD驅(qū)動模塊設(shè)計(jì)63.1.5 蜂鳴器模塊設(shè)計(jì)73.1.6 電源模塊設(shè)計(jì)73.1.7 RFID讀卡器模塊設(shè)計(jì)83.1.8 S50卡簡介93.2軟件設(shè)計(jì)103.2.1 總體設(shè)計(jì)103.2.2 讀卡程序設(shè)計(jì)113.2.3 MCU與讀卡模

2、塊通信程序設(shè)計(jì)124.部分代碼(詳細(xì)的注釋)144.1鍵盤程序144.2 LCD1602程序144.3 讀寫卡程序165.課程設(shè)計(jì)實(shí)踐總結(jié)21 1.題目基于單片機(jī)及MFRC522的餐卡充值消費(fèi)系統(tǒng)2.目的與要求2.1目的科技高速發(fā)展,人們的需求也在日益增長,智能化與便攜化成為人們孜孜不倦的追求。電子計(jì)算機(jī)的出現(xiàn)豐富了這個世界,也簡化了這個世界。當(dāng)然微型處理系統(tǒng)也悄悄產(chǎn)生了,并大量應(yīng)用在實(shí)際中,利用MCU控制,處理一些事務(wù),降低了勞動時(shí)間,提高了勞動效率,也提高了精度。MCU的出現(xiàn)使生活與生產(chǎn)發(fā)生很大的改變。人們的生活與智能越來越密不可分。RFID的普及,豐富了人們的生活,使得人們的物理數(shù)量轉(zhuǎn)化

3、為虛擬數(shù)量,比如現(xiàn)金數(shù)字化。RFID的發(fā)展,是信息現(xiàn)代化的主流和趨勢,RFID的廣泛應(yīng)用將會掀起一場住宅革命,促進(jìn)物聯(lián)網(wǎng)的快速發(fā)展。傳統(tǒng)的現(xiàn)金消費(fèi)方式并不適合學(xué)校、企業(yè)等人口集中且密集的地域。此方式不僅不方便單位對消費(fèi)記錄的獲取,而且對于買賣雙方也是非常不方便的。餐卡充值消費(fèi)系統(tǒng)會使人們生活更加方便,不用隨時(shí)隨地的帶好現(xiàn)金,也不用擔(dān)心現(xiàn)金丟失,更不用擔(dān)心收到假幣。人們只要一張IC卡,便能夠?qū)ψ约旱默F(xiàn)金進(jìn)行數(shù)字化,不管是交易還是攜帶都是方便至極。 2.2要求2.2.1系統(tǒng)功能(1) 讀卡器對IC初始化,設(shè)置IC卡的密碼,設(shè)置卡號及充值相應(yīng)的初始金額。(2) 充值IC卡功能,學(xué)生等人可以通過帶上自

4、己的現(xiàn)金去充值點(diǎn)讓管理員進(jìn)行充值。(3) 刷卡功能,工作人員按下鍵盤設(shè)置相應(yīng)金額后,消費(fèi)者可以近距離刷卡從而達(dá)到消費(fèi)效果。(4) 讀卡提示,lcd液晶屏上顯示出本次消費(fèi)或者充值的金額,如果沒有操作,則是顯示余額。蜂鳴器做出相應(yīng)的聲音提示。(5) 容錯功能,當(dāng)工作人員不小心刷多了金額,工作人員可以設(shè)置讀卡器為充值模式對卡進(jìn)行加款功能。2.2.2系統(tǒng)原則(1)實(shí)用性,餐卡消費(fèi)系統(tǒng)的內(nèi)容應(yīng)符合實(shí)際需要,不能華而不實(shí)。因此,系統(tǒng)的實(shí)用性是首先應(yīng)遵循的第一原則。(2)準(zhǔn)確性,能夠?qū)C卡上的數(shù)據(jù)準(zhǔn)確的進(jìn)行讀取、充值以及扣款,避免出現(xiàn)更種漏洞而不實(shí)用。(3)實(shí)時(shí)性,即讀卡器能快速地對IC卡上的金額進(jìn)行讀取

5、或者其他操作,減少等待時(shí)間,提高工作效率。(4)完整性,一個完整的餐卡充值消費(fèi)系統(tǒng)是建筑整體形象的重要標(biāo)志。功能完善,設(shè)備齊全,管理方便是設(shè)計(jì)應(yīng)考慮的一個因素。(5)容錯性,讀卡器必須具備有了解消費(fèi)者的所有操作,避免消費(fèi)者或營業(yè)員的錯誤操作而出現(xiàn)bug。(6)健壯性,實(shí)現(xiàn)多卡防沖突、防碰撞燈功能,避免系統(tǒng)誤操作,避免發(fā)生崩潰。(7)安全性,系統(tǒng)必須在物理安全與技術(shù)安全方面做好可靠的保障,防止不法分子的盜取與惡意破壞而帶來損失。(8)易維護(hù)性,餐卡充值消費(fèi)系統(tǒng)在運(yùn)行過程中的維護(hù)應(yīng)該盡量做到簡單易行。(9)穩(wěn)定性,餐卡充值消費(fèi)系統(tǒng)的職能是保護(hù)人身和財(cái)產(chǎn)的安全,一旦系統(tǒng)開始工作就要求連續(xù)不間斷的運(yùn)行

6、,所以穩(wěn)定性對于餐卡系統(tǒng)來說就顯得非常重要。3.內(nèi)容與步驟(設(shè)計(jì)思想)本系統(tǒng)設(shè)計(jì)分為硬件設(shè)計(jì)以及軟件設(shè)計(jì)總共兩個部分。硬件設(shè)計(jì)包括:單片機(jī)最小系統(tǒng)、MFRC522讀卡器模塊、LCD1602及驅(qū)動模塊、蜂鳴器模塊、鍵盤模塊、電源管理模塊等。軟件設(shè)計(jì)包括:單片機(jī)與MFRC522讀卡器模塊通信,讀卡程序設(shè)計(jì),防碰撞算法設(shè)計(jì),加密算法設(shè)計(jì),LCD1602模塊驅(qū)動程序,鍵盤搜索程序,蜂鳴器驅(qū)動程序等。3.1硬件設(shè)計(jì)3.1.1系統(tǒng)框架本系統(tǒng)通過MCU中央控制器對RFID讀卡器模塊進(jìn)行控制,RFID讀卡器進(jìn)而對IC卡進(jìn)行讀寫數(shù)據(jù)等通信,最后把數(shù)據(jù)返回給MCU,再通過液晶屏顯示出來。過程可以通過鍵盤的輸入來手

7、動控制。IC卡鍵盤模塊RFID讀卡器mcuLCD液晶屏蜂鳴器電源模塊圖3-1 系統(tǒng)框架圖3.1.2最小系統(tǒng)模塊設(shè)計(jì)本系統(tǒng)MCU采用STC89C52RC芯片,STC89C51RC單片機(jī)是宏晶科技推出的新一代超強(qiáng)抗干擾、高速、低功耗的單片機(jī),基于Intel 標(biāo)準(zhǔn)的8052,指令代碼完全兼容傳統(tǒng)的8051 系列單片機(jī),12 時(shí)鐘/機(jī)器周期和6 時(shí)鐘/機(jī)器周期可任意選擇,最新的D 版本內(nèi)集成MAX810 專用復(fù)位電路。圖3-2 STC80C52RC最小系統(tǒng)原理圖3.1.3鍵盤模塊設(shè)計(jì)系統(tǒng)需用到數(shù)字鍵及其邏輯功能鍵,所需要哦的按鍵比較多,為了節(jié)省單片機(jī)的I/O口。采用了矩陣鍵盤進(jìn)行系統(tǒng)計(jì)算器鍵盤的設(shè)計(jì)。

8、圖3-3 矩陣鍵盤原理圖3.1.4 LCD驅(qū)動模塊設(shè)計(jì)為了能有友好的交互面,系統(tǒng)采用LCD1602液晶顯示屏模塊。1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號的點(diǎn)陣型液晶模塊。它是由若干個5x7或者5x11的點(diǎn)陣字符位組成,每個點(diǎn)陣字符位都可以用顯示一個字符,每位之間有一個點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因?yàn)槿绱?,所以它不能很好的顯示圖片。但是用它來設(shè)計(jì)可以方便軟件設(shè)計(jì),減少開發(fā)的成本。圖3-4 LCD1602模塊連接圖圖3-5 LCD1602實(shí)物圖3.1.5 蜂鳴器模塊設(shè)計(jì)為了能讓刷卡時(shí)有提示,系統(tǒng)采用了蜂鳴器作為提示源。圖3-6 蜂

9、鳴器電路圖3.1.6 電源模塊設(shè)計(jì)要給各個模塊提供不同電壓,就必須進(jìn)行電源模塊的設(shè)計(jì),電源模塊要能提供5V以及3.3V的電壓,且電流要能驅(qū)動各個模塊,使其正常工作。采用以下電路,能設(shè)計(jì)出穩(wěn)定的電壓值。圖3-7 電源模塊電路圖3.1.7 RFID讀卡器模塊設(shè)計(jì)系統(tǒng)采用了MFRC522讀卡模塊。MFRC522是高度集成的非接觸式(13.56MHz)讀寫卡芯片。此發(fā)送模塊利用調(diào)制和解調(diào)的原理,并將它們完全集成到各種非接觸式通信方法和協(xié)議中(13.56MHz)。MFRC522發(fā)送模塊工作模式:MFRC522的內(nèi)部發(fā)送部分可驅(qū)動讀寫器天線與ISO 1443A/MIFARE卡和答應(yīng)機(jī)的通信,無需其他的電路

10、。接收器部分提供一個功能強(qiáng)大和高效的解調(diào)和譯碼電路,用來處理ISO 1443A/MIFARE的卡和應(yīng)答機(jī)的信號。數(shù)字電路部分處理完整的ISO 1443A幀和錯誤檢測(奇偶&CRC)。MRFC522支持MIFARE Classic(如,MIFARE標(biāo)準(zhǔn))器件。MFRC支持MIFARE更高速的非接觸式通信,雙向數(shù)據(jù)傳輸速率高達(dá)424kbit/s.可實(shí)現(xiàn)各種不同主機(jī)接口功能:SPI接口、串行Uart以及I2C接口。模塊具有以下特性:1) 高度集成的模擬電路,解調(diào)和譯碼相應(yīng)。2) 緩沖的輸出驅(qū)動器與天線的連接使用最少的外部元件。3) 支持ISO 1443A/MIFATE。4) 讀寫模式中與ISO 14

11、43A/MIFARE的通信距離高達(dá)50mm,取決天線的長度和調(diào)諧。5) 讀寫器模式下支持MIFARE Classic加密。6) 支持ISO 1443 212kbit/s和424bit/s的更高傳輸速率的通信。7) 64字節(jié)的發(fā)送和接收FIFO緩沖區(qū)。8) 靈活的中斷模式。9) 低功耗的硬件復(fù)位功能。10) 軟件掉電模式。11) 可編程定時(shí)器。12) 內(nèi)部振蕩器,連接27.12MHz的晶體。13) 3.3V的電源電壓。14) CRC協(xié)議處理器。15) 自由編程的I/O管腳。16) 內(nèi)部只測試圖3-8 簡化的MFRC522框圖3.1.8 S50卡簡介系統(tǒng)采用MIFARE S50卡作為餐卡設(shè)計(jì)。S5

12、0卡主要指標(biāo):(1) 容量為8K位EEPROM;(2) 分為16個扇區(qū),每個扇區(qū)為4塊,每塊16個字節(jié),以塊為存取單位;(3) 每個扇區(qū)有獨(dú)立的一組密碼及訪問控制;(4) 每張卡有唯一序列號,為32位;(5) 具有防沖突機(jī)制,支持多卡操作;(6) 無電源,自帶天線,內(nèi)含加密控制邏輯和通訊邏輯電路;(7) 數(shù)據(jù)保存期為10年,可改寫10萬次,讀無限次;(8) 工作溫度:-2050(濕度為90%);(9) 工作頻率:13.56MHZ;(10) 通信速率:106 KBPS;(11) 讀寫距離:10 cm以內(nèi)(與讀寫器有關(guān));存儲結(jié)構(gòu):M1卡分為16個扇區(qū),每個扇區(qū)由4塊(塊0、塊1、塊2、塊3)組成

13、,(我們也將16個扇區(qū)的64個塊按絕對地址編號為063。第0扇區(qū)的塊0(即絕對地址0塊),它用于存放廠商代碼,已經(jīng)固化,不可更改。每個扇區(qū)的塊0、塊1、塊2為數(shù)據(jù)塊,可用于存貯數(shù)據(jù)。 塊0 數(shù)據(jù)塊0扇區(qū)0 塊1數(shù)據(jù)塊1塊2數(shù)據(jù)塊2塊3密碼A 存取控制 密碼B控制塊3 塊0數(shù)據(jù)塊4扇區(qū)1塊1數(shù)據(jù)塊5塊2數(shù)據(jù)塊6塊3密碼A 存取控制 密碼B控制塊7 0數(shù)據(jù)塊60扇區(qū)15 1數(shù)據(jù)塊61 2數(shù)據(jù)塊62 3密碼A 存取控制 密碼B控制塊63圖3-9 S50卡存儲結(jié)構(gòu)圖卡片的電氣部分只由一個天線和ASIC組成。天線:卡片的天線是只有幾組繞線的線圈,很適于封裝到IS0卡片中。ASIC:卡片的ASIC由一個高

14、速(106KB波特率)的RF接口,一個控制單元和一個8K位EEPROM組成。工作原理:讀寫器向M1卡發(fā)一組固定頻率的電磁波,卡片內(nèi)有一個LC串聯(lián)諧振電路,其頻率與讀寫器發(fā)射的頻率相同,在電磁波的激勵下,LC諧振電路產(chǎn)生共振,從而使電容內(nèi)有了電荷,在這個電容的另一端,接有一個單向?qū)ǖ碾娮颖?,將電容?nèi)的電荷送到另一個電容內(nèi)儲存,當(dāng)所積累的電荷達(dá)到2V時(shí),此電容可做為電源為其它電路提供工作電壓,將卡內(nèi)數(shù)據(jù)發(fā)射出去或接取讀寫器的數(shù)據(jù)。3.2軟件設(shè)計(jì)3.2.1 總體設(shè)計(jì)系統(tǒng)開機(jī)進(jìn)入歡迎界面,5秒后進(jìn)入首次注冊模式(為IC卡充值100元錢)。通過按鍵選擇充值模式或者是消費(fèi)模式。如果LCD顯示金額且是充卡

15、模式,即可為卡進(jìn)行相關(guān)金額的充值。如果是消費(fèi)模式,則扣除相關(guān)金額,如果卡中金額不夠扣款,則扣款不成功,蜂鳴器發(fā)出相應(yīng)的聲響。如果LCD上沒有顯示金額,當(dāng)卡靠近時(shí)可查看卡的余額。歡迎界面注冊M=0余額小于金額M=1充卡模式消費(fèi)模式余額大小于金額充值成功扣款成功圖3-10 系統(tǒng)程序流程圖3.2.2 讀卡程序設(shè)計(jì)S50卡要與MFRC522讀卡器通訊,讀卡器必須先執(zhí)行尋卡操作,進(jìn)而記性防碰撞機(jī)制,接著對進(jìn)入范圍的卡取一張進(jìn)行選擇,再接著驗(yàn)證IC卡中的密碼,如果密碼核對正確即可進(jìn)行下一步操作,否則不可操作。驗(yàn)證成功之后,最后可以讀取S50卡中的金額、卡號等數(shù)據(jù)信息,也可以往IC卡中寫入金額信息,也可以對

16、密碼進(jìn)行修改。圖3-11 讀卡器讀S50卡程序流程圖3.2.3 MCU與讀卡模塊通信程序設(shè)計(jì)為了使編程方便,本系統(tǒng)使用簡單的SPI通信協(xié)議來使單片機(jī)控制讀卡器模塊。SPI是英語Serial Peripheral interface的縮寫,顧名思義就是串行外圍設(shè)備接口,是Motorola首先在其MC68HCXX系列處理器上定義的。SPI接口主要應(yīng)用在 EEPROM,F(xiàn)LASH,實(shí)時(shí)時(shí)鐘,AD轉(zhuǎn)換器,還有數(shù)字信號處理器和數(shù)字信號解碼器之間。SPI是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時(shí)為PCB的布局上節(jié)省空間,提供方便。SPI的通信原理很簡單,它

17、以主從方式工作,這種模式通常有一個主設(shè)備和一個或多個從設(shè)備,需要4根線,事實(shí)上3根也可以。也是所有基于SPI的設(shè)備共有的,它們是SDI(數(shù)據(jù)輸入),SDO(數(shù)據(jù)輸出),SCLK(時(shí)鐘),CS(片選)。MOSI(SDO):主器件數(shù)據(jù)輸出,從器件數(shù)據(jù)輸入。MISO(SDI):主器件數(shù)據(jù)輸入,從器件數(shù)據(jù)輸出。SCLK :時(shí)鐘信號,由主器件產(chǎn)生。CS:從器件使能信號,由主器件控制。其中CS是控制芯片是否被選中的,也就是說只有片選信號為預(yù)先規(guī)定的使能信號時(shí)(高電位或低電位),對此芯片的操作才有效,這就允許在同一總線上連接多個SPI設(shè)備成為可能。需要注意的是,在具體的應(yīng)用中,當(dāng)一條SPI總線上連接有多個設(shè)

18、備時(shí),SPI本身的CS有可能被其他的GPIO腳代替,即每個設(shè)備的CS腳被連接到處理器端不同的GPIO,通過操作不同的GPIO口來控制具體的需要操作的SPI設(shè)備,減少各個SPI設(shè)備間的干擾。SPI是串行通訊協(xié)議,也就是說數(shù)據(jù)是一位一位從MSB或者LSB開始傳輸?shù)?,這就是SCK時(shí)鐘線存在的原因,由SCK提供時(shí)鐘脈沖,MISO、MOSI則基于此脈沖完成數(shù)據(jù)傳輸。 SPI支持4-32bits的串行數(shù)據(jù)傳輸,支持MSB和LSB,每次數(shù)據(jù)傳輸時(shí)當(dāng)從設(shè)備的大小端發(fā)生變化時(shí)需要重新設(shè)置SPI Master的大小端。圖3-12 SPI協(xié)議時(shí)序圖4.部分代碼(詳細(xì)的注釋)4.1鍵盤程序/掃描按鍵又沒有按下void

19、 KeyScan(void)char a = 0;GPIO_KEY=0x0f;if(GPIO_KEY!=0x0f)/讀取按鍵是否按下Delay10ms(1);/延時(shí)10ms進(jìn)行消抖if(GPIO_KEY!=0x0f)/再次檢測鍵盤是否按下/測試列GPIO_KEY=0X0F;switch(GPIO_KEY)case(0X07):KeyValue=0;break;case(0X0b):KeyValue=4;break;case(0X0d): KeyValue=8;break;case(0X0e):KeyValue=12;break;/測試行GPIO_KEY=0XF0;switch(GPIO_KEY

20、)case(0X70):KeyValue=KeyValue+3;break;case(0Xb0):KeyValue=KeyValue+2;break;case(0Xd0):KeyValue=KeyValue+1;break;case(0Xe0):KeyValue=KeyValue;break;while(a0; c-) for (b=199;b0;b-) for(a=1;a0;a-); /寫命令函數(shù)void LcdWriteCom(uchar com) /寫入命令LCD1602_E = 0; /使能LCD1602_RS = 0; /選擇發(fā)送命令LCD1602_RW = 0; /選擇寫入LCD1

21、602_DATAPINS = com; /放入命令Lcd1602_Delay1ms(1);/等待數(shù)據(jù)穩(wěn)定LCD1602_E = 1; /寫入時(shí)序Lcd1602_Delay1ms(5); /保持時(shí)間LCD1602_E = 0;/寫數(shù)據(jù)函數(shù) void LcdWriteData(uchar dat)/寫入數(shù)據(jù)LCD1602_E = 0;/使能清零LCD1602_RS = 1;/選擇輸入數(shù)據(jù)LCD1602_RW = 0;/選擇寫入LCD1602_DATAPINS = dat; /寫入數(shù)據(jù)Lcd1602_Delay1ms(1);LCD1602_E = 1; /寫入時(shí)序Lcd1602_Delay1ms(5

22、); /保持時(shí)間LCD1602_E = 0;/LCD初始化子程序void LcdInit() LcdWriteCom(0x38); /開顯示LcdWriteCom(0x0c); /開顯示不顯示光標(biāo)LcdWriteCom(0x06); /寫一個指針加1LcdWriteCom(0x01); /清屏LcdWriteCom(0x80); /設(shè)置數(shù)據(jù)指針起點(diǎn)4.3 讀寫卡程序/功 能:尋卡/參數(shù)說明: req_codeIN:尋卡方式/ 0x52 = 尋感應(yīng)區(qū)內(nèi)所有符合14443A標(biāo)準(zhǔn)的卡/ 0x26 = 尋未進(jìn)入休眠狀態(tài)的卡/ pTagTypeOUT:卡片類型代碼/ 0x4400 = Mifare_Ul

23、traLight/ 0x0400 = Mifare_One(S50)/ 0x0200 = Mifare_One(S70)/ 0x0800 = Mifare_Pro(X)/ 0x4403 = Mifare_DESFire/返 回: 成功返回MI_OK/char PcdRequest(unsigned char req_code,unsigned char *pTagType) char status; unsigned int unLen; unsigned char ucComMF522BufMAXRLEN; ClearBitMask(Status2Reg,0x08); WriteRawRC(

24、BitFramingReg,0x07); SetBitMask(TxControlReg,0x03); ucComMF522Buf0 = req_code;status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,1,ucComMF522Buf,&unLen); if (status = MI_OK) & (unLen = 0x10) *pTagType = ucComMF522Buf0; *(pTagType+1) = ucComMF522Buf1; else status = MI_ERR; return status;/功 能:防沖撞/參數(shù)說明: p

25、SnrOUT:卡片序列號,4字節(jié)/返 回: 成功返回MI_OK/ char PcdAnticoll(unsigned char *pSnr) char status; unsigned char i,snr_check=0; unsigned int unLen; unsigned char ucComMF522BufMAXRLEN; ClearBitMask(Status2Reg,0x08); WriteRawRC(BitFramingReg,0x00); ClearBitMask(CollReg,0x80); ucComMF522Buf0 = PICC_ANTICOLL1; ucComMF

26、522Buf1=0x20; status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,2,ucComMF522Buf,&unLen); if (status = MI_OK) for (i=0; i4; i+) *(pSnr+i) = ucComMF522Bufi; snr_check = ucComMF522Bufi; if (snr_check != ucComMF522Bufi) status = MI_ERR; SetBitMask(CollReg,0x80); return status;/功 能:選定卡片/參數(shù)說明: pSnrIN:卡片序列號,

27、4字節(jié)/返 回: 成功返回MI_OK/char PcdSelect(unsigned char *pSnr) char status; unsigned char i; unsigned int unLen; unsigned char ucComMF522BufMAXRLEN; ucComMF522Buf0 = PICC_ANTICOLL1; ucComMF522Buf1 = 0x70; ucComMF522Buf6 = 0; for (i=0; i4; i+) ucComMF522Bufi+2 = *(pSnr+i); ucComMF522Buf6 = *(pSnr+i); Calulat

28、eCRC(ucComMF522Buf,7,&ucComMF522Buf7); ClearBitMask(Status2Reg,0x08); status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,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密鑰

29、/ addrIN:塊地址/ pKeyIN:密碼/ pSnrIN:卡片序列號,4字節(jié)/返 回: 成功返回MI_OK/ char PcdAuthState(unsigned char auth_mode,unsigned char addr,unsigned char *pKey,unsigned char *pSnr) char status; unsigned int unLen; unsigned char i,ucComMF522BufMAXRLEN; ucComMF522Buf0 = auth_mode; ucComMF522Buf1 = addr; for (i=0; i6; i+)

30、ucComMF522Bufi+2 = *(pKey+i); for (i=0; i6; i+) ucComMF522Bufi+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; retu

31、rn status;/功 能:讀取M1卡一塊數(shù)據(jù)/參數(shù)說明: addrIN:塊地址/ pDataOUT:讀出的數(shù)據(jù),16字節(jié)/返 回: 成功返回MI_OK/ char PcdRead(unsigned char addr,unsigned char *pData) char status; unsigned int unLen; unsigned char i,ucComMF522BufMAXRLEN; ucComMF522Buf0 = PICC_READ; ucComMF522Buf1 = addr; CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf2);

32、 status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen); if (status = MI_OK) & (unLen = 0x90) / memcpy(pData, ucComMF522Buf, 16); for (i=0; i16; i+) *(pData+i) = ucComMF522Bufi; else status = MI_ERR; return status;/功 能:寫數(shù)據(jù)到M1卡一塊/參數(shù)說明: addrIN:塊地址/ pDataIN:寫入的數(shù)據(jù),16字節(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,&

溫馨提示

  • 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

提交評論