引腳介紹
a0,a1,a2是位址的程式設計位。
wp為寫保護輸入端。當其為低電平的時候,可以對整個儲存器進行正常的讀寫操作;當為高電平的時候,儲存器具有寫保護功能,但是仍然可以從中讀資料
scl,sda就是時鐘線和資料線
儲存結構與定址
儲存容量為2k位,即2000bit,256個位元組,256b。有晶元定址和片內位址定址。晶元位址是1010a0a1a2r/w。如果程式設計位址位是000,那麼晶元位址為0xa0;片內子位址定址,一共內部有256個定址單元,定址範圍是00-ff。在iic通訊時。在晶元位址定址之後,主機需要傳送乙個位元組來完成片內位址的定址。
at24c02的操作有位元組操作和頁操作的方式,這裡只介紹位元組操作,即位元組寫入方式和指定位址讀操作。256個定址單元就是有256個辦公室隔間,我們可以把資料寫進某乙個特定的隔間,也可以從某個特定的隔間讀取資料。至於是讀還是寫就看主機傳送了什麼樣的指令
(1)把某資料寫入at24c02的某個片內位址
void
write_add
(uchar address,uchar date)
//把某資料寫進eeprom的某位址,引數位址和引數資料可以是任意進製的數字,因為寫入的時候都轉成了16進製制
(2)把某個片內位址的資料讀取出來
uchar read_add
(uchar address)
例項:
利用定時器產生秒錶,每過一秒把變化的數字寫入at24c02內部,然後從at24c02內部讀取儲存的資料,並顯示在數碼管上。
oid display
(uchar shi,uchar ge)
void
delayms
(uchar x)
完整**如下:
#include
#define uchar unsigned char
sbit sda=p2^0;
sbit scl=p2^1;
bit write=0;
sbit dula=p2^6;
sbit wela=p2^7;
uchar temp;
uchar num,num_sec,address_point;
uchar code table=
;void
display
(uchar,uchar)
;void
delay()
void
start()
//開始訊號
void
stop()
//停止
void
respons()
//應答
void
init()
void
write_byte
(uchar date)
scl=0;
//傳輸完畢需要釋放sda線,如果不釋放的話如果下次讀寫方向改變,資料線不空閒
delay()
; sda=1;
delay()
;}uchar read_byte()
return k;
}void
delayms
(uchar x)
void
write_add
(uchar address,uchar date)
//把某資料寫進eeprom的某位址,引數位址和引數資料可以是任意進製的數字,因為寫入的時候都轉成了16進製制
uchar read_add
(uchar address)
void
main()
}void
display
(uchar shi,uchar ge)
void
t1_time
()interrupt 3
}
基於51微控制器IIC通訊的AT24C02學習筆記
最近在學習幾種序列通訊協議,感覺收穫很多,這篇文章是學習iic匯流排協議的第一篇文章,以後還會再寫一篇關於pcf8591 iic通訊的adda轉換晶元的文章.iic 即inter integrated circuit 積體電路匯流排 這種匯流排型別是由飛利浦半導體公司在八十年代初設計出來的一種簡單 ...
基於51微控制器IIC通訊的AT24C02學習筆記
最近在學習幾種序列通訊協議,感覺收穫很多,這篇文章是學習iic匯流排協議的第一篇文章,以後還會再寫一篇關於pcf8591 iic通訊的adda轉換晶元的文章.iic 即inter integrated circuit 積體電路匯流排 這種匯流排型別是由飛利浦半導體公司在八十年代初設計出來的一種簡單 ...
基於51微控制器IIC通訊的AT24C02學習筆記
最近在學習幾種序列通訊協議,感覺收穫很多,這篇文章是學習iic匯流排協議的第一篇文章,以後還會再寫一篇關於pcf8591 iic通訊的adda轉換晶元的文章.iic 即inter integrated circuit 積體電路匯流排 這種匯流排型別是由飛利浦半導體公司在八十年代初設計出來的一種簡單 ...