摘 要:設(shè)計(jì)在校園一卡通系統(tǒng)中應(yīng)用的Mifare RC5O0射頻識(shí)別卡讀寫器,以實(shí)現(xiàn)發(fā)卡、終端消費(fèi)、自動(dòng)掛失等功能的終端機(jī)。該讀寫器具有安全、實(shí)用、方便、快捷、可靠性高的特點(diǎn),解決了校園消費(fèi)一卡通收費(fèi)管理問題。
非接觸式IC卡是根據(jù)射頻電磁感應(yīng)原理產(chǎn)生的。它的讀/寫操作只需將卡片放在讀卡器附近一定的距離之內(nèi)就能實(shí)現(xiàn)數(shù)據(jù)交換,無需任何接觸,使用非常方便、快捷,不易損壞。因此,在公交、門禁、校園、企事業(yè)等人事管理、娛樂場(chǎng)所等方面有廣闊的應(yīng)用前景。目前,我國(guó)引進(jìn)的射頻IC卡主要有Philips公司的Mifare卡和Atmel公司的Temic卡。下面以Philips公司的Mifare卡為例,介紹校園一卡通IC卡讀寫器的實(shí)現(xiàn)方法。
1 工作原理
非接觸式IC卡讀卡器以射頻識(shí)別技術(shù)為核心,讀卡器內(nèi)主要使用了1片Mifare卡專用的讀/寫處理芯片— —MMM 微模塊。其功能包括調(diào)制、解調(diào)、產(chǎn)生射頻信號(hào)、安全管理和防碰撞機(jī)制。內(nèi)部結(jié)構(gòu)分為射頻區(qū)和接口區(qū):射頻區(qū)內(nèi)含調(diào)制解凋器和電源供電電路,直接與天線連接;接口區(qū)有與單片機(jī)相連的端口,還具有與射頻區(qū)相連的收/發(fā)器、16字節(jié)的數(shù)據(jù)緩沖器、存放64對(duì)傳輸密鑰的ROM、存放3套密鑰的只寫存儲(chǔ)器,以及進(jìn)行3次證實(shí)和數(shù)據(jù)加密的密碼機(jī)、防碰撞處理的防碰撞模塊和控制單元。讀卡器工作時(shí),不斷地向外發(fā)出一組固定頻率的電磁波(1 3.6 MHz)。當(dāng)有卡靠近時(shí),卡片內(nèi)有一個(gè)LC串聯(lián)諧振電路,其頻率與讀卡器的發(fā)射頻率相同,這樣在電磁波的激勵(lì)下,I C諧振電路產(chǎn)生共振,從而使電容充電有了電荷。在這個(gè)電容另一端,接有一個(gè)單向?qū)щ姷碾娮颖茫瑢㈦娙輧?nèi)的電荷送到另一個(gè)電容內(nèi)存儲(chǔ)。當(dāng)電容器充電達(dá)到2 V時(shí),此電容就作為電源為卡片上的其他電路提供工作電壓,將卡內(nèi)數(shù)據(jù)發(fā)射出去或接收讀卡器發(fā)出的數(shù)據(jù)并保存。
2 硬件組成
校園一卡通系統(tǒng)結(jié)構(gòu)復(fù)雜,非接觸IC卡的讀卡器至少應(yīng)包括充值卡機(jī)、消費(fèi)機(jī)及自動(dòng)掛失機(jī)等,其硬件組成大體相同。圖1為非接觸IC卡及其讀卡器硬件電路原理,主要由MMM 微模塊、單片機(jī)、鍵盤、顯示器、存儲(chǔ)器、天線和監(jiān)控電路,以及能構(gòu)成校園一卡通網(wǎng)絡(luò)系統(tǒng)的CAN總線節(jié)點(diǎn)電路等部分組成。
圖1 一卡通非接觸IC卡讀寫器原理圖
讀卡器采用單片89C52。其片內(nèi)有8 KB的ROM,256字節(jié)的RAM 以及32個(gè)I/O 口。P1口與串行器件24C64和顯示、報(bào)警電路連接。其中的顯示模塊采用串行方式進(jìn)行通信,分別采用P1.0、P1.1模擬時(shí)鐘信號(hào)線和數(shù)據(jù)線。24C64用來存儲(chǔ)本消費(fèi)終端機(jī)地址和其他數(shù)據(jù)信息。P0口分別與MMM 微模塊及CAN 總線控制器SJA1000相連,用作數(shù)據(jù)線。P3口用于讀/寫控制和中斷。監(jiān)控電路采用DS1 232L芯片。它是個(gè)看門狗定時(shí)器,其功能是:上電和掉電時(shí)給89C52、MMM 模塊及CAN總線控制器SJA1000產(chǎn)生RESET 信號(hào);看門狗對(duì)系統(tǒng)進(jìn)行監(jiān)控,防止死機(jī)。由于單片機(jī)的I/0口資源比較緊張,而鍵盤需要8個(gè)I/O 口,因此,鍵盤處理過程是使用一個(gè)獨(dú)立的cPU(89C2051)。這個(gè)CPU專門負(fù)責(zé)鍵盤處理,從按鍵掃描碼的獲得到通過掃描碼再查鍵碼表來獲得鍵碼。最后以串行的方式與主CPU進(jìn)行通信,主CPU獲得鍵碼后再做相應(yīng)的后續(xù)處理。
CAN總線采用一種串行數(shù)據(jù)通信協(xié)議,它是一種多主總線,其數(shù)據(jù)長(zhǎng)度為8字節(jié),不會(huì)占用總線時(shí)間過長(zhǎng),從而保證了通信的實(shí)時(shí)性。CAN協(xié)議采用CRC檢驗(yàn)并可提供相應(yīng)的錯(cuò)誤處理功能,保證了數(shù)據(jù)通信的可靠性。CAN協(xié)議的一個(gè)最大特點(diǎn)是廢除了傳統(tǒng)的站地址編碼,而代之以對(duì)通信數(shù)據(jù)塊進(jìn)行編碼。采用這種方法的優(yōu)點(diǎn)是可使網(wǎng)絡(luò)內(nèi)的節(jié)點(diǎn)個(gè)數(shù)在理論上不受限制,因此非常適合校園一卡通系統(tǒng)中的各終端機(jī)及服務(wù)器互聯(lián)從而構(gòu)成網(wǎng)絡(luò)系統(tǒng)。
3 軟件設(shè)計(jì)
IC卡讀卡器在校園一卡通中一般有3種功能:消費(fèi)終端、充值卡終端及掛失卡終端機(jī)等。其中充值卡終端和掛失卡終端分別讀出IC卡序列號(hào),交給服務(wù)器進(jìn)行相關(guān)數(shù)據(jù)處理,并保存到服務(wù)器數(shù)據(jù)庫中。消費(fèi)終端機(jī)不但要讀取IC卡號(hào)交給服務(wù)器,還要從服務(wù)器數(shù)據(jù)庫中下載與此卡號(hào)相對(duì)應(yīng)的金額數(shù)據(jù)并顯示,以及對(duì)此數(shù)據(jù)進(jìn)行消費(fèi)運(yùn)算處理,然后傳回服務(wù)器數(shù)據(jù)庫(為了安全和管理上的考慮,相關(guān)信息并不寫入IC卡內(nèi))。本文主要以消費(fèi)終端為例,因此程序主要包括Ic卡讀操作程序、鍵盤掃描程序、顯示程序、存儲(chǔ)器讀/寫程序和通信程序。
圖2 消費(fèi)終端機(jī)程序監(jiān)控流程
(2)鍵盤掃描流程:鍵盤掃描程序可以采用掃描法和反轉(zhuǎn)法兩種方式,本系統(tǒng)鍵盤掃描功能模塊是采用反轉(zhuǎn)法實(shí)現(xiàn)的。這個(gè)方法實(shí)現(xiàn)起來比較方便,先置列線為低電平,對(duì)行線進(jìn)行掃描,查看是否有低電平出現(xiàn)。如果有就是有健按下,再反轉(zhuǎn)置行線為低電平,對(duì)列線進(jìn)行掃描,查看是否有鍵按下。如果列線中有低電平出現(xiàn),就表示有鍵按下;否則,就是無鍵按下。利用這種方法可以得到按鍵的掃描碼,再根據(jù)掃描碼查找鍵碼表來確定按鍵的鍵碼值,然后將鍵值通過串口發(fā)送到主控制器。鍵盤掃描程序的流程如圖3所示。
圖3 鍵盤掃描流程
(3)顯示程序說明:根據(jù)圖1,在顯示電路中,用P1口的3根I/O 口線(P1.0、P1.1、P1.2)分別提供時(shí)鐘信號(hào)(CI K)、串行數(shù)據(jù)(DA)和使能信號(hào)(EN)。MC14499每一次可接收20位串行輸人數(shù)據(jù),前4位用于控制數(shù)碼管的小數(shù)點(diǎn)顯示,后16位是4個(gè)數(shù)碼管的BCD碼輸人數(shù)據(jù)。在每幀數(shù)據(jù)傳送之前,必須將EN置0,然后傳送20位數(shù)據(jù)。數(shù)據(jù)傳送完后,再將EN置1。
(4)對(duì)Mifare卡的操作流程:本系統(tǒng)采用中斷(INT1)工作模式,即MCU利用MifareRC500提供中斷信息對(duì)其進(jìn)行控制。另外,根據(jù)系統(tǒng)的需要,可以采用查詢方式對(duì)MifareRCS00進(jìn)行操作。整個(gè)系統(tǒng)的工作由對(duì)Mifare卡操作和系統(tǒng)后臺(tái)處理兩大部分組成。由于篇幅有限,本文只介紹對(duì)Mifare卡操作流程。Mifare卡的操作可以分為以下幾個(gè)步驟:
① 復(fù)位請(qǐng)求。當(dāng)一張Mifare卡片處在卡片讀寫器天線的工作范圍之內(nèi)時(shí),程序員控制讀寫器向卡片發(fā)出“REQUEST all”(或“REQUEST std”)命令??ㄆ腁TR將啟動(dòng),將卡片Block 0 中的卡片類型(TagType)號(hào)共2字節(jié)傳送給讀寫器,建立卡片與讀寫器的第一步通信聯(lián)絡(luò)。如果不進(jìn)行得位請(qǐng)求操作,讀寫器對(duì)卡片的其他操作將不會(huì)進(jìn)行。
② 反碰撞操作。如果有多張Mifare卡片處在卡片讀寫器天線的工作范圍之內(nèi)時(shí),讀卡芯片將首先與每一張卡片進(jìn)行通信,取得每一張卡片的系列號(hào)。由于每一張Mifare卡片都具有其唯一的序列號(hào),決不會(huì)相同,因此讀卡芯片根據(jù)卡片的序列號(hào)來保證一次只對(duì)一張卡操作。該操作得到的返回值為卡的序列號(hào)。
③ 卡選擇操作。完成了上述2個(gè)步驟之后,讀卡芯片必須對(duì)卡片進(jìn)行選擇操作。執(zhí)行操作后,返回卡上的SIZE字節(jié)。
④ 認(rèn)證操作。經(jīng)過上述3個(gè)步驟,在確認(rèn)已經(jīng)選擇了一張卡片時(shí),讀卡芯片在對(duì)卡進(jìn)行讀/寫操作之前,必須對(duì)卡片上已經(jīng)設(shè)置的密碼進(jìn)行認(rèn)證。如果匹配,才允許進(jìn)一步的讀/寫操作。
⑤ 讀/寫操作。對(duì)卡的最后操作是讀、寫、增值、減值、存儲(chǔ)和傳送等操作。相關(guān)代碼如下:
每調(diào)用一個(gè)函數(shù),函數(shù)執(zhí)行完畢都返回一個(gè)相應(yīng)的狀態(tài)代碼(status)。如果成功調(diào)用,返回值為0;如果返回值不為0,說明該函數(shù)未成功執(zhí)行從而轉(zhuǎn)到其他操作。
結(jié) 語
本文介紹了校園一卡通系統(tǒng)中非接觸IC卡讀寫器的設(shè)計(jì)。在此讀寫器的基礎(chǔ)上,只要稍加修改就能開發(fā)出不同的射頻識(shí)別應(yīng)用系統(tǒng),如考勤系統(tǒng)、門禁系統(tǒng)、公交車收費(fèi)系統(tǒng)等。這些都是筆者在學(xué)習(xí)和實(shí)踐中得來的,相信能對(duì)相關(guān)工作人員有一定啟發(fā).
參考文獻(xiàn)
[1]王卓人,鄧晉軍,劉宗祥.Ic卡的技術(shù)與應(yīng)用[M].北京:電子工業(yè)出版社,1999.
[2]王宏軍,趙冬艷.智能Ic卡全書[M].北京:電子工業(yè)出版社,1996.
[3]朱兆優(yōu),王耀南,林剛勇.非接觸IC卡應(yīng)用系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)自動(dòng)測(cè)量與控制,2001,9(5).