<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > I2C的讀寫(xiě)操作實(shí)驗

I2C的讀寫(xiě)操作實(shí)驗

作者: 時(shí)間:2011-05-12 來(lái)源:網(wǎng)絡(luò ) 收藏

[任務(wù)]
利用24C08斷電以后存儲的數據不消失的特點(diǎn),可以做一個(gè)斷電保護裝置。首先利用單片機做一個(gè)0-99秒的自動(dòng)計時(shí)器。然后隨機關(guān)斷電源,在 通電以后計時(shí)器接著(zhù)斷電前的狀態(tài)繼續計時(shí)。

本文引用地址:http://dyxdggzs.com/article/150752.htm

[原理]
首先簡(jiǎn)單的說(shuō)明以下總線(xiàn),總線(xiàn)是一種串行數據總線(xiàn),只有二根信號線(xiàn),一根是雙向的數據線(xiàn)SDA,另一根是時(shí)鐘線(xiàn)SCL。在 總線(xiàn)上傳送的一個(gè)數據字節由八位組成??偩€(xiàn)對每次傳送的字節數沒(méi)有限制,但每個(gè)字節后必須跟一位應答位。數據傳送首先傳送最高位(MSB),數據傳送按圖1所示格式進(jìn)行。首先由主機發(fā)出啟動(dòng)信號“S”(SDA在SCL高電平期間由高電平跳變?yōu)榈碗娖?,然后由主機發(fā)送一個(gè)字節的數據。啟動(dòng)信號后的第一個(gè)字節數據具有特殊含義:高七位是從機的地址,第八位是傳送方向位,0表示主機發(fā)送數據(寫(xiě)),1表示主機接收數據(讀)。被尋址到的從機設備按傳送方向位設置為對應工作方式。標準I2C總線(xiàn)的設備都有一個(gè)七位地址,所有連接在I2C總線(xiàn)上的設備都接收啟動(dòng)信號后的第一個(gè)字節,并將接收到的地址與自己的地址進(jìn)行比較,如果地址相符則為主機要尋訪(fǎng)的從機,應在第九位答時(shí)鐘脈沖時(shí)向SDA線(xiàn)送出低電平作為應答。除了第一字節是通用呼叫地址或十位從機地址之外第二字節開(kāi)始即數據字節。數據傳送完畢,由主機發(fā)出停止信號“P”(SDA在SCL高電平期間由低電平跳變?yōu)楦唠娖?。
  AT24C系列串行E2PROM具有I2C總線(xiàn)接口功能,功耗小,寬電源電壓(根據不同型號2.5V~6.0V),工作電流約為3mA,靜態(tài)電流隨電源電壓不同為30μA~110μA,AT24C系列串行E2PROM參數如下
型 號 容 量 器件尋址字節(8位) 一次裝載字節數
AT24C01 128×8 1010A2A1A0 R/W 4
AT24C02 256×8 1010A2A1A0 R/W 8
AT24C04 512×8 1010A2A1P0 R/W 16
AT24C08 1024×8 1010A2P1P0 R/W 16
AT24C16 2048×8 1010P2P1P0 R/W 16
  由于I2C總線(xiàn)可掛接多個(gè)串行接口器件,在I2C總線(xiàn)中每個(gè)器件應有唯一的器件地址,按I2C總線(xiàn)規則,器件地址為7位數據(即一個(gè)I2C總線(xiàn)系統中理論上可掛接128個(gè)不同地址的器件),它和1位數據方向位構成一個(gè)器件尋址字節,最低位D0為方向位(讀/寫(xiě))。器件尋址字節中的最高4位(D7~D4)為器件型號地址,不同的I2C總線(xiàn)接口器件的型號地址是廠(chǎng)家給定的,如AT24C系列E2PROM的型號地址皆為1010,器件地址中的低3位為引腳地址A2 A1 A0,對應器件尋址字節中的D3、D2、D1位,在硬件設計時(shí)由連接的引腳電平給定。
  對AT24C系列 E2PROM的完全遵守I2C總線(xiàn)的主收從發(fā)和主發(fā)從收的規則。

[C語(yǔ)言源程序]
#include AT89X52.H>
#include stdio.h>
#include absacc.h>
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07, 0x7f,0x6f,};
unsigned char sec; //定義計數值,每過(guò)1秒,sec加1
unsigned int tcnt; //定時(shí)中斷次數
bit write=0; //寫(xiě)24C08的標志;
sbit gewei=P2^0; //個(gè)位選通定義
sbit shiwei=P2^1; //十位選通定義
/////////24C08驅動(dòng)程序////////////////////
sbit scl=P3^4; // 24c08 SCL
sbit sda=P3^5; // 24c08 SDA
void delay1(unsigned char x)
{ unsigned int i;
for(i=0;ix;i++);
;}
void flash()
{ ; ; }
void x24c08_init() //24c08初始化子程序
{scl=1; flash(); sda=1; flash();}
void start() //啟動(dòng)I2C總線(xiàn)
{sda=1; flash(); scl=1; flash(); sda=0; flash(); scl=0; flash();}
void stop() //停止I2C總線(xiàn)
{sda=0; flash(); scl=1; flash(); sda=1; flash();}
void writex(unsigned char j) //寫(xiě)一個(gè)字節
{ unsigned char i,temp;
temp=j;
for (i=0;i8;i++)
{temp=temp1; scl=0; flash(); sda=CY; flash(); scl=1; flash();}
scl=0; flash(); sda=1; flash();
}
unsigned char readx() //讀一個(gè)字節
{
unsigned char i,j,k=0;
scl=0; flash(); sda=1;
for (i=0;i8;i++)
{
flash(); scl=1; flash();
if (sda==1) j=1;
else j=0;
k=(k1)|j;
scl=0;}
flash(); return(k);
}
void clock() // I2C總線(xiàn)時(shí)鐘
{
unsigned char i=0;
scl=1; flash();
while ((sda==1)(i255))i++;
scl=0; flash();
}
////////從24c02的地址address中讀取一個(gè)字節數據/////
unsigned char x24c08_read(unsigned char address)
{
unsigned char i;
start(); writex(0xa0);
clock(); writex(address);
clock(); start();
writex(0xa1); clock();
i=readx(); stop();
delay1(10);
return(i);
}
//////向24c02的address地址中寫(xiě)入一字節數據info/////
void x24c08_write(unsigned char address,unsigned char info)
{
EA=0;
start(); writex(0xa0);
clock(); writex(address);
clock(); writex(info);
clock(); stop();
EA=1;
delay1(50);
}

p2p機相關(guān)文章:p2p原理



上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 實(shí)驗 操作 讀寫(xiě) I2C

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>