關鍵詞:I2C;單片機;AT24C256
The Application Of I2C Bus In the Single Chip Processor System of Series 8051

欧美成人aaaaa免费视频_亚洲欧美激情小说另类_欧美激情一区二区三区视频_一级在线|欧洲

技術頻道

I2C總線在8051單片機系統中的應用

摘要:介紹了I2C總線技術及其技術標準。結合ATMEL公司具有I2C總線的AT24C256,給出了8051單片機虛擬I2C總線的硬件設計及C語言的軟件實現。
  關鍵詞:I2C;單片機;AT24C256
The Application Of I2C Bus In the Single Chip Processor System of Series 8051
  PENG Qing_xiang
  Abstract: The paper introduces the technique and standard of I2C bus. Unifies the AT24C256 chip having I2C bus produced by ATMEL Corporation ,the paper gives the hardware design and C language software realization of virtual technique of I2C bus in the single chip processor system of series 8051.
  Key words: I2C;Single Computer;AT24C256
  1、引言
  I2C總線是PHILIPS公司推出的一種具備多主機系統所需的包括裁決和高低速設備同步等功能的高性能串行總線。它使用兩條線:串行數據線(SDA)和串行時鐘線(SCL),使連接到該總線上可訪問的器件之間傳送信息,屬于多主控制總線。總線上的每個器件都有唯一的地址識別,而且都可以作為一個發送器或接收器。由于I2C總線的使用可以簡化電路,省掉了很多常規電路中的接口器件,提高產品的可靠性,在許多領域尤其在目前使用的IC卡獲得了廣泛的應用。
  現今,8051系列的單片機應用很廣,但是它們都沒有I2C總線接口。但是分析I2C總線的時序可知, I2C總線規定其時鐘線(SCL線)和和數據線(SDA線)是各設備對應輸出狀態相“與”的結果,任一設備都可以用輸出低電平的方法延長SCL低電平時間,迫使高速設備進入等待狀態,實現不同速度設備間的時鐘同步。因此,即使時鐘脈沖的高、低電平時間長短不一,也能實現數據的可靠傳送,因此我們可以通過軟件控制單片機的普通I/O口做I2C接口,實現I2C總線功能。本文以ATMEL公司的具有I2C總線的AT24C256為例介紹I2C總線在8051單片機系統中的應用并給出C語言的軟件實現。
  2、I2C總線構成及時序
  2.1 I2C總線組成
  I2C總線是一個多主機總線,即可以連接多于一個能控制總線的器件到總線。I2C串行總線有兩根信號線:一根雙向的數據線SDA;另一根是時鐘線SCL。SDA和SCL都是雙向I/O口線,當總線空閑時這兩條線路都是高電平。所有接到I2C總線上的器件的串行數據線都接到總線的SDA線,各器件的時鐘線都接到SCL總線上。其結構如圖一所示。

圖一:I2C總線的組成
圖一:I2C總線的組成



  2.2 I2C總線時序

  所有主機在SCL線上產生自己的時鐘來傳輸I2C總線上的數據,數據只在時鐘的高電平周期有效,每傳輸一個數據位就產生一個時鐘脈沖,數據線的高或低電平狀態只有在SCL線的時鐘信號是低電平時才能改變,當SCL為高電平時,SDA的改變表示“開始”和“停止”狀態,即SDA由高電平轉入低電平表示開始,該命令必須在其它命令前執行;SDA由低電平轉入高電平表示停止狀態,該命令可終止所有通訊。在開始條件后,SCL低電平期間,SDA允許變化,每位數據需一個時鐘脈沖,當SCL為高時,SDA必須穩定,主控器在應答時鐘脈沖高電平期間釋放SDA線,轉由接收器控制。相同總線上的設備在收到數據后,以置SDA為低電平的方式對其確認。總線不忙時,數據線和時鐘線保持為高電平。I2C的時序如圖二所示。

圖二:I2C總線時序圖
圖二:I2C總線時序圖



  3、8051單片機系統中I2C總線的實現

  8051系列單片機上并不帶I2C總線,因此必須根據I2C總線的時序用單片機上的I/O口模擬I2C總線時序實現其功能?,F以單片機應用系統中較為常見的E2PROM中AT24C256為例,介紹在8051上利用普通I/O口實現I2C串行總線的方法和軟件設計。

  AT24C256是ATMEL公司256kbit串行電可擦的可編程存儲器,8引腳雙排直插式封裝,具有結構緊湊、存儲容量大等特點,其引腳排列如圖三所示。

