久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

I2C總線AT24C02芯片應用

作者:玉另符   來源:本站原創   點擊數:  更新時間:2013年12月03日   【字體:

      I2C總線進行數據傳送時,時鐘信號為高電平期間,數據線上的數據必須保持穩定,只有在時鐘線上的信號為低電平期間,數據線上的高電平或低電平狀態才允許變化。

    
    

       


起始和終止信號
SCL線為高電平期間,SDA線由高電平向低電平的變化表示起始信號;SCL線為高電平期間,SDA線由低電平向高電平的變化表示終止信號。

數據傳送格式1)字節傳送與應答

每一個字節必須保證是8位長度。數據傳送時,先傳送最高位(MSB),每一個被傳送的字節后面都必須跟隨一位應答位(即一幀共有9位)。如果一段時間內沒有收到從機的應答信號,則自動認為從機已正確接收到數據。
3引角對應,為當前電路中的地址選擇線,三根線可選擇8個芯片同時連接在電路中,當要與哪個芯片通信時傳送相應的地址即可與該芯片建立連接,TX-1B實驗板上三根地址線都為0。最后一位R/W為告訴從機下一字節數據是要讀還是寫,0為寫入,1為讀出。 

 


    AT24C02
的芯片地址如下圖,1010為固定,A0A1,A2正好與芯片的1,2,




code:


 

 

/*
通訊中 SDA 口通訊雙方都可為輸出,如果一方輸出低,

另一方則如果輸出高也不能使SDA為高,相當于,輸出低的一方占住了SDA口。

兩個口,一個出高一個出低,則線上電平是低的。

這是由于,出高的驅動能力不及出低拉電流的能力。


所以SDA=1為釋放數據線
*/

 

 

 


 

#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char

sbit sda=P2^0;

sbit scl=P2^1;

void delay()//執行空語句,微秒級延時函數

{;;}

void delay1ms(uint z)//延時1ms

{

uint x,y;

for(x=z;x>0;x--)

{

for(y=0;y<=110;y++)

{

}

}

}

void init()//初始化狀態下SCL和SDA都為高電平

{

scl=1;

delay();

sda=1;

delay();

}

void start()//在SCL為高電平時SDA由高電平到低電平

{

sda=1;

delay();

scl=1;

delay();

sda=0;

}

void respons()

/*

應答信號,SCL在高電平期間,SDA被從設備拉為低電平表示應答。

(sda==1)和i<255相與,表示若在一段時間內沒有從器件的應答則主器件

默認從器件已經收到數據而不再等待應答信號

*/

{

uchar i;

scl=1;

delay();

while((sda==1)&&(i<250))

{

i++;

}

scl=0;

delay();

}

void stop()//SCL在高電平期間,SDA一個上升沿停止信號

{

sda=0;

delay();

scl=1;

delay();

sda=1;

}

void write_byte(uchar date)//寫一個字節

{

uchar i,temp;

temp=date;

for(i=0;i<8;i++)

{

temp=temp<<1;

scl=0;//只有在SCL為0期間才允許SDA數據線上的狀態才允許變化

delay();

sda=CY;//PSW的寄存器的CY進位標志位

delay();

scl=1; //SCL時鐘信號為高電平期間數據線上的數據必須保持穩定

delay();

}

scl=0;

delay();

sda=1;//釋放總線

delay();

}

uchar read_byte()

{

uchar i,k;

scl=0;

delay();

sda=1;//釋放總線

delay();

for(i=0;i<8;i++)

{

scl=1;

delay();

k=(k<<1)|sda;

scl=0;

delay();

}

//delay();here is a bug

return k;

}

void write_address(uchar address,uchar date)

{

start();

write_byte(0xa0);

respons();

write_byte(address);

respons();

write_byte(date);

respons();

stop();

}

uchar read_address(uchar address)

{

uchar date;

start();

write_byte(0xa0);

respons();

write_byte(address);

respons();


 

start();

write_byte(0xa1);

respons();

date=read_byte();

stop();

return date;

}

void main()

{

init();

write_address(1,0xfe);

delay1ms(100);

P2=read_address(1);

while(1);

}

 

I2C總線介紹:

I2C總線(Inter IC Bus)由飛利浦公司推出,是近年來微電子控制領域廣泛采用的一宗新型總線標準,它使同步通信的一種特殊形式,具有接口少、控制簡單、器件封裝形體小、通信速率較高等優點(可達400Kbps)。在主從通信中,可以有多個I2C總線器件同時接到I2C總線上,所有與I2C總線兼容的器件都具有標準的接口,通過地址來識別通信對象,是她可以經由I2C總線相互直接通信。

