久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

單片機(jī)IC卡讀寫器設(shè)計(jì)

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2007年06月28日   【字體:

摘要:本文對(duì)AT24系列存貯器和AT89系列單片機(jī)的特征及總線狀態(tài)作為介紹,并以AT24C01與AT89C2051為例詳細(xì)描述了通用存貯器IC卡的工作原理及用單片機(jī)進(jìn)行ic卡讀寫器一系列操作的基本電路連接和軟件編程的設(shè)計(jì)方法。

    關(guān)鍵詞:E2PROM I2C總線 FLASH ROM IC卡 AT24C01 AT89C2051

1 概述

C卡是集成電路卡(Integrated Circuit Card)的簡稱,有些國家和地區(qū)稱之為微芯片卡(Microchip Card)或微電路卡(Microcircuit Card)。IC卡的大小和磁卡相同,它把集成電路鑲在塑料卡片上,芯片一般是數(shù)據(jù)不易丟失的存儲(chǔ)器(ROM, EPROM.EPROM), 保護(hù)邏輯電路,或者CPU。IC卡最初是為了解決金融交易中的安全性問題而設(shè)計(jì)的,它帶來全新的交易概念與巨大的優(yōu)勢(shì)。很快,這一優(yōu)勢(shì)也為其他應(yīng)用部門所看中,使之廣泛應(yīng)用于電話、醫(yī)療保健、路禁控制和門鎖控制等等系統(tǒng)中。隨著時(shí)間的推移,應(yīng)用范圍還在不斷擴(kuò)大,使用IC卡的數(shù)量呈幾何級(jí)數(shù)增長。同時(shí),為了不同應(yīng)用場(chǎng)合的需求,IC卡制造商們?nèi)栽诓粩嗟叵蚴袌?chǎng)推出新的IC卡,IC卡的價(jià)格將隨著使用量的增加而逐年下降,所有這些,無疑又會(huì)大大推進(jìn)IC卡在各個(gè)領(lǐng)域的普及。無線SOC開發(fā)平臺(tái)499元 S3C44B0 ARM7開發(fā)板378元 S3C2410 ARM9開發(fā)板780元 AT91SAM7S64 ARM7
    按照IC卡與讀寫器的數(shù)據(jù)交換方式,IC卡可分為接觸型IC卡和非接觸型IC卡。接觸型IC卡就是在使用時(shí),通過有形的電極觸點(diǎn)將卡的集成電路與外部接口設(shè)備直接接觸連接來進(jìn)行數(shù)據(jù)交換的IC卡。非接觸型IC卡是通過無線電波或電磁場(chǎng)感應(yīng)的方式,將卡中集成電路內(nèi)的數(shù)據(jù)與外部設(shè)備接口設(shè)備通信,卡片不用直接接觸接口設(shè)備的電極就可以進(jìn)行數(shù)據(jù)讀寫。按照IC卡的功能和結(jié)構(gòu)又可以把IC卡分為存儲(chǔ)型IC卡和智能型IC卡。存儲(chǔ)型IC卡是屬于被動(dòng)型,它只能實(shí)現(xiàn)數(shù)據(jù)的各種輸入/輸出。這種類型IC卡內(nèi)部電路可分為兩大功能部分,數(shù)據(jù)存儲(chǔ)部分和數(shù)據(jù)加密操作控制部分。而且不是所有IC卡都必須具有這兩大功能。我們把只有數(shù)據(jù)存儲(chǔ)功能的IC卡稱為非加密型存儲(chǔ)卡 (Memory Card)。把具有數(shù)據(jù)存儲(chǔ)功能和數(shù)據(jù)加密操作控制的IC卡稱為加密型存儲(chǔ)卡(Memory Card with Security Logic), 它們有暫時(shí)或永久的數(shù)據(jù)存儲(chǔ)能力,其內(nèi)容可供處理或判斷之用。智能型IC卡就是在IC卡的集成電路中帶有微處理器電路的IC卡。它是一種主動(dòng)型IC卡,不僅能夠管理各種數(shù)據(jù)的I/O操作,校驗(yàn)來自接口設(shè)備的個(gè)人密碼,而且能夠根據(jù)應(yīng)用系統(tǒng)的要求主動(dòng)識(shí)別與之連接的接口設(shè)備。因此,在智能型IC卡中能夠建立各種應(yīng)用系統(tǒng)的授權(quán),存放多個(gè)應(yīng)用系統(tǒng)的相關(guān)數(shù)據(jù),并實(shí)現(xiàn)對(duì)數(shù)據(jù)信息存儲(chǔ)的高可靠性、高安全性控制,可以進(jìn)行復(fù)雜的信息處理和計(jì)算通用存貯器IC卡是由通用存貯器芯片封裝而成的,由于它的結(jié)構(gòu)和功能簡單,生產(chǎn)成本低,使用方便,因此在各領(lǐng)域都得到了廣泛的應(yīng)用。目前用于IC卡的通用存貯器芯片多為E2PROM,其常用的協(xié)議主要有兩線串行連接協(xié)議(I2C)和三線串行鏈接協(xié)議,其中比較常用的是ATMEL公司生產(chǎn)的AT24系列芯片。以該系列中的AT24C01為例,它具有1k的存貯容量,適用于2V~5V的低電壓/標(biāo)準(zhǔn)電壓的操作,具有低功耗和高可靠性等優(yōu)點(diǎn)。而AT89C2051 雖是ATMEL公司89系列單片機(jī)的低檔型,但它具有2k的FLASH ROM(可重編閃速存貯器)、128×8位內(nèi)部RAM及全靜態(tài)操作方式,同樣也具有低功耗和較強(qiáng)的功能。下面以AT24C2051為例,對(duì)通用存貯器IC 卡的工作原理及基本電路連線作一介紹,該線路簡單,使用靈活,能可靠地對(duì)通用存貯器IC卡進(jìn)行讀寫。由于IC卡使用具有流動(dòng)性與全球性,建立相應(yīng)的國際標(biāo)準(zhǔn)和國家標(biāo)準(zhǔn)就顯得特別重要。在信息技術(shù)領(lǐng)域,ISO(國際標(biāo)準(zhǔn)化組織)和IEC(國際電子技術(shù)委員會(huì))共同建立了一個(gè)技術(shù)委員會(huì)ISO/IEC JTC1以制定相應(yīng)國際標(biāo)準(zhǔn)。在IC卡應(yīng)用系統(tǒng)的設(shè)計(jì)中,讀寫設(shè)備對(duì)IC卡的讀寫控制的每一個(gè)環(huán)節(jié)都應(yīng)當(dāng)遵照相應(yīng)的國際標(biāo)準(zhǔn),才能保證數(shù)據(jù)的正確讀取。這是IC卡讀寫器終端設(shè)計(jì)的基礎(chǔ)。

