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





