目次
1 緒論 1.1 課題研究的背景和意義 1.2 目前國(guó)內(nèi)外研究現(xiàn)狀 1.3 本課題設(shè)計(jì)的主要工作和任務(wù) 2 讀卡器系統(tǒng)方案設(shè)計(jì)與實(shí)現(xiàn) 2.1 IC卡介紹 2.2 讀卡器基本原理 2.3 總體方案論證 3 系統(tǒng)硬件設(shè)計(jì)與實(shí)現(xiàn) 3.1 電源模塊 3.2 人機(jī)接口模塊 3.3 系統(tǒng)時(shí)鐘模塊 3.4 存儲(chǔ)模塊 3.5 MF-RC500讀寫模塊 3.6 通信模塊 4 系統(tǒng)軟件設(shè)計(jì)與實(shí)現(xiàn) 4.1 軟件設(shè)計(jì)環(huán)境 4.2 主程序的設(shè)計(jì) 4.3 讀/寫卡程序設(shè)計(jì) 4.4 讀卡器外圍基本電路程序的設(shè)計(jì) 4.5 通信部分程序設(shè)計(jì) 5系統(tǒng)調(diào)試 結(jié) 論 致 謝 參 考 文 獻(xiàn) 附錄A 總電路圖 附錄B 讀/寫卡源程序
1 緒論 1.1 課題研究的背景和意義 IC卡是集成電路卡(Integrated Circuit Card)的英文簡(jiǎn)稱,在有些國(guó)家也稱之為智能卡、微芯片卡等,IC卡是在較為原始的磁卡的基礎(chǔ)上發(fā)展起來的,它的最初設(shè)想是由日本人提出來的。1969年12月,日本的有村國(guó)孝提出一種制造安全可靠的信用卡方法,并于1970年獲得專利,那時(shí)叫ID卡(Identification Card)。1974年,法國(guó)的羅蘭·莫雷諾(Roland Moreno)發(fā)明了帶集成電路芯片的塑料卡片,并取得了專利權(quán),這就是早期的IC卡。1976年法國(guó)布爾(Bull)公司研制出世界第一枚IC卡[1]。 早期的IC卡系統(tǒng)是接觸式的,它有其本身不可克服的缺點(diǎn),如接觸磨損、交易速率慢、難以維護(hù)、基礎(chǔ)設(shè)施投入大等。隨著信息業(yè)和服務(wù)業(yè)的全球化,在一些場(chǎng)合,對(duì)信息載體的便攜性、安全性及易用性等方面提出更高的要求,于是非接觸式IC卡以其無機(jī)械磨損、容易維護(hù)、方便使用等優(yōu)點(diǎn),成為IC卡中潛力最大的新軍而備受國(guó)內(nèi)外業(yè)界的矚目。 非接觸式IC卡系統(tǒng)是當(dāng)今世界先進(jìn)的射頻技術(shù)和IC卡技術(shù)相結(jié)合的產(chǎn)物,是世界上最近幾年發(fā)展起來的一項(xiàng)新技術(shù),它成功地將射頻識(shí)別技術(shù)和IC技術(shù)結(jié)合起來,解決了無源和免接觸這一難題,是電子器件領(lǐng)域的一大突破,使卡片在靠近讀寫器表面時(shí)即可完成卡中數(shù)據(jù)的讀寫操作。非接觸式IC卡一經(jīng)問世,便立即引起廣泛的關(guān)注。非接觸式IC卡操作方便、抗干擾性高、可靠性高、安全性高的特點(diǎn),使得它在一些接觸式IC卡不適用或者無法使用的場(chǎng)所,具有無可比擬的優(yōu)勢(shì),被廣泛應(yīng)用于公交、收費(fèi)、門禁系統(tǒng)、考勤系統(tǒng)等領(lǐng)域[2]。 目前非接觸式IC卡有很多不同的標(biāo)準(zhǔn),如IS014443A和IS014443B等,符合不同標(biāo)準(zhǔn)的卡片在不同的領(lǐng)域內(nèi)相互滲透和競(jìng)爭(zhēng)。卡片類型的多樣性決定了讀卡器的多樣性,而市場(chǎng)的多樣性則決定了即使是同類型的應(yīng)用,也可能使用不同類型的卡片,若讀卡器只能讀取某一種類型的卡片,那么在處理這個(gè)應(yīng)用時(shí),必將需要多臺(tái)讀卡器,造成資源的重復(fù)浪費(fèi),這樣的讀卡器必將不能適應(yīng)市場(chǎng)的需求,這就對(duì)讀卡器的讀卡能力提出了更高的要求。設(shè)計(jì)出一種能讀取多種類型卡片的讀卡器,既是市場(chǎng)應(yīng)用的需求,也是未來的發(fā)展趨勢(shì)。目前,讀卡器已經(jīng)開始大量應(yīng)用于各種“一卡通”系統(tǒng)中,這些應(yīng)用對(duì)讀卡器的功能要求越來越高,除了傳統(tǒng)的對(duì)卡號(hào)的讀取之外,需要能夠?qū)ㄆM(jìn)行更高層的數(shù)據(jù)操作,與PC設(shè)備之間能進(jìn)行信息交流。為了適應(yīng)這種發(fā)展趨勢(shì),非接觸式IC卡的讀卡器的開發(fā)與設(shè)計(jì)也迅速發(fā)展起來[3]。 1.2 目前國(guó)內(nèi)外研究現(xiàn)狀 智能卡的發(fā)展歷史并不久遠(yuǎn),而且全球各地發(fā)展不均衡,其中歐洲發(fā)展得最早、最好。智能IC卡源于七十年代的歐洲和日本,后來由法國(guó)人提出的將處理器置入IC卡卡片中的思想得到了廣泛接受,由于其具有完善的密碼功能從而有效的解決了智能卡的舞弊行為。隨后智能卡在1977-1998年間得到了迅速發(fā)展。九十年代初期,智能卡開始應(yīng)用于GSM數(shù)字移動(dòng)通訊、有線電視的收費(fèi)等領(lǐng)域。在美國(guó),智能卡發(fā)展相對(duì)遲緩,但隨著智能卡在歐洲的成功使用,其在美國(guó)產(chǎn)生巨大影響,盡管如此,美國(guó)在智能卡技術(shù)等領(lǐng)域仍處于世界領(lǐng)先地位。 據(jù)Innovation國(guó)際發(fā)明組織統(tǒng)計(jì),2005年10月到2006年9月全世界IC卡硬件產(chǎn)業(yè)中,IC卡及其讀寫設(shè)備數(shù)量分別為42000萬(wàn)張和877000臺(tái),其中法國(guó)分別占98%和71%,處于世界領(lǐng)先地位。目前,法國(guó)生產(chǎn)制造的IC卡不僅在數(shù)量上領(lǐng)先各國(guó),其應(yīng)用領(lǐng)域也靈活多樣,如在金融、電信、醫(yī)療和交通運(yùn)輸?shù)雀鱾(gè)領(lǐng)域都有IC卡的應(yīng)用 我國(guó)對(duì)IC卡行業(yè)的發(fā)展始于1994年,
1.3 本課題設(shè)計(jì)的主要工作和任務(wù) 非接觸式IC卡代表了IC卡發(fā)展的方向,同接觸式IC卡相比其獨(dú)有的優(yōu)點(diǎn)使其能夠在絕大多數(shù)場(chǎng)合代替接觸式IC卡的使用,而在非接觸式IC卡應(yīng)用系統(tǒng)中非接觸式IC卡讀卡器是關(guān)鍵設(shè)備。根據(jù)課題設(shè)計(jì)要求,本課題將開發(fā)一種基于飛利浦公司MF-RC500讀卡芯片的非接觸式IC卡讀卡器,其具有以下特點(diǎn):能識(shí)別TYPEA型卡片,讀取卡號(hào),并有防沖突功能;能對(duì)TYPEA 的卡片進(jìn)行高層操作;可以使用RS232通信接口輸出來與上位機(jī)之間通信;可根據(jù)實(shí)際需求將其作為門禁系統(tǒng)中的讀卡器,或者一卡通系統(tǒng)中的讀卡器。本設(shè)計(jì)完成后所要達(dá)到的主要指標(biāo)有: (1) 顯示系統(tǒng):液晶屏顯示,能顯示系統(tǒng)時(shí)鐘和卡片信息等; (2) 按鍵操作:能實(shí)現(xiàn)對(duì)系統(tǒng)的設(shè)置和卡上數(shù)據(jù)的操作; (3) 機(jī)器讀卡速度:0.5秒可完成一次打卡過程,讀卡距離為5至10厘米; (4) 保密性和防偽性:能辨認(rèn)卡的密碼,非授權(quán)范圍內(nèi)的卡作報(bào)警處理; (5) 存儲(chǔ)容量:每臺(tái)讀寫器最多可存儲(chǔ)2000條記錄。 本設(shè)計(jì)中需要解決的若干關(guān)鍵技術(shù)有: (1) 射頻識(shí)別技術(shù); (2) 軟件的安全機(jī)制; (3) 由于射頻的特殊性給系統(tǒng)調(diào)試帶來的困難。 該讀寫器完成以后,既可獨(dú)立使用,完成基本功能,外擴(kuò)簡(jiǎn)單接口后,就能構(gòu)成IC卡考勤、門禁、售飯一卡通等系統(tǒng),在公交、校園、娛樂場(chǎng)所等方面有廣泛的應(yīng)用前景。
- 讀卡器系統(tǒng)方案設(shè)計(jì)與實(shí)現(xiàn)
2.1IC卡介紹 目前經(jīng)常接觸到的IC卡有兩種:接觸式和非接觸式的IC卡。接觸式的IC卡通過機(jī)械觸點(diǎn)從讀寫器獲取能量和交換數(shù)據(jù);非接觸式IC卡通過線圈射頻感應(yīng)從讀寫器獲取能量和交換數(shù)據(jù),所以又稱射頻卡。日前在社會(huì)上常見的是接觸式IC卡,它具有存儲(chǔ)量大,可實(shí)現(xiàn)一卡多用等功能。但是,這類卡的讀寫操作速度較慢,操作也不方便,每次讀寫時(shí)必須把卡插入到讀寫器中才能完成數(shù)據(jù)交換,這樣在讀寫卡片頻繁的場(chǎng)合就很不方便,而且讀寫器的觸點(diǎn)和卡片上IC卡的觸腳暴露在外,容易損壞和搞臟而造成接觸不良。 非接觸式智能卡又稱射頻卡,是近幾年發(fā)展起來的新技術(shù)。它是根據(jù)射頻電磁感應(yīng)原理產(chǎn)生的,它的操作只需將卡放在讀寫器一定距離內(nèi)就能實(shí)現(xiàn)數(shù)據(jù)交換。它成功地將射頻識(shí)別技術(shù)和IC卡技術(shù)結(jié)合起來,將具有微處理器的集成電路芯片和天線封裝于塑料基片之中。讀寫器采用兆頻段及磁感應(yīng)技術(shù),通過無線方式對(duì)卡片中的信息進(jìn)行讀寫并采用高速率的半雙工通信協(xié)議。其優(yōu)點(diǎn)是應(yīng)用范圍廣、操作方便。因此,在公交、門禁、娛樂場(chǎng)所等方面有廣泛的應(yīng)用前景。目前我國(guó)引進(jìn)的射頻卡主要以PHILIPS公司的MIFARE卡為主[6]。 本系統(tǒng)在調(diào)試過程中使用的是PHILIPS公司的MFI IC S50,其屬于TYPEA型卡,下面對(duì)其做一些簡(jiǎn)述:Mifare1 IC 卡的核心是PHILIPS公司MF1 IC S50系列微模塊,它確定了卡片的特性以及卡片讀寫器的諸多性能。Mifare1 IC智能卡內(nèi)建有高速的MCU,卡片上除了IC微晶片及一副高效率天線外,無任何其他元件;卡片上無源,工作時(shí)的電源能量由讀寫器天線發(fā)送無線電載波信號(hào)耦合到卡片上天線而產(chǎn)生電能;它與讀寫器通信使用握手式半雙工通信協(xié)議。 2.2 讀卡器基本原理 非接觸式IC卡讀寫器以射頻識(shí)別技術(shù)為核心,讀寫器內(nèi)主要使用專用的讀寫處理芯片,它是讀/寫操作的核心器件,其功能包括調(diào)制、解調(diào)、產(chǎn)生射頻信號(hào)、安全管理和防碰撞機(jī)制。其內(nèi)部結(jié)構(gòu)分為射頻區(qū)和接口區(qū):射頻區(qū)內(nèi)含調(diào)制解調(diào)器和電源供電電路,直接與天線連接;接口區(qū)有與單片機(jī)相連的端口,還具有與射頻區(qū)相連的收/發(fā)器、數(shù)據(jù)緩沖器、防碰撞模塊和控制單元。這是與智能IC卡實(shí)現(xiàn)無線通信的核心模塊,也是讀寫器讀寫智能IC卡的關(guān)鍵接口芯片。讀寫器工作時(shí),不斷地向外發(fā)出一組固定頻率的電磁波,當(dāng)有卡靠近時(shí),卡片內(nèi)有一個(gè)LG串聯(lián)諧振電路,其頻率與讀寫器的發(fā)射頻率相同,這樣在電磁波的激勵(lì)下,LG諧振電路產(chǎn)生共振,從而使電容充電有了電荷。在這個(gè)電容另一端,接有一個(gè)單向?qū)щ姷碾娮颖茫瑢㈦娙輧?nèi)的電荷送到另一個(gè)電容內(nèi)存儲(chǔ)。當(dāng)電容器充電達(dá)到一定電壓值時(shí),此電容就作為電源為卡片上的其他電路提供工作電壓,將卡內(nèi)數(shù)據(jù)發(fā)射出去或接收讀寫器發(fā)出的數(shù)據(jù)與保存[7]。讀卡器的工作過程如下: (1) 讀卡器將載波信號(hào)經(jīng)天線向外發(fā)送; (2) 卡進(jìn)入讀卡器的工作區(qū)域后,卡內(nèi)天線和電容組成的諧振回路接收讀卡器發(fā)射的載波信號(hào),射頻接口模塊將其轉(zhuǎn)換成電源電壓、復(fù)位信號(hào),使卡片激活; (3) 存取控制模塊將存儲(chǔ)器中信息調(diào)制到載波上,經(jīng)卡上天線送給讀卡器; (4) 讀卡器對(duì)接收到的信號(hào)進(jìn)行解調(diào)、解碼后送至后臺(tái)計(jì)算機(jī); (5) 后臺(tái)計(jì)算機(jī)根據(jù)卡號(hào)的合法性,針對(duì)不同應(yīng)用做出相應(yīng)的處理和控制。 2.3 總體方案論證 2.3.1 各模塊方案選擇與論證 (1)控制器的選擇 方案一:采用ATMEL公司的AT89S52作為系統(tǒng)的控制器。AT89S52單片機(jī)算術(shù)運(yùn)算功能強(qiáng)、軟件編程靈活、自由度大,可用軟件編程實(shí)現(xiàn)各種算法和邏輯控制,并且由于其功耗低、體積小、技術(shù)成熟和成本低等特點(diǎn),使其在各個(gè)領(lǐng)域應(yīng)用廣泛。AT89S52是我們熟悉的控制器,編程比較熟悉,易于掌握。 方案二:采用FPGA(現(xiàn)場(chǎng)可編程門陣列)作為系統(tǒng)的控制器。由于本設(shè)計(jì)對(duì)數(shù)據(jù)處理的速度要求不高,F(xiàn)PGA的高速處理優(yōu)勢(shì)得不到充分的體現(xiàn),并且由于集成度高,使其成本偏高,同時(shí)由于芯片的引腳較多,實(shí)物硬件電路板布線復(fù)雜,加重了電路設(shè)計(jì)和實(shí)際焊接的工作。由于AT89S52控制器能夠很好的實(shí)現(xiàn)該系統(tǒng)的各項(xiàng)功能,成本低,技術(shù)成熟,故采用方案一。 (2)RFID讀卡芯片的選擇 隨著RFID市場(chǎng)的迅猛增長(zhǎng),各大傳統(tǒng)IC芯片制造商都加入到RFID讀卡芯片的開發(fā)當(dāng)中,可供選擇的芯片很多,下面介紹幾款主流的RFID讀寫芯片: 1) TI公司的TRF7960芯片。TRF7960是一個(gè)整合的13.56MHz RFID讀卡器系統(tǒng)的模擬前端和數(shù)據(jù)幀系統(tǒng),可以用于較寬范圍的近耦合RFID系統(tǒng)。它的特點(diǎn)是完全整合協(xié)議處理,內(nèi)部獨(dú)立的模擬與數(shù)字電源,AM和PM雙信號(hào)輸入接收解調(diào),讀卡器與讀卡器之間反沖突算法,輸出功率可調(diào),內(nèi)建帶通濾波器并且用戶可選擇邊界頻率,低功耗設(shè)計(jì),掉電模式下電流小于lμA,激活狀態(tài)10mA;與微處理器接口為8位并行接口或者4線SPI接口[8]。 2) NXP公司(原飛利浦半導(dǎo)體公司)是較早進(jìn)入RFID芯片行業(yè)的國(guó)際半導(dǎo)體公司,在射頻讀寫芯片上產(chǎn)品較全。MF-RC500芯片就是NXP公司生產(chǎn)的。MF-RC500是高整合的13.56MHz非接觸IC卡讀寫芯片,整合了所有主動(dòng)非接觸通信方式和協(xié)議,MF-RC500支持ISO 14443A&B的所有層的通信方案;內(nèi)部收發(fā)器部分能夠驅(qū)動(dòng)近耦合設(shè)計(jì)的天線而不需要另外的電路;數(shù)字部分能處理完整的ISO14443幀數(shù)據(jù)還有錯(cuò)誤檢測(cè);具有合適的并行接口,可以直接與8位的微處理器相連,并且支持SPI兼容接口。 由于MF-RC500能夠滿足設(shè)計(jì)需求,而且應(yīng)用范圍比其他的芯片更廣,資料齊備,于是選擇MF-RC500作為本設(shè)計(jì)的射頻接口芯片。 (3)顯示模塊的選擇 方案一:使用LED顯示。數(shù)碼管顯示,對(duì)外界環(huán)境要求低,操作簡(jiǎn)單,但需要采用動(dòng)態(tài)掃描,占用資源比較多,而且其不能很好的顯示字符,由于本系統(tǒng)要顯示的信息量較多,所以雖然該方案在程序上容易實(shí)現(xiàn),但并不能滿足要求。 方案二:使用液晶顯示屏顯示各種信息。液晶顯示屏具有輕薄短小、低耗電量、平面直角顯示以及影像穩(wěn)定不閃爍等優(yōu)勢(shì),并且符合本系統(tǒng)顯示信息量多的需求,利用LCD自帶的字符庫(kù),進(jìn)行編程就可以實(shí)現(xiàn)所需信息的顯示,其不必利用控制芯片創(chuàng)建字符庫(kù),既節(jié)省了資源,又省去了該部分的大量編程任務(wù)。為了使人機(jī)界面更加友好,操作更加方便,采用LCD液晶顯示。 (4)鍵盤模塊的選擇 方案一:采用獨(dú)立式按鍵。獨(dú)立式按鍵接口設(shè)計(jì)優(yōu)點(diǎn)是電路的配置靈活,軟件實(shí)現(xiàn)簡(jiǎn)單。但缺點(diǎn)也很明顯,每個(gè)按鍵需要占用一跟口線,若按鍵較多,資源浪費(fèi)將比較嚴(yán)重。因此本方法主要用于按鍵較少或?qū)Σ僮魉俣纫筝^高的場(chǎng)合。 方案二:采用矩陣式按鍵。矩陣式按鍵接口適用于按鍵數(shù)量較多,又不想使用專用鍵盤芯片的場(chǎng)合。這種方式的按鍵接口由行線和列線組成,按鍵位于行、列的交叉點(diǎn)上。這種方的優(yōu)點(diǎn)是可以節(jié)省很多I/O資源,相對(duì)于專用鍵盤可以節(jié)省成本,且更為靈活。缺點(diǎn)是需要用軟件處理消抖、重鍵等。由于該系統(tǒng)要求具有對(duì)卡片進(jìn)行讀/寫操作,系統(tǒng)時(shí)鐘的設(shè)置等,用到的按鍵較多,故采用方案二。 (5)系統(tǒng)時(shí)鐘和存儲(chǔ)芯片的選擇 刷卡時(shí)要記錄刷卡的時(shí)間,用外接硬件時(shí)鐘芯片的辦法,為系統(tǒng)提供一個(gè)準(zhǔn)確可靠的時(shí)鐘,用3V備用電池保證在系統(tǒng)掉電時(shí)也能正常走時(shí)。在此選用體積小、接口簡(jiǎn)單的實(shí)時(shí)時(shí)鐘芯片DS1302。它是美國(guó)Dallas公司推出的低功耗串行通信接口專用芯片,采用3線串行方式與單片機(jī)進(jìn)行數(shù)據(jù)通信[9]。 采用AT24C64作數(shù)據(jù)存儲(chǔ)器。AT24C64是串行E2PROM存儲(chǔ)器,支持I2C總線數(shù)據(jù)傳輸協(xié)議,8K存儲(chǔ)器容量,用兩根線與CPU構(gòu)成串行接口。由于本設(shè)計(jì)采用的AT89S52單片機(jī)不具備I2C總線接口,因此采用軟件法加以解決。 2.3.2 總體方案確定 根據(jù)上述分析,系統(tǒng)設(shè)計(jì)方案如下:本IC卡讀寫器擬以ATMEL公司的AT89S52單片機(jī)作為微控制器,采用MF-RC500芯片作為射頻卡讀/寫模塊,采用DS1302作為系統(tǒng)時(shí)鐘,以AT24C64作為不掉電存儲(chǔ)器,采用LCD顯示,并以RS232接口和計(jì)算機(jī)通信,組成一套功能齊全的非接觸IC卡讀寫系統(tǒng)。當(dāng)IC卡在天線區(qū)域經(jīng)過時(shí),單片機(jī)自動(dòng)需求對(duì)IC卡進(jìn)行讀寫,再把讀/寫卡的時(shí)間一起存到存儲(chǔ)器中,計(jì)算機(jī)可以通過串口把相關(guān)讀/寫卡信息讀到計(jì)算機(jī)上,再進(jìn)行統(tǒng)計(jì)、報(bào)表和打印輸出等。系統(tǒng)框圖如圖2.1所示。 
圖2.1 IC卡讀寫器系統(tǒng)結(jié)構(gòu)框圖 - 系統(tǒng)硬件設(shè)計(jì)與實(shí)現(xiàn)
3.1 電源模塊 該電源按常規(guī)設(shè)計(jì),為系統(tǒng)工作提供所需電源,其輸入為220V、50Hz交流電,輸出電壓等級(jí)為±5V,電路原理圖如圖3.1所示。該部分主要采用78系列穩(wěn)壓器,結(jié)構(gòu)簡(jiǎn)單,調(diào)整方便,輸出電壓紋波小。當(dāng)所需電流超過穩(wěn)壓器標(biāo)定值時(shí),可采用外接功率管的方法來擴(kuò)大輸出電流。市電交流220V經(jīng)變壓器降壓為交流6V,經(jīng)過全橋整流輸出直流電流,再經(jīng)過1000μF的電解電容濾波,除去整流后的交流成分,送至各三端穩(wěn)壓器,輸出需要的電壓。經(jīng)過各三端穩(wěn)壓器穩(wěn)壓后,在LM7805輸出端輸出+5V直流電壓,LM7905輸出的端輸出-5V直流電壓[10]。 圖3.1 ±5V直流穩(wěn)壓電源 3.2 人機(jī)接口模塊 本系統(tǒng)的人機(jī)接口部分采用LCD顯示、3×2矩陣式鍵盤,用來實(shí)現(xiàn)對(duì)IC 卡的操作和系統(tǒng)設(shè)置等功能。LCD型號(hào)為ACM1602A,該字符型液晶顯示模塊由字符型液晶顯示屏,具有字符發(fā)生器ROM可顯示192種字符,有64個(gè)字節(jié)的自定義字符RAM,可自定義8個(gè)5?8點(diǎn)陣字符或四個(gè)5?11點(diǎn)陣字符。 在此系統(tǒng)中采用LCD分屏顯示,每一屏第一行的首地址是80H,第二行的首地址是0C0H;每行寫入16個(gè)字節(jié),每屏寫入二行(第一行為系統(tǒng)的時(shí)間,第二行為卡片的信息)。ACM1602A集成度高,其內(nèi)部已經(jīng)帶有驅(qū)動(dòng)電路,所以不用再為其設(shè)計(jì)驅(qū)動(dòng)電路,由于1602是一個(gè)并口器件所以占用單片機(jī)的接口資源較多,為節(jié)省單片機(jī)接口資源使用了一個(gè)74HC595進(jìn)行串口轉(zhuǎn)并口,使1602與單片機(jī)進(jìn)行間接連接,LCD與單片機(jī)的連結(jié)圖如圖3.2所示。 
圖3.2 LCD顯示電路 3.3 系統(tǒng)時(shí)鐘模塊 刷卡時(shí)要記錄刷卡的時(shí)間,用外接硬件實(shí)時(shí)時(shí)鐘芯片的辦法,為系統(tǒng)提供一個(gè)準(zhǔn)確可靠的時(shí)鐘,用3V備用電池保證在系統(tǒng)掉電時(shí)也能正常走時(shí),在此選用體積小、接口簡(jiǎn)單的實(shí)時(shí)時(shí)鐘芯片DS1302。 (1)時(shí)鐘芯片介紹 DS1302是美國(guó)DALLAS公司開發(fā)的具備功耗低、接口容易串行實(shí)時(shí)時(shí)鐘芯片。在本設(shè)計(jì)中使用的DS1302為8腳DIP封裝形式,其中1腳和8腳為電源電壓引腳,單電源供電時(shí)接8腳,雙電源供電時(shí),主工作電源接1腳,備份電源接8腳。2腳和3腳為32.768KHz晶振引腳;5腳RST為復(fù)位端,若其被置為低電平,則中止所有數(shù)據(jù)傳送,I/O腳變?yōu)楦咦钁B(tài),系統(tǒng)復(fù)位;6腳I/O為數(shù)據(jù)輸人/輸出端;7腳SCLK為串行時(shí)鐘輸入端,所有地址/命令字節(jié)和數(shù)據(jù)字節(jié)都是在時(shí)鐘的同步控制下從I/O腳串行輸入輸出的。DS1302通過SCLK、I/O、RST三根線與外部進(jìn)行同步串行通信。 (2)DS1302與單片機(jī)的連接 在本設(shè)計(jì)中采用單片機(jī)的P1.0-P1.2與DS1302進(jìn)行數(shù)據(jù)通信,以提供系統(tǒng)所需的時(shí)鐘,其連接方法如圖3.3所示。 
圖3.3 DS1302與單片機(jī)接口電路 3.4 存儲(chǔ)模塊 在本設(shè)計(jì)中采用串行E2PROM芯片AT24C64作數(shù)據(jù)存儲(chǔ)器。AT24C64 是ATMEL公司生產(chǎn)的采用I2C 總線標(biāo)準(zhǔn)常用的串行E2PROM 存儲(chǔ)芯片,其支持I2C總線數(shù)據(jù)傳輸協(xié)議,64K(bit)存儲(chǔ)器容量,用兩根線與CPU構(gòu)成串行接口。AT24C64一般具有兩種寫入方式,一種是字節(jié)寫入方式,還有一種是頁(yè)寫入方式。AT24C64的讀操作有當(dāng)前地址讀、隨機(jī)讀、多字節(jié)讀三種方式。AT24C64其主要管腳功能描述如下:SCL,串行時(shí)鐘。這是一個(gè)輸入管腳,用于產(chǎn)生器件所有數(shù)據(jù)發(fā)送或接收的時(shí)鐘;SDA,串行數(shù)據(jù)/地址。這是一個(gè)雙向傳輸端,用于傳送地址和所有數(shù)據(jù)的發(fā)送或接收;A0、A1、A2,器件地址輸入端,這些輸入端用于多個(gè)器件并聯(lián)時(shí)設(shè)置器件地址[11]。 在系統(tǒng)中采用單片機(jī)的P3.3、P3.4口與AT24C64進(jìn)行連接,其與單片機(jī)的接口接法電路如圖3.4所示,由于本系統(tǒng)中采用到的AT89S52單片機(jī)不具備I2C總線接口,因此采用軟件法加以解決。
圖3.4 AT24C64與單片機(jī)接口電路 3.5 MF-RC500讀寫模塊 3.5.1 MF-RC500介紹 PHILIPS公司的MF-RC500是應(yīng)用于13.56MHz非接觸式通信中高集成讀卡IC系列中的一員。該讀卡IC系列利用先進(jìn)的調(diào)制和解調(diào)概念,完全集成了在13.56MHz下所有類型的被動(dòng)非接觸式通信方式和協(xié)議。MF-RC500支持IS014443A所有的層,其功能框圖如下: 圖3.5 MF-RC500的功能框圖 MF-RC500內(nèi)部包括并行微控制器接口、雙向FIFO緩沖區(qū)、中斷、數(shù)據(jù)處理單元、狀態(tài)控制單元、安全和密碼控制單元、模擬電路接口及天線接口。MF-RC500外部接口包括數(shù)據(jù)總線、地址總線、控制總線、電源等。MF-RC500的并行微控制器接口自動(dòng)檢測(cè)連接的8位并行接口的類型。它包含了一個(gè)雙向FIFO緩沖區(qū)和一個(gè)可配置的中斷輸出,這樣就為連接各種MCU提供了很大的靈活性,即使使用非常低成本的器件也能滿足高速非接觸式通信的要求。數(shù)據(jù)處理部分執(zhí)行數(shù)據(jù)的并行-串行轉(zhuǎn)換[12]。狀態(tài)和控制部分允許對(duì)器件進(jìn)行配置以使性能調(diào)節(jié)到最佳狀態(tài)。模擬電路包含一個(gè)具有非常低阻抗橋驅(qū)動(dòng)器輸出的發(fā)送部分,這使得最大操作距離可達(dá)100mm,接收器可以檢測(cè)到非常弱的應(yīng)答信號(hào)。MF-RC500管腳如圖3.6所示。 
圖3.6 MF-RC500管腳圖 該器件為32腳SO封裝,器件使用了3個(gè)獨(dú)立的電源以實(shí)現(xiàn)在EMC特性和信號(hào)解耦方面達(dá)到最佳性能。MF-RC500具有出色的RF性能并且模擬和數(shù)字部分可適應(yīng)不同的操作電壓,其驅(qū)動(dòng)、模擬、數(shù)字部分分別使用單獨(dú)電源供電。 表3.1 天線連接管腳
為了驅(qū)動(dòng)天線,MF-RC500通過TXl和TX2提供13.56MHz的能量載波。根據(jù)寄存器的設(shè)定對(duì)發(fā)送數(shù)據(jù)進(jìn)行調(diào)制得到發(fā)送的信號(hào)。智能卡采用RF場(chǎng)的負(fù)載調(diào)制進(jìn)行響應(yīng)。天線拾取的信號(hào)經(jīng)過天線匹配電路送到RX腳,RC500內(nèi)部接收器對(duì)信號(hào)進(jìn)行檢測(cè)、處理,然后將數(shù)據(jù)發(fā)送到并行接口由微控制器進(jìn)行讀取。 表3.2 MF-RC500并行口控制管腳
3.5.2 天線模塊的設(shè)計(jì) 為了同非接觸式智能卡通信,讀卡器內(nèi)必須有能發(fā)射和接收射頻信號(hào)的天線。天線用于產(chǎn)生磁通量?,而磁通量用于向應(yīng)答器提供電源并在閱讀器和應(yīng)答器之間傳送信息。因此,對(duì)讀卡器天線的構(gòu)造有了三個(gè)基本的要求: ? 使天線線圈的電流i1最大,用于產(chǎn)生最大的磁通量?; ? 功率匹配,以最大程度地利用產(chǎn)生磁通量的可用能量; ? 足夠的帶寬,以無失真地傳送數(shù)據(jù)調(diào)制的載波信號(hào)[13]。 (1)天線尺寸和讀寫距離 由于MF-RC500是低功耗設(shè)計(jì),因此卡和天線之間的耦合系數(shù)必須符合一定的值,卡和天線之間的耦合系數(shù)不能低于0.3。天線一般設(shè)計(jì)為三圈,可以設(shè)計(jì)為圓形或者方形天線。天線的直徑必須介于0.5-1.5mm之間。表3.3 給出了卡和天線的耦合系數(shù)為0.3 時(shí)的天線大小和讀寫距離關(guān)系表。 表3.3 天線大小和讀寫距離關(guān)系表
根據(jù)技術(shù)指標(biāo)以及尺寸等方面的要求,要本設(shè)計(jì)中讀寫器天線參數(shù)如下: 天線形狀:方形天線 天線圈數(shù):三圈 幾何尺寸:65mm×54mm 天線導(dǎo)體直徑:1mm (2)天線電感的計(jì)算 天線的電感必須介于800nH和4.2μH之間。天線的電感通過下列公式計(jì)算:  (3.1) 其中: L—讀卡器天線電感,μH; I—天線導(dǎo)體長(zhǎng)度,cm; D—天線導(dǎo)體寬度,cm; N—天線導(dǎo)體圈數(shù); P—由天線線圈的技術(shù)而定的N的指數(shù)因子。 上述天線線圈的電感公式只能作為首次估測(cè)之用,實(shí)際的天線線圈的電感必須通過儀器測(cè)量而定,但偏差不會(huì)很大。根據(jù)以上公式以及本設(shè)計(jì)中的參數(shù),P值取1.6,計(jì)算出的天線的電感L得1895μH。 (3)EMC電路及接收電路 EMC電路:射頻識(shí)別系統(tǒng)的工作頻率為13.56MHz,是由一個(gè)石英晶振產(chǎn)生的,同時(shí)它還產(chǎn)生更高頻率的諧波,為了確保能夠有效抑制三次,五次和更高次的諧波對(duì)信號(hào)的干擾作用,需要有一個(gè)低通濾波器來濾除這些高次諧波。 接收電路:MF-RC500內(nèi)部的信號(hào)接收部分使用由子載波的雙邊帶調(diào)制出的信號(hào),為了減少干擾,在地和VMID間接了一個(gè)電容,接收部分需要在Rx和VMID腳之間接一個(gè)電阻分壓結(jié)構(gòu)。另外,在天線線圈和分壓器之間串一個(gè)電容會(huì)獲得質(zhì)量更高的信號(hào)[14]。濾波器與接收電路的電路原理圖如圖3.6所示。 圖3.7 EMC及接收電路 (4)天線電路圖 天線電路圖如圖3.8所示。 圖3.8 天線電路 圖中電容C2A_a、C2A_b、C2A_a、C2A_b、(通稱C2)的值是由天線的電感值決定的,且需要根據(jù)天線的形狀進(jìn)行調(diào)整。C2電容的大小嚴(yán)格影響讀卡器的性能,這就需要在確定了卡的類型之后在實(shí)際的使用環(huán)境中進(jìn)行試驗(yàn),確定不同的C2值,使讀卡器具有最好的性能表現(xiàn)。 RC500有一個(gè)內(nèi)部信號(hào)驅(qū)動(dòng)管腳AUX,當(dāng)讀卡器發(fā)出某一指令時(shí),可以使用示波器觀察該引腳的輸出信號(hào),不斷改變卡與讀卡器之間的距離和C2值,示波器輸出不同的波形,根據(jù)不同的波形即可確定讀卡器最好性能的C2值[15]。在本課題設(shè)計(jì)中,根據(jù)天線的參數(shù)進(jìn)行試驗(yàn),得到的最終C2值如表3.4所示。 表3.4 C2電容值表
(5)天線的品質(zhì)因數(shù)和匹配電阻 用于電感耦合式射頻識(shí)別系統(tǒng)的天線,其特征值是諧振頻率f0和品質(zhì)因數(shù)Q。較高的品質(zhì)因數(shù)Q值會(huì)使天線線圈中的電流強(qiáng)度大,由此改善對(duì)應(yīng)答器的功率改善情況。與之相反,天線的傳輸帶寬剛好與品質(zhì)因數(shù)成反比例變化,選擇的品質(zhì)因數(shù)過高會(huì)導(dǎo)致帶寬縮小從而明顯地減弱應(yīng)答器接收到的調(diào)制邊帶。 電感讀卡器天線的品質(zhì)因數(shù)可以通過線圈電阻與線圈電阻的歐姆損耗和/或串聯(lián)電阻的比值計(jì)算出來,公式如下:  (3.2) 其中fR=13.56MHz,由前面的分析可以知道天線的感抗LANT和阻抗RANT,也可以用儀器測(cè)出來。一般情況下Q值在10到50之間,作為數(shù)據(jù)傳輸過程這個(gè)值還會(huì)減小,數(shù)據(jù)從讀卡器到射頻卡使用米勒編碼,脈沖寬度為T=3μs,帶寬B定義如下:  (3.3) 所以Q值:  (3.4) 考慮到溫度漂移等其他因素的影響,實(shí)際上可以把Q值定在35是一個(gè)比較合理的值。考慮到在估算中減小了Q值,所以這里需要外加一個(gè)電阻來調(diào)節(jié)天線的品質(zhì)因素,可以用下面的公式來計(jì)算REXT:  (3.5) 3.5.3 MF-RC500與AT89S52連接圖 MF-RC500與AT89S52連接圖如圖3.9所示,圖中單片機(jī)AT89S52作為控制核心,主要完成數(shù)據(jù)采集、處理、存儲(chǔ)及控制電路工作;MF-RC500 支持不同的微控制器接口,一個(gè)智能的自動(dòng)檢測(cè)邏輯可以自動(dòng)適應(yīng)系統(tǒng)總線的并行接口。圖中使用信號(hào)NCS選擇芯片。對(duì)于MF-RC500,若要使用獨(dú)立的地址和數(shù)據(jù)總線與微控制器相連,必須將ALE腳連接到DVDD,若使用復(fù)用的地址和數(shù)據(jù)總線與控制器接口,必須將ALE腳連到微控制器的ALE信號(hào)。在本設(shè)計(jì)中,該讀寫器采用地址數(shù)據(jù)總線復(fù)用方式與微控制器相連。在對(duì)MF-RC500進(jìn)行讀寫操作時(shí),若要使用NWR和NRD與微控制器相連,則這兩個(gè)引腳應(yīng)該連接到微控制器的讀寫管腳上。圖中使AT89S52的WR和RD管腳分別與MF-RC500的NWR管腳和NRD管腳相連來控制讀寫使能;MF-RC500工作頻率由石英晶體而產(chǎn)生,同時(shí)與OSCIN管腳相連可作為外部時(shí)鐘;P3.2管腳與MF-RC500的IRQ管腳相連用以接收中斷請(qǐng)求;由圖可以看出,本系統(tǒng)采用中斷(INT0)工作模式,即MCU利用MF-RC500提供中斷信息對(duì)其進(jìn)行控制。另外,根據(jù)系統(tǒng)的需要,可以采用查詢方式對(duì)MF-RC500進(jìn)行操作。 圖3.9 MF-RC500與AT89S52連接圖 3.6 通信模塊 本智能卡讀寫器采用RS232標(biāo)準(zhǔn)來實(shí)現(xiàn)讀卡器和上位機(jī)之間的通信,能實(shí)現(xiàn)RS232通信協(xié)議的芯片很多,其中MAXIM公司生產(chǎn)的MAX232是一款比較優(yōu)良的RS232通信芯片。選取它的主要依據(jù)在于:?jiǎn)?V電源供電,與讀卡器里其它芯片的工作電壓相同;符合所有EIA/232E標(biāo)準(zhǔn);多路輸入輸出。MAX232其引腳功能說明如表3.5所示。
表3.5 MAX232引腳說明
在硬件電路連接上采用三線制(RXD、TXD、GND)軟握手的零MODEM方式,即將PC機(jī)和單片機(jī)的發(fā)送數(shù)據(jù)線(TXD)與接收數(shù)據(jù)(RXD)交叉連接,二者的地線(GND)直接相連,而其它信號(hào)線、如握手信號(hào)均不用,而采用軟件握手,這樣既可以實(shí)現(xiàn)預(yù)定的任務(wù)又可以簡(jiǎn)化電路設(shè)計(jì)、節(jié)約成本。MAX232與AT89S52的電路連接如圖3.10所示。 圖3.10 MAX232與AT89S52的連接圖
- 系統(tǒng)軟件設(shè)計(jì)與實(shí)現(xiàn)
非接觸智能卡系統(tǒng)的軟件設(shè)計(jì)可分為四部分,分別為主程序設(shè)計(jì)、RC500的讀/寫程序的設(shè)計(jì)、讀卡器外圍基本電路的應(yīng)用程序設(shè)計(jì)和通信部分程序的設(shè)計(jì)。主程序主要包括:IC卡讀/寫/密碼驗(yàn)證/擦除操作程序,RC500通信中斷處理程序,鍵盤中斷處理程序,PC機(jī)通信中斷處理程序,顯示程序及存儲(chǔ)器讀寫程序等,對(duì)MF-RC500的應(yīng)用程序的設(shè)計(jì)也即是對(duì)MF-RC500操作指令的程序設(shè)計(jì),對(duì)讀卡器外圍基本電路程序的設(shè)計(jì)包括LCD顯示程序設(shè)計(jì)、鍵盤掃描程序設(shè)計(jì)、數(shù)據(jù)存儲(chǔ)程序設(shè)計(jì)和RS232通信程序設(shè)計(jì)。 4.1 軟件設(shè)計(jì)環(huán)境 一個(gè)好的程序設(shè)計(jì)思想,加上適當(dāng)?shù)木幾g軟件、仿真器和編程器,是單片機(jī)軟件開發(fā)的基本要求。本系統(tǒng)程序的設(shè)計(jì)以模塊化和結(jié)構(gòu)化的設(shè)計(jì)思想為指導(dǎo)。單片機(jī)開發(fā)所使用的語(yǔ)言一般為匯編語(yǔ)言。匯編語(yǔ)言的優(yōu)點(diǎn)是代碼生成效率高,程序運(yùn)行速度快,其缺點(diǎn)是程序的可讀性和可移植性都較差,而且用匯編語(yǔ)言編寫單片機(jī)應(yīng)用系統(tǒng)程序的周期長(zhǎng),調(diào)試和排錯(cuò)比較困難。C語(yǔ)言是一種通用的計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,在國(guó)際上十分流行,它既可用來編寫計(jì)算機(jī)的系統(tǒng)程序,也可用來編寫一般的應(yīng)用程序。用它編寫的程序,具有較好的可讀性和可移植性。有經(jīng)驗(yàn)表明,用C語(yǔ)言編寫的程序生成代碼的效率僅比用匯編語(yǔ)言編寫的程序10~20%。德國(guó)Keil軟件公司的C51編譯器可以直接對(duì)8051單片機(jī)的內(nèi)部特殊功能寄存器和I/O口進(jìn)行操作,直接訪問片內(nèi)或片外存儲(chǔ)器,還可以進(jìn)行各種位操作,能產(chǎn)生簡(jiǎn)潔、高效率的程序代碼,在代碼質(zhì)量上可以與匯編語(yǔ)言相媲美。因此系統(tǒng)在設(shè)計(jì)中多數(shù)的程序使用了C語(yǔ)言進(jìn)行設(shè)計(jì),少數(shù)的一些程序用匯編語(yǔ)言編寫,用C語(yǔ)言進(jìn)行調(diào)用。 4.2 主程序的設(shè)計(jì) 讀卡器工作的過程是一個(gè)復(fù)雜的程序執(zhí)行過程,要執(zhí)行一系列的操作指令,調(diào)用多個(gè)函數(shù)。其主要包括鍵盤掃描、LCD顯示、讀寫E2PROM、讀/寫卡及與上位機(jī)通信等。這一系列的操作必須按固定的順序進(jìn)行。在沒MF1卡進(jìn)入射頻天線有效范圍內(nèi)時(shí),在LCD液晶上顯示當(dāng)前時(shí)鐘,當(dāng)有MF1卡進(jìn)入到射頻天線的有效范圍內(nèi)時(shí),讀卡程序驗(yàn)證卡及密碼成功后,將卡號(hào)和讀卡時(shí)間作為一條記錄存入E2PROM存儲(chǔ)器中,并在LCD顯示器上顯示該卡的卡號(hào)等信息。 讀卡器的主程序主要由下位機(jī)來完成,單片機(jī)中的程序主要包括:IC卡讀/寫/密碼驗(yàn)證/擦除操作程序,與RC500通信中斷處理程序,鍵盤中斷處理程序,與PC機(jī)通信中斷處理程序,顯示程序及存儲(chǔ)器讀寫程序等等[16]。讀卡器的主程序流程圖如圖4.1所示。 圖4.1 讀卡器主程序流程圖 4.3 讀/寫卡程序設(shè)計(jì) 4.3.1 MF-RC500指令說明 MCU對(duì)MIFARE非接觸式智能卡的控制是通過MF-RC500來實(shí)現(xiàn)的,MF-RC500是MCU和MIFARE非接觸式智能卡之間的通信載體。MCU對(duì)MF-RC500的控制是以MCU發(fā)出MF-RC500的指令來達(dá)到的,MF-RC500收到指令之后執(zhí)行這些指令。MF-RC500的指令主要有:Request std,Request all,Anticollision,Select,Authentication,Read,Write,它們可以完成MCU對(duì)MIFARE非接觸式智能卡的很多應(yīng)用場(chǎng)合的控制。 MCU對(duì)MF-RC500的某一指令操作不是簡(jiǎn)單的一條指令所能完成的,必須有一個(gè)程序的序列來完成,其中有對(duì)MF-RC500硬件內(nèi)核寄存器的讀/寫以及根據(jù)讀出的硬件內(nèi)核寄存器的內(nèi)容進(jìn)行語(yǔ)言軟件上的判斷和設(shè)置。不同的指令將設(shè)置不同的MF-RC500內(nèi)部寄存器以及應(yīng)有不同的編程語(yǔ)言程序序列。MF-RC500具體指令說明及程序設(shè)計(jì)如下: (1)“Answer to Request”(應(yīng)答或復(fù)位應(yīng)答) 表4.1 復(fù)位應(yīng)答指令
Request指令將通知MF-RC500在天線有效的工作范圍內(nèi)尋找WARE卡片。如果有MIFARE卡片存在,這一指令將分別與MIFARE卡片進(jìn)行通信,讀取WARE卡片上的卡片類型號(hào)TAGTYPE,由MF-RC500傳遞給MCU,進(jìn)行識(shí)別處理。Request指令分為Request std和Request all兩個(gè)指令。 Request all指令是非連續(xù)性的讀卡指令,只讀一次,它可以防止MF-RC500選擇同一卡片好幾次。當(dāng)某一張卡片在MF-RC500天線的有效工作范圍內(nèi),Request all指令在成功地讀取這一張卡片之后,將一直等待卡片的使用者拿走這張卡片,直到有新一張的卡片進(jìn)入M- RC500天線的有效工作范圍內(nèi)。 Request std指令的使用和Request all指令相反,Request std指令是連續(xù)性的讀卡指令。當(dāng)卡片在MF-RC500天線的有效工作范圍內(nèi),Request std指令在成功地讀取這一張卡片之后,對(duì)卡進(jìn)行其他操作。如果其他操作完成之后,程序員又將MF-RC500進(jìn)入Request std指令操作,則Request std指令將連續(xù)性地再次進(jìn)行讀卡操作,而不管這張卡片是否被拿走。只要有一張卡片進(jìn)入MF-RC500之天線的有效的工作范圍內(nèi),Request std指令將始終連續(xù)性地再次進(jìn)行讀卡操作。 (2)“Select Tag”(選擇卡片操作) 表4.2 選擇卡片指令
在一個(gè)成功的AntiCollision指令之后,或在任何時(shí)候當(dāng)程序員想與已知序列號(hào)的卡片進(jìn)行通信時(shí),必須使用Select指令,以建立與所選卡的通信。Select指令成功地完成后,MCU將得到MF-RC500的DATA寄存器傳送來的一個(gè)字節(jié)長(zhǎng)的卡片容量信息—Size。 (3)“Authentication”(認(rèn)證操作) 表4.3 認(rèn)證指令
在MCU希望讀取MIFARE卡上的數(shù)據(jù)之前,此操作必須是被允許的。這可以通過選擇存儲(chǔ)在MF-RC500之RAM中的密碼集中的一組密碼來進(jìn)行認(rèn)證而實(shí)現(xiàn)。如果這一組密碼與MIFARE卡片上的密碼匹配,這一次操作被允許進(jìn)行。卡片上的存儲(chǔ)器的每一個(gè)塊都分別地指定了該塊的存取條件。這些存取條件是根據(jù)密碼而定。用戶必須在KEYSTACON寄存器中指定一套密碼,即設(shè)置KSO,KS1。KEYADDR寄存器中的AB位用于選擇KEYA和KEYB。KEYADDR寄存器中的AB設(shè)置必須匹配“Authentication”命令。 (4)“Read”(讀指令) 表4.4 讀指令
Read(讀)指令允許MCU通過MF RC500來讀取MIFARE卡片上完整的16個(gè)Bytes的數(shù)據(jù)塊(Data blocks)。 (5)“Write”(寫指令) 表4.5 寫指令
“Write” 寫指令允許用戶寫數(shù)據(jù)到MIFARE卡片上(完整的16個(gè)Byte的數(shù)據(jù)塊)。 4.3.2 讀/寫卡程序流程圖 讀/寫卡過程主要由以下幾步組成: (1) 復(fù)位應(yīng)答:當(dāng)一張MIFARE卡片處在讀寫器的天線的工作范圍之內(nèi)時(shí),程序員控制讀寫器向卡片發(fā)出REQUEST all 命令。卡片的ATR將啟動(dòng),將卡片Block0中的卡片類型共2個(gè)字節(jié)傳送給讀寫器, 建立卡片與讀寫器的第一步通信聯(lián)絡(luò)。如果不進(jìn)行位選擇操作,讀卡器對(duì)卡片的其他操作將不會(huì)進(jìn)行; (2) 防重疊操作:有多張卡處在天線的工作范圍之內(nèi)時(shí),RC500將取得每一張卡片的系列號(hào),由于每一張MIFARE卡片都具有其唯一的序列號(hào),決不會(huì)相同,因此MF-RC500根據(jù)卡片的序列號(hào)來保證一次只對(duì)一張卡操作。該操作MF-RC500得到MIFARE卡片的返回值和卡片的系列號(hào); (3) 選擇卡片操作:選擇被選中卡的系列號(hào),并同時(shí)返回卡的容量代碼; (4) 認(rèn)證操作:經(jīng)過上述3個(gè)步驟, 在確認(rèn)已經(jīng)選擇了一張卡片時(shí),MF-RC500 在對(duì)卡進(jìn)行讀寫操作之前,必須對(duì)卡片上已經(jīng)設(shè)置的密碼進(jìn)行認(rèn)證,如果匹配,才允許進(jìn)一步的讀寫操作; (5) 讀寫操作:在經(jīng)過上述幾個(gè)步驟之后就可以具體地對(duì)卡片進(jìn)行相應(yīng)的讀、寫、增值、減值、存儲(chǔ)和傳送等操作。讀/寫卡程序流程圖如下圖4.2所示。 圖4.2 讀/寫卡程序流程圖 4.4 讀卡器外圍基本電路程序的設(shè)計(jì) 4.4.1 顯示程序設(shè)計(jì) 本設(shè)計(jì)中的顯示模塊主要由系統(tǒng)時(shí)鐘和LCD顯示組成,系統(tǒng)時(shí)鐘用來提供時(shí)間、日期等信息;LCD用來向用戶顯示卡片、存儲(chǔ)數(shù)據(jù)等信息;LCD的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實(shí)現(xiàn)的,通過寄存器的設(shè)置和指令編程就可完成,這部分的程序設(shè)計(jì)比較簡(jiǎn)單,其流程圖如圖4.3所示。 圖4.3 顯示部分程序流程圖 顯示模塊的部分程序如下: MAIN: MOV SP,#60H MAIN1: LCALL START ;調(diào)用初始化 MOV A, #80H ;第一行顯示第一個(gè)字符的位置 ACALL ENABLE ;調(diào)用寫指令 MOV DPTR, #TABLE1 ;第一行表頭位置 CALL WRITE1 ;調(diào)用第一行寫子程序 MOV A, #0C0H ;第二行位置 CALL ENABLE ;調(diào)用寫指令 MOV DPTR, #TABLE2 ;第二行表頭位置 CALL WRITE LCALL DELAY1 JMP MAIN1 ENABLE: ;寫命令時(shí)序 MOV SS, A CLR RS CLR RW CLR E ACALL DELAY SETB E RET WRITE1: ;寫字符串 MOV R1, #00H A1: MOV A, R1 MOVC A, @A+DRTR ;取將顯示的數(shù)據(jù) CALL WRITE2 ;調(diào)用寫程序?qū)懭雴蝹(gè)字節(jié) INC R1 CJNE R1,#10H,AL RET WRITE2: ;寫單個(gè)字符 MOV SS A SETB RS CLR RW CLR E CALL DELAY SETB E RET 4.4.2 鍵盤程序設(shè)計(jì) 鍵盤程序包括按鍵識(shí)別及識(shí)別按鍵后系統(tǒng)的相應(yīng)動(dòng)作。按鍵識(shí)別分兩步進(jìn)行:第一步,識(shí)別鍵盤有無鍵被按下;第二步如果有鍵被按下,識(shí)別出具體的按鍵。分述如下:第一步,識(shí)別鍵盤有無鍵被按下的方法是:讓所有列均置為0電平,檢查各行線電平是否有變化,如果有變化,則說明有鍵被按下。第二步,識(shí)別具體的按鍵的方法有掃描法和線反轉(zhuǎn)法,這里采用掃描法:逐列置0電平,其余各列置為高電平,檢查各行線電平的變化,如果某行電平由高電平變?yōu)?電平,則可確定此行此列交叉點(diǎn)處的按鍵被按下。本方案中用延時(shí)l0ms進(jìn)行軟件消抖,通過設(shè)置處理標(biāo)志位來區(qū)分閉合鍵是否己處理過,用計(jì)算方法得到鍵碼。鍵盤掃描子程序中完成如下幾個(gè)功能: (1) 斷鍵盤上有無鍵按下。其方法為P1口低3位輸出全0,讀P1口狀態(tài),若P1.3、P1.4為全1,則說明鍵盤無鍵按下;若不全為1,則說明鍵盤有鍵按下; (2) 除按鍵抖動(dòng)的影響。其方法為,在判斷有鍵按下后,用軟件延時(shí)的方法延時(shí)10ms,再判斷鍵盤狀態(tài),如果仍為有鍵按下狀態(tài),則認(rèn)為有一個(gè)確定的鍵按下,否則當(dāng)作按鍵抖動(dòng)處理; (3) 按鍵位置。根據(jù)前面的掃描法,進(jìn)行逐位置0掃描,最后定位按鍵位置; (4) 閉合一次僅進(jìn)行一次按鍵的處理。方法是等待按鍵釋放之后,再進(jìn)行按鍵功能的處理操作。編程掃描程序流程圖如圖4.4所示。 圖4.4 掃描程序流程圖 4.4.3 E2PROM程序的編寫 AT24C64存儲(chǔ)器可以解決單片機(jī)片內(nèi)E2PROM不足的問題,用以保存諸如用戶設(shè)置參數(shù)、卡片信息等資料。由于本系統(tǒng)中采用到的AT89S52單片機(jī)不具備I2C總線接口,因此采用軟件法加以解決。在軟件編寫時(shí)遵循I2C總線規(guī)則:初始狀態(tài)時(shí),SCL、SDA兩線都為高,當(dāng)SCL為高電平時(shí),如果SDA線跌落,認(rèn)為是“起始位”;當(dāng)SCL為高電平時(shí),如果SDA線上升,認(rèn)為是“停止位”;除此之外,在發(fā)送數(shù)據(jù)的過程中當(dāng)SCL為高電平時(shí),SDA應(yīng)保持穩(wěn)定。ACK應(yīng)答位指在此時(shí)鐘周期內(nèi)由從器件(E2PROM)把SDA拉低,表示回應(yīng)。這時(shí)主器件(AT89S52)的SDA口屬性應(yīng)該變?yōu)檩斎胍员銠z測(cè)。E2PROM主要讀寫程序如下: void 12c_Send_Byte (unsigned char Send_Data) /*寫一個(gè)字節(jié)到E2PROM中*/ { unsigned char i; for(i=8;i!=0;i--) { SCL_DIR=0; if(Send_Data&0x80){SDA_DIR=1;} //接收到數(shù)據(jù) else{SDA_DIR=0;} delay_μs(2); SCL_DIR=1; Send_Data = (Send_Data<<1); // 數(shù)據(jù)左移一位 } do //接收應(yīng)答信號(hào),防止死循環(huán) { SCL_DIR=0; SDA_DIR=1; delay_μs(2); SCL_DIR=1; } while(SDA!=0); //停止位 SCL_DIR=0; SDA_DIR=0; } 4.5 通信部分程序設(shè)計(jì) (1)通信協(xié)議概述 RS232串口通信協(xié)議是我們熟悉和常用的通信協(xié)議,其通信協(xié)議的設(shè)計(jì)思想是基于幀傳輸方式,即在向串口發(fā)送命令信號(hào)、應(yīng)答信號(hào)及數(shù)據(jù)信號(hào)時(shí)是按照幀的格式發(fā)送的。為了使數(shù)據(jù)快速可靠地傳輸,將每一幀數(shù)據(jù)對(duì)應(yīng)一個(gè)命令幀,傳輸數(shù)據(jù)即執(zhí)行命令,具體如下: 1) 在讀數(shù)據(jù)時(shí),遵循“讀命令--等數(shù)據(jù)--文檔”,即PC下達(dá)一個(gè)命令,等待接收數(shù)據(jù),再據(jù)所接收數(shù)據(jù)正誤向應(yīng)用程序文檔此命令的執(zhí)行情況; 2) 在PC寫數(shù)據(jù)時(shí),遵循“寫命令--等回應(yīng)--文檔”,即PC下達(dá)一寫命令(此時(shí)所要寫的數(shù)據(jù)含于此命令中),等待MCU發(fā)來的己經(jīng)正確接收的回應(yīng)信號(hào),并 向應(yīng)用程序文檔此命令執(zhí)行完畢; 3) 如果在傳輸過程中PC或MCU所接收的任何一幀信號(hào)出現(xiàn)錯(cuò)誤時(shí),均會(huì)向?qū)Ψ桨l(fā)送重發(fā)此幀信號(hào)的請(qǐng)求,如果連續(xù)只次傳輸失敗,則退出通信,并向應(yīng)用程序文檔。 (2)MCU串口通信程序流程圖 MCU串口通信程序流程圖如圖4.5所示。 圖4.5 MCU串口通信程序流程圖 (1)調(diào)試過程 系統(tǒng)調(diào)試是在實(shí)驗(yàn)室進(jìn)行的,它是從設(shè)計(jì)向應(yīng)用轉(zhuǎn)化的關(guān)鍵一步,需要大量調(diào)試,才可能使系統(tǒng)運(yùn)行正常,系統(tǒng)調(diào)試是在這樣的環(huán)境下進(jìn)行的:仿真器采用的是偉福公司的G6W,軟件采用與其配套的e2000w編譯軟件;部分程序的編譯也使用了KeilC51;編程器使用的是Top系列編程器Top2000-a型。 主要測(cè)試的內(nèi)容有: 1) 讀卡器的基本功能如:系統(tǒng)時(shí)鐘顯示、E2PROM的讀寫、非法卡報(bào)警等; 2) 系統(tǒng)軟件的功能模塊測(cè)試; 3) RC500讀/寫卡功能模塊測(cè)試。 (2)調(diào)試中發(fā)現(xiàn)的問題與解決方法 在測(cè)試上述三項(xiàng)內(nèi)容過程中,曾經(jīng)出現(xiàn)過一些問題: 1) 系統(tǒng)顯示模塊不能正常工作。顯示模塊由LCD和時(shí)鐘芯片1302組成,時(shí)鐘芯片與單片機(jī)的連接比較簡(jiǎn)單,并且程序部分也都通過了調(diào)試,但系統(tǒng)卻不能正常工作,所以應(yīng)該是LCD的硬件出了問題,經(jīng)過查找,是由于調(diào)節(jié)LCD亮度的那個(gè)電位器值過大,造成雖然DS1302正常工作了,但信息并沒有得到正常的顯示,通過對(duì)電位器值的適當(dāng)調(diào)整,LCD正常工作了,問題得到了解決。 2) 數(shù)據(jù)寫不到AT24C64中去。AT24C64通過二根線與單片機(jī)相連,理論上只要時(shí)序正確,對(duì)其進(jìn)行數(shù)據(jù)的讀寫就應(yīng)該能夠成功,但是實(shí)際中每次調(diào)用該子程序都不成功,可能是時(shí)序上的問題,但經(jīng)過調(diào)試發(fā)現(xiàn)程序的編寫是正確的,所以應(yīng)該是硬件連接上的問題。根據(jù)I2C協(xié)議傳輸數(shù)據(jù)的規(guī)定,SDA和SCL都是要求加上拉電阻的,但參閱的資料上說由于P2口內(nèi)部已帶有上拉電阻,不用再加AT24C64就能正常工作,但經(jīng)過調(diào)試發(fā)現(xiàn)事實(shí)并非如此,經(jīng)過對(duì)電路的修正,在SDA和SCL引腳上加了兩個(gè)10K的電阻,最終解決了這個(gè)問題了。 3) 讀卡器與卡片不能進(jìn)行正常的通信。在調(diào)試過程中,當(dāng)有卡進(jìn)入天線范圍內(nèi)時(shí),讀寫器卻不能正常的與之進(jìn)行數(shù)據(jù)交換,讀不到卡片的信息。這個(gè)問題產(chǎn)生的原因有很多,可能是RC500軟件設(shè)計(jì)上的問題,也可能是天線設(shè)計(jì)的問題,最后在指導(dǎo)老師的幫助下,經(jīng)過自己的努力找到了問題的所在,原來是天線匹配電路不合適,通過對(duì)匹配電路上電阻、電容的適當(dāng)調(diào)整,使問題得到了解決。 結(jié)論 本文檔從整體的角度,對(duì)非接觸式智能卡系統(tǒng)進(jìn)行分析和研究,同時(shí)做到重點(diǎn)的突出。文檔從智能卡整體系統(tǒng)入手,著重介紹了基于Philips公司MIFARE技術(shù)的非接觸式智能卡讀卡器的設(shè)計(jì)開發(fā)。該讀卡器能夠讀寫距離在0-100mm范圍內(nèi)的符合IEC/IS014443 Type A標(biāo)準(zhǔn)的非接觸式智能卡。讀卡器采用外接電源供電,具有蜂鳴器報(bào)警、系統(tǒng)時(shí)鐘、LCD顯示、3×2小鍵盤輸入和采用RS232接口同上位機(jī)通信的功能,能夠很好地滿足實(shí)際應(yīng)用的需要。 作為一個(gè)系統(tǒng)在設(shè)計(jì)時(shí)可能要考慮到諸多因素,每一個(gè)細(xì)節(jié)上,都可能出現(xiàn)意想不到的事情,有時(shí)一個(gè)小小的問題,要花好多的時(shí)間和精力,需要耐心和恒心,經(jīng)過努力,該系統(tǒng)設(shè)計(jì)已經(jīng)完成,實(shí)際測(cè)試證明系統(tǒng)已能達(dá)到設(shè)計(jì)要求。 然而本文檔論述的非接觸式智能卡系統(tǒng)還有很多方面需要進(jìn)一步提高,針對(duì)文檔中所述,主要有以下幾個(gè)方面: (1) 本文檔沒有介紹上位機(jī)的軟件設(shè)計(jì)問題。在應(yīng)用系統(tǒng)中,這也是非常重要的一部分,主要涉及數(shù)據(jù)庫(kù)的操作、與下位機(jī)的通信以及友好的用戶操作界面等問題。 (2) 讀寫裝置與上位機(jī)之間的通信接口宜采用USB接口。采用USB接口的外設(shè)與計(jì)算機(jī)之間的傳輸速率遠(yuǎn)比RS232和標(biāo)準(zhǔn)并行接口高,而且支持熱插拔。 (3) 本文檔中給出的程序,還需進(jìn)一步的優(yōu)化,減少其大小,提高程序執(zhí)行效率。 通過對(duì)系統(tǒng)的軟硬件設(shè)計(jì)和調(diào)試過程,積累了不少實(shí)際經(jīng)驗(yàn),開拓了了思維,為今后在這方面的工作打下了較為堅(jiān)實(shí)的基礎(chǔ)。本文還有很多不足之處,懇請(qǐng)各位專家和老師批評(píng)指正。
致謝 本文從課題的選定開始,系統(tǒng)方案的確定,以及對(duì)設(shè)計(jì)電路的調(diào)試指導(dǎo),到最后文檔的編寫和完成較稿,XXXXXX老師都給予了悉心的指導(dǎo)。對(duì)其中設(shè)計(jì)思路的引導(dǎo),電路的可靠性,文檔的嚴(yán)謹(jǐn)性等方面更傾注了她的精力和心血。在具體的設(shè)計(jì)問題中,能夠一針見血的指出問題所在,使我學(xué)到了新的知識(shí),受益匪淺。她廣博的知識(shí)面,豐富的實(shí)踐經(jīng)驗(yàn)以及嚴(yán)謹(jǐn)?shù)闹螌W(xué)作風(fēng),將激勵(lì)我在今后的工作和學(xué)習(xí)中豐富自己、努力進(jìn)取,在此,特別向郭廣靈老師表示由衷的感謝和誠(chéng)摯的敬意。 其次,要感謝學(xué)校給我們提供這么好的設(shè)計(jì)環(huán)境,在設(shè)計(jì)完成的過程中得到了許多老師和學(xué)院領(lǐng)導(dǎo)的幫助,老師們嚴(yán)謹(jǐn)治學(xué)的教學(xué)使我受益匪淺。 在本文檔的寫作和相關(guān)研究工作中,我同一實(shí)驗(yàn)室和同班同學(xué)都給予了我很多熱心的幫助和熱情的鼓勵(lì),使我順利走過近三個(gè)月的課題研究生活。我要向他們中的每一個(gè)人表示由衷的感謝,我會(huì)永遠(yuǎn)記住這段美好時(shí)光。 再次向所有幫助過我的人表示衷心的感謝!謝謝你們!
以上圖文的Word格式文檔下載(內(nèi)容和本網(wǎng)頁(yè)上的一模一樣,方便保存):
以上文檔.doc
(946.5 KB, 下載次數(shù): 54)
2021-9-2 04:06 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|