設(shè)計(jì)標(biāo)準(zhǔn)
而在這些標(biāo)準(zhǔn)當(dāng)中,對(duì)芯片和電氣特征的定義和操作時(shí)序的要求又顯得尤為重要。此處以同步卡的電氣特征和時(shí)序?yàn)槔M(jìn)行介紹。使用這種卡時(shí),接口設(shè)備將所有線置于狀態(tài)L,然后VCC加電,Vpp處于空閑狀態(tài),CLK、RST和FCB處于狀態(tài)L,接口設(shè)備的I/O置于接收模式。時(shí)鐘脈沖在VCC上升沿之后相隔t20后提供,時(shí)鐘脈沖的持續(xù)時(shí)間為t25。在時(shí)鐘脈沖上升沿之后至少相隔t22時(shí)間FCB仍維持狀態(tài)L。在I/O線上得到的第1位數(shù)據(jù)可視為應(yīng)答,此時(shí)CLK處于狀態(tài)L,并在CLK下降沿t27之后有效。當(dāng)FCB置于狀態(tài)H時(shí),每一個(gè)時(shí)鐘脈沖用于讀出I/O線上的下個(gè)數(shù)據(jù)位。在復(fù)位應(yīng)答時(shí),第一個(gè)時(shí)鐘脈沖在FCB上升沿之后t24時(shí)間給出。時(shí)鐘脈沖狀態(tài)H的持續(xù)時(shí)間為t25,狀態(tài)L的持續(xù)時(shí)間為1us(t26)。第二個(gè)及其隨后的數(shù)據(jù)位在時(shí)鐘為低和CLK下降沿之后t27時(shí)間給出。數(shù)據(jù)位依次用時(shí)鐘脈沖的上升沿采樣。

2 硬件特性

2.1 AT24系列存貯器的特性

AT24系列存貯器芯片采用CMOS工藝制造,內(nèi)置有高壓泵,可在單電壓供電條件下工作。其標(biāo)準(zhǔn)封裝為8腳DIP封裝形式,各引腳的功能說明如下:

SCL:串行時(shí)鐘。在該腳的上升沿時(shí),系統(tǒng)將數(shù)據(jù)輸入到每個(gè)EEPROM器件,在下降沿時(shí)輸出。

