在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > I2C總線在8051單片機系統(tǒng)中的應用

            I2C總線在8051單片機系統(tǒng)中的應用

            作者: 時間:2013-01-06 來源:網(wǎng)絡 收藏

              1、引言

              是PHILIPS公司推出的一種具備多主機系統(tǒng)所需的包括裁決和高低速設備同步等功能的高性能串行總線。它使用兩條線:串行數(shù)據(jù)線(sda)和串行時鐘線(SCL),使連接到該總線上可訪問的器件之間傳送信息,屬于多主控制總線??偩€上的每個器件都有唯一的地址識別,而且都可以作為一個發(fā)送器或接收器。由于的使用可以簡化電路,省掉了很多常規(guī)電路中的接口器件,提高產(chǎn)品的可靠性,在許多領域尤其在目前使用的IC卡獲得了廣泛的應用。

              現(xiàn)今,系列的單片機應用很廣,但是它們都沒有接口。但是分析I2C總線的時序可知, I2C總線規(guī)定其時鐘線(SCL線)和和數(shù)據(jù)線(SDA線)是各設備對應輸出狀態(tài)相“與”的結果,任一設備都可以用輸出低電平的方法延長SCL低電平時間,迫使高速設備進入等待狀態(tài),實現(xiàn)不同速度設備間的時鐘同步。因此,即使時鐘脈沖的高、低電平時間長短不一,也能實現(xiàn)數(shù)據(jù)的可靠傳送,因此我們可以通過軟件控制單片機的普通I/O口做I2C接口,實現(xiàn)I2C總線功能。本文以ATMEL公司的具有I2C總線的為例介紹I2C總線在單片機系統(tǒng)中的應用并給出C語言的軟件實現(xiàn)。


              2、I2C總線構成及時序

              2.1 I2C總線組成

              I2C總線是一個多主機總線,即可以連接多于一個能控制總線的器件到總線。I2C串行總線有兩根信號線:一根雙向的數(shù)據(jù)線SDA;另一根是時鐘線SCL。SDA和SCL都是雙向I/O口線,當總線空閑時這兩條線路都是高電平。所有接到I2C總線上的器件的串行數(shù)據(jù)線都接到總線的SDA線,各器件的時鐘線都接到SCL總線上。其結構如圖一所示。


              2.2 I2C總線時序

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

              3、單片機系統(tǒng)中I2C總線的實現(xiàn)

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

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

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

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

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

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

            c++相關文章:c++教程



            上一頁 1 2 下一頁

            關鍵詞: I2C總線 8051 AT24C256

            評論


            相關推薦

            技術專區(qū)

            關閉