現在智能卡的應用越來(lái)越廣泛,如校園一卡通系統、城市公交系統、大型會(huì )議簽到系統、考勤系統、門(mén)禁系統等都使用了智能卡。本文以ZLG500讀寫(xiě)模塊作為卡與門(mén)禁機交換數據的接口模塊,介紹了ZLG500在智能卡門(mén)禁系統中的應用。 1 讀寫(xiě)模塊ZLG500簡(jiǎn)介 1.1 ZLG500與MCU的接口原理 ZLG500模塊采用Philips公司最新的高集成ISO14443讀卡芯片MF RC500,它能讀寫(xiě)RC500內EEPROM,提供三線(xiàn)制SPI接口,并具有控制線(xiàn)輸出端口,能與任何MCU連接。ZLG500與MCS51單片機的接口原理圖如圖1所示。此外該模塊的EMC性能優(yōu)良,并且自帶無(wú)源蜂鳴器信號輸出,能用軟件控制其輸出頻率及輸出持續時(shí)間。 ![]() 圖中SCLK、SDATA、SS為ZLG500與MCU相連接的控制線(xiàn),分別為時(shí)鐘線(xiàn)、數據線(xiàn)和片選。主控制器的MCU和讀卡模塊內的MCU通過(guò)此三線(xiàn)相連。接口空閑時(shí),主機的SS=1,SCLK=O,SDATA=0,而從機的SS=1,SCLK=1,SDATA=O。其中SS和DATA都是雙向的,而時(shí)鐘線(xiàn)SCLK是單向的,即時(shí)鐘只能由主控制器產(chǎn)生,該信號必須嚴格遵守時(shí)序規范,否則將出現通信錯誤,此時(shí)讀卡模塊必須釋放該線(xiàn)。 SS還作為數據發(fā)送使能端。若一方有數據要發(fā)送給另一方,則該方控制SS線(xiàn)為低電平,并在發(fā)送結束后將該線(xiàn)置高電平。接收數據方不得控制該線(xiàn),雙方必須遵守通信協(xié)議,不得同時(shí)控制該線(xiàn)。SDATA為數據線(xiàn),由數據發(fā)送端控制數據,接收端必須釋放該線(xiàn)。該線(xiàn)在一次傳輸開(kāi)始時(shí)還同時(shí)作為數據接收端的響應信號。 1.2 ZLG500與MCU接口的時(shí)序及通信協(xié)議 ZLG500與MCU無(wú)論數據傳輸的方向如何,SPI線(xiàn)上信號的波形總是如圖2所示。由圖中可以看出,在SS為低時(shí),時(shí)鐘和數據線(xiàn)上的信號才有效;在 SCLK為低時(shí)SDATA變化,在SCLK為高時(shí)SDATA應保持穩定。 ![]() 以上傳輸中,從數據發(fā)送器請求開(kāi)始至數據接收器響應的時(shí)間是不確定的,取決于接收器內的MCU是否忙,因此有必要設置看門(mén)狗定時(shí)器對數據接收器的響應進(jìn)行監視。一旦接收器響應,則MCU必須根據數據傳輸方向,嚴格控制以下幾個(gè)時(shí)間,以確保數據傳輸無(wú)誤。 t1:數據接收器響應至MCU產(chǎn)生第一個(gè)SCLK上升沿的時(shí)間。 t2:2個(gè)字節傳輸之間SCLK低電平的持續時(shí)間。 t3:傳輸最后1個(gè)字節的最后1位的SCLK信號的上升沿至SS上升沿的時(shí)間。 tH:SCLK信號的高電平持續時(shí)間。 tL:SCLK信號的低電平持續時(shí)間。 在數據傳輸方向不同時(shí),對時(shí)間t1、t2、t3、tH和tL都有不同的要求。 MCU與ZLG500的通信必須先由MCU發(fā)送命令和數據給ZLG500,ZLG500執行命令完畢后,將命令執行的狀態(tài)和響應數據發(fā)回MCU。 開(kāi)始通信前,收發(fā)雙方必須處于空閑狀態(tài)。首先由MCU發(fā)出SS下降沿信號,然后等待ZLG500在SDATA線(xiàn)上的響應,若在50 ms內未檢測到此信號,則退出本次傳輸。若正確響應,則MCU可將命令和數據發(fā)送出去。 然后MCU等待ZLG500發(fā)回的狀態(tài)和響應數據,即等待SS線(xiàn)上的下降沿信號。若在50 ms內未檢測到此信號,則退出本次傳輸;若正確檢測到SS信號,則可以接收狀態(tài)和數據。 2 智能卡門(mén)禁系統設計 2.1 總體結構 系統采用Philips公司的非接觸智能IC卡Mifare 1(M1)卡。以M1卡作為用戶(hù)卡,以其全球唯一的序列號SN為依據控制門(mén)的開(kāi)啟。由于它是一個(gè)高頻卡,工作頻率為13.5 MHz,因而具有較強的抗干擾能力且讀寫(xiě)距離遠(2.5~10 cm)。 整個(gè)智能卡門(mén)禁系統分為三大部分:其一是讀寫(xiě)器部分,包括MCU、復位電路、時(shí)鐘電路、顯示電路、鍵盤(pán)、數據存儲等主控模塊及非接觸IC卡讀寫(xiě)模塊和電鎖驅動(dòng)部分;其二是中央控制電腦的軟件管理系統模塊;其三是中央控制電腦與讀寫(xiě)器之間的數據傳輸模塊?傮w系統框圖如圖3所示。 ![]() 首先,在發(fā)卡系統(中央控制PC機)里把用戶(hù)的卡號及個(gè)人信息輸入系統數據庫,并將該卡號作為合法卡號下載給所有門(mén)禁機。當有1張M1卡在門(mén)禁機的有效工作范圍內時(shí),系統會(huì )自動(dòng)向卡發(fā)出命令,卡接收到命令后向門(mén)禁機反饋其SN。門(mén)禁機判斷收到的卡號是否合法,合法則驅動(dòng)電磁門(mén)鎖開(kāi)門(mén),并實(shí)時(shí)上傳其開(kāi)門(mén)記錄;如果是非法卡(未經(jīng)授權或已掛失的卡)則拒絕開(kāi)門(mén)并上傳報警信息。只有最高授權者(掌握授權密碼)才可以發(fā)管理員卡,管理員必須用管理員卡方可登錄發(fā)卡系統進(jìn)行發(fā)卡及下傳合法卡號、掛失、解掛、下傳黑名單等操作。 通過(guò)AT89C52對ZLG500的控制完成對卡的讀寫(xiě)。系統外圍配有RS232轉RS485接口能與PC機互連成網(wǎng)絡(luò ),可以完成讀卡、顯示卡號和出入時(shí)間、身份識別、開(kāi)鎖以及保存和上傳出入記錄、下載黑名單、設置開(kāi)門(mén)權限等功能。 門(mén)禁機模塊的主控軟件主要完成門(mén)禁機模塊的初始化、卡的識別、開(kāi)啟門(mén)鎖及保存有關(guān)數據和數據傳輸等五大功能。其總體工作流程如圖4所示。 ![]() 2.2 主控模塊 由圖3可以看出,智能卡門(mén)禁系統中主控模塊主要由MCU(AT89C52)、ZLG500、復位電路、時(shí)鐘電路、數據存儲接口電路、鍵盤(pán)與顯示接口電路及電鎖等幾部分組成?梢钥闯鯩CU除了完成對ZLG500讀寫(xiě)模塊的控制外,還要承擔其他功能的控制,主要包括4部分:數據存儲和數據傳輸部分、實(shí)時(shí)時(shí)鐘和掉電保護部分、鍵盤(pán)和顯示部分、驅動(dòng)控制部分。 2.2.1 數據存儲和數據傳輸模塊 各門(mén)禁點(diǎn)的出入記錄可采用實(shí)時(shí)上傳或定時(shí)采集的方式從門(mén)禁機傳輸給中央數據庫,前者對系統網(wǎng)絡(luò )速度要求較高,當網(wǎng)絡(luò )堵塞時(shí)有丟失數據的可能。本系統采用出入記錄暫時(shí)存儲在門(mén)禁機中,每隔一段時(shí)間(例如每周一次)上傳給中央數據庫的方式。為此要求門(mén)禁機具備一定容量的存儲器,用于暫存門(mén)禁數據以及由中央數據庫下載的授權卡號。門(mén)禁機存儲器的容量取決于一個(gè)門(mén)禁記錄的長(cháng)度、系統的卡容量以及定時(shí)上傳周期內最大的刷卡次數等,通常應留有一定的余量以免由于超出存儲容量而丟失數據。本系統采用AT24c256作為門(mén)禁機的存儲器,其存儲容量達64 KB,劃分成2個(gè)區:一個(gè)區用來(lái)存儲所讀取的記錄,另一個(gè)區用來(lái)存儲上位機下載的授權卡號。門(mén)禁機存儲器模塊的電路原理如圖5所示。 ![]() AT24C256是Atmel公司的具有I2C總線(xiàn)結構,可電擦寫(xiě)與編程的只讀存儲芯片(EEPROM)。MCU對AT24C256的讀寫(xiě)必須遵循I2C 總線(xiàn)傳輸的時(shí)序要求,與AT24C01基本一致,在此不再贅述。 對于1個(gè)單一的讀寫(xiě)器來(lái)講,自身的數據存儲是有限的。讀寫(xiě)器外帶的數據存儲器主要作為數據的臨時(shí)存儲,對于大量的、需要長(cháng)期保存的數據,一般是通過(guò)有線(xiàn)或無(wú)線(xiàn),甚至是網(wǎng)絡(luò )系統傳輸到主控計算機中進(jìn)行保存。 2.2.2主模塊的軟接口 下面以主模塊中ZLG500與MCU(AT89C52)的通信為例來(lái)介紹智能卡門(mén)禁系統中主模塊的軟接口。ZLG500初始化的子程序如下: ![]() ![]() 上述程序中CONFIG子程序為RC500的復位和配置子程序,是由MCU向ZLG500發(fā)出的不帶數據的命令程序;REQUEST子程序是MCU向 ZLG500發(fā)出的帶1個(gè)字節數據的命令程序,主要是檢查有效范圍內是否有卡存在;ANTICOLL子程序是防沖突操作,必須在執行RE—QUEST命令后立即執行。 2.2.3 時(shí)鐘控制 在門(mén)禁系統中,需要實(shí)時(shí)記錄出入數據(開(kāi)門(mén)的卡號及其出現的時(shí)間)。若采用單片機軟件計時(shí),一方面要占用硬件計數器資源,另一方面需要設置中斷、查詢(xún)等,耗費單片機的CPU資源。而在系統中采用芯片DSl302則能很好地解決這個(gè)問(wèn)題。DSl302是美國Dallas公司推出的高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘芯片,它可以對年、月、日、周末、時(shí)、分、秒進(jìn)行計時(shí),且具有閏年補償功能,工作電壓2.5~5.5 V。圖6所示是實(shí)時(shí)時(shí)鐘芯片DSl302與MCU連接電路原理圖,DSl302采用三線(xiàn)接口與MCU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節的時(shí)鐘信號或RAM數據。 ![]() MCU對DSl302的讀寫(xiě)控制主要包括DSl302的初始化和讀取DSl302的時(shí)間和日期,初始化過(guò)程就是給DSl302賦予初始的時(shí)間和日期。當實(shí)時(shí)時(shí)鐘芯片被啟動(dòng)后,在沒(méi)有接收到新的初始化指令的情況下,其內部的時(shí)鐘將一直不停地運行,從而保證時(shí)間的實(shí)時(shí)性和準確性;MCU在任何時(shí)候都可以通過(guò)讀取DSl302內部時(shí)間和日期寄存器中的值而獲得準確的時(shí)間和日期。關(guān)于實(shí)時(shí)時(shí)鐘芯片的使用可參見(jiàn)參考文獻。 3 與上位機的通信軟件接口設計 上位機數據庫管理系統采用Visual FoxPro編寫(xiě)。本系統采用標準的通信控件communications進(jìn)行通信程序的設計,實(shí)現掛失數據的發(fā)送、用戶(hù)卡號的發(fā)送、發(fā)卡和門(mén)禁模塊數據的接收。每次通信時(shí),首先在上位機的init事件中初始化通信控件olecontroll,初始化設置為: ![]() 結語(yǔ) 智能卡的應用并不是簡(jiǎn)單的讀寫(xiě)卡操作,而是一個(gè)綜合性的工程項目。它不僅包括卡和讀寫(xiě)模塊的選擇,還涉及讀寫(xiě)模塊的控制、數據的傳輸、數據的處理和存儲;既需要有硬件應用的知識,還必須具有軟件方面的能力。本系統經(jīng)過(guò)實(shí)際應用的驗證,系統運行穩定可靠,操作簡(jiǎn)單方便,因而具有較好的應用前景。 參考文獻 1. 廣州周立功單片機發(fā)展有限公司 ZLG500C Mifare卡讀寫(xiě)模塊應用 2. 洪家平 DS1307 及在太陽(yáng)能電池控制裝置中的應用 [期刊論文] -湖北師范學(xué)院學(xué)報(自然科學(xué)版)2007(3) 3. 高美珍 AT88RF020 型射頻識別卡及其應用 [期刊論文] -國外電子元器件2006(2) 4. 林凌.李剛.丁茹 新型單片機接口器件與技術(shù) 2005 作者:湖北師范學(xué)院 洪家平 來(lái)源:?jiǎn)纹瑱C與嵌入式系統應用 2009 (3) |