SDA:串行數(shù)據(jù)。該引腳為開漏極驅(qū)動(dòng),可雙向傳送數(shù)據(jù)。

A0、A1、A2:器件/頁面尋址。為器件地址輸入端。在AT24C01/02中,該引腳被硬連接。

Vcc:一般輸入+5V的工作電壓。

圖1是符合ISO7816-2標(biāo)準(zhǔn)的IC卡的觸點(diǎn)圖。對(duì)于AT24系列通用存貯器IC卡來說,通常只需使用四個(gè)觸點(diǎn)。AT24C01的內(nèi)部組態(tài)為128個(gè)8位字節(jié),而對(duì)隨機(jī)字尋址則需要一個(gè)7位地址。

2.2 總線狀態(tài)及時(shí)序

A24C01的SCL及SDA兩總線可通過一個(gè)電阻上拉為高電平,SDA上的數(shù)據(jù)僅在SCL為低電平時(shí)周期才能改變。當(dāng)SCL為高電平時(shí),SDA的改變表示“開始”和“停止”狀態(tài)。此時(shí),所有地址和數(shù)據(jù)字都以8位串行碼方式輸入輸出EEPROM。

開始狀態(tài):SCL為高電平時(shí),SDA由高電平轉(zhuǎn)入低電平。該命令必須在其它命令前執(zhí)行。

停止?fàn)顟B(tài):SCL為高電平時(shí),SDA由低電平轉(zhuǎn)入高電平。該命令可終止所有通訊。

確認(rèn):相同總線上的設(shè)備在收到數(shù)據(jù)后,以置SDA為低電平的方式對(duì)其進(jìn)行確認(rèn)。

2.3 器件尋址

AT24系列EEPROM在開始狀態(tài)后需緊接一個(gè)8位器件地址,以進(jìn)行應(yīng)讀寫操作。設(shè)備尋址碼的高4位為1、0、1、0,對(duì)于AT24C01/02,尋址碼高4位后面的三位是器件尋址碼,與它們的硬連線管腳相對(duì)應(yīng)。最低應(yīng)是讀寫選擇位,置0時(shí)可激發(fā)讀操作。

具體的格式如下:

1 0 1 0 A2 A1 A0 R/W

2.4 AT89C2051芯片

AT89C2051 是MCS-51產(chǎn)品的兼容型,它具有2k的FLASH ROM、128字節(jié)ROM,15根I/O引線、兩個(gè)16位定時(shí)/計(jì)數(shù)器、一個(gè)五向量兩級(jí)中斷結(jié)構(gòu)、一個(gè)全雙工串行口、一個(gè)精密模擬比較器以及片內(nèi)振蕩電路和時(shí)鐘電路。它的P1口和P3口是雙向I/O口,其中P1.2~P1.7、P3.0~P3.5和P3.7帶有內(nèi)部上拉電阻。在AT89C2051用作輸入端時(shí),將首先向引腳寫“1”而使內(nèi)部MOS管截止以便引腳處于懸浮狀態(tài),從而可獲得高阻抗輸入。

圖2為通用存貯器IC卡的基本電路連接圖。

3 讀寫操作軟件

當(dāng)系統(tǒng)采用6MHz晶體振蕩器時(shí)所定義的I/O口線及器件地址如下:

SCL BIT P1.7

SDA BIT P1.6

DEVICEAD_W DATA 10100000B ;寫卡器件地址

DEVICEAD_R DATA 10100001B ;讀卡器件地址

3.1 開始條件(START_IC)

在開始條件下,當(dāng)SCL為高電平時(shí),SDA由高轉(zhuǎn)為低。程序如下:

START_IC:CLR SCL;SCL低電平時(shí)才允許SDA更改

NOP ;加入空指令延時(shí)以確保信號(hào)可靠

NOP

SETB SDA

NOP

NOP

SETB SCL

NOP

NOP

CLR SDA

NOP

NOP

CLR SCL

NOP

RET

3.2 停止條件(STOP_C)

在停止條件下,當(dāng)SCL為高電平時(shí),SDA由低轉(zhuǎn)為高。程序如下:

STOP_IC:CLR SCL

NOP

NOP

CLR SDA

NOP

NOP

SETB SCL

NOP

NOP

SETB SDA

NOP

NOP

CLR SCL

NOP

NOP

CLR SDA

RET

3.3 確認(rèn)信號(hào)(ACK_IC)

在接收方應(yīng)答下,每收到一字節(jié)后便將SDA電平拉低,程序如下:

ACK_IC:CLR SCL

NOP

NOP

CLR SDA

NOP

NOP

SEIB SCL

NOP

NOP

CLR SCL

NOP

SETB SDA

NOP

RET

3.4 寫一字節(jié)數(shù)據(jù)到IC卡(WR_BYTE)

在下列程序中,參數(shù)A表示源數(shù)據(jù),R5表示字節(jié)位數(shù)。

WR_BYTE:MOV R5,#08 ;一字節(jié)8位數(shù)據(jù)

CLR SCL

NOP

NOP

WR_BYTE1:RLC A ;帶進(jìn)位位左移,A.8->C

MOV SDA,C ;SCL低電平時(shí)改變SDA上的數(shù)據(jù)

NOP

SETB SCL ;拉高SCL把數(shù)據(jù)發(fā)送出去

NOP

NOP

CLR SCL

NOP

NOP

DJNZ R5,WR_BYTE1;依次發(fā)送A中的8位數(shù)據(jù)

SETB SDA

SETB SCL

JB SDA,$ ;等待IC卡確認(rèn)信號(hào)

CLR SCL

NOP

RET

此子程序的主要作用是按照定義的時(shí)序,順序左移A中一字節(jié)8位數(shù)據(jù),并通過引腳傳送出去。當(dāng)一字節(jié)發(fā)完后,等待IC卡發(fā)回的確認(rèn)信號(hào)。

3.5 從IC卡讀一字節(jié)(RD+BYTE)

從IC卡中讀一字節(jié)的源程序如下:

RD_BYTE:MOV R5,#08

SETB SDA ;設(shè)備SDA為讀狀態(tài)

CLR A ;清空A寄存器

RD_BTYE1:MOV C,SDA ;讀一位數(shù)據(jù)到進(jìn)位位

RLC A ;左移數(shù)據(jù)到A.0

SETB SCL

NOP

NOP

CLR SCL

NOP

NOP

DJNZ R5,RD_BYTE1;依次讀出8位數(shù)據(jù)到A中

RET ;無應(yīng)答信號(hào)

利用該程序可將讀出的數(shù)據(jù)存放在A中。需要注意的是:讀數(shù)據(jù)的器件不是通過確認(rèn)狀態(tài)來應(yīng)答的,而是隨后產(chǎn)生一個(gè)停止?fàn)顟B(tài)。

3.6 字節(jié)寫入模式寫數(shù)據(jù)(WRITE_BYTE)

下列程序中的參數(shù)為:R6= =目的地址,A= =數(shù)據(jù);數(shù)據(jù)如下:

WRITE_BYTE:PUSH ACC ;保存A中的數(shù)據(jù)

LCALL START_IC ;發(fā)開始信號(hào)

MOV A,#DEVICEAD_W;寫入器件地址

LCAL WR_BYTE

MOV A,R6 ;寫入字節(jié)地址

LCALL WR_BYTE

POP ACC ;恢復(fù)A中數(shù)據(jù)

LCALL WR_BYTE ;寫入數(shù)據(jù)

LCALL STOP_IC

RET

在收到8位數(shù)據(jù)后,EEPROM將通過SDA來回送確認(rèn)信號(hào),而傳送設(shè)備必須用停止?fàn)顟B(tài)來終止寫操作。這時(shí),EEPROM將進(jìn)入一個(gè)內(nèi)時(shí)固定存貯器的寫入周期并且禁止在此其間的所有輸入,直到寫操作完成后才對(duì)通訊應(yīng)答。其寫入周期可自定義,最大為10ms。

3.7 頁面寫入模式寫數(shù)據(jù)(WRITE_PAGE)

以下程序中的參數(shù)為P0= =源指針,R6= =目的地址,R7= =頁面長度。

WRITE_PAGE:LCALL START_IC

MOV A,#DEVICEAD_W

LCALL WR_BYTE

MOV A,R6

LCALL WR_BYTE

WRITE_PAGE1:MOV A,@R0

LCALL WR_BYTE

INC R0

DJNZ R7,WRITE_PAGE1

LCALL STOP_IC

RET

AT24C01/02可利用上述程序進(jìn)行8字節(jié)的頁面寫入,它的操作類似于寫字節(jié)。不同的是,它無需在第一個(gè)字節(jié)送出后才以停止?fàn)顟B(tài),不同在收到確認(rèn)信號(hào)后,再傳送7個(gè)字節(jié)的數(shù)據(jù)碼,最后以停止?fàn)顟B(tài)來終止頁面寫序列。AT24C04/08/16的頁面為16字節(jié)。

3.8 立即地址讀模式(READ_BYTEC)

