標題: 基于單片機的ic卡讀卡器設計論文 [打印本頁]
作者: 小志愛吃羊肉 時間: 2018-5-16 19:33
標題: 基于單片機的ic卡讀卡器設計論文
基于單片機的IC卡讀寫器設計
摘要:隨著社會的進步和現代化程度的不斷提高,人類所擁有的信息種類和數量都在成倍地增長,每天都要處理許多與個人有關的信息,而這些信息管理十分不便。因此,在實際生活中IC卡的應用范圍非常廣泛,它有助于解決問題。IC卡讀寫器是IC卡和計算機之間的傳輸媒介,它與計算機之間通過串行口相連,本文主要應用89C2051單片機為核心對SLE4442卡進行讀寫控制。接觸式IC卡是IC卡領域的一項新興技術,它是射頻識別技術和IC卡技術相結合的產物。
首先在緒論中介紹了課題的開發意義及功能概述。
其次在主要描述了系統硬件工作原理,并介紹了IC卡SLE4442的內部結構及原理圖,論述了本次畢業設計所應用的各硬件接口技術和各個接口模塊的功能及工作過程。
本系統是以單片機的基本語言匯編語言來進行軟件設計,指令的執行速度快。
最后具體描述了各個功能模塊的軟、硬件調試。本文撰寫的主導思想是軟、
硬件結合,以硬件為基礎,來進行各功能模塊的編寫。
目錄:
1前言
1.1 系統的提出及研究意義。
1.2 系統的研究方向及功能概述。
2 正文
2.1 硬件設計思路。
2.2 硬件論證方案。
2.3 硬件各模塊的設計。
2.3.1 89C2051單片機的簡介。
2.3.2 SLE4442IC卡的簡介:
芯片概述:芯片功能;芯片內部邏輯結構;
傳輸協議:復位和復位響應;命令模式;輸出數據模式;處理數據模式;
2.3.3 SLE4442的應用:
芯片的復位方式;
芯片的操作命令格式;
2.3.4 SLE4442的接口技術:
SLE4442卡的接口電路;
SLE4442卡的插入/退出識別與上電/下電復位過程;
SLE4442卡的讀寫;
SLE4442卡的邏輯加密。
2.3.5RS—232通信接口芯片:
2.3.6電路原理分析
2.4 軟件設計思想。
軟件結構設計及其分析;
軟件系統分析;
2.5 軟件程序設計
3系統調試
4 結論
5 參考文獻
6 致謝
附錄:
附錄一:外文專業參考資料譯文
附錄二:外文專業參考資料原文
附錄三:電路原理圖
附錄四:程序流程圖
附錄五:程序清單
1.前言
1.1系統的提出及研究意義。
當今世界信息技術的發展日新月異,一個以電子商務為主要特征的經濟時代即將來臨,IC卡是一種將個人信息最有效地送入到先進的全球信息網絡并獲取所需結果的最有效的辦法,IC卡將成為人們聯網身份識別和實現電子支付手段。其影響面是前所未有的。智能IC卡與普通磁卡相比具有更高的安全性,為此,對智能IC卡的讀寫進行研究是非常有意義的。按卡與外界數據傳輸的形式來分,有接觸式IC卡和非接觸式IC卡兩種。當前廣泛使用的是接觸式IC卡,本文對其進行了詳細介紹。
目前,IC卡家族中檔次最高的智能IC卡,又稱CPU卡.顧名思義, 這種卡片上不但有存儲數據的存儲器和對外聯絡的通訊接口,還帶有具備數據處理能力的微處理器,實際上是一臺卡上的單片微機系統.為了管理這一系統中的硬件和軟件資源, 卡上存儲有進行數據讀寫和安全管理的程序,以及管理這些程序的卡上操作系統,即COS(Chip Operating system).COS與我們在PC機上常見的DOS和WINDOWS 等操作系統有很大不同,它是根據IC卡特點而開發的專用操作系統.COS受IC 卡存儲容量和微處理器性能的限制,主要功能是:控制IC卡與外界的信息交換;管理IC卡上各種存儲器;在IC卡內執行讀寫器的各種操作命令.有了CPU與COS,IC卡就有了智能.因此智能IC 卡具有超強的存儲性能,提供很高的信息安全性和可靠性.
1.2系統的研究方向及功能概述。
本文主要以89C2051單片機為核心,IC卡讀/寫設備就是能將數據信息“寫入”IC卡或將IC卡內部的數據信息“讀出”或“擦除”的電子接口設備,總體來說,可將其分為通用型讀/寫設備和專用型讀/寫設備。本設計主要分析接觸型IC卡讀/寫器,作為PC機的嵌入式外設,通過串型接口實現交換。
功能:能識別和讀/寫存儲卡;為連機型讀/寫器,做為依附于PC機的一種外設,通過RS-232C與PC機進行通信;能自動連續讀/寫,具有上電冷復位,插卡熱復位功能;卡上數據讀/寫采用雙認證方式,確保讀/寫數據的可靠性和準確性;具有一定的抗攻擊能力,即對于非法插拔,非法IC卡等具有一定的抵抗能力,可避免短路等造成的讀/寫損壞;具有聲光提示讀/寫狀態;采用動態加密算法,避免IC卡被非法復制,并保證IC卡數據的安全性。
2.正文
2.1硬件設計思路:
IC卡的應用領域非常廣泛。在IC卡的觸點和讀/寫設備的觸點良好接觸之前,讀/寫設備不應對IC卡施加有關信號,以免造成不可預料的損壞。IC卡讀/寫設備作為系統和用戶交換的接口,必將面對各種各樣復雜的應用環境。因此,在設計階段應注意IC卡讀/寫設備環境。作為操作系統,管理IC卡的硬件資源和數據資源是其基本任務.IC卡上的硬件資源包括CPU,ROM,EEPROM和RAM及通訊接口,這些都由IC卡上操作系統統一管理, 使外部不能直接控制這些資源,使IC卡對外表現為一個"黑匣子",從而加強了系統的保密性能. 智能卡通訊管理主要功能是執行智能IC卡的信息傳送協議, 接收讀寫器發出的指令,并對指令傳遞是否正確進行判斷.一般可采用奇偶檢,CRC校驗等方式判斷傳輸錯誤.對于采用分組傳輸協議的系統, 還可以通過分組長度變化來檢出錯誤。
智能卡操作系統最重要的功能之一就是數據安全管理. 這可以具體地分為用戶與IC卡的鑒別,核實功能以及對傳輸數據的加密與解密操作. 智能IC卡COS的應用管理功能是對讀寫器發來的命令進行判斷,譯碼和處理. 智能卡的各種應用以專有文件形式存在卡上,各專有文件則是由IC 卡的指令系統中指令排列所組成的.
"鑒別"是指對IC卡本身的合法性進行驗證,判定一張IC卡是不是偽造的.如在前兩講中談到的多采用多種卡上設置的讀,寫,擦除密碼作為防偽的基本手段.而COS由于可以通過內部軟件運行來完成密碼轉換,因此智能IC 卡上實際寫入的密碼無法被讀寫器直接讀取,安全性能更強.IC卡由于其高存儲量和高保密性,應用領域十分廣泛,除覆蓋了傳統磁卡的全部功能外,還拓展到許多磁卡不能勝任的領域
2.2硬件論證方案:
IC卡是一種集成電路卡,它的讀/寫設備是每個IC卡應用系統必不可缺的周邊設備。該設備通過IC卡的8個觸點向IC卡提供電源并與IC卡相互交換信息。雖然IC卡是從磁卡發展而來的。 本IC卡讀/寫器的硬件系統設計主要有:IC卡的插拔檢測,IC卡的電源控制,IC 卡與CPU的接口以及必要的人機界面。軟件系統主要由IC卡數據讀/寫模塊,串行通信模塊等組成。
SLE4442是德國SIMENS公司設計的邏輯加密存儲卡。它具有2K位的存儲容量和完全獨立的可編程代碼存儲器。內部電壓提升電路保證了芯片能夠以單一+5V電壓供電,較大的存儲容量能夠滿足通常應用領域的各種需要,因此是目前國內應用較多的一種IC卡芯片。芯片采用;多存儲器結構,2線連接協議(串行接口滿足ISO7816同步傳輸協議),NMOS工藝技術,每字節的擦除/寫入編程時間位。2。5MS。存儲器具有至少10000次的擦寫周期,數據保持時間至少10以上。
根據IC卡應用系統的這種典型結構,開發者的主要工作包括:(1) 設計和構造應用系統中心數據庫,對應用IC卡管理的數據進行分類存儲和管理.由于數據庫一般建立在小型機或微機網絡服務器上,一般在相應環境中開發設計.(2)對IC 卡上數據的存儲格式,讀寫方式,加密和安全保護方式進行規劃和設計.這些可借助IC 卡讀寫器和微機的開發系統來完成.(3)構造IC卡應用環境,建立網絡和讀寫工作站.作為IC卡系統中的發卡站和結算站,可以采用帶聯機讀寫器的小型機或微機.系統設計環境可以是WINDOWS下的VB,FOXPOR,ACCESS等軟件,一般利用讀寫器廠家提供的接口函數與數據庫軟件接口.用戶刷卡使用的工作站可以采用PC機加聯機讀寫器組成,需進行用戶界面設計,能夠提供較友好的用戶界面.也可以使用便攜式的脫機工作站, 一般由單片機系統組成,帶有液晶顯示器和小型鍵盤.這種讀寫器的用戶接口軟件, 也需在專用的單片機系統中開發.
因此,一個IC卡應用系統的設計工作除了包括各站點的硬件配置,系統聯網, 系統數據庫構建和管理軟件編程,各工作站用戶接口軟件的編程,以及IC卡上數據規劃與初始分區和數據寫。
2.3硬件各模塊的設計:
2.3.189C2051單片機的簡介:
本讀寫器以ATMEL89C2051為內核。此型號的單片機是一種低消耗,高性能的8位CMOS微處理芯片。片內帶有2KB的閃爍可編程及可擦除只讀存儲器,與工業標準的80C51指令集相兼容,DIP20封裝。片上的PEROM準許在線對程序存儲器重新編碼,也可用常規的非易揮發存儲芯片編程。它的特點可歸納為:1.與MCS-51產品兼容;2.2KB的在線可重復編程閃爍存儲器;:壽命:1000次寫/擦除周期,數據保存期10年;3.寬工作電壓:范圍Vcc=2.7~6V;4.全靜態工作方式:0~24MHZ;5.3級程序存儲器鎖定;6.256*8位內部RAM;7.32條可編程I/O口線;8.3個16位定時/計數器;9.5個中斷源;10.可編程串行中斷;11.低功耗的閑置與掉電模式。
- 復位狀態: MCS—51單片機復位后, 程序計數器PC和特殊功能寄存器復位的狀態如表所示。 復位不影響片內RAM存放的內容, 而ALE、PSEN在復位期間將輸出高電平。由表可以看出: (1) (PC)=0000H 表示復位后程序的入口地址為0000H; (2)(PSW)=00H, 其中RS1(PSW.4)=0, RS0(PSW.3)=0, 表示復位后單片機選擇工作寄存器0組; (3)(SP)=07H 表示復位后堆棧在片內RAM的08H單元處建立;(4)P0口~P3口鎖存器為全1狀態, 說明復位后這些并行接口可以直接作輸入口, 無須向端口寫1; (5) 定時器/計數器、 串行口、 中斷系統等特殊功能寄存器復位后的狀態對各功能部件工作狀態的影響。
上電復位:
- AT89C2051結構:AT89C2051是一個有20個引腳的芯片,引腳配置如圖. 與8051內部結構進行對比后可發現,AT89C2051減少了兩個對外端口(即P0、P2口),使它最大可能地減少了對外引腳,因而芯片尺寸有所減小。AT89C2051芯片的20個引腳功能為:1.VCC 電源電壓;2.GND 接地;3: RST復位輸入。當RST變為高電平并保持2個機器周期時,所有I/O引腳復位至“1”。
引腳結構:
- XTAL1反向振蕩放大器的輸入及內部時鐘工作電路的輸入。XTAL2來自反向振蕩放大器的輸出。P1口8位雙向I/O口。引腳P1.2~P1.7提供內部上拉,當作為輸入并被外部下拉為低電平時,它們將輸出電流(IIL),這是因內部上拉的緣故。 P3口引腳P3.0~P3.5與P3.7為7個帶內部上拉的雙向I/O引腳。P3.6在內部已與片內比較器輸出相連,不能作為通用I/O引腳訪問。
單片機內部,外部振蕩電路:
- 單片機存儲器分類及配置: MCS—51單片機存儲器的分類從物理結構上可分為: 片內、 片外程序存儲器(8031和8032沒有片內程序存儲器)與片內、 片外數據存儲器4個部分; 從尋址空間分布可分為: 程序存儲器、 內部數據存儲器和外部數據存儲器3大部分; 從功能上可分為: 程序存儲器、 內部數據存儲器、 特殊功能寄存器、 位地址空間和外部數據存儲器5大部分。
- 特殊功能寄存器(SFR):AT89C2051中特殊功能寄存器描述,它們共占用了19字節,其功能與8051SFR功能相對應。
- 程序存儲器的加密:AT89C2051片內有2個鎖定位,可以編程(P),也可以不編程(U),從而得到3種鎖定位保護模式。
內部結構:
- 低功耗工作方式:AT89C2051有兩種低功耗工作方式:空閑方式與掉電方式。
1) 空閑方式(休眠方式):當利用軟件使空閑方式位IDL(PCON.0)=1時,單片機進入空閑方式。此時,CPU處于休眠狀態,而片內所有其他外圍設備保持工作狀態,片內RAM和所有特殊功能寄存器內容保持不變。在空閑方式下,當晶振fosc=12MHz、電源電壓VCC=6V時,電源電流ICC從20mA降至5mA,而VCC=3V時,ICC由5.5mA降至1mA。中斷或硬件復位可以終止空閑方式。
當空閑方式由硬件復位終止時,CPU要從休眠處恢復程序的執行,執行2個機器周期后,內部復位算法才起作用。此時,硬件禁止訪問內部RAM,但允許訪問端口引腳。為了防止休眠被復位終止時對端口引腳意外寫入的可能性,在生成空閑方式的指令后不應緊跟對端口引腳的寫指令。如果不采用外部上拉,P1.0和P1.1應置“0”;如果采用外部上拉,則應置“1”。
2)掉電方式:掉電方式由掉電方式位PD(PCON.1)=1設置。此時,振蕩器停止工作,設置掉電方式的指令成為最后執行的1條指令,片內RAM和特殊功能寄存器內容保持不變。在掉電方式下,VCCmin=2V。當VCC=6V時,ICCmax=100μA;當VCC=3V時,ICCmax=20μA。退出掉電方式的唯一方法是硬件復位。硬件復位將重新定義特殊功能寄存器,但不影響片內RAM。復位的保持時間應足夠長,以便振蕩器能重新開始工作并穩定下來。在VCC沒有恢復到正常工作電壓之前,不應進行復位。如果不采用外部上拉,P1.0和P1.1應置“0”,否則置“1”。
2.3.2 SLE4442IC卡的簡介:
SLE4442 是德國西門子SIMENS 公司設計的邏輯加密存儲卡它具有2K 位的存儲容量和完全獨立的可編程代碼存儲器PSC 內部電壓提升電路保證了芯片能夠以單+5V 電壓供電較大的存儲容量能夠滿足通常應用領域的各種需要因此是目前國內應用較多的一種IC 卡芯片芯片采用多存儲器結構2 線連接協議串行接口滿足ISO7816 同步傳送協議NMOS 工藝技術每字節的擦除/寫入編程時間為2.5ms 存儲器具有至少10000 次的擦寫周期數據保持時間至少10 年。
SLE4442的觸點安排:
操作電壓 地
復位 未用
時鐘 雙向數據線
未用 未用芯片功能
芯片功能:
SLE4442 IC 卡主要包括三個存儲器:
1.256x8 位EEPROM 型主存儲器。地址0~31 為保護數據區。該區數據讀出不受限制,寫入受保護存儲內部數據狀態的限制。當保護存儲器中第N 位N=0~31 為1 時,對應主存儲器中第N 個字節允許進行擦除和寫入操作。地址32~255 后244 字節為應用數據區,數據讀出不受限制,擦除和寫入受加密存儲器數據校驗結果的影響。這種加密校驗的控制是對整個主存儲器實施的(即包括保護數據區和應用數據區)。
2.32 x1 位PROM 型保護存儲器.一次性編程以保護主存儲器保護數據區,防止一些固定的標識參數被改動.保護存儲器同樣受加密存儲器數據校驗結果的影響。
3.4x8 位EEPROM 型加密存儲器.第0 字節為密碼輸入錯誤計數器(EC).EC的有效位是低三位,芯片初始化時設置成”111”這一字節是可讀的(EC).的1,2,3字節為參照字存儲區.這3 個字節的內容作為一個整體被稱為可編程加密代碼(PSC).其讀出寫入和擦除均受自身比較操作結果的控制。
芯片內部邏輯結構如下:
1. 復位和復位響應:
復位和復位響應是根據ISO7816-3 標準來進行的。在操作期間的任意時候都可以復位。開始,地址計數器隨一個時鐘脈沖而被設置為零。當RST 線從高狀態H 置到低狀態L 時,第一個數據位(LSB)的內容被送到I/O 上。若連續輸入32 個時鐘脈沖,主存儲器中的前四個字節地質單元中的內容被讀出。在第33個始終脈沖的下降沿,I/O 線被置成高狀態而關閉.
2.命令模式:
復位響應以后芯片等待著命令。每條命令都以一個“啟動狀態”開始。整個命令包括3 個字節。隨后經更著一個附加脈沖并用一個“停止狀態”來結束操作。
啟動狀態:在CLK 為高狀態H 狀態期間I/O 顯得下降沿為啟動狀態。
停止狀態:在CLK 為高狀態H 狀態期間I/O 顯得上升沿為停止狀態。
在接受一個命令之后有兩種可能的模式輸出數據模式即讀數據和處理數據模式。
命令模式的時序圖:
3.輸出數據模式:
這種模式是將IC 卡芯片中的數據傳送個外部設備接口(IFD)的一種操作。
在第一個CLK 脈沖的下降沿之后,I/O 線上的第一位數據變為有效。隨后每增加一個時鐘脈沖芯片,芯片內部的一位數據被送到I/O 線上,數據的發送從每個字節的最低位(LSB)開始。當所需要的最后一個數據送出以后,需要再附加一個時鐘脈沖來把I/O口置成高狀態,以便接受新的命令。
在輸出數據期間任何“啟動狀態”和“停止狀態”均被屏蔽掉.
輸出數據模式的時序關系:
4.處理數據模式:
這種模式是對IC 芯片作內部處理.
芯片在第一個始終脈沖的下降沿將I/O 線從高狀態拉到低狀態并開始處理。此后芯片在內部連續計時計數,直到低n 個始終脈沖之后的附加一個時鐘脈沖的下降沿I/O 線再次置高,完成芯片的處理過程。在整個處理過程中I/O 線被鎖定成低狀態。
處理模式的時序關系:
2.3.3SLE4442卡的應用:
1.部復位:SLE4442是基于同步夫位響應的傳送協議。芯片的復位時序如前述。
2.復位:在把操作電壓連接到Vcc 段之后,芯片內部進行復位操作。I/O 線被置為高狀態。必須在對任意地址進行讀操作或做一個復位響應操作之后才可以進行數據交換。
3.:在CLK為低狀態期間,如果RST 置為高狀態,則任何操作均無效。I/O 線被鎖定到高狀態。需要一個最小維持時間tres=5Us 之后,芯片才能接受新的復位。
中止狀態的時序:
每條命令包含三個字節其排列順序如下
SLE4442芯片具有7種命令:
2.3.4SLE4442卡的接口技術:IC卡接口設備是由IC卡適配插座,IC卡電氣接口電路,用于IC卡時序生成與數據交換的微處理器以及其他主設備的連接接口組成。根據IC卡在插入或退出時,按觸點壓觸和脫離的方式區分主要有兩種,一是滑觸式結構,這種方式,觸點處于固定位置,IC卡在插入或退出時,滑過與之不相關的位置,并滑接在固定的位置,另一類是著陸式結構,這種結構下,IC卡在插入過程中,觸點與IC卡同步運動,逐步下壓,并穩定與最終位置。
IC卡的接口電路是連接IC卡與讀寫機具的通路,由它實現對IC卡的供電,并滿足不帶電插拔的要求。
一般來說,邏輯電路的“1”和“0”只是反映電壓大小的關系,都處于帶電狀態。若帶電插拔IC卡,可能會給IC卡帶來損傷,甚至損壞它。因此在插拔前應先斷開向IC卡供電的電源。,并切斷其邏輯連接,實現對IC卡的保護。
IC卡的邏輯接口電路一般采用集電極開路(OC)輸出及非嵌拉保護式輸入結構。上拉電阻R源端與IC卡的供電電源相連接。當IC卡處于供電狀態時,整個接口電路接通,借口設備與IC卡間構成邏輯通路;而當IC卡處于下電狀態時(V㏄=OFF),上拉電阻R的源端失去了供電,整個與卡的接口的電路均處于不帶電狀態。這種電路結構簡單,可與CMOS,TTL接口相兼容,上升沿阻尼較大,不易產生邊沿振蕩,缺點是當接口端的分布電容較大時,上升沿過緩。在作為CPU卡的時鐘驅動時(通常為3.57MHz ),就有可能產生丟失脈沖等現象。解決這一問題的辦法有兩種,第一種:是通過減小時鐘驅動端的上拉電,減小上升時間來解決;另一種是采用互補驅動方式來進行時鐘驅動,這種方式結構復雜些,但可以實現更高的時鐘頻率。
所有的IC卡的接口部分都加加了箝位保護二級管,這些箝位二級管可以使各引腳上的電壓嚴格地限定在-Vd~Vcc+VD之間,這樣,可以抑制由于線路干擾和邏輯電平變化的邊沿產生抖動所帶來的瞬態過壓,為IC卡提供進一步的保護措施。
IC卡接口設備中的IC卡供電電路也是一個相對獨立于其他回路,這是由于IC卡接口設備是一個獨立于IC卡的設備,當有卡插入時,接口設備便開始向IC卡提供其所須的電力。如果插入的是一張電源與地擊穿的壞卡,或是一個金屬片之類的物質,就會造成供電回路的短路現象,若IC卡接口設備中無過流保護措施,就會造成設備的損壞。即便有保護措施,若與IC卡接口設備的其他部分共同使用一個保護回路,就會干擾整個設備的正常工作。
該電路利用了帶輸出短路保護特性的78系列三端穩壓集成電路,78L05的最大輸出電流可達150mA,短路保護電流起點在150mA~200mA左右,符合ISO/IEC7816-3所確定的范圍。當插入的卡是一個電源對地的短路負載時,U1會因輸出過載而形成短路保護,由于接口設備的供電是在U2提供的穩壓回路上,因而不會干擾接口設備的工作,這一段路保護信息會在“短路報警指示”信號線上形成一個低電平輸出,接口設備的微處理器通過感知這一信號而切斷對IC卡接口的供電,直到該卡退出為止,U1的輸出也會隨之而轉入正常的電壓輸出范圍,以便為后續插入的IC卡提供正常的供電服務。
- IC卡的插入/退出識別與上電/下電控制技術:IC卡的插入與退出的識別是通過IC卡適配插座上的感應開關來識別的,對于復雜結構的IC卡適配插座,其識別與控制過程也相當復雜,且針對不同的卡座,其控制也各不相同,IC卡的供電控制是一個直接涉及是否能安全可靠地操作IC卡的過程。它必須嚴格地遵循ISO7816-3規定,其操作如下:
(1)上電過程:——RST處于L狀態; (2)下電過程:——RST為狀態L;
——vcc供電; ——CLK為狀態L;
——接口設備處于接受 ——VPP不起作用;
方式;
——VPP上升為空閑狀態; ——I/O為狀態A;
——CLK由相應穩定的時鐘 ——VCC關閉。
提供;
上電過程: PWRON1:LCALL Recog ;識別是否有卡插入
CLR RST ;使RST=L
CLR CLK ;使CLK=L
LCALL Delay-0.5ms ;延遲0.5MS。使端口邏輯信號穩定
CLR PWR ;給卡供電
CLR DATOUT ;使I/O端口=L;
RET ;返回
下電過程:PWROFF1:CLR RST ;使RST=L
CLR CLK ;使CLK=L
CLR DATOUT ;使I/O=L
LCALL DELAY-0.5MS ;延遲0.5MS,使端口邏輯信號穩定
SETB PWR ;給卡下電
RET ;返回
由于IC寫主存儲器時需要驗證密碼,所以執行下面程序時請確保SLE4442的密碼的正確性。如果密碼有錯誤,IC卡校驗3次便會鎖死報廢。
ORG 8000H
AJMP MAIN
ORG 8100H
MAIN:MOV SP,#60H
Write-read-Card:
MOV R0,#PSWD
MOV @R0,#0X11
INC R0
MOV @R0,#0X22
INC R0
MOV @R0,#0X33
LCALL CheckPassword
Jnz WRExit
MOV R0,#WriteBuf
MOV @R0,#0X55
INC R0;
MOV @R0,#0X66
MOV ByteNum,#0x02
MOV StartAdr,#0x20
LCALL WriteCard
JNZ WRExit
MOV ByteNum,#0x02
MOV StartAdr,#0x20
LCALL ReadCard
JZ Write-Read-Card
WRExit:mov A,#00H
$INCLUDE(SLE4442.INC);
END
- IC卡的讀寫技術:不同類型的IC卡其讀寫方式或數據協議方式是不同的,其地址計數器是與時鐘緊密相關的,當卡復位時,地址計數器置“0”,以后,每向卡發一個節拍的時鐘,都將使IC卡的地址計數器加“1”,這一時鐘頻率上限為50KHZ或280KHZ。
復位過程:SYNRST:SETB DATOUT ;使能數據線
SETB RST ;復位使能
LCALL DELAY-10US ;延遲10us
SETB CLK ;置同步復位時鐘H
LCALL DELAY-10US ;延遲10us
CLR CLK ;時鐘為L
LCALL DELAY-10US ;延遲10us
CLR RST ;復位結束
RET
數據字段的定位:SYNPOS:LCALL SYNRST ;IC卡復位
SP1:CJNE R3,#00H,SP3 ;判低位
CJNE R2,#00H,SP2 ;判高位
RET ;返回
SP2:DEC R2 ;高位減1
SP3:DEC R3 ;低位減1
SETB CLK ;開始建立一個時鐘脈沖
LCALL Delay-10us
CLR CLK
LCALL Delay-10us ;時鐘脈沖結束
SJMP SP1 ;繼續下一次
數據的讀出過程:SYNREAD:LCALL SUNPOS ;定位至起始地址
SETB DATAIN ;使能數據輸入線
SR1:MOV R5,#08H ;置移位次數為8次
SR2:SETB CLK ;CLK=H
MOV C,DATIN ;將數據線上的內容輸入到C觸發器中
RLC A ;A寄存器循環左移,C的內容進入A最低位
LCALL Delay-10us ;延時10us
CLR CLK ;CLK=L
LCALL Delay-10us ;延時10us
DJNZ R5,SR2 ;判斷是否接收完一字節,若是繼續,否則轉至SR2,繼續接收下一位
MOV @R0,A ;將字節內容送(R0)單元
INC R0 ;數據存放地址加1
DJNZ R4,SR1 ;判斷是否接收完R4個字節,若是繼續,否則轉至SR1,繼續接收
RET ;返回
IC卡的寫操作:在器件地址碼之后,緊跟著的是字節地址碼。地址碼長度為8位。時序中的數據為寫字節時,由IC卡讀/寫器中的單片機在SDA發送一個8位碼長的數據;卡片每收到一個數據字節后,都要通過SDA回送一個“確認”信號。
IC卡的讀操作有3種:現行地址讀、隨機地址讀、順序讀。
IC卡芯片操作地址:對IC卡而言,A2,A1,A0地址線均為0;因此,寫地址為0A0H,讀地址為0A1H。
IC卡讀寫器要能讀寫符合ISO7816標準的IC卡。IC卡接口電路作為IC卡與IFD內的CPU進行通信的唯一通道,為保證通信和數據交換的安全與可靠,其產生的電信號必須滿足下面的特定要求。
完成IC卡插入與退出的識別操作:IC卡接口電路對IC卡插入與退出的識別,即卡的激活和釋放,有很嚴格的時序要求。如果不能滿足相應的要求,IC卡就不能正常進行操作;嚴重時將損壞IC卡或IC卡讀寫器。
(1)激活過程:為啟動對卡的操作,接口電路應按圖1所示順序激活電路:
◇RST處于L狀態;
◇根據所選擇卡的類型,對VCC加電A類或B類,正常操作條件下VCC的電特性見表1;
正常操作條件VCC的電特性
符 號 | 最小值 | 最大值 | 條 件 |
Vvcc/V | 4.5
2.7 | 5.5
3.3 | A類
B類 |
Icc/mA |
| 60500.5 | A類,在最大允許頻率
B類,在最大允許頻率時鐘停止 |
◇VPP上升為空閑狀態;
◇接口電路的I/O應置于接收狀態;
◇向IC卡的CLK提供時鐘信號(A類卡1~5MHz,B類卡1~4MHz)。
如圖所示,在t’a時間對IC卡的CLK加時鐘信號。I/O線路應在時鐘信號加于CLK的200個時鐘周期(ta)內被置于高阻狀態Z(ta 時間在t’a之后)。時鐘加于CLK后,保持RST為狀態L至少400周期(tb)使卡復位(tb在t’a之后)。在時間t’b,RST被置于狀態H。I/O上的應答應在RST上信號上升沿之后的400~40 000個時鐘周期(tc)內開始(tc在t’b之后)。
在RST處于狀態H的情況下,如果應答信號在40 000個時鐘周期內仍未開始,RST上的信號將返回到狀態L,且IC卡接口電路按照圖2所示對IC卡產生釋放。
(2)釋放過程:當信息交換結束或失敗時(例如,無卡響應或卡被移出),接口電路應按圖2所示時序釋放電路:
◇RST應置為狀態L;
◇CLK應置為狀態L(除非時鐘已在狀態L上停止);
◇VPP應釋放(如果它已被激活);
◇I/O應置為狀態A(在td時間內沒有具體定義);
通過觸點向卡提供穩定的電源
IC卡接口電路應能在表1規定的電壓范圍內,向IC卡提供相應穩定的電流。
IC卡接口電路向卡提供時鐘信號。時鐘信號的實際頻率范圍在復位應答期間,應在以下范圍內:A類卡,時鐘應在1~5MHz;B類卡,時鐘應在1~4MHz。
復位后,由收到的ATR(復位應答)信號中的F(時鐘頻率變換因子)和D(比特率調整因子)來確定。
時鐘信號的工作周期應為穩定操作期間周期的40%~60%。當頻率從一個值轉換到另一個值時,應注意保證沒有比短周期的40%更短的脈沖。
- 卡的邏輯加密芯片:邏輯加密卡主要是由EEPROM單元陣列和密碼控制邏輯構成的,其功能介于存儲器卡和CPU卡之間,它具有一定的保密邏輯功能,不像存儲器卡那樣能夠被自由擦寫。邏輯加密卡芯片從功能上看,主要分為兩個部分,一是EEPROM單元陣列,一是保密邏輯部分。 SLE4442卡內含256*8位EEPROM存儲器和32*1位保護存儲器,該保護存儲器對EEPROM的前32字節進行寫/刪除保護。保護位是一次性的,不能修改。它還有一個可編程序安全碼邏輯,整個存儲器除了PSC以外,均可讀,而且只有在比較PSC不正確后才能進行寫/刪除操作。在三次比較PSC不正確后將鎖住后續的PSC比較及寫/刪除操作。
存儲器分配:
邏輯加密卡芯片的功能框圖:
比較從EEPROM中讀出的數據和IC卡中讀出的數據是否相同:
CMPLOOP: MOV A,@R0
MOV R6,A
MOV A,@R1
XRL A,R6
JNZ NOEQU
DJNZ R7,CMPLOOP
SNEQU: CLR SW
JMP Read-Insert-Card
NOEQU: SETB SW
JMP Read-Insert-Card
$INCLUDE(SLE4442.INC)
$INCLUDE(V12C-24A.inc) end
EEPROM邏輯圖2.3.5RS—232通信接口芯片:RS—232是目前串行通信中最常用的總線,其標準RS—232C是美國電子工業協會EIA制定的串行物理接口協議。RS—232接口的特征是負邏輯、單端驅動、共地接收、適用于點對點通信。當信號線上的電平為-3~-15V時,表示邏輯“1” ;當信號為+3~+15V時,表示邏輯“0”。通信雙方使用一條公共信號地線作電平參考。其驅動器負載電容不超過2500PF,通信距離受此電容的限制。
JP15跳線組的1和2,即把單片機鎖緊座的RXD和TXD腳與RS-232電平轉換芯片MAX232連接起來。RS-232的2口:C0-RSD,PC接收串行數據;3口:C0-TXD,PC接收串行數據。2.3.6電路原理分析:由于IC卡使用中往往牽涉到經濟及其他信息,因此它的可靠性至關重要。IC卡讀/寫接口的可靠性包括:IC卡讀/寫過程能可靠地進行;任意插拔IC卡不會引起IC卡損傷;在IC卡讀/寫中出現問題時,能及時告警并恢復到正常狀態。
IC卡的上/下電控制:IC卡的上電一般是可知的,即對IC卡讀/寫時,須給IC上電;因此,IC卡的上電控制比較簡單,由于IC卡讀/寫電流很小,一般為幾個毫安,由單片機的P1。4信號通過小功率三極管9012控制系統的+5V電源切入IC卡座。當IC卡上電后,發光二極管L2被點亮,起讀/寫指示作用。每次對IC卡讀/寫完成后,即及時下電,以減少插拔時帶電的可能性。要保證IC卡能任意插拔,不致引起IC卡損壞,必須使IC卡拔卡過程處于IC卡斷電的狀態。要作到這一點,必須保證IC卡的下電迅速及時;為此,可將IC卡的拔卡處理由最高級中斷程序來實現。
IC卡與CPU間串行信號的限流: 為了保證IC卡帶電插拔的安全可靠,需對IC卡與CPU間串行通信的數據信號與時鐘信號進行。限流電阻阻值一般是100~200歐。此限流電阻同時可以防止往IC卡座中導電的異物而引起系統損壞。
串行通信接口的實現:TTL與RS-232C電平轉換由諸如MAX202E接口芯片實現,采用簡單的軟握手3線制通信方式。
工作狀態的有效提示:大多IC卡讀/寫裝置有聲光指示接口,發光二極管L2即為讀/寫工作狀態指示,發光二極管L1用與串行通信指示。
2.4軟件的設計思想:
讀/寫器軟件結構:讀寫器的讀/寫操作由上位PC機進行控制,通過串行通信的命令字來實現,具體規定為:如握手信號為0AAH,則讀卡;如握手信號為0BBH,則寫卡。其中,在讀/寫卡開始時,設置讀/寫卡標志;在通信開始時,設置通信標志。避免數據不全或錯誤數據讀入或寫入。另外,所有的IC卡數據是先存放在IC卡的讀緩沖區和寫緩沖區,“有卡插入否”是通過判斷P3.3引腳的高低電平來實現。為了保證讀卡的可靠性,必須進行軟件“去抖”處理。一旦有卡插入,則設置讀/寫標志;在通信時,設置正在通信標志。目的是為了避免帶電插拔。本系統中關鍵的軟復位是通過在外中斷INT0服務函數中設置軟復位標志,在主函數中強制跳轉到函數首實現的。
為保證IC卡讀/寫過程準確可靠,除要保證讀/寫函數嚴格按照IC卡的讀/寫時序外,還須采用“重讀”和“回讀”措施。即:讀IC卡時,采用讀2次的方式,寫IC卡時,先將數據寫入,再回讀比較,相符則繼續,否則重寫一次,以免偶然的寫失敗導致得出IC卡失效才錯誤結論。為使上、下機位均不死機或簡單恢復正常工作。對于作為下位機的IC卡讀/寫器,利用IC卡能隨意拔插,再結合IC卡的拔卡處理是一個高級中斷的特點,將IC卡的拔卡中斷程序分2個分支:1)非IC卡讀/寫且非與上位機通信狀態;中斷子程序是簡單的拔卡BEEP告警后,直接中斷返回。2)在與上位機通信或正在對IC卡讀/寫狀態。會引起系統工作失常甚至死機,在恢復中斷環境后,用強制跳轉指令強制從主程序開始執行,達到復位的效果。
為確保串行通信的可靠性,應著重從上、下位機通信軟件的以下問題入手:合理選擇通信波特率,由于上、下位機通信的數據量小,因此,通信波特率可選擇低一些,但要高度重視下位機的波特率參數整定問題。
3.系統調試:對于開發者來說,在方案確定和實施時,首先要考慮對于不同的功能模塊具體采用的接口方式,接口芯片及電路。要做的工作主要是查閱資料,由于單片機外圍接口電路設計可借鑒的資料十分豐富。因此在電路設計時,如果能清楚了解參考資料的設計意圖,設計要點,應當說在原理上一般不會出錯,主要是工藝性錯誤或設計缺陷。從這個意義上說,單片機應用系統的硬件調試主要是排查電路板的問題和連接的問題。1.仔細推敲設計原理,確認無誤;2.對照設計圖紙查印制電路板,看是否有過空,粘連等工藝現象;3.外圍連接是否有誤。單片機應用系統的軟件調試主要是邏輯錯誤和功能錯誤。
本設計利用DP—51PRO單片機綜合仿真實驗儀進行智能IC卡讀寫器的操作,DP—51PRO單片機綜合仿真實驗儀提供了豐富的外圍期間和設備,其中,D8區是接觸式IC卡實驗區,J100為IC卡控制信號接口,其中VCC和GND已經連接到卡座上。
4.結論:
在本系統的開發應用過程中,由本人獨立完成智能IC卡讀寫器的設計,但是,由于本人經驗、知識積累的欠缺,本設計還存在很多不足和欠缺。
但是,智能IC卡讀寫器還是應用特別的廣泛,此次的設計還是比較實用,基本實現了預期目標。本次設計結束了我的大學生涯,它是具有標志性的。它不僅僅是一次畢業論文設計,在設計中我通過實踐,掌握了更多的專業知識,由于親自動手實踐,查閱了大量有關于IC卡,51單片機的資料,更加深刻的記憶其中的內容。在設計中培養動思維方式、動手能力,這對今后的生活、工作、學習都有很大的幫助。而且,同學的互助,讓我更懂得工作需要團體精神!這比設計本身更有意義。
6.致謝信:
時光荏苒,歲月如梭,轉眼間四年的大學生活馬上結束了。本次畢業設計已經接近尾聲,回顧本次畢業設計,作為一個本科生的畢業設計,由于經驗的匱乏,難免有許多考慮不周全的地方,如果沒有導師的督促指導,以及一起工作的同學們的支持,想要完成這個設計是難以想象的。感謝在此期間,所有教育我的老師,你們的富有創造性的思維方法,豐富的科研經驗和遠見卓識,開拓了我的思路,使我受益匪淺,在此深表謝意!
此外,還要特別感謝我的指導老師宮老師,無論在理論上還是在實踐中,都給與我很大的幫助,使我得到很大的提高,這對于我以后的工作和學習都有一種巨大的幫助,在此感謝他耐心的輔導。在撰寫論文階段,宮老師幾次審閱我的論文,提出了許多寶貴意見,沒有他的指導,我就不能較好的完成課題設計的任務。
最后,將次文獻給所有關心我,教育我,支持我的親人老師和朋友們謝謝你們的鼓勵,此次畢業設計才會順利完成!
附錄一:外文專業參考資料譯文:
附錄二:外文專業參考資料原文:
附錄三:電路原理圖:
附錄四:程序流程圖:

完整的Word格式文檔51黑下載地址(含源碼與清晰圖片):
基于單片機實現IC卡讀卡器.docx
(1.82 MB, 下載次數: 42)
2018-5-16 19:32 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |