色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          關(guān) 閉

          新聞中心

          EEPW首頁(yè) > 安全與國(guó)防 > 設(shè)計(jì)應(yīng)用 > 一種安全可靠的IC卡讀寫器系統(tǒng)

          一種安全可靠的IC卡讀寫器系統(tǒng)

          作者: 時(shí)間:2008-01-24 來(lái)源: 收藏

            1 概述

          本文引用地址:http://cafeforensic.com/article/78030.htm

            人們?nèi)粘I钪薪?jīng)常接觸到磁卡和,它們是根據(jù)卡片上的信息載體的不同而劃分的。卡片及其都屬于人機(jī)接口的輸入輸出設(shè)備。磁卡是在卡片上貼一條窄窄的磁帶來(lái)記錄信息的,它主要用于車船票 、信用卡、電話磁卡、旅館門鑰匙等。則為近幾年才出現(xiàn)的新型卡片,在卡片上嵌有IC(E2PROM,有的還有CPU)。由于它保存的信息比較可靠安全、可以高達(dá)幾萬(wàn)次的讀寫,所以大量應(yīng)用于公交車票 、飯票 、保健卡、收費(fèi)系統(tǒng)等。下面介紹一種以XICOR公司的為卡片的、用于存取款的IC卡方案。

            2 硬件組成

            圖1為IC卡及其讀寫器硬件電路圖。其中讀寫器由單片機(jī)、鍵盤、顯示、監(jiān)控電路等部分組成。IC卡采用XICOR公司的Y。

            

           IC卡讀寫器系統(tǒng)電路圖

           

            圖1 IC卡讀寫器系統(tǒng)電路圖

            2.1 IC卡及卡座

            為128×8位的保密串行FLASH E2PROM,其中讀密碼和寫密碼分別為64位。圖2為其智能卡Smart Card封裝的引腳圖。把芯片封裝在一個(gè)卡片上,將卡片插入IC卡讀寫器的卡座中,讀寫器就可以對(duì)它進(jìn)行讀寫,實(shí)現(xiàn)加密、查詢、存款、取款等功能。

            IC卡座有8個(gè)引腳,當(dāng)X76F100Y插入時(shí),正好同這幾個(gè)引腳相連。另外還有兩個(gè)固定端,其中一個(gè)固定端同卡座上一個(gè)彈簧片相連,兩個(gè)觸點(diǎn)和簧片就相當(dāng)于一個(gè)常閉開(kāi)關(guān)。當(dāng)卡未插入時(shí),簧片閉合,P3.2腳保持低電平;當(dāng)卡插入時(shí),簧片被頂開(kāi),P3.2腳變?yōu)楦唠娖?。?dāng)單片機(jī)檢測(cè)到P3.2腳變高,通過(guò)P1.3 使X76F100的RST引腳變高,使其復(fù)位。

            2.2 單片機(jī)

            單片機(jī)采用LG公司的GMS97C52。它有8K字節(jié)的ROM,256個(gè)字節(jié)的RAM以及32個(gè)I/O口,P1口與串行器件X25045和X76F100連接,P0、P2口用于鍵盤和顯示,P3口中P3.2用于檢測(cè)IC卡是否插入,其余7個(gè)口,可作其它功能擴(kuò)充。

            

           X76F100Y引腳

           

            圖2 X76F100Y引腳

            2.3 監(jiān)控電路

            監(jiān)控電路采用X25045芯片,它包括看門狗定時(shí)器、電壓監(jiān)控電路和E2PROM存貯器。其功能是:上掉電時(shí)對(duì)GMS97C52產(chǎn)生RESET信號(hào);看門狗對(duì)系統(tǒng)進(jìn)行監(jiān)控,防止死機(jī)。

            2.4 鍵盤電路

            為了方便,鍵盤接口電路用I/O口實(shí)現(xiàn),它為4×4結(jié)構(gòu),16個(gè)鍵。其中數(shù)字鍵11個(gè),功能鍵4個(gè),回車鍵1個(gè)。

            數(shù)字鍵:0、1、2、3、4、5、6、7、8、9、←(退格)。

            功能鍵:查詢?、存儲(chǔ)+、取款-、改密碼* 。

            查詢?:用戶通過(guò)讀密碼可以查詢卡中所存的款額。

            存款+ :用戶通過(guò)寫密碼可以將款存入卡中。

            取款-:用戶通過(guò)寫密碼可以從卡中取款。

            改密碼*:分為修改讀密碼和寫密碼。為方便起見(jiàn),令讀密碼和寫密碼一致,按此鍵將同時(shí)修改讀密碼和寫密碼。

            回車鍵:8位密碼或存取款數(shù)輸入完確認(rèn),以及新密碼輸入完確認(rèn)。

            2.5 顯示電路

            顯示部份采用LED顯示器,也用I/O口實(shí)現(xiàn)。用于顯示系統(tǒng)狀態(tài)、輸入的密碼或所要存取的款額以及出錯(cuò)信息等。

            由于GMS97C52的驅(qū)動(dòng)電流有限,在P0、P2口加反向器SN74F04,增加驅(qū)動(dòng)能力。它的吸入電流為64mA,輸出電流為15mA,可以保證位選所需的吸入電流。

            3 程序設(shè)計(jì)

            3.1 主程序流程圖

            主程序流程圖如圖3所示。

            

          主程序流程圖

           

            開(kāi)機(jī)后,系統(tǒng)處于待機(jī)狀態(tài),不斷查詢P3.2腳電平,當(dāng)X76F100插入讀寫器卡座時(shí),P3.2腳電平變高,單片機(jī)檢測(cè)到P3.2高電平信號(hào)時(shí),使P1.3腳電平變高,如果此時(shí)為低電平,X76F100復(fù)位,輸出32位固定的“同步復(fù)位響應(yīng)”數(shù)據(jù)。然后循環(huán)掃描鍵盤顯示程序,進(jìn)行存款、取款、查詢或改密碼。一次操作完成后返回,然后不斷循環(huán)。

            3.2 循環(huán)鍵盤顯示程序

            循環(huán)掃描鍵盤顯示程序如圖4所示,它采用程控掃描方式。鍵盤實(shí)際操作的順序是:先按功能鍵,然后依次輸入8位(十進(jìn)制)密碼,按回車鍵確認(rèn)。當(dāng)存取款時(shí),隨后輸入所存取的款額;當(dāng)修改密碼時(shí),隨后輸入8位新密碼,輸完后按回車鍵確認(rèn)。若輸入密碼正確,顯示IC卡內(nèi)存款的余額或改密碼成功信息(SUCCESS)。若密碼不正確,提示重新輸入,允許輸入密碼4次。

            為了記錄操作中正在進(jìn)行的狀態(tài),在鍵盤程序中設(shè)置了多個(gè)指針。

            (1)KEY 有否按鍵按下標(biāo)志。00H表示無(wú)鍵按下,01H表示有鍵按下。此標(biāo)志用于判斷按鍵是否已松開(kāi),防止誤操作。

            (2)FUN為功能鍵指針,00H表示無(wú)功能鍵按下,01H表示存款(ADD),02H表示取款(SUB),03H表示查詢(IQUIRE),04H表示改密碼(CHANGE PASSWORD)。

            (3)DIG為允許數(shù)字鍵輸入標(biāo)志,00H表示不允許,01H表示允許。此標(biāo)志主要是防止輸入多余的密碼,或輸入的款數(shù)超出限額。

            (4) NUM表示輸入第幾個(gè)數(shù)字,00H表示無(wú)數(shù)字輸入,01H~08H表示輸入密碼,09H~10H表示輸入款數(shù)或新密碼,若NUM為11H,顯示出錯(cuò)信息。

            3.3 X76F100讀程序舉例

            

           循環(huán)鍵盤顯示程序流程圖

           

            圖4 循環(huán)鍵盤顯示程序流程圖

            X76F100為I2C總線E2PROM。SCL為時(shí)鐘輸入,SDA為雙向數(shù)據(jù)輸入輸出線。通過(guò)片輸入來(lái)控制對(duì)器件的訪問(wèn)。下面以頁(yè)寫為例,先結(jié)合時(shí)序說(shuō)明X76F100的工作過(guò)程,然后給出程序。頁(yè)寫時(shí)序如圖5所示。在該系統(tǒng)中,GMS97C52為主機(jī),X76F100為從機(jī)。首先主機(jī)向從機(jī)發(fā)一個(gè)START命令,產(chǎn)生開(kāi)始條件,然后發(fā)寫命令字。當(dāng)從機(jī)接到命令后,向主機(jī)發(fā)一個(gè)應(yīng)答信號(hào)NACK。然后跟隨8字節(jié)密碼,隨后進(jìn)入一個(gè)寫周期,寫周期結(jié)束后進(jìn)行密碼應(yīng)答輪詢ACK Polling。X76F100要求主機(jī)用專用的應(yīng)答命令55H進(jìn)行應(yīng)答輪詢。如果輸入的密碼正確,將返回一個(gè)“ACK”。如果密碼不正確,將返回“no-ACK”,重試計(jì)數(shù)器加1,返回到啟始位置,提示重新送入寫命令字和8字節(jié)密碼。若密碼正確,主機(jī)接著送入8個(gè)字節(jié)的數(shù)據(jù),ACK響應(yīng)成功后,主機(jī)發(fā)出STOP命令完成寫操作。下面是用寫密碼進(jìn)行頁(yè)寫的程序。

            

          頁(yè)寫時(shí)序圖

           

            圖5 頁(yè)寫時(shí)序圖(需要密碼)

            WRITE_USING_WRITE_PASS: ;用寫密碼進(jìn)行寫操作

            ACALL     START;調(diào)開(kāi)始命令

            MOV      A,#SECTOR_WR;調(diào)頁(yè)寫命令

            ACALL     OUTBYTE;調(diào)輸出字節(jié)命令

            ACALL     NACK;X76F100發(fā)應(yīng)答信號(hào)

            ACALL     WR_WR_PASS;調(diào)寫密碼命令

            ACALL     T10ms;10ms延時(shí)開(kāi)始寫密碼周期

            ACALL     ACK_POLLING;調(diào)密碼應(yīng)答輪詢子程序

            ACALL     WR_DATA;調(diào)頁(yè)寫數(shù)據(jù)子程序

            ACALL      STOP;調(diào)停止命令

            ACALL     T10ms;延時(shí)10ms寫密碼周期

            RET

            WR_WR_PASS: ;將寫密碼寫入X76F100

            MOV      R0,#WR_PASS7;將密碼首址送入R0

            MOV      R1,#08H;寫密碼為8個(gè)字節(jié)

            WP:MOV      A,@R0  ;將R0中的數(shù)據(jù)送入A中

            ACALL    OUTBYTE;輸出字節(jié)子程序

            ACALL    NACK

            INC      R0

            DJNZ     R1,WP

            RET

            WR_DATA: ;將數(shù)據(jù)寫到X76F100中

            MOV     R0,#DATA0;將數(shù)據(jù)首地址送入R0

            MOV     R1,#08H;一頁(yè)有8個(gè)數(shù)據(jù)

            WB: MOV     A,@R0 ;將R0中數(shù)據(jù)送入A

            ACALL    OUTBYTE;調(diào)輸出字節(jié)子程序

            ACALL    NACK;從機(jī)發(fā)應(yīng)答信號(hào)

            INC      R0;下一個(gè)字節(jié)

            DJNZ     R1,WB;循環(huán)直到R1為0

            RET

            OUTBYTE: ;主機(jī)向X76F100發(fā)字節(jié)

            MOV     R2,#08H;一個(gè)字節(jié)有8位

            LOOPO:

            CLR      SCL_76

            RLC      A;移位

            MOV     SDA_76,C;將進(jìn)位送入數(shù)據(jù)線

            SETB     CL_76

            DJNZ     R2,LOOP;循環(huán)直到R2為0

            RET

            START:

            SETB     SDA_76;開(kāi)始子程序

            SETB     SCL_76

            CLR      SDA_76

            CLR      SCL_76

            RET

            STOP:

            CLR      SDA_76;停止子程序

            SETB     SCL_76

            SETB     SDA_76

            RET

            ACK_POLLING: ;密碼應(yīng)答輪詢子程序

            ACALL    START

            MOV     A,#55H;主機(jī)發(fā)固定應(yīng)答命令

            ACALL   OUTBYTE

            ACALL   NACK;調(diào)從機(jī)發(fā)應(yīng)答信號(hào)

            JC      PASS_ERROR;若有進(jìn)位則密碼錯(cuò)誤

            RET

            PASS_ERROR: ;密碼錯(cuò)誤

            ACALL   STOP

            RET

            ACK:

            CLR    SDA_76;主機(jī)執(zhí)行一個(gè)應(yīng)答

            ACALL  CLOCK

            RET

            NACK:

            SETB   SDA_76

            ;從機(jī)執(zhí)行一個(gè)應(yīng)答

            ACALL  CLOCK

            RET

            CLOCK:

            SETB  SCL_76;第9個(gè)脈沖

            MOV  C,SDA-76;讀SDA狀態(tài)以判斷是否有應(yīng)答

            CLR   SCL_76

            RET

            T10ms:

            MOV  R7,#064H

            ;10ms延時(shí)

            T10A:

            MOV  R6,#032H

            T10B:

            DJNZ  R6,T10B

            DJNZ  R7,T10A

            RET

            參 考 文 獻(xiàn)

            1 詹樹(shù)仁主編. GMS90及GMS97系列單片機(jī)的工作原理及其應(yīng)用. 武漢力源電子股份有限公司,1998年

            2 趙依軍,胡戎. 單片機(jī)微機(jī)接口技術(shù). 人民郵電出版社,1989

            3 盧存?zhèn)ィX捷. 微機(jī)原理及應(yīng)用系統(tǒng)設(shè)計(jì). 河海大學(xué)出版社,1992年

            4 X76F100 DATA SHEET. XICOR公司



          關(guān)鍵詞: IC卡 讀寫器 X76F100

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