立即地址讀模式讀一字節(jié)數(shù)據(jù)的程序如下:READ_BYTEC:LCALL START_IC

MOV A,#DEVICEAD_R

LCALL WR_BYTE

LCALL RD_BYTE ;讀出默認(rèn)地址數(shù)據(jù)

LCALL STOP_IC ;發(fā)停止?fàn)顟B(tài)應(yīng)答

RET

該程序執(zhí)行后,其內(nèi)部數(shù)據(jù)字地址指針將保持在上次讀寫操作訪問的最后一個(gè)地址,并按1遞增且在芯片上電期間一直有效。只有當(dāng)?shù)刂窞轫撁娴淖钅⿻r(shí),下次訪問才滾動(dòng)到該頁面的首地址。

3.9 隨機(jī)地址讀模式(READ_BYTER)

在下列程序中,R6= =源地址,程序如下:

READ_BYTER:LCALL START_IC

MOV A,#DEVICEAD_W ;執(zhí)行空字節(jié)寫序列

LCALL WR_BYTE ;載入數(shù)據(jù)地址

MOV A,R6

LCALL WR_BYTE

LCALL START_IC

MOV A,#DEVICEAD_R ;立即地址讀取

LCALL WR_BYTE

LCALL DR_BYTE

LCALL STOP_IC

RET

讀操作模式需要一個(gè)字節(jié)寫序列載入數(shù)據(jù)地址。在器件和數(shù)據(jù)地址寫入并得到確認(rèn)后,將再產(chǎn)生另一個(gè)開始條件,并送出讀操作器件的地址,同時(shí)激發(fā)一個(gè)立即地址讀取。

3.10 順序地址讀取(READ_BYTES)

在下列程序中:R0= =目的指針;R7= =數(shù)據(jù)長度,程序如下:

READ+BYTES:LCALL START_IC

MOV A,#DEVICEAD_R

LCALL WR_BYTE

READ_BYTES2:LCALL RD_BYTE

MOV @R0,A ;存放數(shù)據(jù)到目的地址

INC R0

DJNZ R7,READ_BYTES1

LCALL STOP_IC ;讀寫指定長度后停止

RET

READ_BYTES1:LCALL ACK_IC ;收到數(shù)據(jù)后發(fā)確認(rèn)信號(hào)SJMP READ_BYTES2

其中順序讀取由立即尋址讀或隨機(jī)地址讀激發(fā),并在收到一字節(jié)數(shù)據(jù)后發(fā)確認(rèn)信號(hào)應(yīng)答。當(dāng)讀數(shù)器件以停止?fàn)顟B(tài)應(yīng)答時(shí),操作被終止。

4 總結(jié)

該單片機(jī)IC卡讀寫器設(shè)計(jì)系統(tǒng)結(jié)構(gòu)簡單,在實(shí)際運(yùn)行時(shí)具有很高的可靠性,同時(shí)具有一定的可擴(kuò)展性,并可通過單片機(jī)的串行口經(jīng)電平轉(zhuǎn)換后直接與計(jì)算機(jī)相連,以進(jìn)行數(shù)據(jù)通訊。另外,也可根據(jù)需要連接到其它引腳或卡座觸點(diǎn),如果適當(dāng)改進(jìn)電路和程序,還可讀寫加密卡和CPU卡等。

關(guān)閉窗口
主站蜘蛛池模板: 精品国产乱码久久久久久影片 | 日韩a视频 | 农村妇女毛片精品久久久 | 亚洲免费一区二区 | 欧美在线综合 | 欧美日日 | 国产综合在线视频 | 99久久夜色精品国产亚洲96 | 蜜桃免费一区二区三区 | 91精品国产色综合久久 | 国产精品一码二码三码在线 | 午夜久久久 | 91国在线 | 东京久久 | 精精国产xxxx视频在线播放 | 亚洲精品免费视频 | 日韩精品久久久 | www.久| 欧美性高潮 | 一级片在线视频 | 亚洲精品自在在线观看 | 亚洲欧美在线一区 | 日韩精品成人免费观看视频 | 91影片 | 亚洲精品美女 | 亚洲国产福利视频 | 欧美xxxx网站| 国产探花在线观看视频 | 欧美一级欧美三级在线观看 | 黄网站免费在线观看 | 国产日韩欧美中文 | 亚洲精品一区二区三区中文字幕 | 91高清免费 | 色综合久久久久 | 中国美女av | 激情小视频 | 天天搞天天操 | 国产免费av网 | 国产一区在线视频 | 国产高清久久久 | 国产91av视频在线观看 |