版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第11章
AT89S51單片機系統(tǒng)
的串行擴展
1單片機系統(tǒng)擴展除并行擴展外,串行擴展技術(shù)也得到廣泛應(yīng)用。與并行擴展比,串口器件與單片機相連的I/O口線少(僅需1~4條),極大簡化器件間連接,進而提高可靠性;串行接口器件體積小,占用電路板空間小,減少電路板空間和成本。除上述優(yōu)點外,還有工作電壓寬、抗干擾能力強、功耗低、數(shù)據(jù)不易丟失等特點。因此,目前串行擴展技術(shù)在單片機系統(tǒng)中已得到廣泛應(yīng)用。常用串行擴展接口有I2C(InterInterfaceCircuit,內(nèi)部接口電路)串行總線接口、單總線(1-Wire)接口以及SPI串行外設(shè)接口。2本章介紹上述幾種串行接口總線的工作原理及特點,以及串行擴展的典型設(shè)計案例。11.1單總線串行擴展單總線(也稱1-Wirebus)由美國DALLAS公司推出的外圍串行擴展總線。只有一條數(shù)據(jù)輸入/輸出線DQ,總線上所有器件都掛在DQ上,電源也通過這條信號線供給。單總線系統(tǒng)中配置的各種器件,由DALLAS公司提供的專用芯片實現(xiàn)。每個芯片都有64位ROM,廠家對每一芯片都用激光燒寫編碼,其中存有16位十進制編碼序列號,它是器件的地址編號,確保它掛在總線上后,可以唯一被確定。除了3器件的地址編碼外,芯片內(nèi)還包含收發(fā)控制和電源存儲電路,見圖11-1。這些芯片耗電量都很?。臻e時幾W,工作時幾mW),工作時從總線上饋送電能到大電容中就可以工作,故一般不需另加電源。5圖11-1
單總線芯片內(nèi)部結(jié)構(gòu)示意圖11.1.1單總線器件溫度傳感器DS18B20簡介單總線應(yīng)用典型案例是采用單總線溫度傳感器DS18B20的溫度測量系統(tǒng)。DS18B20是美國DALLAS公司生產(chǎn)的數(shù)字溫度傳感器,體積小、低功耗、抗干擾能力強??芍苯訉囟绒D(zhuǎn)化成數(shù)字信號傳送給單片機處理,因而可省去傳統(tǒng)的信號放大、A/D轉(zhuǎn)換等外圍電路。1.DS18B20的特性DS18B20測量溫度范圍?55~+128℃,在?10~+85℃范圍內(nèi),測量精度可達(dá)±0.5℃,非常適合于惡劣環(huán)境的現(xiàn)場溫度測量,也可用于各種狹小空間內(nèi)設(shè)備的測溫,如環(huán)境控制、過程監(jiān)測6過程監(jiān)測、測溫類消費電子產(chǎn)品以及多點溫度測控系統(tǒng)。
圖11-2為單片機與多個帶有單總線接口的數(shù)字溫度傳感器DS18B20芯片的分布式溫度監(jiān)測系統(tǒng),圖11-2中多個DS18B20都掛在單片機的1根I/O口線(即DQ線)上。單片機對每個DS18B20通過總線DQ尋址。DQ為漏極開路,須加上拉電阻。DS18B20的一種封裝形式見圖11-2。除DS18B20外,在該數(shù)字溫度傳感器系列中還有DS1820、DS18S20、DS1822等其他型號,工作原理與特性基本相同。DS18B20每芯片都有唯一64位光刻ROM編碼,它是DS18B20地址序列碼,目的使每個DS18B20地址都不相同,這樣可實現(xiàn)在一根總線上掛接多個DS18B20的目的。8圖11-2
單總線構(gòu)成的分布式溫度監(jiān)測系統(tǒng)DS18B20片內(nèi)非易失性溫度報警觸發(fā)器TH和TL可由軟件寫入用戶報警的上下限值。高速暫存器中第5個字節(jié)為配置寄存器,可對其更改DS18B20的測溫分辨率。配置寄存器的各位定義如下:其中,TM位出廠時已被寫入0,用戶不能改變;低5位都為1;R1和R0用來設(shè)置分辨率。表11-1列出了R1、R0與分辨率和轉(zhuǎn)換時間的關(guān)系。用戶可通過修改R1、R0位的編碼,獲得合適的分辨率。11由表11-1,DS18B20轉(zhuǎn)換時間與分辨率有關(guān)。當(dāng)設(shè)定為9位時,轉(zhuǎn)換時間為93.75ms;設(shè)定10位時,轉(zhuǎn)換時間為187.5ms;當(dāng)設(shè)定11位時,轉(zhuǎn)換時間為375ms;當(dāng)設(shè)定為12位時,轉(zhuǎn)換時間為750ms。非易失性溫度報警觸發(fā)器TH、TL以及配置寄存器由9字節(jié)的E2PROM高速暫存器組成。高速暫存器各字節(jié)分配如下:當(dāng)單片機發(fā)給DS18B20溫度轉(zhuǎn)換命令后,經(jīng)轉(zhuǎn)換所得溫度值以兩字節(jié)補碼形式存放在高速暫存器的第1字節(jié)和第2字節(jié)。單片機通過單總線接口讀得該數(shù)據(jù),讀取時低位在前,高位在后,第3、4、5字節(jié)分別是TH、TL以及配置寄存器的臨時副本,每一次上電復(fù)位時被刷新。第6、7、8字節(jié)未用,為1213全1。讀出的第9字節(jié)是前面所有8個字節(jié)的CRC碼,用來保證正確通信。一般情況下,用戶只使用第1字節(jié)和第2字節(jié)。
表11-2列出了DS18B20溫度轉(zhuǎn)換后所得到的16位轉(zhuǎn)換結(jié)果的典型值,存儲在DS18B20的兩個8位RAM單元中。下面介紹溫度轉(zhuǎn)換的計算方法。當(dāng)DS18B20采集的溫度為+125℃時,輸出為0x07d0,則:實際溫度=(0x07d0)/16=(0×163+7×162+13×161+0×160)/16=125℃當(dāng)DS18B20采集的溫度為-55℃時,輸出為0xfc90,由于是補碼,則先11位數(shù)據(jù)取反加1得0x0370,注意符號位不變,也不參加運算,則
實際溫度=(0x0370)/6=(0×163+3×162+7×161+0×160)/16=55℃
注意,負(fù)號則需對采集的溫度進行判斷后,再予以顯示。142.DS18B20的工作時序DS18B20對工作時序要求嚴(yán)格,延時時間需準(zhǔn)確,否則容易出錯。DS18B20的工作時序包括初始化時序、寫時序和讀時序。(1)初始化時序,單片機將數(shù)據(jù)線電平拉低480~960μs后釋放,等待15~60μs,單總線器件即可輸出一持續(xù)60~240μs的低電平,單片機收到此應(yīng)答后即可進行操作。(2)寫時序,當(dāng)單片機將數(shù)據(jù)線電平從高拉到低時,產(chǎn)生寫時序,有寫“0”和寫“1”兩種時序。寫時序開始后,DS18B20在15~60μs期間從數(shù)據(jù)線上采樣。如果采樣到低15電平,則向DS18B20寫的是“0”;如果采樣到高電平,則向DS18B20寫的是“1”。這兩個獨立時序間至少需拉高總線電平1μs時間。(3)讀時序,當(dāng)單片機從DS18B20讀取數(shù)據(jù)時,產(chǎn)生讀時序。此時單片機將數(shù)據(jù)線電平從高拉到低使讀時序被初始化。如果在此后15μs內(nèi),單片機在數(shù)據(jù)線上采樣到低電平,則從DS18B20讀的是“0”;如果在此后的15μs內(nèi),單片機在數(shù)據(jù)線上采樣到高電平,則從DS18B20讀的是“1”。3.DS18B20的命令DS18B20所有命令均為8位長,常用的命令代碼見表11-3。161711.1.2設(shè)計案例:單總線DS18B20溫度測量系統(tǒng)
【例11-1】利用DS18B20和LED數(shù)碼管實現(xiàn)單總線溫度測量系統(tǒng),原理電路見圖11-3。DS18B20測量范圍是?55~128℃。本例只顯示00~99。通過本例讀者應(yīng)掌握DS18B20特性及單片機I/O實現(xiàn)單總線協(xié)議的方法。Proteus仿真時,用手動,即用鼠標(biāo)單擊DS18B20圖標(biāo)上的“↑”或“↓”來改變溫度,注意手動調(diào)節(jié)溫度同時,LED數(shù)碼管會顯示出與DS18B20窗口相同的2位溫度數(shù)值。電路中74LS47是BCD-7段譯碼器/驅(qū)動器,用于將單片機P0口輸出欲顯示的BCD碼轉(zhuǎn)化成相應(yīng)的數(shù)字顯示的段碼,并直接驅(qū)動LED數(shù)碼管顯示。1819圖11-3
單總線DS18B20溫度測量與顯示系統(tǒng)參考程序如下:#include"reg51.h"#include"intrins.h"#defineucharunsignedchar#defineuintunsignedint#defineoutP0sbitsmg1=out^4;sbitsmg2=out^5;sbitDQ=P3^7;voiddelay5(uchar);voidinit_ds18b20(void);ucharreadbyte(void);voidwritebyte(uchar);ucharretemp(void);20voidmain(void) //主函數(shù){ uchari,temp; delay5(1000); while(1) { temp=retemp(); for(i=0;i<10;i++) //連續(xù)掃描數(shù)碼管10次
{ out=(temp/10)&0x0f; smg1=0; smg2=1; delay5(1000); //延時5ms out=(temp%10)&0x0f; smg1=1; smg2=0; delay5(1000); //延時5ms } }}21voiddelay5(ucharn) //函數(shù)功能:延時5μs { do { _nop_(); _nop_(); _nop_(); n--; } while(n);}voidinit_ds18b20(void) //函數(shù)功能:18B20初始化{ ucharx=0; DQ=0; delay5(120); DQ=1; delay5(16); delay5(80);}22ucharreadbyte(void) //函數(shù)功能:讀取1字節(jié)數(shù)據(jù){ uchari=0; uchardate=0; for(i=8;i>0;i--) { DQ=0; delay5(1); DQ=1; //15μs內(nèi)拉釋放總線
date>>=1; if(DQ) date|=0x80; delay5(11); } return(date);}23voidwritebyte(uchardat) //函數(shù)功能:寫1字節(jié){uchari=0;for(i=8;i>0;i--){ DQ=0; DQ=dat&0x01; //寫"1"在15μs內(nèi)拉低
delay5(12); //寫"0"拉低60μs DQ=1; dat>>=1; delay5(5); }}24ucharretemp(void) //函數(shù)功能:讀取溫度{ uchara,b,tt; uintt; init_ds18b20(); writebyte(0xCC); writebyte(0x44); init_ds18b20(); writebyte(0xCC); writebyte(0xBE); a=readbyte(); b=readbyte(); t=b; t<<=8; t=t|a; tt=t*0.0625; return(tt);}25DS18B20體積小、適用電壓范圍寬,是世界上第一片支持“單總線”接口的溫度傳感器?,F(xiàn)場溫度測量直接以“單總線”數(shù)字方式傳輸,大大提高系統(tǒng)抗干擾性。所以單總線系統(tǒng)特別適用于測控點多、分布面廣、環(huán)境惡劣以及狹小空間內(nèi)設(shè)備的測溫以及現(xiàn)場溫度測量,如環(huán)境控制、設(shè)備或過程控制、測溫類消費電子產(chǎn)品等。2611.2SPI總線串行擴展SPI(SerialPeriperalInterface,串行外設(shè)接口)是Motorola公司推出的一種同步串行外設(shè)接口,允許單片機與多個廠家生產(chǎn)的帶有標(biāo)準(zhǔn)SPI接口的外圍設(shè)備直接連接,以串行方式交換信息。11.2.1SPI總線的擴展結(jié)構(gòu)SPI外圍串行擴展結(jié)構(gòu)見圖11-4。使用4條線:串行時鐘SCK,主器件輸入/從器件輸出數(shù)據(jù)線MISO,主器件輸出/從器件輸入數(shù)據(jù)線MOSI和從器件選擇線。典型SPI系統(tǒng)是單主器件系統(tǒng),從器件通常是外圍接口器件,如存儲器、I/O接口、A/D、D/A、鍵盤、日歷/時鐘和顯示2728圖11-4SPI外圍串行擴展結(jié)構(gòu)圖驅(qū)動等。單片機擴展多個外圍器件時,SPI無法通過數(shù)據(jù)線譯碼選擇,故外圍器件都有片選端。在擴展單個SPI器件時,外圍器件的片選端CS*可接地或通過I/O口控制;在擴展多個SPI器件時,單片機應(yīng)分別通過I/O口線來分時選通外圍器件。在SPI串行擴展系統(tǒng)中,如某一從器件只作輸入(如鍵盤)或只作輸出(如顯示器)時,可省去一條數(shù)據(jù)輸出(MISO)線或一條數(shù)據(jù)輸入(MOSI)線,從而構(gòu)成雙線系統(tǒng)(接地)。SPI系統(tǒng)中單片機對從器件選通需控制其CS*端,由于省去傳輸時的地址字節(jié),數(shù)據(jù)傳送軟件十分簡單。但在擴展器件較多時,需制較多的從器件CS*端,連線較多。
在SPI串行擴展系統(tǒng)中,主器件單片機在啟動一次傳送時,便產(chǎn)生8個時鐘,傳給接口芯片作為同步時鐘,控制數(shù)據(jù)的輸入和輸出。數(shù)據(jù)的傳送格式是高位(MSB)在前,低位(LSB)在后,見圖11-5。數(shù)據(jù)線上輸出數(shù)據(jù)的變化以及輸入數(shù)據(jù)時的采樣,都取決于SCK。但對不同的外圍芯片,有的可能是SCK的上升沿起作用,有的可能是SCK的下降沿起作用。SPI有較高的數(shù)據(jù)傳輸速度,最高可達(dá)1.05Mbit/s。圖11-5SPI數(shù)據(jù)傳送格式目前世界各芯片公司為廣大用戶提供一系列具有SPI接口的單片機和外圍接口芯片,例如Motorola公司存儲器MC2814、顯示驅(qū)動器MC14499和MC14489等各種芯片;美國TI公司的8位串行A/D轉(zhuǎn)換器TLC549、12位串行A/D轉(zhuǎn)換器TLC2543等。SPI外圍串行擴展系統(tǒng)的從器件要具有SPI接口。主器件是單片機。目前許多機型都帶有SPI接口。由于AT89S51不帶有SPI接口,可采用軟件與I/O口結(jié)合來模擬SPI的接口時序。11.2.2設(shè)計案例:擴展帶有SPI接口的8位串行A/D轉(zhuǎn)換器TLC549下面介紹SPI接口串行擴展應(yīng)用案例,AT89S51擴展低價位、高性能的8位A/D轉(zhuǎn)換器TLC549。TLC549是美國TI推出的一種低價位、高性能的8位A/D轉(zhuǎn)換器,它以8位開關(guān)電容逐次逼近方法實現(xiàn)A/D轉(zhuǎn)換,其轉(zhuǎn)換速度小于17μs,最大轉(zhuǎn)換速率為40kHz,內(nèi)部系統(tǒng)時鐘的典型值為4MHz,電源為3~6V。它能方便地采用SPI串行接口方式與各種單片機連接,構(gòu)成廉價的測控應(yīng)用系統(tǒng)。1.TLC549的引腳及功能引腳見圖11-6。圖11-6TLC549的引腳
引腳功能如下:REF+:正基準(zhǔn)電壓輸入2.5V≤REF+≤Vcc+0.1V。
REF-:負(fù)基準(zhǔn)電壓輸入端,-0.1V≤REF-≤2.5V。且:(REF+)-(REF-)≥1V。
VCC:電源3V≤Vcc≤6V。
GND:地。
CS*:片選端。
DATAOUT:轉(zhuǎn)換結(jié)果數(shù)據(jù)串行輸出端,與TTL電平兼容,輸出時高位在前
ANALOGIN:模擬信號輸入端,0≤ANALOGIN≤Vcc,當(dāng)
ANALOGIN≥REF+電壓時,轉(zhuǎn)換結(jié)果為全“1”(0xff),
ANALOGIN≤REF-電壓時,轉(zhuǎn)換結(jié)果為全“0”(0x00)。
I/OCLOCK:外接輸入/輸出時鐘輸入端,同于同步芯片的輸入輸出操作,無需與芯片內(nèi)部系統(tǒng)時鐘同步。2.TLC549工作時序工作時序見圖11-7。從圖可知:(1)串行數(shù)據(jù)中高位A7先輸出,最后輸出低位A0;(2)在每一次I/OCOLCK高電平期間DATAOUT線上數(shù)據(jù)產(chǎn)生有效輸出,每出現(xiàn)一次I/OCOLCK,DATAOUT線就輸出1位數(shù)據(jù)。一個周期出現(xiàn)8次I/OCOLCK信號并對應(yīng)8位數(shù)據(jù)輸出;(3)在CS*變?yōu)榈碗娖胶?,最高有效位(A7)自動置于DATAOUT總線。其余7位(A6~A0)在前7個I/OCLOCK下降沿由時鐘同步輸出。B7~B0以同樣方式跟在其后;(4)tsu在片選信號CS*變低后,I/OCOLCK開始正跳變的最小時間間隔1.4μs;(5)ten是從CS*變低到DATAOUT線上輸出數(shù)據(jù)最小時間(1.2μs);(6)只要I/OCOLCK變高就可讀取DATAOUT線上數(shù)據(jù);圖11-7TLC549工作時序(7)只有在CS*端為低時,TLC549才工作;(8)TLC549的A/D轉(zhuǎn)換電路沒有啟動控制端,只要讀取前一次數(shù)據(jù)后馬上就可以開始新的A/D轉(zhuǎn)換。轉(zhuǎn)換完成后就進入保持狀態(tài)。TLC549每次轉(zhuǎn)換所需時間是17μs,它開始于變?yōu)榈碗娖胶驣/OCLOCK的第8個下降沿,沒有轉(zhuǎn)換完成標(biāo)志信號。當(dāng)CS*變?yōu)榈碗娖胶?,TLC549芯片被選中,同時前次轉(zhuǎn)換結(jié)果的最高有效位MSB(A7)自DATAOUT端輸出,接著要求從I/OCLOCK端輸入8個外部時鐘信號,前7個I/OCLOCK信號的作用,是配合TLC549輸出前次轉(zhuǎn)換結(jié)果的的A6~A0位,并為本次轉(zhuǎn)換做準(zhǔn)備:在第4個I/OCLOCK信號由高至低的跳變之后,片內(nèi)采樣/保持電路對輸入模擬量采樣開始,第8個I/OCLOCK信號的下降沿使片內(nèi)采樣/保持電路進入保持狀態(tài)并啟動A/D開始轉(zhuǎn)換。轉(zhuǎn)換時間為36個時鐘周期,最大為17μs。直到A/D轉(zhuǎn)換完成前的這段時間內(nèi),TLC549的控制邏輯要求:或者CS*保持高電平,或者I/OCLOCK時鐘端保持36個系統(tǒng)時鐘周期低電平。由此可見,在TLC549的I/OCLOCK端輸入8個外部時鐘信號期間需要完成以下工作:讀入前次A/D轉(zhuǎn)換結(jié)果;對本次轉(zhuǎn)換的輸入模擬信號采樣并保持;啟動本次轉(zhuǎn)換開始。3.單片機與TLC549的接口設(shè)計
【例11-2】單片機控制串行8位A/D轉(zhuǎn)換器TLC549進行A/D轉(zhuǎn)換,原理電路與仿真結(jié)果見圖11-8。由電位計RV1提供給TLC549模擬量輸入,通過調(diào)節(jié)RV1上的“+”、“?”端,改變輸入電壓值。編寫程序?qū)⒛M電壓量轉(zhuǎn)換成二進制數(shù)字量,本例用P0口輸出控制8個發(fā)光二極管的亮與滅顯示轉(zhuǎn)換結(jié)果的二進制碼,也可通過LED數(shù)碼管將轉(zhuǎn)換完畢的數(shù)字量以16進制數(shù)形式顯示出來。圖11-8
單片機與TLC549接口的原理電路參考程序如下:#include<reg51.h>#include<intrins.h> //包含_nop_()函數(shù)頭文件#defineucharunsignedchar#defineuintunsignedint#defineledP0sbitsdo=P1^0; //定義P1.0與TLC549的SDO腳(即5腳DATAOUT)連接sbitcs=P1^1; //定義P1.1與TLC549的腳連接sbitsclk=P1^2;//定義P1.2與TLC549的SCLK腳(即7腳I/OCLOCK)連接voiddelayms(uintj) //延時函數(shù){ uchari=250; for(;j>0;j--) {while(--i); i=249; while(--i); i=250; }}voiddelay18us(void) 延時約18μs函數(shù){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();nop_();_nop_();}ucharconvert(void){ uchari,temp; cs=0;delay18us();for(i=0;i<8;i++) { if(sdo==1)temp=temp|0x01; if(i<7)temp=temp<<1; sclk=1; _nop_();_nop_();_nop_();_nop_(); sclk=0; _nop_();_nop_(); } cs=1; return(temp);}voidmain(){ucharresult;led=0;cs=1;sclk=0;sdo=1;while(1) { result=convert(); led=result; //轉(zhuǎn)換結(jié)果從P0口輸出驅(qū)動LED delayms(1000); }}由于TLC549轉(zhuǎn)換時間應(yīng)大于17μs,本例采用延時操作方案,延時時間大約18μs,每次讀取轉(zhuǎn)換數(shù)據(jù)時間大于17μs即可。11.3I2C總線的串行擴展I2C(InterInterfaceCircuit)全稱為芯片間總線,是目前使用廣泛的芯片間串行擴展總線。目前世界上采用I2C總線有兩個規(guī)范,荷蘭飛利浦公司和日本索尼公司,現(xiàn)多采用飛利浦公司I2C總線技術(shù)規(guī)范,已成為電子行業(yè)認(rèn)可的總線標(biāo)準(zhǔn)。采用I2C技術(shù)單片機以及外圍器件種類很多,已廣泛用于各類電子產(chǎn)品、家用電器及通信設(shè)備中。11.3.1I2C串行總線系統(tǒng)的基本結(jié)構(gòu)I2C串行總線只有兩條信號線,一條是數(shù)據(jù)線SDA,另一條是時鐘線SCL。SDA和SCL是雙向的,I2C總線上各器件數(shù)據(jù)線都接到SDA線上,各器件時鐘線均接到SCL線上。I2C總線系統(tǒng)基本結(jié)構(gòu)見圖11-9。帶有I2C接口單片機可直接與I2C總線接口的各種擴展器件(如存儲器、I/O芯片、A/D、D/A、鍵盤、顯示器、日歷/時鐘)連接。由于I2C總線采用純軟件尋址方法,無需片選線連接,大大簡化總線數(shù)量。圖11-9I2C串行總線系統(tǒng)基本結(jié)構(gòu)I2C串行總線運行由主器件控制。主器件是指啟動數(shù)據(jù)的發(fā)送(發(fā)出起始信號)、發(fā)出時鐘信號、傳送結(jié)束時發(fā)出終止信號的器件,通常由單片機來擔(dān)當(dāng)。從器件可以是存儲器、LED或LCD驅(qū)動器、A/D或D/A轉(zhuǎn)換器、時鐘/日歷器件等,從器件須帶有I2C串行總線接口。I2C總線空閑時,SDA和SCL兩條線均為高。連接到總線上器件輸出級必須是漏級或集電極開路,只要有一器件任意時刻輸出低電平,都將使總線上信號變低,即各器件SDA及SCL都是“線與”關(guān)系。由于各器件輸出為漏級開路,故須通過上拉電阻接正電源(見圖11-9中兩個電阻),以保證SDA和SCL在空閑時被上拉為高電平。SCL線上時鐘信號對SDA線上各器件間數(shù)據(jù)傳輸起同步控制作用。SDA線上數(shù)據(jù)起始、終止及數(shù)據(jù)的有效性均要根據(jù)SCL線上的時鐘信號來判斷。在標(biāo)準(zhǔn)I2C普通模式下,數(shù)據(jù)傳輸速率為100kbit/s,高速模式下可達(dá)400kbit/s??偩€上擴展器件數(shù)量不是由電流負(fù)載決定的,而是由電容負(fù)載確定。I2C總線每個器件接口都有一定等效電容,連接器件越多,電容值就越大,這會造成信號傳輸延遲??偩€上允許器件數(shù)以器件電容量不超過400pF(通過驅(qū)動擴展可達(dá)4000pF)為宜,據(jù)此可計算出總線長度及連接器件數(shù)量。每個I2C總線器件都有唯一地址,擴展器件時也要受器件地址數(shù)目限制。
I2C總線應(yīng)用系統(tǒng)允許多主器件,由哪一個主器件來控制總線要通過總線仲裁來決定。如何進行總線仲裁,讀者可查閱I2C總線仲裁協(xié)議。但是在實際應(yīng)用中,經(jīng)常遇到的是以單一單片機為主器件,其他外圍接口器件為從器件的情況。
11.3.2I2C總線的數(shù)據(jù)傳送規(guī)定1.?dāng)?shù)據(jù)位的有效性規(guī)定I2C總線數(shù)據(jù)傳送時,每一數(shù)據(jù)位傳送都與時鐘脈沖相對應(yīng)。時鐘脈沖為高電平期間,數(shù)據(jù)線上數(shù)據(jù)須保持穩(wěn)定,在I2C總線上,只有在時鐘線為低電平期間,數(shù)據(jù)線上電平狀態(tài)才允許變化,見圖11-10。圖11-10
數(shù)據(jù)位有效性規(guī)定2.起始信號和終止信號由I2C總線協(xié)議,總線上數(shù)據(jù)信號傳送由起始信號(S)開始、由終止信號(P)結(jié)束。起始信號和終止信號都由主機發(fā)出,在起始信號產(chǎn)生后,總線就處于占用狀態(tài);在終止信號產(chǎn)生后,總線就處于空閑狀態(tài)。下面結(jié)合圖11-11介紹有關(guān)起始信號和終止信號的規(guī)定。圖11-11
起始信號和終止信號(1)起始信號(S)。在SCL線為高期間,SDA線由高電平向低電平的變化表示起始信號,只有在起始信號以后,其他命令才有效。(2)終止信號(P)。在SCL線為高期間,SDA線由低電平向高電平的變化表示終止信號。隨著終止信號出現(xiàn),所有外部操作都結(jié)束。3.I2C總線上數(shù)據(jù)傳送的應(yīng)答I2C總線數(shù)據(jù)傳送時,傳送字節(jié)數(shù)沒有限制,但每字節(jié)須為8位長。數(shù)據(jù)傳送時,先傳送最高位(MSB),每一個被傳送的字節(jié)后面都必須跟隨1位應(yīng)答位(即1幀共有9位),見圖11-12。I2C總線在傳送每1字節(jié)數(shù)據(jù)后都須有應(yīng)答信號A,應(yīng)答信號在第9個時鐘位上出現(xiàn),與應(yīng)答信號對應(yīng)的時鐘信號由主器件產(chǎn)生。這時發(fā)方須在這一時鐘位上使SDA線處于高電平狀態(tài),以便收方在這一位上送出低電平應(yīng)答信號A。由于某種原因收方不對主器件尋址信號應(yīng)答時,例如收方正在進行其他處理而無法接收總線上數(shù)據(jù)時,必須釋放總線,將數(shù)據(jù)線置為高電平,而由主器件產(chǎn)生一個終止信號以結(jié)束總線的數(shù)據(jù)傳送。當(dāng)主器件接收來自從機數(shù)據(jù)時,接收到最后一個數(shù)據(jù)字節(jié)后,須給從器件發(fā)送一個非應(yīng)答信號(A*),使從機釋放數(shù)據(jù)總線,以便主機發(fā)送一終止信號,從而結(jié)束數(shù)據(jù)傳送。圖11-12I2C總線上的應(yīng)答信號4.I2C總線上的數(shù)據(jù)幀格式I2C總線上傳送數(shù)據(jù)信號即包括真正的數(shù)據(jù)信號,也包括地址信號。I2C總線規(guī)定,在起始信號后必須傳送一從器件地址(7位),第8位是數(shù)據(jù)傳送的方向位(R/W*),用“0”表示主器件發(fā)送數(shù)據(jù)(W*),“1”表示主器件接收數(shù)據(jù)(R)。每次數(shù)據(jù)傳送總是由主器件產(chǎn)生的終止信號結(jié)束。但是,若主器件希望繼續(xù)占用總線進行新的數(shù)據(jù)傳送,則可不產(chǎn)生終止信號,馬上再次發(fā)出起始信號對另一從器件進行尋址。因此,在總線一次數(shù)據(jù)傳送過程中,可有以下幾種組合方式:(1)主器件向從器件發(fā)送n字節(jié)的數(shù)據(jù),數(shù)據(jù)傳送方向在整個傳送過程中不變,數(shù)據(jù)傳送格式:其中:字節(jié)1~字節(jié)n為主機寫入從器件的n字節(jié)的數(shù)據(jù)。格式中陰影部分表示主器件向從機發(fā)送數(shù)據(jù),無陰影部分表示從器件向主器件發(fā)送,以下同。上述格式中的“從器件地址”為7位,緊接其后的“1”和“0”表示主器件的讀/寫方向,“1”為讀,“0”為寫。(2)主器件讀出來自從機的n字節(jié)。除第1個尋址字節(jié)由主機發(fā)出,n字節(jié)都由從器件發(fā)送,主器件接收,數(shù)據(jù)傳送格式如下:其中:字節(jié)1~字節(jié)n為從器件被讀出的n字節(jié)數(shù)據(jù)。主器件發(fā)送終止信號前應(yīng)發(fā)送非應(yīng)答信號,向從器件表明讀操作要結(jié)束。(3)主器件的讀、寫操作。在一次數(shù)據(jù)傳送過程中,主器件先發(fā)送1字節(jié)數(shù)據(jù),然后再接收1字節(jié)數(shù)據(jù),此時起始信號和從器件地址都被重新產(chǎn)生一次,但兩次讀寫的方向位正好相反。數(shù)據(jù)傳送格式如下:格式中的“Sr”表示重新產(chǎn)生的起始信號,“從器件地址r”表示重新產(chǎn)生的從器件地址。由上可見,無論哪種方式,起始信號、終止信號和從器件地址均由主器件發(fā)送,數(shù)據(jù)字節(jié)傳送方向則由主器件發(fā)出的尋址字節(jié)中的方向位規(guī)定,每個字節(jié)傳送都須有應(yīng)答位(A或A*)相隨。605.尋址字節(jié)在上面介紹的數(shù)據(jù)幀格式中,均有7位從器件地址和緊跟其后的1位讀/寫方向位,即尋址字節(jié)。I2C總線的尋址采用軟件尋址,主器件在發(fā)送完起始信號后,立即發(fā)送尋址字節(jié)來尋址被控的從器件,尋址字節(jié)格式如下:
7位從器件地址為“DA3、DA2、DA1、DA0”和“A2、A1、A0”,其中“DA3、DA2、DA1、DA0”為器件地址,即器件固有地址編碼,出廠時就已給定?!癆2、A1、A0”為引腳地址,由器件61“A2、A1、A0”為引腳地址,由器件引腳A2、A1、A0在電路中接高電平或接地決定(見圖11-14)。數(shù)據(jù)方向位(R/W*)規(guī)定了總線上的單片機(主器件)與從器件數(shù)據(jù)傳送方向。R/W*=1,表示主器件接收(讀)。R/W*=0,表示主器件發(fā)送(寫)6.?dāng)?shù)據(jù)傳送格式I2C總線每傳送一位數(shù)據(jù)都與一個時鐘脈沖對應(yīng),傳送的每一幀數(shù)據(jù)均為一字節(jié)。但啟動I2C總線后傳送的字節(jié)數(shù)沒有限制,只要求每傳送一個字節(jié)后,對方回答一個應(yīng)答位。在時鐘線為高電平期間,數(shù)據(jù)線的狀態(tài)就是要傳送的數(shù)據(jù)。數(shù)據(jù)線上數(shù)據(jù)改變須在時鐘線為低電平間完成。在數(shù)據(jù)傳輸期間,只要時鐘線為高電平,數(shù)據(jù)線都必須穩(wěn)定,否則數(shù)據(jù)線上任何變化都當(dāng)作起始或終止信號。
I2C總線數(shù)據(jù)傳送必須遵循規(guī)定的數(shù)據(jù)傳送格式。圖11-13所示為一次完整的數(shù)據(jù)傳送應(yīng)答時序。由總線規(guī)范,起始信號表明一次數(shù)據(jù)傳送的開始,其后為尋址字節(jié)。在尋址字節(jié)后是按指定讀、寫的數(shù)據(jù)字節(jié)與應(yīng)答位。在數(shù)據(jù)傳送完成后主器件都必須發(fā)送終止信號。在起始與終止信號之間傳輸?shù)臄?shù)據(jù)字節(jié)數(shù)由主器件(單片機)決定,理論上講沒有字節(jié)限制。6364圖11-13I2C總線一次完整的數(shù)據(jù)傳送應(yīng)答時序由上述數(shù)據(jù)傳送格式可看出:(1)無論何種數(shù)據(jù)傳送格式,尋址字節(jié)都由主器件發(fā)出,數(shù)據(jù)字節(jié)傳送方向則由尋址字節(jié)中方向位來規(guī)定。(2)尋址字節(jié)只表明從器件的地址及數(shù)據(jù)傳送方向。從器件內(nèi)部的n個數(shù)據(jù)地址,由器件設(shè)計者在該器件的I2C總線數(shù)據(jù)操作格式中,指定第1個數(shù)據(jù)字節(jié)作為器件內(nèi)的單元地址指針,并且設(shè)置地址自動加減功能,以減少從器件地址的尋址操作。(3)每個字節(jié)傳送都必須有應(yīng)答信號(A/A*)相隨。(4)從器件接收到起始信號后都必須釋放數(shù)據(jù)總線,使其處于高電平,以便主器件發(fā)送從機地址。11.3.3AT89S51的I2C總線擴展系統(tǒng)許多公司都推出帶有I2C接口的單片機及各種外圍擴展器件,常見的有ATMEL的AT24C××系列存儲器、PHILIPS的PCF8553(時鐘/日歷且?guī)в?56×8RAM)和PCF8570(256×8RAM)、MAXIM的MAX117/118(A/D轉(zhuǎn)換器)和MAX517/518/519(D/A轉(zhuǎn)換器)等。I2C系統(tǒng)中主器件通常由帶有I2C接口的單片機擔(dān)當(dāng)。從器件必須帶有I2C總線接口。AT89S51單片機沒有I2C接口,可利用并行I/O口線結(jié)合軟件來模擬I2C總線時序,可使AT89S51不受沒有I2C接口限制。因此,在許多應(yīng)用中,都將I2C總線模擬66傳送作為常規(guī)設(shè)計方法。
圖11-14為AT89S51單片機與具有I2C總線器件的擴展接口電路。圖中,AT24C02為E2PROM芯片,PCF8570為靜態(tài)256×8RAM,PCF8574為8位I/O接口,SAA1064為4位LED驅(qū)動器。雖然各種器件的原理和功能有很大的差異,但它們與AT89S51單片機連接是相同的。68圖11-14AT89S51單片機擴展I2C總線器件的接口電路11.3.4I2C總線數(shù)據(jù)傳送的模擬由于AT89S51沒有I2C接口,通常用I/O口線結(jié)合軟件來實現(xiàn)I2C總線上的信號模擬。AT89S51為單主器件方式下,沒有其他主器件對總線競爭與同步,只存在著主器件單片機對I2C總線上各從器件的讀、寫操作。1.典型信號模擬為保證數(shù)據(jù)傳送的可靠性,標(biāo)準(zhǔn)I2C總線數(shù)據(jù)傳送有嚴(yán)格的時序要求。I2C總線的起始信號、終止信號、應(yīng)答/數(shù)據(jù)“0”及非應(yīng)答/數(shù)據(jù)“1”的模擬時序見圖11-15~圖11-20。
69對于終止信號,要保證有大于4.7μs信號建立時間。終止信號結(jié)束時,要釋放總線,使SDA、SCL維持在高電平上,在大于4.7μs后才可進行第1次起始操作。在單主器件系統(tǒng)中,為防止非正常傳送,終止信號后SCL可設(shè)置在低電平。對發(fā)送應(yīng)答位、非應(yīng)答位來說,與發(fā)送數(shù)據(jù)“0”和“1”的信號定時要求完全相同。只要滿足在時鐘高電平大于4.0μs期間,SDA線上有確定的電平狀態(tài)即可。2.典型信號及字節(jié)收發(fā)的模擬子程序AT89S51單片機在模擬I2C總線通信時,需編寫以下5個函數(shù):總線初始化、起始信號、終止信號、應(yīng)答/數(shù)據(jù)“0”以及非應(yīng)答/數(shù)據(jù)“1”函數(shù)。(1)總線初始化函數(shù)。初始化函數(shù)的功能是將SCL和SDA總線拉高以釋放總線。參考程序如下:#include<reg51.h>#include<intrins.h> //包含函數(shù)_nop_()的頭文件sbitsda=P1^0; //定義I2C模擬數(shù)據(jù)傳送位sbitscl=P1^1; //定義I2C模擬時鐘控制位71voidinit() //總線初始化函數(shù){ scl=1; //scl為高電平_nop_(); //延時約1μssda=1; //sda為高電平delay5us(); //延時約5μs}
(2)起始信號S函數(shù)。圖11-15的起始信號S,要求一個新的起始信號前總線的空閑時間大于4.7μs,而對于一個重復(fù)的起始信號,要求建立時間也須大于4.7μs。圖11-14為起始信號的時序波形在SCL高電平期間SDA發(fā)生負(fù)跳變。起始信號到第1個時鐘脈沖負(fù)跳沿的時間間隔應(yīng)大于4μs。7273圖11-15
起始信號S的模擬時序起始信號S的函數(shù)如下:voidstart(void) //起始信號函數(shù){scl=1; sda=1;delay5us();sda=0;delay4us();scl=0;}74(3)終止信號P函數(shù)。圖11-16為終止信號P的時序波形。在SCL高電平期間SDA的一個上升沿產(chǎn)生終止信號。75圖11-16
終止信號P的模擬時序終止信號函數(shù)如下:voidstop(void) //終止信號函數(shù){scl=0;sda=0;delay4us();scl=1;delay4us();sda=1;delay5us();sda=0;}76(4)應(yīng)答位函數(shù)。發(fā)送接收應(yīng)答位與發(fā)送數(shù)據(jù)“0”相同,即在SDA低電平期間SCL發(fā)生一個正脈沖,產(chǎn)生圖11-17的模擬時序。77圖11-17發(fā)送應(yīng)答位的模擬時序發(fā)送接收應(yīng)答位的函數(shù)如下:voidAck(void){ uchari;sda=0;scl=1;delay4us();while((sda==1)&&(i<255))i++;scl=0;delay4us();}78SCL在高電平期間,SDA被從器件拉為低表示應(yīng)答。命令行中的(SDA=1)和(i<255))相與,表示若在這一段時間內(nèi)沒有收到從器件的應(yīng)答,則主器件默認(rèn)從器件已收到數(shù)據(jù)而不再等待應(yīng)答信號,要是不加該延時退出,一旦從器件沒有發(fā)應(yīng)答信號,程序?qū)⒂肋h(yuǎn)停在這里,而在實際中是不允許這種情況發(fā)生。(5)非應(yīng)答位/數(shù)據(jù)“1”函數(shù)。發(fā)送非應(yīng)答位與發(fā)送數(shù)據(jù)“1”相同,即在SDA高電平期間SCL發(fā)生一個正脈沖,產(chǎn)生圖11-18的模擬時序。79圖11-18非應(yīng)答位/數(shù)據(jù)“1”的模擬時序發(fā)送非接收應(yīng)答位/數(shù)據(jù)“1”的函數(shù)如下:voidNoAck(void) { sda=1;scl=1;delay4us();scl=0;sda=0;}3.字節(jié)收發(fā)的子程序除上述典型信號模擬外,在I2C總線數(shù)據(jù)傳送中,經(jīng)常使用單字節(jié)數(shù)據(jù)的發(fā)送與接收。81(1)發(fā)送1字節(jié)數(shù)據(jù)子程序下面是模擬I2C數(shù)據(jù)線由SDA發(fā)送1字節(jié)數(shù)據(jù)(可以是地址,也可是數(shù)據(jù)),發(fā)送完后等待應(yīng)答,并對狀態(tài)位ack進行操作,即應(yīng)答或非應(yīng)答都使ack=0。發(fā)送數(shù)據(jù)正常ack=1,從器件無應(yīng)答或損壞,則ack=0。發(fā)送1字節(jié)數(shù)據(jù)參考程序如下:voidSendByte(uchardata){ uchari,temp;temp=data;for(i=0;i<8;i++){ temp=temp<<1; //左移一位 scl=0;
82delay4us();sda=Cy; delay4us(); scl=1;delay4us();}scl=0;delay4us();sda=1; delay4us();83串行發(fā)送1字節(jié)時,需把該字節(jié)8位逐位發(fā)出,“temp=temp<<1;”就是將temp中的內(nèi)容左移1位,最高位將移入Cy位中,然后將Cy賦給SDA,進而在SCL的控制下發(fā)送出去。(2)接收1字節(jié)數(shù)據(jù)子程序下面是模擬從I2C的數(shù)據(jù)線SDA接收從器件傳來的1字節(jié)數(shù)據(jù)的子程序:voidrcvbyte(){ uchari,temp;scl=0;delay4us();sda=1; for(i=0;i<8;i++){ scl=1; delay4us(); temp=(temp<<1)|sda; scl=0; delay4us();} delay4us(); returntemp;}
同理,串行接收1字節(jié)時,需將8位一位一位地接收,然后再組合成1個字節(jié)?!皌emp=(temp<<1)|SDA;”是將變量temp左移1位后與SDA進行邏輯“或”運算,依次把8位數(shù)據(jù)組合成1字節(jié)來完成接收。11.3.5設(shè)計案例:采用AT24C02存儲器的IC卡設(shè)計
通用存儲器IC卡由通用存儲器芯片封裝而成,由于結(jié)構(gòu)和功能簡單,成本低、使用方便,因此在各個領(lǐng)域都得到了廣泛的應(yīng)用。目前用于IC卡的通用存儲器芯片多為E2PROM,且采用I2C總線接口,典型代表為ATMEL公司的I2C接口的AT24Cxx系列。該系列具有AT24C01/02/04/08/16等型號,它們封裝形式、引腳及內(nèi)部結(jié)構(gòu)類似,只是容量不同,分別為128B/256B/512B/1KB/2KB。下面以AT24C02為例,介紹單片機通過I2C總線對AT24C02/進行讀寫,即IC卡的制作。1.AT24C02芯片簡介(1)封裝與引腳AT24C02的封裝形式有雙列直插(DIP)8腳式和貼片8腳式兩種,無論何種封裝,其引腳功能都是一樣的。AT24C02的DIP形式引腳如圖11-19所示,引腳功能見表11-1。(2)存儲結(jié)構(gòu)與尋址AT24C02存儲容量為256B,分為32頁,每頁8B。有兩種尋址方式:芯片尋址和片內(nèi)子地址尋址。圖11-19AT24C02的DIP引腳表11-1 AT24C02的引腳功能
①芯片尋址。AT24C02芯片地址固定為1010,它是I2C總線器件的特征編碼,其地址控制字的格式為1010A2A1A0R/W*。A2A1A0引腳接高、低電平后得到確定的3位編碼,與1010形成7位編碼,即為該器件的地址碼。由于A2A1A0共有8種組合,故系統(tǒng)最多可外接8片AT24C02,R/W*是對芯片的讀/寫控制位。②片內(nèi)子地址尋址。在確定了AT24C02芯片的7位地址碼后,片內(nèi)的存儲空間可用1字節(jié)的地址碼進行尋址,尋址范圍為00H~FFH,即可對片內(nèi)的256個單元進行讀/寫操作。(3)寫操作AT24C02有兩種寫入方式,字節(jié)寫入與頁寫入。①字節(jié)寫入方式。單片機(主器件)先發(fā)送啟動信號和1字節(jié)的控制字,從器件發(fā)出應(yīng)答信號后,單片機再發(fā)送1字節(jié)的存儲單元子地址(AT24C02內(nèi)部單元的地址碼),單片機收到AT24C02應(yīng)答后,再發(fā)送8位數(shù)據(jù)和1位終止信號。②頁寫入方式。單片機先發(fā)送啟動信號和1字節(jié)控制字,再發(fā)送1字節(jié)存儲器起始單元地址,上述幾個字節(jié)都得到AT24C02應(yīng)答后,就可發(fā)送最多1頁的數(shù)據(jù),并順序存放在已指定的起始地址開始的相繼單元,最后以終止信號結(jié)束。(4)讀操作AT24C02讀操作也有兩種方式,即指定地址讀和指定地址連續(xù)讀。①指定地址讀方式。單片機發(fā)送啟動信號后,先發(fā)送含有芯片地址的寫操作控制字,AT24C02應(yīng)答后,單片機再發(fā)送1字節(jié)的指定單元地址,AT24C02應(yīng)答后再發(fā)送1個含有芯片地址讀操作控制字,此時如AT24C02應(yīng)答,被訪問單元的數(shù)據(jù)就會按SCL信號同步出現(xiàn)在SDA線上,供單片機讀取。②指定地址連續(xù)讀方式。指定地址連續(xù)讀方式是單片機收到每個字節(jié)數(shù)據(jù)后要做出應(yīng)答,只有AT24C02檢測到應(yīng)答信號后,其內(nèi)部的地址寄存器就自動加1指向下一個單元,并順序?qū)⒅赶騿卧臄?shù)據(jù)送到SDA線上。當(dāng)需要結(jié)束讀操作時,單片機接收到數(shù)據(jù)后,在需要應(yīng)答的時刻發(fā)送一個非應(yīng)答信號,接著再發(fā)送一個終止信號即可?!纠?1-3】單片機通過I2C串行總線擴展1片AT24C02,實現(xiàn)單片機對存儲器AT24C02的讀、寫。由于Proteus元件庫中沒有AT24C02,可用FM24C02芯片代替,即在Proteus中“關(guān)鍵字”對話框元件查找欄中輸入“24C02”,就會在左側(cè)的元件列表中顯示,然后在元件列表中選擇即可。AT89S51與FM24C02的接口原理電路見圖11-20。圖11-20AT89S51與AT24C02接口的原理電路圖中KEY1作為外部中斷0的中斷源,當(dāng)按下KEY1,單片機通過I2C總線發(fā)送數(shù)據(jù)0xaa給AT24C02,等發(fā)送數(shù)據(jù)完畢后,將0xaa送P2口通過LED顯示。
KEY2作為外部中斷1的中斷源,當(dāng)按下KEY2時,單片機通過I2C總線讀AT24C02,等讀數(shù)據(jù)完畢后,將讀出的最后數(shù)據(jù)0x55送P2口的LED顯示出來。最終顯示的仿真效果是:按下KEY1,標(biāo)號為D1~D8的8個LED中D3、D4、D5、D6燈亮,如圖11-20所示。按下KEY2,則D1、D3、D5、D7燈亮。Proteus提供的I2C調(diào)試器是調(diào)試I2C系統(tǒng)的得力工具,使用I2C調(diào)試器的觀測窗口可觀察I2C總線上的數(shù)據(jù)流,查看I2C總線發(fā)送的數(shù)據(jù),也可作為從器件向I2C總線發(fā)送數(shù)據(jù)。在原理電路中添加I2C調(diào)試器具體操作:先單擊圖4-2左側(cè)工具箱中的虛擬儀器圖標(biāo),此時在預(yù)覽窗口中顯示出各種虛擬儀器選項,單擊“I2CDEBUGGER”項,并在原理圖編輯窗口單擊鼠標(biāo)左鍵,就會出現(xiàn)I2C調(diào)試器符號,如圖11-20所示。然后把I2C調(diào)試器的“SDA”端和“SCL”端分別連接在I2C總線的“SDA”和“SCL”線上。仿真運行時,用鼠標(biāo)右鍵單擊I2C調(diào)試器符號,出現(xiàn)下拉菜單,單擊“Terminal”選項,即可出現(xiàn)I2C調(diào)試器的觀測窗口,如圖11-21所示。從觀測窗口上可看到按一下KEY1時,出現(xiàn)在I2C總線上的數(shù)據(jù)流。圖11-21
I2C調(diào)試器的觀測窗口本例參考程序:#include"reg51.h"#include"intrins.h" //包含有函數(shù)_nop_()的頭文件#defineucharunsignedchar#defineuintunsignedint#defineoutP
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 冬休安全應(yīng)急預(yù)案范文(5篇)
- 童裝市場趨勢洞察-洞察分析
- 連接器-材料知識培訓(xùn)課件
- 關(guān)于節(jié)約糧食國旗下講話稿(17篇)
- 六年級《各具特色的民居》課件
- 汽車設(shè)計-課程設(shè)計-離合器設(shè)計
- 辦公空間設(shè)計中的天文元素運用
- 農(nóng)業(yè)科技成果轉(zhuǎn)化的新機遇與挑戰(zhàn)
- 健康生活家庭健身器材全解析
- 企業(yè)內(nèi)部如何進行創(chuàng)新成果的評估與保護
- 2024秋國開《管理學(xué)基礎(chǔ)》形考任務(wù)(1234)試題及答案
- 叉車安全管理
- 考試安全保密培訓(xùn)
- 江蘇省揚州市2023-2024學(xué)年高一上學(xué)期期末考試物理試題(含答案)
- 2024年時事政治題庫附參考答案(綜合題)
- 數(shù)字化年終述職報告
- 消防車換季保養(yǎng)計劃
- 股東會表決票-文書模板
- 肉牛育肥基地建設(shè)項目可行性研究報告書
- 電力土建安全質(zhì)量培訓(xùn)
- 2022-2023學(xué)年山東省濟南市高一上學(xué)期期末考試化學(xué)試題(解析版)
評論
0/150
提交評論