《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于單片機的IC卡系統(tǒng)設(shè)計
基于單片機的IC卡系統(tǒng)設(shè)計
李鐵軍,何永洪
重慶郵電大學 通信與信息工程學院,重慶 400065
摘要: 介紹了以單片機AT89C51為核心的IC卡系統(tǒng)的設(shè)計。設(shè)計了單片機控制IC卡數(shù)據(jù)讀寫的軟/硬件、LCD顯示以及與PC機之間的串口通信。
Abstract:
Key words :

摘  要: 介紹了以單片機AT89C51為核心的IC卡系統(tǒng)的設(shè)計。設(shè)計了單片機控制IC卡數(shù)據(jù)讀寫的軟/硬件、LCD顯示以及與PC機之間的串口通信。
關(guān)鍵詞: AT24C08;AT89C51;I2C;LCD;串口通信

  IC卡(Integrated Circuit Card)是將一個集成電路芯片鑲在塑料基片中,封裝為卡片形式,具有讀寫數(shù)據(jù)和存儲數(shù)據(jù)的能力。接觸式IC卡是現(xiàn)代智能卡中的一種,它是繼條碼卡、磁卡等之后出現(xiàn)的一種高性能標識卡,是微電子、計算機及電子信息等高新技術(shù)綜合發(fā)展的產(chǎn)物。IC卡比磁卡存儲容量大,可靠性和安全性高,在應(yīng)用上除了覆蓋磁卡的全部應(yīng)用范圍以外,還提供了許多磁卡所不具備的應(yīng)用特性。正是這些特性,使IC卡在脫機業(yè)務(wù)處理和聯(lián)網(wǎng)數(shù)據(jù)一致性等方面表現(xiàn)出前所未有的優(yōu)勢?,F(xiàn)已廣泛應(yīng)用在金融、交通、通信、保安、娛樂等諸多領(lǐng)域。
1 AT24C08卡
  存儲卡是IC卡的一種,它是一種用可電擦寫的可編程內(nèi)存(E2PROM)為核心的IC卡,能夠多次重復使用。AT24C08是ATMEL公司出品的I2C接口、高集成度串行E2PROM內(nèi)存IC卡。AT24C08具有以下特點:與400 kHz I2C總線兼容、低功耗CMOS技術(shù)、1 000 000次編程/擦除周期及可保存數(shù)據(jù)100年以上。
     AT24C08芯片的觸點位置與功能符合ISO7816-2標準,觸點位置如圖1所示,觸點功能如表1所示。

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

2.2 AT24C08內(nèi)存讀寫操作
     AT24C08的數(shù)據(jù)接口完全符合I2C的標準。I2C總線是由數(shù)據(jù)線SDA和時鐘線SCL構(gòu)成的串行總線,可發(fā)送和接收數(shù)據(jù)。I2C總線協(xié)議規(guī)定:只有在總線空閑時才允許啟動數(shù)據(jù)傳送。在數(shù)據(jù)傳送過程中,當時鐘線為高電平時,數(shù)據(jù)線必須保持穩(wěn)定狀態(tài),不允許有跳變;且數(shù)據(jù)線的任何電平變化都將被看作總線的啟動或停止信號。I2C總線在傳送數(shù)據(jù)過程中共有以下3種類型信號:
  (1)起始信號:當SCL處于高電平時,SDA從高到低地跳變作為I2C總線的啟動信號,啟動狀態(tài)應(yīng)該在操作命令(讀/寫)之前進行建立。
  (2)停止信號:當SCL處于高電平時,SDA從低到高的跳變作為I2C總線的停止信號,表示一種操作的結(jié)束,馬上即將結(jié)束所有的相關(guān)通信。
  (3)應(yīng)答信號:AT24C08在接收到8 bit數(shù)據(jù)后,在第9個脈沖向AT89C51發(fā)出1個低電平,表示已收到數(shù)據(jù)。如圖3(a)所示。

     通過時序圖可看出,要寫卡必須由起始信號啟動,緊接著送入器件地址,使卡進行讀/寫操作。對AT24C08卡,器件地址高4位一定為1010,最低位作為讀寫控制位,“0”表示對IC卡進行寫操作,“1”表示對IC卡進行讀操作。信息高位先送出,如圖3(b)所示。
     由圖2的接口電路可以看出,AT24C08的時鐘、上/下電及讀寫操作均由單片機控制,因此單片機編程時應(yīng)符合AT24C08的傳輸協(xié)議和操作命令。本設(shè)計首先按照要求編寫對AT24C08進行操作的子程序,再編寫主程序組成完整的IC卡讀寫系統(tǒng)[3]。幾個主要子程序和IC卡讀卡器對AT24C08的操作流程圖如圖4所示。

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

     單片機讀出IC卡的數(shù)據(jù)通過P0口送到液晶顯示器顯示,可分2行共顯示32個字符,也就是16個字節(jié)的十六進制數(shù)據(jù),通過上位機控制讀數(shù)據(jù)起始地址可移動顯示數(shù)據(jù)。1602可直接顯示字符型數(shù)據(jù),IC卡讀出的十六進制數(shù)據(jù)需轉(zhuǎn)換成字符型數(shù)據(jù)再送到液晶屏顯示。
