物聯(lián)傳媒 旗下網(wǎng)站
登錄 注冊(cè)

智能卡COS底層無(wú)關(guān)性設(shè)計(jì)

作者:李鐵軍,何永洪
來(lái)源:網(wǎng)絡(luò)
日期:2012-06-27 14:42:49
摘要:介紹了以單片機(jī)AT89C51為核心的IC卡系統(tǒng)的設(shè)計(jì)。設(shè)計(jì)了單片機(jī)控制IC卡數(shù)據(jù)讀寫(xiě)的軟/硬件、LCD顯示以及與PC機(jī)之間的串口通信。

  IC卡(IntegratedCircuitCard)是將一個(gè)集成電路芯片鑲在塑料基片中,封裝為卡片形式,具有讀寫(xiě)數(shù)據(jù)和存儲(chǔ)數(shù)據(jù)的能力。接觸式IC卡是現(xiàn)代智能卡中的一種,它是繼條碼卡、磁卡等之后出現(xiàn)的一種高性能標(biāo)識(shí)卡,是微電子、計(jì)算機(jī)及電子信息等高新技術(shù)綜合發(fā)展的產(chǎn)物。IC卡比磁卡存儲(chǔ)容量大,可靠性和安全性高,在應(yīng)用上除了覆蓋磁卡的全部應(yīng)用范圍以外,還提供了許多磁卡所不具備的應(yīng)用特性。正是這些特性,使IC卡在脫機(jī)業(yè)務(wù)處理和聯(lián)網(wǎng)數(shù)據(jù)一致性等方面表現(xiàn)出前所未有的優(yōu)勢(shì)?,F(xiàn)已廣泛應(yīng)用在金融、交通、通信、保安、娛樂(lè)等諸多領(lǐng)域。

  1 AT24C08卡

  存儲(chǔ)卡是IC卡的一種,它是一種用可電擦寫(xiě)的可編程內(nèi)存(E2PROM)為核心的IC卡,能夠多次重復(fù)使用。AT24C08是ATMEL公司出品的I2C接口、高集成度串行E2PROM內(nèi)存IC卡。AT24C08具有以下特點(diǎn):與400kHzI2C總線(xiàn)兼容、低功耗CMOS技術(shù)、1000000次編程/擦除周期及可保存數(shù)據(jù)100年以上。

  AT24C08芯片的觸點(diǎn)位置與功能符合ISO7816-2標(biāo)準(zhǔn),觸點(diǎn)位置如圖1所示,觸點(diǎn)功能如表1所示。

  2 電路設(shè)計(jì)與讀寫(xiě)控制

  2.1 接口電路的設(shè)計(jì)

  本設(shè)計(jì)采用的單片機(jī)是AT89C51[1]。AT24C08卡座與AT89C51的電路連接如圖2所示[2]。SLC為串行時(shí)鐘,在時(shí)鐘的上升沿,數(shù)據(jù)寫(xiě)入E2PROM;在時(shí)鐘的下降沿,數(shù)據(jù)從E2PROM被讀出。SDA為雙向數(shù)據(jù)端口,是一個(gè)漏極開(kāi)路的引腳,滿(mǎn)足“線(xiàn)與”的條件,在使用過(guò)程中需要加上拉電阻。SW1、SW2為IC卡卡座的1對(duì)常開(kāi)觸點(diǎn),SW1與Vcc連接,SW2與AT89C51的引腳P1.0連接,平時(shí)P1.0通過(guò)1個(gè)電阻連接到地,當(dāng)有卡插入時(shí),SW1和SW2短接,Vcc將P1.0上拉到高電平,通過(guò)對(duì)P1.0上的電平查詢(xún)就可以知道是否有卡插入。

  2.2 AT24C08內(nèi)存讀寫(xiě)操作

  AT24C08的數(shù)據(jù)接口完全符合I2C的標(biāo)準(zhǔn)。I2C總線(xiàn)是由數(shù)據(jù)線(xiàn)SDA和時(shí)鐘線(xiàn)SCL構(gòu)成的串行總線(xiàn),可發(fā)送和接收數(shù)據(jù)。I2C總線(xiàn)協(xié)議規(guī)定:只有在總線(xiàn)空閑時(shí)才允許啟動(dòng)數(shù)據(jù)傳送。在數(shù)據(jù)傳送過(guò)程中,當(dāng)時(shí)鐘線(xiàn)為高電平時(shí),數(shù)據(jù)線(xiàn)必須保持穩(wěn)定狀態(tài),不允許有跳變;且數(shù)據(jù)線(xiàn)的任何電平變化都將被看作總線(xiàn)的啟動(dòng)或停止信號(hào)。I2C總線(xiàn)在傳送數(shù)據(jù)過(guò)程中共有以下3種類(lèi)型信號(hào):

  (1)起始信號(hào):當(dāng)SCL處于高電平時(shí),SDA從高到低地跳變作為I2C總線(xiàn)的啟動(dòng)信號(hào),啟動(dòng)狀態(tài)應(yīng)該在操作命令(讀/寫(xiě))之前進(jìn)行建立。

  (2)停止信號(hào):當(dāng)SCL處于高電平時(shí),SDA從低到高的跳變作為I2C總線(xiàn)的停止信號(hào),表示一種操作的結(jié)束,馬上即將結(jié)束所有的相關(guān)通信。

  (3)應(yīng)答信號(hào):AT24C08在接收到8bit數(shù)據(jù)后,在第9個(gè)脈沖向AT89C51發(fā)出1個(gè)低電平,表示已收到數(shù)據(jù)。如圖3(a)所示。

  通過(guò)時(shí)序圖可看出,要寫(xiě)卡必須由起始信號(hào)啟動(dòng),緊接著送入器件地址,使卡進(jìn)行讀/寫(xiě)操作。對(duì)AT24C08卡,器件地址高4位一定為1010,最低位作為讀寫(xiě)控制位,“0”表示對(duì)IC卡進(jìn)行寫(xiě)操作,“1”表示對(duì)IC卡進(jìn)行讀操作。信息高位先送出,如圖3(b)所示。