圖三:AT24C256引腳圖
圖三:AT24C256引腳圖



  其中A0、A1為地址選擇輸入端。A0、A1用來區分各芯片地址,地址分布從0到3。A0、A1懸空時為0。SCL為串行時鐘輸入,上升沿將SDA上的數據寫入存儲器,下降沿從存儲器讀出數據送SDA上。SDA是雙向串行數據輸入輸出口,用于存儲器與單片機之間的數據交換。WP為寫保護輸入。此引腳與地相連時,允許寫操作;與VCC相連時,所有的寫存儲器操作被禁止。如果不連,芯片內部下拉到地;VCC接+5V電源;GND接地;NC懸空。

  AT24C256在開始狀態后需緊接一個8位器件地址,以進行相應的讀寫操作。設備尋址碼的高4位為1、0、1、0,尋址碼高4位后面的三位是器件尋址碼,與它們的硬連線管腳相對應。最低應是讀寫選擇位,置0時可激發寫操作,置1激發讀操作。器件的具體的格式為:1010A2A1A0R/W,其中當R/W為0時,為寫AT24C256,當為1時為讀操作。

  因為AT24C256片內地址是以8位為單元的,其總存儲容量為256K,所以其片內地址為從0到32767的任意數值。因此在編寫軟件時設置其片內地址數據類型時要設置為unsigned int型,而不能為unsigned char型。

  圖四所示為AT89S51單片機和AT24C256的接口圖,分別用I/O口P1.6、P1.7連接SDA和SCL總線。通過控制P1.7口的高低電平得到I2C的虛擬時鐘,P1.6口作為數據傳輸的雙向端口,作為單片機和AT24C256之間的數據線。




  4、虛擬I2C總線軟件結構

  對于虛擬I2C總線來說要實現其功能主要是要軟件要注意I2C器件的操作時序,總線的運行由主機控制。所謂主機即啟動數據的傳送即發出啟動信號,發出時鐘信號,傳送結束時發出停止信號的設備,通常主機是微處理器。被主機尋訪的設備都稱為從機。為了進行通訊,每個接到I2C總線的設備都有一個唯一的地址,以便于主機尋訪。主機和從機的數據傳送,可以由主機發送數據到從機,也可以是從機發到主機。凡是發送數據到總線的設備稱為發送器,從總線上接收數據的設備被稱為接受器。根據I2C的時序,軟件分為開始、停止、應答、檢查應答、不產生應答、讀操作、寫操作。以下為C程序清單調試成功。


  #include
  Sbit sda=P1^7;
  Sbit scl=P1^6;


  啟動函數,在SCL為高時,SDA的下降沿為啟動信號。

void Start(void)

{ scl=0; //SCL處于低電平時,SDA才能改變
sda=1;// 一個"開始"狀態,該狀態必須在其他命令之前執行
scl=1; // 當scl為高電平時sda的下降沿表示開始狀態
_nop_(); _nop_(); _nop_(); //給一個延時
sda=0; //給下降沿表示開始
_nop_(); _nop_(); _nop_(); _nop_();
scl=0; //恢復低電平以改變sda的值
sda=1; }
  停止函數,在SCL為高時,SDA的上升沿為停止信號。
void Stop(void)
{scl=0; //SCL處于低電平時,SDA改變數值 */
sda=0; //scl為高電平時,sda的上升沿表示停止,
scl=1; //scl為高電平時改變sda的狀態表示啟動,停止
_nop_(); _nop_(); _nop_(); // 延時
sda=1;
_nop_(); _nop_(); _nop_();
scl=0; }
/* * * * * 檢查應答位 * * * * */
bit RecAck(void)
{ scl=0; //在scl為0的時候改變sda的值
sda=1;
scl=1; //在scl為1的時候等待sda值的變化,在器件接受到數據后會把sda拉低。
_nop_(); _nop_(); _nop_(); _nop_();
CY=sda; // 因為返回值總是放在CY中的
scl=0;
_nop_();
return(CY); //如果為CY為低則表示接受成功,如果為高,則表示接受失敗。
}
/* * * * *對I2C總線產生應答(一般用在讀操作中) * * * * */
void Ack(void)
{
sda=0;// EEPROM通過在收到每個地址或數據之后,
_nop_();_nop_();
scl=1;//置SDA低電平的方式確認表示收到讀SDA口狀態
_nop_(); _nop_(); _nop_(); _nop_();
scl=0;
_nop_();
sda=1;
}

