




已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
11,C51綜合程序設(shè)計(jì)范例(五),2,SiChuan Engineering Technical Colledge-1959,本講主要內(nèi)容:,11-1.綜合程序設(shè)計(jì)范例五(I2C接口程序設(shè)計(jì)) 11-2.I2C總線接口協(xié)議 11-3.24C02與單片機(jī)接口 11-3.實(shí)驗(yàn)十,3,SiChuan Engineering Technical Colledge-1959,11-1 綜合程序設(shè)計(jì)范例五,設(shè)計(jì)范例:設(shè)計(jì)程序?qū)崿F(xiàn)向24C02的第一個(gè)單元寫入一個(gè)數(shù)據(jù),再將該數(shù)據(jù)讀出,并將其顯示在數(shù)碼管上。,4,SiChuan Engineering Technical Colledge-1959,11-1 綜合程序設(shè)計(jì)范例五,范例分析: 硬件: 24C02特性 24C02與P89V51RD2的接口 程序設(shè)計(jì)中需要解決的主要問題: I2C總線協(xié)議 24C02的讀寫,5,SiChuan Engineering Technical Colledge-1959,11-1 綜合程序設(shè)計(jì)范例五,范例分析: 硬件24C02: 串行E2PROM是在各種串行器件應(yīng)用中使用較頻繁的器件,和并行E2PROM相比,串行E2PROM的數(shù)據(jù)傳送的速度較低,但是其體積較小,容量小,所含的引腳也較少。所以,它特別適合于需要存放非揮發(fā)數(shù)據(jù),要求速度不高,引腳少的單片機(jī)的應(yīng)用。 24CXX系列的E2PROM有10種型號(hào),其中典型的型號(hào)有24C01/02/04/08/16等5種,它們的存儲(chǔ)容量分別是128/256/512/1024/2048字節(jié)。24CXX系列的E2PROM 支持I2C 總線數(shù)據(jù)傳送協(xié)議,通過器件地址輸入端A0、A1、A2 可以將最多8 個(gè)24C01 /24/C02 器件,4 個(gè)24C04 器件,2 個(gè)24C08 器件, 1 個(gè)24C16 器件連接到總線上。這里我們就24C02的進(jìn)行分析,其它型號(hào)與此類似。,6,SiChuan Engineering Technical Colledge-1959,11-1 綜合程序設(shè)計(jì)范例五,范例分析: 硬件24C02:,7,SiChuan Engineering Technical Colledge-1959,11-1 綜合程序設(shè)計(jì)范例五,范例分析: 硬件24C02:,8,SiChuan Engineering Technical Colledge-1959,11-1 綜合程序設(shè)計(jì)范例五,范例分析: 硬件24C02:,A0 A1 A2器件地址輸入端: 當(dāng)使用24C02 時(shí)最大可級(jí)聯(lián)8 個(gè)器件, 如果只有一個(gè)24C02 被總線尋址這三個(gè)地址輸入腳A0 A1 A2 可懸空或連接到GND。 WP寫保護(hù): 如果WP 管腳連接到Vcc ,所有的內(nèi)容都被寫保護(hù)(只能讀).當(dāng)WP 管腳連接到GND或懸空,允許器件進(jìn)行正常的讀/寫操作。,9,SiChuan Engineering Technical Colledge-1959,11-1 綜合程序設(shè)計(jì)范例五,范例分析: 硬件24C02:,SCL串行時(shí)鐘: 24C02串行時(shí)鐘輸入管腳用于產(chǎn)生器件所有數(shù)據(jù)發(fā)送或接收的時(shí)鐘這是一個(gè)輸入管腳。 SDA串行數(shù)據(jù)/地址: 24C02 雙向串行數(shù)據(jù)/地址管腳用于器件所有數(shù)據(jù)的發(fā)送或接收SDA 是一個(gè)開漏輸出管腳可與其它開漏輸出或集電極開路輸出進(jìn)行線與(wire-OR)。,10,SiChuan Engineering Technical Colledge-1959,11-1 綜合程序設(shè)計(jì)范例五,范例分析: 硬件24C02與P89V51RD2的接口:,11,SiChuan Engineering Technical Colledge-1959,11-2 I2C總線接口協(xié)議,范例分析: 程序設(shè)計(jì)I2C總線協(xié)議: I2C 總線支持任何IC 生產(chǎn)過程N(yùn)MOS CMOS 雙極性兩線串行數(shù)據(jù)SDA 和串行時(shí)鐘。SCL 線在連接到總線的器件間傳遞信息每個(gè)器件都有一個(gè)唯一的地址識(shí)別無論是微控制器、LCD驅(qū)動(dòng)器、存儲(chǔ)器或鍵盤接口。而且都可以作為一個(gè)發(fā)送器或接收器由器件的功能決定。很明顯LCD驅(qū)動(dòng)器只是一個(gè)接收器而存儲(chǔ)器則既可以接收又可以發(fā)送數(shù)據(jù)。除了發(fā)送器和接收器外器件在執(zhí)行數(shù)據(jù)傳輸時(shí)也可以被看作是主機(jī)或從機(jī)。主機(jī)是初始化總線的數(shù)據(jù)傳輸并產(chǎn)生允許傳輸?shù)臅r(shí)鐘信號(hào)的器件,此時(shí)任何被尋址的器件都被認(rèn)為是從機(jī)。,12,SiChuan Engineering Technical Colledge-1959,11-2 I2C總線接口協(xié)議,范例分析: 程序設(shè)計(jì)I2C總線協(xié)議: SDA 和SCL 都是雙向線路都通過一個(gè)電流源或上拉電阻連接到正的電源電壓。都是高電平連接到總線的器件輸出級(jí)必須是漏極開路或集電極開路才能執(zhí)行線與的功能。I2C 總線上數(shù)據(jù)的傳輸速率在標(biāo)準(zhǔn)模式下可達(dá)100kbit/s 在快速模式下可達(dá)400kbit/s 在高速模式下可達(dá)3.4Mbit/s 。,13,SiChuan Engineering Technical Colledge-1959,11-2 I2C總線接口協(xié)議,范例分析: 程序設(shè)計(jì)I2C總線協(xié)議: 數(shù)據(jù)的有效性 SDA 線上的數(shù)據(jù)必須在時(shí)鐘的高電平周期保持穩(wěn)定。數(shù)據(jù)線的高或低電平狀態(tài)只有在SCL 線的時(shí)鐘信號(hào)是低電平時(shí)才能改變。,14,SiChuan Engineering Technical Colledge-1959,11-2 I2C總線接口協(xié)議,范例分析: 程序設(shè)計(jì)I2C總線協(xié)議: 啟始信號(hào): 時(shí)鐘線保持高電平期間,數(shù)據(jù)線電平從高到低跳變作為I2C 總線的起始信號(hào)。,起始信號(hào)函數(shù): void I2CStart(void) SDA=1; SCL=1; SomeNoP( );延時(shí) SDA=0; SomeNOP( ); SCL=0; ,15,SiChuan Engineering Technical Colledge-1959,11-2 I2C總線接口協(xié)議,范例分析: 程序設(shè)計(jì)I2C總線協(xié)議: 停止信號(hào): 時(shí)鐘線保持高電平期間,數(shù)據(jù)線電平從低到高跳變作為I2C 總線的起始信號(hào)。,停止信號(hào)函數(shù): void I2CStop(void) SCL=0; SDA=0; SomeNOP( );延時(shí) SCL=1; SomeNOP( ); SDA=1; ,16,SiChuan Engineering Technical Colledge-1959,11-2 I2C總線接口協(xié)議,范例分析: 程序設(shè)計(jì)I2C總線協(xié)議: 應(yīng)答信號(hào): I2C 總線數(shù)據(jù)傳送時(shí),每成功地傳送一個(gè)字節(jié)數(shù)據(jù)后,接收器都必須產(chǎn)生一個(gè)應(yīng)答信號(hào)。應(yīng)答的器件在第9 個(gè)時(shí)鐘周期時(shí)將SDA 線拉低,表示其已收到一個(gè)8 位數(shù)據(jù)。,void SendAck(void)/應(yīng)答信號(hào) SDA=0; /*SDA先清0,發(fā)應(yīng)答信號(hào) */ SomeNOP(); SCL=1; /*SCL由低變高,產(chǎn)生一個(gè)時(shí)鐘*/ SomeNOP(); SCL=0; /*SCL恢復(fù)到低電平,以便繼續(xù)接收*/ ,17,SiChuan Engineering Technical Colledge-1959,11-2 I2C總線接口協(xié)議,范例分析: 程序設(shè)計(jì)I2C總線協(xié)議: 非應(yīng)答信號(hào): I2C 總線數(shù)據(jù)傳送時(shí),當(dāng)接受結(jié)束時(shí),接收器都必須產(chǎn)生一個(gè)非應(yīng)答信號(hào)。器件在第9 個(gè)時(shí)鐘周期時(shí)將SDA 線置高,表示已經(jīng)接收完畢。如果主機(jī)接收數(shù)據(jù)時(shí),它收到最后一個(gè)數(shù)據(jù)字節(jié)后,必須向從機(jī)發(fā)送一個(gè)非應(yīng)答信號(hào)(/A),使從機(jī)釋放SDA線,以便主機(jī)產(chǎn)生終止信號(hào),從而停止數(shù)據(jù)傳送。,void SendNotAck(void)/非應(yīng)答信號(hào) SDA=1; /*SDA先置1,發(fā)非應(yīng)答信號(hào) */ SomeNOP(); SCL=1; /*SCL由低變高,產(chǎn)生一個(gè)時(shí)鐘*/ SomeNOP(); SCL=0; /*SCL恢復(fù)到低電平,以便繼續(xù)接收*/ ,18,SiChuan Engineering Technical Colledge-1959,11-2 I2C總線接口協(xié)議,范例分析: 程序設(shè)計(jì)I2C總線協(xié)議: 字節(jié)格式 發(fā)送到SDA 線上的每個(gè)字節(jié)必須為8 位,每次傳輸可以發(fā)送的字節(jié)數(shù)量不受限制。每個(gè)字節(jié)后必須跟一個(gè)響應(yīng)位。首先傳輸?shù)氖菙?shù)據(jù)的最高位MSB,如果從機(jī)要完成一些其他功能后,例如一個(gè)內(nèi)部中斷服務(wù)程序才能接收或發(fā)送下一個(gè)完整的數(shù)據(jù)字節(jié),可以使時(shí)鐘線SCL 保持低電平迫使主機(jī)進(jìn)入等待狀態(tài),當(dāng)從機(jī)準(zhǔn)備好接收下一個(gè)數(shù)據(jù)字節(jié)并釋放時(shí)鐘線SCL 后數(shù)據(jù)傳輸繼續(xù)。,19,SiChuan Engineering Technical Colledge-1959,11-2 I2C總線接口協(xié)議,范例分析: 程序設(shè)計(jì)I2C總線協(xié)議: 器件地址: I2C總線上的每一個(gè)從機(jī)均有一個(gè)唯一的地址,每次主機(jī)發(fā)出起始信號(hào)后,必須接著發(fā)出一個(gè)字節(jié)的地址信息,以選取掛在總線上的某一從機(jī)。地址信息的格式如下:,其中D7-D0位表示從機(jī)的地址,D0位是數(shù)據(jù)傳送方向,為0時(shí),表示主機(jī)向從機(jī)發(fā)送數(shù)據(jù)(寫),為1時(shí),表示主機(jī)由從機(jī)處讀取數(shù)據(jù)。 主機(jī)發(fā)送地址時(shí),總線上的每一個(gè)從機(jī)都將這7位地址碼與自已的器件地址進(jìn)行比較,如果相同則認(rèn)為自已正被主機(jī)尋址,根據(jù)讀寫位將自已確定為發(fā)送器或接收器。 從機(jī)的地址由一個(gè)固定部分和一個(gè)可編程部分組成。固定部分為器件的編號(hào)地址,表明了器件的類型,出廠時(shí)固定的??删幊滩糠譃槠骷囊_地址,視硬件接線而定。,20,SiChuan Engineering Technical Colledge-1959,11-2 I2C總線接口協(xié)議,范例分析: 程序設(shè)計(jì)I2C總線協(xié)議: 器件地址: I2C總線上的每一個(gè)從機(jī)均有一個(gè)唯一的地址,每次主機(jī)發(fā)出起始信號(hào)后,必須接著發(fā)出一個(gè)字節(jié)的地址信息,以選取掛在總線上的某一從機(jī)。地址信息的格式如下:,例:24C02的地址格式如下: 其中高四位1010為器件標(biāo)識(shí)類型。 A2A0:引腳地址,對(duì)應(yīng)于該芯片引腳A2A0的取值,當(dāng)A2-A0引腳均接低電平時(shí),該器件的地址為A0H或A1H,如果為A0H表示寫數(shù)據(jù)到該器件,A1H表示從該器件讀數(shù)據(jù)。 說明:從機(jī)地址只表明選擇掛在總線的哪一個(gè)器件及傳送方向,而器件內(nèi)部的地址是由編程者傳送的第一數(shù)據(jù)中指定的,即第一個(gè)數(shù)據(jù)為器件內(nèi)的子地址。,21,SiChuan Engineering Technical Colledge-1959,11-2 I2C總線接口協(xié)議,范例分析: 程序設(shè)計(jì)I2C總線協(xié)議: 字節(jié)寫時(shí)序: 在字節(jié)寫模式下,主器件發(fā)送起始命令和從器件地址信息(R/W 位置零)給從器件,在從器件產(chǎn)生應(yīng)答信號(hào)后,主器件發(fā)從器件的字節(jié)地址.主器件在收到從器件的另一個(gè)應(yīng)答信號(hào)后,再發(fā)送數(shù)據(jù)到被尋址的存儲(chǔ)單元。從器件再次應(yīng)答,并在主器件產(chǎn)生停止信號(hào)后開始內(nèi)部數(shù)據(jù)的擦寫,在內(nèi)部擦寫過程中(對(duì)于24C02而言這一過程大概需要5ms),從器件不再應(yīng)答主器件的任何請(qǐng)求。,22,SiChuan Engineering Technical Colledge-1959,11-2 I2C總線接口協(xié)議,范例分析: 程序設(shè)計(jì)I2C總線協(xié)議: 字節(jié)寫時(shí)序:,I2CStart( ); I2CSendByte( ); WaitAck( ); I2CSendByte( ); WaitAck( ); I2CSendByte( ); WaitAck( ); I2CStop( ); for(j=0;j200;j+); SomeNOP( );,23,SiChuan Engineering Technical Colledge-1959,11-2 I2C總線接口協(xié)議,范例分析: 程序設(shè)計(jì)I2C總線協(xié)議: 字節(jié)讀時(shí)序立即讀: 24C02 的地址計(jì)數(shù)器內(nèi)容為最后操作字節(jié)的地址加1。 也就是說,如果上次讀/寫的操作地址為N,則立即讀的地址從地址N+1 開始。如果N=E(這里對(duì)24C02,E=255),則計(jì)數(shù)器將翻轉(zhuǎn)到0 且繼續(xù)輸出數(shù)據(jù)。24C02 接收到從器件地址信號(hào)后(R/W 位置1),它首先發(fā)送一個(gè)應(yīng)答信號(hào),然后發(fā)送一個(gè)8 位字節(jié)數(shù)據(jù)。主器件不需發(fā)送一個(gè)應(yīng)答信號(hào),但要產(chǎn)生一個(gè)停止信號(hào)。,24,SiChuan Engineering Technical Colledge-1959,11-2 I2C總線接口協(xié)議,范例分析: 程序設(shè)計(jì)I2C總線協(xié)議: 字節(jié)讀時(shí)序:,I2CStart( ); I2CSendByte( ); WaitAck( ); I2CSendByte( ); WaitAck( ); I2CStart( ); I2CSendByte( ); WaitAck( ); i=I2CReceiveByte( );,25,SiChuan Engineering Technical Colledge-1959,11-2 I2C總線接口協(xié)議,范例分析: 程序設(shè)計(jì)I2C總線協(xié)議: 字節(jié)讀時(shí)序頁寫:,26,SiChuan Engineering Technical Colledge-1959,11-2 I2C總線接口協(xié)議,范例分析: 程序設(shè)計(jì)I2C總線協(xié)議: 字節(jié)讀時(shí)序隨機(jī)讀:,27,SiChuan Engineering Technical Colledge-1959,11-2 I2C總線接口協(xié)議,范例分析: 程序設(shè)計(jì)I2C總線協(xié)議: 字節(jié)讀時(shí)序順序讀:,28,SiChuan Engineering Technical Colledge-1959,11-3 24C02與單片機(jī)的接口,參考流程 (設(shè)計(jì)程序?qū)崿F(xiàn)對(duì)小車上的外擴(kuò)24C02寫入數(shù)據(jù)2,然后讀出該數(shù)據(jù),并將其顯示在數(shù)碼管上。 ),29,SiChuan Engineering Technical Colledge-1959,11-3 24C02與單片機(jī)的接口,參考程序,#include #include #include #include #include #include #define uchar unsigned char #define uint unsigned int #define bool bit #define SomeNOP( );_nop_( );_nop_( );_nop_( );_nop_( );_nop_( );_nop_( ); _nop_( );_nop_( );_nop_( );_nop_( );_nop_( );_nop_( );_nop_( ); sbit SCL=P21; sbit SDA=P22; void I2CStart(void); void I2CStop(void);,30,SiChuan Engineering Technical Colledge-1959,11-3 24C02與單片機(jī)的接口,參考程序,void I2CSendByte(uchar x); uchar I2CReceiveByte(void); void SendAck(void); void SendNotAck(void); bool WaitAck(void); void delay(uchar x)/延時(shí)程序 while(x-) SomeNOP( ); SomeNOP( ); SomeNOP( ); SomeNOP( ); SomeNOP( ); SomeNOP( ); ,31,SiChuan Engineering Technical Colledge-1959,11-3 24C02與單片機(jī)的接口,參考程序,/* I2C相關(guān)函數(shù) */ void I2CStart(void) SDA=1; SCL=1; SomeNOP(); SDA=0; SomeNOP(); SCL=0; void I2CStop(void) SCL=0; SDA=0; SomeNOP(); SCL=1; SomeNOP(); SDA=1; ,32,SiChuan Engineering Technical Colledge-1959,11-3 24C02與單片機(jī)的接口,參考程序,bool WaitAck(void)/等待應(yīng)答信號(hào) uchar errtime=255; SDA=1; SomeNOP(); SCL=1; SomeNOP(); while(SDA) errtime-; if(!errtime) I2CStop( ); return 0; SCL=0; return 1; ,33,SiChuan Engineering Technical Colledge-1959,11-3 24C02與單片機(jī)的接口,參考程序,void SendNotAck(void)/非應(yīng)答信號(hào) SDA=1; SomeNOP(); SCL=1; SomeNOP(); SCL=0; void SendAck(void)/應(yīng)答信號(hào) SDA=0; SomeNOP(); SCL=1; SomeNOP(); ,34,SiChuan Engineering Technical Colledge-1959,11-3 24C02與單片機(jī)的接口,參考程序,void I2CSendByte(uchar x)/發(fā)送一個(gè)字節(jié)數(shù)據(jù) uchar i=8; while(i-) SCL=0; _nop_(); SDA=(bit)(x ,35,SiChuan Engineering Technical Colledge-1959,11-3 24C02與單片機(jī)的接口,參考程序,uchar I2CReceiveByte(void)/接受一個(gè)字節(jié)數(shù)據(jù) uchar i=8; uchar temp=0; SDA=1; while(i-) temp=1; SCL=0; SomeNOP(); SCL=1; SomeNOP(); temp=temp|SDA; SCL=0; return temp; ,36,SiChuan Engineering Technical Colledge-1959,11-3 24C02與單片機(jī)的接口,參考程序,void main() uchar i,j;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中醫(yī)學(xué)專業(yè)基礎(chǔ)考試試題及答案
- 2025年數(shù)據(jù)科學(xué)與技術(shù)考試試題及答案
- 2025年數(shù)據(jù)庫管理考試試題及答案
- 2025年企業(yè)管理師證書考試試題及答案
- 成人本科學(xué)位英語模擬試卷1(共901題)
- 商店欠賬轉(zhuǎn)讓合同協(xié)議書
- 七級(jí)美育試題及答案
- 七級(jí)中考測(cè)試題及答案
- 勞務(wù)合同協(xié)議書范本礦山
- 2025年全科醫(yī)生三基三嚴(yán)理論知識(shí)考核試題
- 脂肪肝介紹課件
- 2025 年上海社區(qū)工作人員招聘考試模擬卷
- 2024年市場(chǎng)營銷師品牌宣傳技巧試題及答案
- 應(yīng)急物資、設(shè)備檢查維護(hù)保養(yǎng)制度
- 2025年醫(yī)療器械全國總策劃代理協(xié)議書
- 《數(shù)據(jù)網(wǎng)組建與維護(hù)》課件-8.1任務(wù)1 WLAN基本配置
- 2025解題覺醒鄧誠數(shù)學(xué)(名師大招冊(cè))
- 第四單元第一課 多姿多彩的樂音世界-《唱臉譜》 課件 2024-2025學(xué)年湘藝版(2024)初中音樂七年級(jí)下冊(cè)
- 給小朋友科普化學(xué)小知識(shí)
- 中醫(yī)??谱o(hù)士進(jìn)修匯報(bào)
- 9.2 法律保障生活課件(共13張)-2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)下冊(cè)
評(píng)論
0/150
提交評(píng)論