4 單片機與計算機的串口通信
4.1 單片機與計算機的硬件接口
     PC機串口通常采用RS-232電平,而單片機串口是TTL電平,二者不兼容。所以,接口必須做電平轉(zhuǎn)換處理。在此,采用MAXIM公司的MAX232芯片進行電平轉(zhuǎn)換。AT89C51單片機TXD端連接到MAX232的T1IN端,用于發(fā)送數(shù)據(jù);PC機的RD端連接到MAX232的T1OUT端,用于接收數(shù)據(jù);AT89C51單片機RXD端連接到MAX232的R1OUT端,用于接收數(shù)據(jù);PC機的TD端連接到MAX232的R1IN端,用于發(fā)送數(shù)據(jù)。
4.2 用MSComm控件實現(xiàn)串口通信
     MSComm控件是Microsoft公司為簡化Windows下串行通信編程而提供的ActiveX控件[4]。它提供了一系列標準通信命令的使用接口,可建立起與串口的連接,并可通過串口連接到其他通信設(shè)備(如Modem),從而實現(xiàn)發(fā)出命令、交換數(shù)據(jù)以及監(jiān)視和響應(yīng)串行連接中發(fā)生的事件和錯誤等功能。MSComm控件也可用于創(chuàng)建電話撥號程序、串行口通信程序和功能完備的終端程序。MSComm控件提供了事件驅(qū)動法和查詢法2種處理通信的方式。在使用事件驅(qū)動法設(shè)計程序時,每當有新字符到達、端口狀態(tài)改變或發(fā)生錯誤時,MSComm控件都將觸發(fā)事件,應(yīng)用程序在捕獲該事件后通過檢查MSComm控件的CommEvent屬性可獲知所發(fā)生的事件或錯誤,從而采取相應(yīng)的操作。這種方法的優(yōu)點是程序響應(yīng)及時,可靠性高。雖然查詢方式實質(zhì)上還是屬于事件驅(qū)動,但在有些情況下這種方式顯得更為便捷。它適合于較小的應(yīng)用程序,每當應(yīng)用程序執(zhí)行完某一串行口操作后,將不斷檢查MSComm控件的CommEvent屬性以檢查執(zhí)行結(jié)果或某一事件是否發(fā)生。
     本文設(shè)計的基于MSC-51單片機的IC卡系統(tǒng)硬件電路,用單片機模擬I2C的時序,使用了C語言編寫源程序[5]。通過對單片機和LCD的進一步開發(fā),可以使IC卡的使用能夠脫離讀卡器終端設(shè)備的限制,設(shè)計成為手持式的IC卡系統(tǒng)。
參考文獻
[1] 羅興垅,黃隆勝.基于AT89C51控制的0.01℃數(shù)顯溫度計的設(shè)計[J].微計算機信息,2006(5-2):70-72.
[2] 余永權(quán).ATMAEL89系列單片機應(yīng)用技術(shù)[M].北京:北京航空航天大學出版社,2002.
[3] 李軍.系列單片機高級實例開發(fā)指南[M].北京:北京航空航天大學出版社,2004.
[4] 李長林.Visual Basic串口通信技術(shù)與典型實例[M].北京:清華大學出版社,2006.
[5] 孫涵芳.MCS-51/96系列單片機原理及應(yīng)用(修訂版)[M].北京:北京航空航天大學出版社,1996.
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。