/* * * * * * * * * 不對I2C總線產生應答 * * * * */
void NoAck(void)
{ sda=1;
scl=1;
_nop_(); _nop_(); _nop_(); _nop_();
scl=0;
}

  向I2C總線寫數據,每次寫8位數據。

void Send(uchar sendbyte)
{uchar j=8;
for(;j>0;j--)
{scl=0;//拉低scl準備給上升沿
delay(5);//延時
sendbyte <<= 1;// 使CY=sendbyte^7;
sda=CY; // CY 進位標志位
scl=1; //給上升沿,發出sda的狀態值
}
scl=0;
}

  從I2C總線上讀數據子程序 ,每次讀8位數據。

uchar Receive(void)
{ register receivebyte,i=8;
scl=0;
while(i--)
{ scl=1; //拉高scl準備給下降沿
receivebyte=(receivebyte <<1)|sda; //接受值左移一位把低位和sda相或得到sda的狀態值
scl=0; //給下降沿發出sda的狀態值
}
return(receivebyte);
}
  5、結論

  本文介紹了I2C總線的組成及時序,并以ATMEL公司的AT24C256為例給出了用8051C語言模擬I2C總線的時序的起始、停止及CPU向I2C總線的發送和接收8位字節的程序。

文章版權歸西部工控xbgk所有,未經許可不得轉載。

