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