




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、用單片機(jī)實(shí)現(xiàn)通用存貯器IC卡的讀寫自動(dòng)化儀表2002 Vol.23 No.6 P.37-41本文對(duì)AT24系列存貯器和AT89系列單片機(jī)的特征及總線狀態(tài)作為介紹,并以AT24C01與AT89C2051為例詳細(xì)描述了通用存貯器IC卡的工作原理及用單片機(jī)對(duì)其進(jìn)行讀寫操作的基本電路連接和軟件編程方法。用存貯器IC卡是由通用存貯器芯片封裝而成的,由于它的結(jié)構(gòu)和功能簡單,生產(chǎn)成本低,使用方便,因此在各領(lǐng)域都得到了廣泛的應(yīng)用。目前用于IC卡的通用存貯器芯片多為E2PROM,其常用的協(xié)議主要有兩線串行連接協(xié)議(I2C)和三線串行鏈接協(xié)議,其中比較常用的是ATMEL公司生產(chǎn)的AT24系列芯片。以該系列中的AT
2、24C01為例,它具有1k的存貯容量,適用于2V5V的低電壓/標(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)行讀寫。 2 硬件特性 2.1 AT24系列存貯器的特性 AT24系列存貯器芯片采用CMOS工藝制造,內(nèi)置有高壓泵,可在單電壓供電條件下工作。其標(biāo)準(zhǔn)封裝為8腳DIP封
3、裝形式,各引腳的功能說明如下: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)圖(見IC卡書P186)。對(duì)于AT24系列通用存貯器IC卡來說,通常只需使用四個(gè)觸點(diǎn)。AT24C01的內(nèi)部組態(tài)為128個(gè)8位字節(jié),而對(duì)隨機(jī)字尋址則需要一個(gè)7位地址。2.2 總線狀態(tài)及時(shí)序 AT24C01的SCL及SDA兩總線可通過一個(gè)電阻上拉為
4、高電平,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í)行。SCL SDA停止?fàn)顟B(tài):SCL為高電平時(shí),SDA由低電平轉(zhuǎn)入高電平。該命令可終止所有通訊。SCL SDA 確認(rèn):相同總線上的設(shè)備在收到數(shù)據(jù)后,以置SDA為低電平的方式對(duì)其進(jìn)行確認(rèn)。SCLSDA2.3 器件尋址 AT24系列EEPROM在開始狀態(tài)后需緊接一個(gè)8位器件地址,以進(jìn)行應(yīng)讀寫操作。設(shè)備尋址碼的高4位為1、0、1、0,對(duì)于AT24C01
5、/02,尋址碼高4位后面的三位是器件尋址碼,與它們的硬連線管腳相對(duì)應(yīng)。最低應(yīng)是讀寫選擇位,置0時(shí)可激發(fā)讀操作。 AT24設(shè)備尋址碼具體的格式如下: 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.2P1.7、P3.0P3.5和P3.7帶有內(nèi)部上拉電阻。在AT89C2051用作輸入端時(shí),將首先向引腳寫“1
6、”而使內(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)為低。程序如下: SCL 0SDA 在SCL、SDA全1前提下進(jìn)入開始,開始完成后,SCL、SDA全0 0START_IC:CLR SCL ;S
7、CL由高變低,因?yàn)镾CL低電平時(shí)才允許SDA更改 NOP ;加入空指令延時(shí)以確保信號(hào)可靠 NOP SETB SDA ;SDA先高NOP NOP SETB SCL ;SCL高,起始條件建立時(shí)間大于4.7usNOP NOP CLR SDA ;SDA低,起始條件鎖定時(shí)大于4usNOP NOP CLR SCL ;SCL低, 鉗住總線,準(zhǔn)備發(fā)數(shù)據(jù)NOP RET 3.2 停止條件(STOP_IC) 當(dāng)SCL為高電平時(shí),SDA由低轉(zhuǎn)為高。程序如下:SCL SDA ;在SCL、SDA高或低的前提下均可進(jìn)入停止過程 ; 停止過程完成后,SCL、SDA全1STOP_IC:CLR SCL ;SCL低NOP CLR
8、SDA NOP NOP SETB SCL ; 發(fā)送結(jié)束條件的時(shí)鐘信號(hào)NOP ;結(jié)束總線時(shí)間大于4us(取4.7us)NOP SETB SDA ;結(jié)束總線NOP ;保證一個(gè)終止信號(hào)和起始信號(hào)的空閑時(shí)間大于4.7usNOP ;在SCL、SDA高或低的前提下均可進(jìn)入停止,停止完成后,SCL、SDA全1RET 3.3 應(yīng)答確認(rèn)信號(hào)(MACK_IC)與非應(yīng)答信號(hào)MNACK_IC 在接收方,每收到一字節(jié)后便將SDA電平拉低,程序如下:SCL 0SDA 1 ;應(yīng)答完成后,SCL=0,SDA=1應(yīng)答確認(rèn)信號(hào)(MACK_IC)MACK_IC:CLR SCL NOP CLR SDA ;在第9個(gè)SLC脈沖,將SDA
9、置0NOP NOP SEIB SCL NOP ;保持?jǐn)?shù)據(jù)時(shí)間,即SCL為高時(shí)間大于4.7usNOP CLR SCL NOP SETB SDA ;在SDA高或低的任何前提下,應(yīng)答完成后,SCL=0,SDA=1NOP RET 發(fā)送非應(yīng)答信號(hào)MNACK_ICMNACK_IC: CLR SCL NOP NOP SETB SDA ;將SDA置1 NOP NOP SETB SCL NOP NOP ;保持?jǐn)?shù)據(jù)時(shí)間,即SCL為高時(shí)間大于4.7us NOP NOP NOP CLR SCLNOP SETB SDA NOP RET 24C16程序資源安排是:R0=字節(jié)的循環(huán)指針,R2=位數(shù)的計(jì)數(shù)器,R3=卡器件地址
10、, R4=字節(jié)地址,R5=字節(jié)數(shù)或頁面長度。 R1可以留作其他循環(huán)指針,R6、R7可以留作uS級(jí)延時(shí)。3.4 寫一字節(jié)數(shù)據(jù)到IC卡(WR_BYTE) SCLSDA D7 D6 D0 等待IC確認(rèn)在下列程序中,參數(shù)A表示源數(shù)據(jù),R2表示字節(jié)位數(shù)。WR_BYTE: MOV R2,#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 >=4.7uS把數(shù)據(jù)發(fā)送出去 NOP NOP CLR SCL NOP NOP DJNZ R2,WR
11、_BYTE1;依次發(fā)送A中的8位數(shù)據(jù) SETB SDA NOP NOP SETB SCL CLR F0 NOP NOP MOV C,SDA JC WR_BYTE2 SETB F0 ;判斷應(yīng)答位WR_BYTE2:NOP 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é)的源程序如下:SCLSDA D7 D6 D0 發(fā)停止?fàn)顟B(tài)RD_BYTE:MOV R2,#08 SETB SDA ;設(shè)備SDA為讀狀態(tài) CLR A ;清空A寄存器
12、NOPNOPRD_BTYE1:SETB SCL ;時(shí)鐘線為高,接收數(shù)據(jù)位 NOP NOP MOV C,SDA ;讀取一位數(shù)據(jù)到進(jìn)位位 RLC A ;左移數(shù)據(jù)到ACC.0 CLR SCL ;將SCL拉低,時(shí)間大于4.7us NOP NOP DJNZ R2,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é)寫入模式寫單字節(jié)數(shù)據(jù)(WRITE_BYTE) 下列程序入口參數(shù):R3=卡器件地址,R4= 目的字節(jié)地址, A= 待寫數(shù)據(jù) 出口參數(shù):F0 作應(yīng)答位,F(xiàn)0=1
13、有應(yīng)答占用資源:A、R4、CY、F0發(fā)開始信號(hào)-寫卡器件地址-寫入字節(jié)地址-寫入單字節(jié)數(shù)據(jù)-發(fā)停止信號(hào)WRITE_BYTE:PUSH ACC ;保存A中的數(shù)據(jù)LCALL START_IC ;發(fā)開始信號(hào) MOV A,R3 ;寫入器件地址8位 LCALL WR_BYTE JNB F0,RETWRB ;無應(yīng)答則跳轉(zhuǎn)MOV A,R4 ; 寫入字節(jié)地址8位 LCALL WR_BYTE JNB F0,RETWRB ;無應(yīng)答則跳轉(zhuǎn)POP ACC ;恢復(fù)待寫的A中數(shù)據(jù) LCALL WR_BYTE ;寫入單字節(jié)數(shù)據(jù)LCALL STOP_IC ;發(fā)停止信號(hào)RETRETWRB: POP ACCLCALL STOP
14、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 頁面寫入模式寫多字節(jié)數(shù)據(jù)(WRITE_PAGE) 入口參數(shù):R3=卡器件地址,R4= 目的字節(jié)地址,R5=頁面長度。R0=寫數(shù)據(jù)緩沖指針發(fā)開始信號(hào)-寫卡器件地址-寫頁面目的地址-連續(xù)寫(R5)個(gè)字節(jié)數(shù)據(jù)-發(fā)停止信號(hào)WRITE_PAGE:LCALL START_IC ;發(fā)開始信號(hào)MOV A,R3 ;寫卡器件地址LCALL WR_BYTEJNB
15、 F0, IWRNBYTEMOV A,R4 ;寫頁面目的地址LCALL WR_BYTE JNB F0, IWRNBYTEWRITE_PAGE1:MOV A,R0 ;連續(xù)寫(R5)個(gè)字節(jié)數(shù)據(jù)LCALL WR_BYTE JNB F0, IWRNBYTEINC R0DJNZ R5,WRITE_PAGE1 IWRNBYTE: LCALL STOP_IC ;發(fā)停止信號(hào)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、面為16字節(jié)。3.8 立即性地址讀單字節(jié)模式(READ_BYTEC) 立即地址讀模式讀一字節(jié)數(shù)據(jù)的程序如下:入口參數(shù):R3=卡器件地址,(字節(jié)源地址以芯片內(nèi)的當(dāng)前地址)出口數(shù)據(jù):讀取數(shù)據(jù)ACC 開始信號(hào)-寫出讀卡器件-讀出默認(rèn)地址數(shù)據(jù)-發(fā)停止?fàn)顟B(tài)應(yīng)答READ_BYTEC:LCALL START_IC ;開始信號(hào)MOV A,R3 ;寫讀卡器件地址LCALL WR_BYTE JNB F0, RETRDBLCALL RD_BYTE ;讀出默認(rèn)地址數(shù)據(jù) LCALL MNACK ;讀完最后一個(gè)字節(jié)數(shù)據(jù)需要發(fā)非應(yīng)答信號(hào)RETRDB : LCALL STOP_IC ;發(fā)停止?fàn)顟B(tài)應(yīng)答 RET 該程序執(zhí)行后,其
17、內(nèi)部數(shù)據(jù)字地址指針將保持在上次讀寫操作訪問的最后一個(gè)地址,并按1遞增且在芯片上電期間一直有效。只有當(dāng)?shù)刂窞轫撁娴淖钅r(shí),下次訪問才滾動(dòng)到該頁面的首地址。 3.9 選擇性地址讀單字節(jié)模式(READ_BYTER) 在下列程序中,R3=卡器件地址,R4= 字節(jié)源地址出口數(shù)據(jù):讀取數(shù)據(jù)ACC程序如下:開始信號(hào)-執(zhí)行空字節(jié)寫卡器件地址-寫入源地址-開始信號(hào)-寫卡器件地址-立即地址的數(shù)據(jù)讀出停止信號(hào)READ_BYTER:LCALL START_IC ;啟動(dòng)總線 MOV A,R3 ;執(zhí)行空字節(jié)寫卡器件地址 LCALL WR_BYTE JNB F0,READ_BYTE3MOV A,R4 ;寫入源字節(jié)地址LCA
18、LL WR_BYTELCALL START_IC ;重新啟動(dòng)總線MOV A,R3LCALL WR_BYTE ;寫卡器件地址 JNB F0,READ_BYTE3LCALL RD_BYTE ;立即地址數(shù)據(jù)讀出LCALL MNACK ;讀完最后一個(gè)字節(jié)數(shù)據(jù)需要發(fā)非應(yīng)答信號(hào)READ_BYTE3: LCALL STOP_IC ;停止信號(hào)RET讀操作模式需要一個(gè)字節(jié)寫序列載入數(shù)據(jù)地址。在器件和數(shù)據(jù)地址寫入并得到確認(rèn)后,將再產(chǎn)生另一個(gè)開始條件,并送出讀操作器件的地址,同時(shí)激發(fā)一個(gè)立即地址讀取。 3.10 立即地址的連續(xù)讀取N個(gè)字節(jié)數(shù)據(jù)(READ_BYTES);功能:從卡器件的當(dāng)前立即字節(jié)地址開始讀取N個(gè)數(shù)據(jù)
19、入口參數(shù): R3=卡器件地址,(字節(jié)源地址默認(rèn)當(dāng)前立即地址),R5=N數(shù)據(jù)長度出口參數(shù): R0=目的指針開始信號(hào)-寫出讀卡器件-(R5)個(gè)立即地址的數(shù)據(jù)讀出-停止信號(hào)READ_BYTES:LCALL START_IC ;開始信號(hào)MOV A,R3 ;寫出讀卡器件LCALL WR_BYTE JNB F0, BYTESRETREAD_BYS2:LCALL RD_BYTE ;連續(xù)立即地址的數(shù)據(jù)讀出MOV R0,A ;存放數(shù)據(jù)到目的地址 INC R0DJNZ R5,READ_BYS1 LCALL MNACK ;讀完最后一個(gè)字節(jié)數(shù)據(jù)需要發(fā)非應(yīng)答信號(hào)BYTESRET: LCALL STOP_IC ;讀完N個(gè)字節(jié)后發(fā)停止信號(hào)RET READ_BYS1:LCALL ACK_IC ;收到數(shù)據(jù)后發(fā)確認(rèn)信號(hào)SJMP READ_BYS2其中連續(xù)讀取由
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中小學(xué)生校服回收再利用的新方案與實(shí)施路徑
- 銀行業(yè)數(shù)字化轉(zhuǎn)型升級(jí)之路與實(shí)施策略
- 護(hù)理程序考試題及答案
- 鄉(xiāng)村特色產(chǎn)業(yè)發(fā)展新路徑
- 揭示自然界的基本力:摩擦起電與電荷性質(zhì)課件
- 國際商業(yè)美術(shù)設(shè)計(jì)師考試權(quán)威指導(dǎo)試題及答案
- 廣告設(shè)計(jì)師證書考試的全新試題解析
- 教資面試故事試題及答案
- 紡織品設(shè)計(jì)中的市場(chǎng)反應(yīng)考題及答案
- 社區(qū)團(tuán)購項(xiàng)目全景分析與商業(yè)規(guī)劃
- 政治經(jīng)濟(jì)學(xué)重點(diǎn)講義
- 七下道法【辨析題】專練18題
- 羊水拴塞應(yīng)急演練
- OBE理念下生成式AI技術(shù)在高校財(cái)會(huì)教育中的應(yīng)用路徑研究
- 2024年湖北省中考語文真題(學(xué)生版+解析版)
- 創(chuàng)業(yè)人生學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 古詩詞誦讀《客至》課件+2023-2024學(xué)年統(tǒng)編版高中語文選擇性必修下冊(cè)
- 信號(hào)與系統(tǒng)考試試題及答案
- 中藥材、中藥飲片分類貯存常溫庫貨品名稱目錄
- 2024版腫瘤患者靜脈血栓防治指南解讀
- 2023年高考數(shù)學(xué)試卷(上海)(春考)(空白卷)
評(píng)論
0/150
提交評(píng)論