欧美成人aaaaa免费视频_亚洲欧美激情小说另类_欧美激情一区二区三区视频_一级在线|欧洲

      9000px;">

          欧美电影免费观看高清完整版在 | 日本视频免费一区| 久久综合久久综合久久综合| 国产91精品免费| 六月丁香婷婷色狠狠久久| 亚洲欧洲一区二区在线播放| 欧美一区二区三区四区五区| 色综合咪咪久久| 国产成人精品综合在线观看 | 日本韩国一区二区| 99久久综合99久久综合网站| 国产一区二区免费看| 午夜伦欧美伦电影理论片| 亚洲视频综合在线| 亚洲欧美日韩久久| 日本一区二区成人在线| 久久精品夜色噜噜亚洲a∨| 久久精品一区二区三区av| 久久综合久久鬼色| 亚洲国产激情av| 国产精品国产三级国产aⅴ原创 | 国产精品夫妻自拍| 国产精品视频一二| 亚洲蜜臀av乱码久久精品| 亚洲人成网站在线| 亚洲一区在线视频观看| 性感美女久久精品| 日韩影院精彩在线| 激情成人综合网| 国产成人av一区二区三区在线| 国产成人aaa| 91亚洲永久精品| 欧美日韩国产经典色站一区二区三区| 欧美三片在线视频观看 | 7777精品伊人久久久大香线蕉最新版| 欧美性猛交xxxxxx富婆| 在线成人av影院| 在线播放欧美女士性生活| 欧美一区二视频| 久久精品在线免费观看| 亚洲男同性恋视频| 精品一区二区三区不卡| 狠狠色丁香久久婷婷综| 久久69国产一区二区蜜臀| 成人午夜在线视频| 欧美这里有精品| 日韩欧美国产一区二区三区| 国产亚洲午夜高清国产拍精品 | av在线播放成人| 在线观看视频一区二区欧美日韩| 日韩午夜激情免费电影| 中文字幕国产一区| 日韩国产欧美三级| 99精品视频一区| 欧美一级久久久| 中文字幕视频一区二区三区久| 亚洲永久免费av| 国产成人综合在线观看| 911精品国产一区二区在线| 欧美国产日韩精品免费观看| 亚洲高清在线精品| 国产精品99久久久久久宅男| 欧美区在线观看| 国产精品沙发午睡系列990531| 一区二区三区中文字幕| 国产乱对白刺激视频不卡| 欧美性生活影院| 精品美女在线播放| 亚洲精品自拍动漫在线| 国产精品99久久久久久似苏梦涵 | 不卡影院免费观看| 欧美视频一区在线| 国产精品久久久久久久浪潮网站| 美女一区二区视频| 精品视频一区二区三区免费| 亚洲丝袜美腿综合| 成人午夜电影久久影院| 91麻豆精品国产91久久久| 国产精品蜜臀在线观看| 看国产成人h片视频| 91污片在线观看| 日本一区二区成人| 污片在线观看一区二区| 粉嫩一区二区三区在线看| 欧美美女网站色| 亚洲欧美在线观看| 国产剧情在线观看一区二区| 精品视频1区2区3区| 国产欧美日本一区二区三区| 日韩电影在线免费看| 欧美丰满嫩嫩电影| 亚洲精品欧美专区| 99久久99久久免费精品蜜臀| 国产人成亚洲第一网站在线播放| 日韩精品免费视频人成| 色婷婷久久久久swag精品| 中文字幕欧美激情一区| jizz一区二区| 国产午夜精品一区二区 | 欧美成人性战久久| 日本亚洲免费观看| 日韩丝袜情趣美女图片| 人禽交欧美网站| 日韩欧美专区在线| 激情欧美一区二区| 国产欧美一区二区三区鸳鸯浴| 韩国午夜理伦三级不卡影院| 日韩精品一区二区三区四区| 国产一区二区三区黄视频| 欧美丰满少妇xxxxx高潮对白 | 粉嫩13p一区二区三区| 欧美国产激情一区二区三区蜜月| 不卡的av电影在线观看| 国产精品传媒入口麻豆| 97久久精品人人做人人爽50路| 亚洲人被黑人高潮完整版| 欧美亚洲图片小说| 精品亚洲porn| 91丨九色丨尤物| 97精品国产露脸对白| 国产日产欧美一区| 成人性生交大合| 自拍偷自拍亚洲精品播放| 成人a区在线观看| 国产精品视频在线看| 老司机午夜精品| 欧美一区二区播放| 国产在线精品国自产拍免费| 精品国产免费久久| 国产91高潮流白浆在线麻豆 | 亚洲五码中文字幕| 欧美日韩一区高清| 久久精品久久精品| 国产精品欧美经典| 成人福利电影精品一区二区在线观看| 国产精品国产三级国产普通话三级 | 欧美成va人片在线观看| 亚洲妇女屁股眼交7| 欧美三级日本三级少妇99| 日本女人一区二区三区| 国产精品理论片| 在线观看中文字幕不卡| 亚洲伦在线观看| 在线视频综合导航| 亚洲欧美另类小说视频| 欧美三级电影在线看| 精品无人码麻豆乱码1区2区| 欧美大片一区二区三区| 成人黄色片在线观看| 亚洲影院免费观看| 欧美电影精品一区二区| 91久久精品网| 日日摸夜夜添夜夜添精品视频| 日韩一区二区三区电影| 国产黑丝在线一区二区三区| 成人蜜臀av电影| 日韩精品高清不卡| 国产精品日韩成人| 欧美中文字幕不卡| 一本色道久久综合狠狠躁的推荐| 精品一区二区三区视频在线观看 | 精品国精品自拍自在线| 99久久精品国产麻豆演员表| 久久精品国产**网站演员| 国产女人aaa级久久久级| 欧美日韩在线精品一区二区三区激情| 国产成人av自拍| 蜜桃av一区二区在线观看| 亚洲男同性恋视频| 欧美xxx久久| 这里只有精品99re| 欧美性猛交xxxx黑人交| 色婷婷一区二区| 91玉足脚交白嫩脚丫在线播放| 国产综合成人久久大片91| 亚洲电影视频在线| 成人欧美一区二区三区视频网页| 这里只有精品免费| 91福利社在线观看| 奇米精品一区二区三区四区| 一区二区免费看| 一区二区三区精品视频| 亚洲精品老司机| 亚洲精品国久久99热| 国产欧美精品一区二区色综合| 久久久精品人体av艺术| 久久免费午夜影院| 7777精品伊人久久久大香线蕉 | 色婷婷av久久久久久久| 99久久精品国产网站| 91免费版在线| 91久久精品网| 9l国产精品久久久久麻豆| av在线一区二区| 91看片淫黄大片一级| 91在线porny国产在线看| 一本色道久久综合亚洲91 | 国产一区二区不卡在线| 久久99精品久久久久久久久久久久 | 精品在线亚洲视频|