串行E2PROM 24LC65在單片機(jī)中的應(yīng)用
1. 概述
24LC65是目前容量較大的一種串行E2PROM 芯片,具有8kB的存儲(chǔ)容量,體積小,功耗低,可掉電保護(hù)。AT89C52單片機(jī)亦具有8kB內(nèi)部ROM,同樣具備低功耗和控制功能強(qiáng)等特點(diǎn),由兩者構(gòu)成的單片機(jī)小系統(tǒng)硬件開(kāi)銷(xiāo)少,數(shù)據(jù)可串行傳送,功耗低,非常實(shí)用。但是,讀、寫(xiě)24LC65的程序編寫(xiě)卻比較麻煩,本文將介紹對(duì)其編程的方法,并介紹采用子程序結(jié)構(gòu)編寫(xiě)的已通過(guò)的寫(xiě)、讀24LC65的應(yīng)用編程。
2. 24LC65與單片機(jī)的連接
2.1 24LC65的引腳功能
24LC65采用8腳DIP封裝,引腳功能如下:
1~3腳(A0、A1、A2)為三位地址輸入端;
4腳GND為接地端;
5腳SDA為二進(jìn)制數(shù)據(jù)輸入輸出端;
6腳SCL為時(shí)鐘輸入端;
7腳NC懸空;
8腳VCC為5V正電源。
2.2 24LC65與單片機(jī)的連接
連接電路如圖1所示,圖中共接有8片24LC65芯片,芯片的三位地址A2、A1、A0接成8種組態(tài),由A2、A1、A0排列組成8個(gè)片選地址,因此在兩線(xiàn)上最多可選用8片,可尋址64kB存儲(chǔ)空間,每片尋址8kB,其中,1#芯片地址范圍是0000H~1FFFH,8#芯片地址范圍是 E000H~FFFFH。SDA為串行數(shù)據(jù)輸入輸出線(xiàn),SCL是時(shí)鐘輸入端,每次訪問(wèn)24LC65之前,必須執(zhí)行啟動(dòng)I2C數(shù)據(jù)總線(xiàn)操作,每次結(jié)束訪問(wèn)時(shí),也必須執(zhí)行停止I2C數(shù)據(jù)總線(xiàn)操作,其操作時(shí)序由SCL與SDA的關(guān)系確定,如圖2的示,可以看出,當(dāng)SCL為高電平時(shí),SDA由高變低時(shí)啟動(dòng)I2C總線(xiàn),而SDA由低變高時(shí),停止總線(xiàn)操作。若啟動(dòng)總線(xiàn)為讀操作,則在SCL脈沖的下降沿讀出1 bit的數(shù)據(jù),若啟動(dòng)寫(xiě)操作,則在SCL脈沖的上升沿寫(xiě)入1 bit 的數(shù)據(jù)。
3. 數(shù)據(jù)格式
對(duì)E2PROM 24LC65每次寫(xiě)一個(gè)字節(jié)操作的數(shù)據(jù)格式由4個(gè)字節(jié)構(gòu)成。第1字節(jié)為:
其中,×為任意,A12、A11、A10、A9、A8為E2PROM 24LC65的高5位地址。
第3字節(jié)是E2PROM 24LC65的低8位地址A7~A0。第4字節(jié)才是8位數(shù)據(jù)。注意,每個(gè)字節(jié)后緊跟一個(gè)回答(ACK)信號(hào)。
4. 寫(xiě)24LC65程序
用MCS-51單片機(jī)的指令編寫(xiě)對(duì)24LC65寫(xiě)一字節(jié)的子程序是關(guān)鍵,主程序連續(xù)調(diào)四次便可實(shí)現(xiàn)對(duì)24LC65寫(xiě)一字節(jié)數(shù)據(jù)的目的。假設(shè)待寫(xiě)入字節(jié)在單片機(jī)內(nèi)字節(jié)地址分別是6FH、6EH、…、68H,并分別存放在待寫(xiě)入字節(jié)的D7、D6、…、D0位,作為調(diào)用寫(xiě)一字節(jié)子程序的入口參數(shù)。由主程序啟動(dòng),并停止總線(xiàn)。其程序分別如下:
??;主程序啟動(dòng)與停止總線(xiàn)
SETB P3.1??;SCL=1
SETB P3.0??;SDA=1
CLR P3.0?。籗DA=0,啟動(dòng)總線(xiàn)
┊
┊
CLR P3.0
SETB P3.1
SETB P3.0 ;停止總線(xiàn)操作
??; 寫(xiě)一字節(jié)的子程序
MOV C,6FH??;D7位送給進(jìn)位C
CLR P3.1
MOV P3.0,C
SETB P3.1;寫(xiě)入D7位
CLR P3.1
MOV C,6EH??;D6位送給進(jìn)位C
MOV P3.0,C
SETB P3.1??;寫(xiě)入D6位
CLR P3.1
MOV C,6DH ;D5位送給進(jìn)位C
MOV P3.0,C
SETB P3.1 ;寫(xiě)入D5位
CLR P3.1
MOV C,6CH
MOV P3.0,C
SETB P3.1?。粚?xiě)入D4位
CLR P3.1
MOV C,6BH
MOV P3.0,C
SETB P3.1 ;寫(xiě)入D3位
CLR P3.1
MOV C,6AH
MOV P3.0,C
SETB P3.1 ;寫(xiě)入D2位
CLR P3.1
MOV C,69H
MOV P3.0,C
SETB P3.1??;寫(xiě)入D1位
CLR P3.1
MOV C,68H
MOV P3.0,C
SETB P3.1 ;寫(xiě)入D0位
CLR P3.1
NOP
SETB P3.1??;寫(xiě)一字節(jié)結(jié)束
CLR P3.1 ;ACK
RET
5. 讀24LC65程序
讀24LC65程序中既有寫(xiě)控制字和寫(xiě)地址操作,又有讀數(shù)據(jù)的操作,其中,寫(xiě)控制字和寫(xiě)地址操作相同于寫(xiě)24LC65程序,即前三個(gè)字節(jié)相同,只不過(guò)第三字節(jié)結(jié)束后要停止總線(xiàn)操作。第四字節(jié)重新啟動(dòng)總線(xiàn),送讀命令。只有第五字節(jié)才是讀24LC65的操作。讀24LC65的程序如下:
MOV R7,#08H
READ:SETB P3.1 ;讀一字節(jié)于A中
CLR P3.1 ;移出一位
MOV C,P3.0 ;移出一位傳給進(jìn)位C
RLC A
DJNZ R7,READ
SETB P3.1
CLR P3.1?。?strong>ACK
CLR P3.0
SETB P3.1
SETB P3.0 ;停止總線(xiàn)
RET
該程序在實(shí)際使用中運(yùn)行可靠,實(shí)用性強(qiáng)。如果希望增加存儲(chǔ)容量,可以另選單片機(jī)的兩條I/O線(xiàn),同樣可以連接8片24LC65芯片,組成另一64kB的串行E2PROM。