{$page$}

  由圖2的接口電路可以看出,AT24C08的時(shí)鐘、上/下電及讀寫(xiě)操作均由單片機(jī)控制,因此單片機(jī)編程時(shí)應(yīng)符合AT24C08的傳輸協(xié)議和操作命令。本設(shè)計(jì)首先按照要求編寫(xiě)對(duì)AT24C08進(jìn)行操作的子程序,再編寫(xiě)主程序組成完整的IC卡讀寫(xiě)系統(tǒng)[3]。幾個(gè)主要子程序和IC卡讀卡器對(duì)AT24C08的操作流程圖如圖4所示。

  3 LCD顯示

  字符型液晶顯示模塊是一種專(zhuān)門(mén)用于顯示字母、數(shù)字、符號(hào)等點(diǎn)陣式LCD,目前常用16×1、20×2、40×2行等模塊。本文用1602字符型液晶顯示器顯示讀卡器讀出的信息。1602的引腳說(shuō)明如表2所示、與單片機(jī)AT89C51的接口電路如圖5所示。

  單片機(jī)讀出IC卡的數(shù)據(jù)通過(guò)P0口送到液晶顯示器顯示,可分2行共顯示32個(gè)字符,也就是16個(gè)字節(jié)的十六進(jìn)制數(shù)據(jù),通過(guò)上位機(jī)控制讀數(shù)據(jù)起始地址可移動(dòng)顯示數(shù)據(jù)。1602可直接顯示字符型數(shù)據(jù),IC卡讀出的十六進(jìn)制數(shù)據(jù)需轉(zhuǎn)換成字符型數(shù)據(jù)再送到液晶屏顯示。

  4 單片機(jī)與計(jì)算機(jī)的串口通信

  4.1 單片機(jī)與計(jì)算機(jī)的硬件接口

  PC機(jī)串口通常采用RS-232電平,而單片機(jī)串口是TTL電平,二者不兼容。所以,接口必須做電平轉(zhuǎn)換處理。在此,采用MAXIM公司的MAX232芯片進(jìn)行電平轉(zhuǎn)換。AT89C51單片機(jī)TXD端連接到MAX232的T1IN端,用于發(fā)送數(shù)據(jù);PC機(jī)的RD端連接到MAX232的T1OUT端,用于接收數(shù)據(jù);AT89C51單片機(jī)RXD端連接到MAX232的R1OUT端,用于接收數(shù)據(jù);PC機(jī)的TD端連接到MAX232的R1IN端,用于發(fā)送數(shù)據(jù)。

  4.2 用MSComm控件實(shí)現(xiàn)串口通信

  MSComm控件是Microsoft公司為簡(jiǎn)化Windows下串行通信編程而提供的ActiveX控件[4]。它提供了一系列標(biāo)準(zhǔn)通信命令的使用接口,可建立起與串口的連接,并可通過(guò)串口連接到其他通信設(shè)備(如Modem),從而實(shí)現(xiàn)發(fā)出命令、交換數(shù)據(jù)以及監(jiān)視和響應(yīng)串行連接中發(fā)生的事件和錯(cuò)誤等功能。MSComm控件也可用于創(chuàng)建電話(huà)撥號(hào)程序、串行口通信程序和功能完備的終端程序。MSComm控件提供了事件驅(qū)動(dòng)法和查詢(xún)法2種處理通信的方式。在使用事件驅(qū)動(dòng)法設(shè)計(jì)程序時(shí),每當(dāng)有新字符到達(dá)、端口狀態(tài)改變或發(fā)生錯(cuò)誤時(shí),MSComm控件都將觸發(fā)事件,應(yīng)用程序在捕獲該事件后通過(guò)檢查MSComm控件的CommEvent屬性可獲知所發(fā)生的事件或錯(cuò)誤,從而采取相應(yīng)的操作。這種方法的優(yōu)點(diǎn)是程序響應(yīng)及時(shí),可靠性高。雖然查詢(xún)方式實(shí)質(zhì)上還是屬于事件驅(qū)動(dòng),但在有些情況下這種方式顯得更為便捷。它適合于較小的應(yīng)用程序,每當(dāng)應(yīng)用程序執(zhí)行完某一串行口操作后,將不斷檢查MSComm控件的CommEvent屬性以檢查執(zhí)行結(jié)果或某一事件是否發(fā)生。

  本文設(shè)計(jì)的基于MSC-51單片機(jī)的IC卡系統(tǒng)硬件電路,用單片機(jī)模擬I2C的時(shí)序,使用了C語(yǔ)言編寫(xiě)源程序[5]。通過(guò)對(duì)單片機(jī)和LCD的進(jìn)一步開(kāi)發(fā),可以使IC卡的使用能夠脫離讀卡器終端設(shè)備的限制,設(shè)計(jì)成為手持式的IC卡系統(tǒng)。

{$page$}

  參考文獻(xiàn)

  [1]羅興垅,黃隆勝.基于AT89C51控制的0.01℃數(shù)顯溫度計(jì)的設(shè)計(jì)[J].微計(jì)算機(jī)信息,2006(5-2):70-72.

  [2]余永權(quán).ATMAEL89系列單片機(jī)應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2002.

  [3]李軍.系列單片機(jī)高級(jí)實(shí)例開(kāi)發(fā)指南[M].北京:北京航空航天大學(xué)出版社,2004.

  [4]李長(zhǎng)林.VisualBasic串口通信技術(shù)與典型實(shí)例[M].北京:清華大學(xué)出版社,2006.

  [5]孫涵芳.MCS-51/96系列單片機(jī)原理及應(yīng)用(修訂版)[M].北京:北京航空航天大學(xué)出版社,1996.