I2C總線由數據線和時鐘線SDA和SCL兩條線構成,可發送數據可接收數據。于CPU及被控IC間、IC與IC間均可雙向傳送,各器件均并于總線上,各自有唯一地址。信息傳輸中,I2C總線上的各器件既是被控又是控制器件,既是發送器又是接收器。CPU發出的控制信號分為地址碼和數據嗎兩部分;地址碼選址;數據嗎送數。故而各IC雖同并于總線上但卻各自獨立。

I2C總線硬件結構圖

圖中:ACL時鐘,SDA數據 接上拉電阻,故總線空閑是高電平,任一器件變低均將拉低電平故曰:各器件的時鐘線及數據線乃“與”關系。

通信格式為 時鐘高時下跳開始尋地址 發送一字節 8位中低位為數據方向 0為我黨要向下面發指令 形象的為“O”,俗稱為蛋,如川蛋:“川O001”,陜蛋:“陜O001”都是當官的向下發指令,發飆的,當然,單片機哎平方C系統呢有點民主成分,從機可以向主機傳信息,既發1,形象的成為“1”:咦 你們小麻蝦 小老百信還要上方發信息呀??。 事實上是的 0為下蛋-----下傳數據;1為上訪-----上傳數據。記住了吧!

時鐘為高SCL=1時 數據那得穩定 俗稱維穩期間當然 時鐘撤了 SCL=0時 隨便你蝦子變化數據。

發送啟動信號 那得我們主機發了 黨外人士沒這個權利 在時鐘為高 警察在的時 本地圖片,請重新上傳候 主機發一個下跳沿信號 表示開會了 開始了既:SCL=1時 SDA   你們老百姓就等著查戶口吧!

當官的在警察在時下跳了 于是衙門發令查戶口 高七位為你我家庭住址,最低一位為數據方向 上面已表在此老子不說了。

各民眾,自己根據收到的地址碼對號入座,發現是自己 那就準備收吧---數據。

而且在收數據時 每次收到了 都得回答“諾”.若是犯人那得點頭說“政府好”,當然主機可以不回答 主機不回答視為停止傳數據的命令 注意了 每次回答都必須是時鐘為高時拉數據線為低哦!不得有誤。

主機若在時鐘為高時上跳---警察在的時候領導跳上臺那是表示結束了gameover了 數據傳送動作停止了。

2,單片機模擬I2C總線通信

目前很多單片機都有硬硬的I2C總線通信控制單元,工作時無需我們介入自動工作,但可憐的51單片機沒有 這個接口我們不得不通過軟件模擬I2C總線的工作時序,在要用時。調用這些子函數即可。

有仨方式:一,主機向從機發數據,數據傳送方向在整個過程中不變。

         二,主機在第一個字節后,立即從從機讀數。
三,在傳送過程中,當需要改變傳送方向時,需將起始信號和從機地址重復發放一次,而兩次讀寫方向的那個位剛好相反。


 

 

關閉窗口

相關文章

主站蜘蛛池模板: 成人在线视频一区二区三区 | 亚洲欧美一区二区三区国产精品 | 亚洲精品乱码久久久久久按摩观 | 久久网站免费视频 | 五月综合色啪 | 视频1区2区 | 亚洲视频二区 | 久久久久亚洲精品 | 中文字幕在线看 | 亚洲日本免费 | 天天综合网91 | 在线一区视频 | 亚洲国产黄色av | 欧美一二区| 91精品久久久久久久久久 | 日韩欧美国产一区二区 | 成人在线观看免费视频 | av资源网站 | 国产美女永久免费无遮挡 | 日本一二三区电影 | 欧美一区二区在线视频 | 精品国产乱码久久久久久丨区2区 | 亚洲综合热 | 亚洲欧美日本在线 | 欧美精品久久 | 欧美一区二区三区在线观看 | 一区二区三区韩国 | 亚洲一二三在线 | 亚洲成人精选 | 国产欧美日韩在线一区 | 青青久久av北条麻妃海外网 | 成人av播放| 久久久久久久香蕉 | 午夜男人的天堂 | 狠狠综合网 | 久久久成人一区二区免费影院 | 国产免费一区二区三区 | 久在线视频播放免费视频 | 成人啊啊啊 | 国产一区欧美 | 国产精品99久久久久久久久久久久 |