第九章 單片機(jī)的擴(kuò)展技術(shù)_第1頁(yè)
第九章 單片機(jī)的擴(kuò)展技術(shù)_第2頁(yè)
第九章 單片機(jī)的擴(kuò)展技術(shù)_第3頁(yè)
第九章 單片機(jī)的擴(kuò)展技術(shù)_第4頁(yè)
第九章 單片機(jī)的擴(kuò)展技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩57頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第九章單片機(jī)的擴(kuò)展技術(shù)9.1A/D轉(zhuǎn)換器9.2D/A轉(zhuǎn)換器9.3I2C總線概述9.4C51應(yīng)用舉例9.5I2C器件的應(yīng)用9.6SPI器件的應(yīng)用習(xí)題與思考題9.1A/D轉(zhuǎn)換器在單片機(jī)應(yīng)用系統(tǒng)中,總是要對(duì)許多連續(xù)變化的模擬量(如溫度、壓力)等進(jìn)行測(cè)量,而這些模擬量對(duì)于單片機(jī)來(lái)說(shuō)是無(wú)法直接測(cè)量的,單片能夠直接接收的是數(shù)字量,因此必須進(jìn)行模數(shù)轉(zhuǎn)換后才能送給單片機(jī)進(jìn)行處理。我們把模擬量轉(zhuǎn)換成數(shù)字量的過(guò)程稱為A/D轉(zhuǎn)換。本節(jié)主要介紹并行A/D器件ADC0809和串行A/D器件TLC1549。1、A/D轉(zhuǎn)換的過(guò)程A/D轉(zhuǎn)換的功能是把模擬量轉(zhuǎn)換為N位數(shù)字量。過(guò)程是通過(guò)每隔一定的時(shí)間對(duì)模擬量進(jìn)行采樣,再把采樣值轉(zhuǎn)換成數(shù)字量。兩次采樣間隔的時(shí)間稱作采樣周期,模數(shù)轉(zhuǎn)換的時(shí)間一定小于采樣周期。采樣輸出的離散量再轉(zhuǎn)換成數(shù)字量稱作量化。假設(shè)輸入的模擬量為0~4.99V時(shí),經(jīng)8次采樣后輸出的離散量為0.00V、0.71V等,經(jīng)量化后轉(zhuǎn)換成3位數(shù)字量,如表9-1所示。輸出離散量0.000.711.422.132.843.554.284.99輸出數(shù)字量000001010011100101110111表9-1離散量與數(shù)字量對(duì)應(yīng)關(guān)系分辨率=1.分辨率

分辨率指A/D轉(zhuǎn)換器對(duì)輸入模擬信號(hào)的分辨能力。從理論上講,一個(gè)n位二進(jìn)制數(shù)輸出的A/D轉(zhuǎn)換器應(yīng)能區(qū)分輸入模擬電壓的2n個(gè)不同量級(jí),能區(qū)分輸入模擬電壓的最小差異為(滿量程輸入的1/2n)。A/D轉(zhuǎn)換器的主要技術(shù)指標(biāo)例如,A/D轉(zhuǎn)換器的輸出為12位二進(jìn)制數(shù),最大輸入模擬信號(hào)為10V,則其分辨率為

2.轉(zhuǎn)換時(shí)間轉(zhuǎn)換時(shí)間是指A/D轉(zhuǎn)換器從接到轉(zhuǎn)換啟動(dòng)信號(hào)開始,到輸出端獲得穩(wěn)定的數(shù)字信號(hào)所經(jīng)過(guò)的時(shí)間。

A/D轉(zhuǎn)換器的轉(zhuǎn)換速度主要取決于轉(zhuǎn)換電路的類型,不同類型A/D轉(zhuǎn)換器的轉(zhuǎn)換速度相差很大。①雙積分型A/D轉(zhuǎn)換器的轉(zhuǎn)換速度最慢,需幾百毫秒左右;②逐次逼近式A/D轉(zhuǎn)換器的轉(zhuǎn)換速度較快,需幾十微秒;③并行比較型A/D轉(zhuǎn)換器的轉(zhuǎn)換速度最快,僅需幾十納秒時(shí)間。3.轉(zhuǎn)換誤差

它表示A/D轉(zhuǎn)換器實(shí)際輸出的數(shù)字量和理論上輸出的數(shù)字量之間的差別。常用最低有效位的倍數(shù)表示。例如,轉(zhuǎn)換誤差≤。就表明實(shí)際輸出的數(shù)字量和理論上應(yīng)得到的輸出數(shù)字量之間的誤差小于最低位的半個(gè)字。例:某信號(hào)采集系統(tǒng)要求用一片A/D轉(zhuǎn)換集成芯片在1s內(nèi)對(duì)16個(gè)熱電偶的輸出電壓分?jǐn)?shù)進(jìn)行A/D轉(zhuǎn)換。已知熱電偶輸出電壓范圍為0~25mV(對(duì)應(yīng)于0~450℃溫度范圍),需分辨的溫度為0.1℃,試問(wèn)應(yīng)選擇幾位的A/D轉(zhuǎn)換器?其轉(zhuǎn)換時(shí)間為多少?解:分辨率=12位ADC的分辨率=故需選用13位A/D轉(zhuǎn)換器。轉(zhuǎn)換時(shí)間=9.1.2并行A/D器件ADC08091.ADC0809的內(nèi)部結(jié)構(gòu)ADC0809的內(nèi)部邏輯結(jié)構(gòu)圖如圖9-1所示

圖中多路開關(guān)可選通8個(gè)模擬通道,允許8路模擬量分時(shí)輸入,共用一個(gè)A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換,這是一種經(jīng)濟(jì)的多路數(shù)據(jù)采集方法。地址鎖存與譯碼電路完成對(duì)A、B、C3個(gè)地址位進(jìn)行鎖存和譯碼,其譯碼輸出用于通道選擇,其轉(zhuǎn)換結(jié)果通過(guò)三態(tài)輸出鎖存器存放、輸出,因此可以直接與系統(tǒng)數(shù)據(jù)總線相連,表9-2為通道選擇表。圖9-1ADC0809的內(nèi)部邏輯結(jié)構(gòu)圖2.信號(hào)引腳ADC0809芯片為28引腳為雙列直插式封裝,其引腳排列見(jiàn)圖9-2。

A、B、C——地址線。通道端口選擇線,A為低地址,C為高地址,引腳圖中為ADDA,ADDB和ADDC。其地址狀態(tài)與通道對(duì)應(yīng)關(guān)系見(jiàn)表9-2。CLK——時(shí)鐘信號(hào)。ADC0809的內(nèi)部沒(méi)有時(shí)鐘電路,所需時(shí)鐘信號(hào)由外界提供,因此有時(shí)鐘信號(hào)引腳。通常使用頻率為500KHz的時(shí)鐘信號(hào)EOC——轉(zhuǎn)換結(jié)束信號(hào)。EOC=0,正在進(jìn)行轉(zhuǎn)換;EOC=1,轉(zhuǎn)換結(jié)束。使用中該狀態(tài)信號(hào)即可作為查詢的狀態(tài)標(biāo)志,又可作為中斷請(qǐng)求信號(hào)使用。D7~D0——數(shù)據(jù)輸出線。為三態(tài)緩沖輸出形式,可以和單片機(jī)的數(shù)據(jù)線直接相連。D0為最低位,D7為最高。

OE——輸出允許信號(hào)。用于控制三態(tài)輸出鎖存器向單片機(jī)輸出轉(zhuǎn)換得到的數(shù)據(jù)。OE=0,輸出數(shù)據(jù)線呈高阻;OE=1,輸出轉(zhuǎn)換得到的數(shù)據(jù)。Vcc——+5V電源。

Vref——參考電源參考電壓用來(lái)與輸入的模擬信號(hào)進(jìn)行比較,作為逐次逼近的基準(zhǔn)。其典型值為+5V(Vref(+)=+5V,Vref(-)=-5V)。圖9-2ADC0809引腳圖CBA被選擇的通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7表9-2通道選擇表3.AT89S-51單片機(jī)與ADC0809的接口ADC0809與MCS-51單片機(jī)的連接如圖9-3所示。電路連接主要涉及兩個(gè)問(wèn)題。一是8路模擬信號(hào)通道的選擇,二是A/D轉(zhuǎn)換完成后轉(zhuǎn)換數(shù)據(jù)的傳送。圖9-3ADC0809與單片機(jī)連接圖

圖9-4ADC0809的部分信號(hào)連接

圖9-5信號(hào)的時(shí)間配合

從圖9-4中可以看到,把ALE信號(hào)與START信號(hào)接在一起了,這樣連接使得在信號(hào)的前沿寫入(鎖存)通道地址,緊接著在其后沿就啟動(dòng)轉(zhuǎn)換。要將P2.0清零并將最低三位與所選擇的通道好像對(duì)應(yīng)的口地址送入數(shù)據(jù)指針DPTR中。A/D轉(zhuǎn)換后得到的數(shù)據(jù)應(yīng)及時(shí)傳送給單片機(jī)進(jìn)行處理。數(shù)據(jù)傳送的關(guān)鍵問(wèn)題是如何確認(rèn)A/D轉(zhuǎn)換的完成,因?yàn)橹挥写_認(rèn)完成后,才能進(jìn)行傳送。為此可采用下述三種方式。(1)定時(shí)傳送方式:對(duì)于一種A/D轉(zhuǎn)換來(lái)說(shuō),其轉(zhuǎn)換時(shí)間作為一項(xiàng)技術(shù)指標(biāo)是已知的和固定的。例如ADC0809轉(zhuǎn)換時(shí)間為128μs,相當(dāng)于6MHz的MCS-51單片機(jī)共64個(gè)機(jī)器周期。可據(jù)此設(shè)計(jì)一個(gè)延時(shí)子程序,A/D轉(zhuǎn)換啟動(dòng)后即調(diào)用此子程序,延遲時(shí)間一到,轉(zhuǎn)換肯定已經(jīng)完成了,接著就可進(jìn)行數(shù)據(jù)傳送。(2)查詢方式:A/D轉(zhuǎn)換芯片由表明轉(zhuǎn)換完成的狀態(tài)信號(hào),例如ADC0809的EOC端。因此可以用查詢方式,測(cè)試EOC的狀態(tài),即可卻只轉(zhuǎn)換是否完成,并接著進(jìn)行數(shù)據(jù)傳送。(3)中斷方式:把表明轉(zhuǎn)換完成的狀態(tài)信號(hào)(EOC)作為中斷請(qǐng)求信號(hào),以中斷方式進(jìn)行數(shù)據(jù)傳送。實(shí)例1:采用ADC0809設(shè)計(jì)數(shù)據(jù)采集電路,將IN7通道輸入的模擬量信號(hào)進(jìn)行測(cè)量,結(jié)果顯示。

程序#defineucharunsignedchar#defineuintunsignedint sbitP2_0=P2^0;sbitWWR=P3^6;sbitRRD=P3^7;sbitCLK=P2^5;ucharcodeled[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};ucharad_volt; uinttemp; voiddelay(ucharn){uchari,j;for(i=0;i<n;i++)for(j=0;j<125;j++);}voiddisplay(){P0=led[temp/10000]&0x7f; P2=0xfd; delay(3);//??P2=0xff;//???temp=temp%10000; P0=led[temp/1000];//?????????????? P2=0xfb;//?????????????

delay(3);//?? P2=0xff;//???temp=temp%1000; P0=led[temp/100];//?????????????? P2=0xf7;//????????????? delay(3);//?? P2=0xff;//??? temp=temp%100; P0=led[temp/10];//??????????????P2=0xef; //????????????? delay(3);//?? P2=0xff;//???}voidad_start(){ P2_0=0;RRD=0; WWR=0;}main(){ EA=1; EX1=1; ET0=1; IT1=1; TL0=0xff; TH0=0xff; TMOD=0x02;

while(1) { ad_start(); temp=ad_volt; temp=temp*196;display(); }}voidint1()interrupt2{ad_volt=P1;//??A/D????}voidT0_service()interrupt1{CLK=~CLK;}9.1.3串行A/D器件TLC15491、概述TLC1549系列是美國(guó)德州儀器公司生產(chǎn)的具有串行控制、連續(xù)逐次逼近型的模數(shù)轉(zhuǎn)換器,它采用兩個(gè)差分基準(zhǔn)電壓高阻輸入和一個(gè)三態(tài)輸出構(gòu)成三線接口,其中三態(tài)輸出分別為片選(CS低電平有效),輸入/輸出時(shí)鐘(I/OCLOCK),數(shù)據(jù)輸出(DATAOUT)。TLC1549引腳排列如圖9-6所示。TLC1549能以串行方式送給單片機(jī),其功能結(jié)構(gòu)如圖9-7所示。由于TLC1549采用CMOS工藝。內(nèi)部具有自動(dòng)采樣保持、可按比例量程校準(zhǔn)轉(zhuǎn)換范圍、抗噪聲干擾功能,而且開關(guān)電容設(shè)計(jì)使在滿刻度時(shí)總誤差最大僅為±1LSB(4.8mV),因此可廣泛應(yīng)用于模擬量和數(shù)字量的轉(zhuǎn)換電路。TLC1549在工作溫度范圍內(nèi)的極限參數(shù):電源電壓范圍:-0.5V~6.5V;125℃輸入電壓范圍:-0.3V~VCC+0.3V;輸出電壓范圍:-0.3~VCC+0.3V;正基準(zhǔn)電壓:VCC+0.1V;負(fù)基準(zhǔn)電壓:-0.1V;峰值輸入電流:+20mA;峰值總輸入電流:±30mA;工作溫度范圍:TLC1549M為-55℃~125℃,TLC1549C為0℃~70℃,TLC1549I為-40℃~85℃。2、TLC1549工作原理TLC1549具有6種串行接口時(shí)序模式,這些模式是由I/OCLOCK周期和CS定義。根據(jù)TLC1549的功能結(jié)構(gòu)和工作時(shí)序,其工作過(guò)程可分為3個(gè)階段:模擬量采樣、模擬量轉(zhuǎn)換和數(shù)字量傳輸。圖9-8所示為TLC1549的時(shí)序圖。在第3個(gè)I/OCLOCK下降沿,輸入模擬量開始采樣,采樣持續(xù)7個(gè)I/OCLOCK周期,采樣值在第10個(gè)I/OCLOCK下降沿鎖存。其詳細(xì)步驟為:門限檢測(cè)器檢測(cè)第一只電容(weight=512)的電壓,該電容的節(jié)點(diǎn)512連接到REF+。梯型網(wǎng)絡(luò)中,其他電容的等效節(jié)點(diǎn)接到REF-。如果總節(jié)點(diǎn)的電壓大于門限檢測(cè)器的電壓(大約VCC的一半),“0”被送至輸出寄存器,此時(shí)512-weight的電容連接到REF-。經(jīng)反相后為“1”,即為最高位MSB為1;如果總節(jié)點(diǎn)的電壓小于門限檢測(cè)器的電壓(大約VCC的一半),“1”被送至輸出寄存器,此時(shí)512-weight的電容連接到REF+,經(jīng)反相后為“0”,存為最高位MSB為0。對(duì)于256-weight的電容和128-weight的電容也要通過(guò)連續(xù)逐次逼近型的重復(fù)操作,直到確定從高位(MSB)到低位(LSB)所有數(shù)字量,即為初始的模擬電壓數(shù)字量。整個(gè)轉(zhuǎn)換過(guò)程調(diào)整VREF+和VREF1以便從數(shù)字0至1跳變的電壓(VZT)為0.0024V,滿度跳變電壓(VFT)為4.908V,即1LSB=4.8mV。即CS由高變?yōu)榈蜁r(shí),串行接口接收上一次轉(zhuǎn)換結(jié)果。首先移出上一次轉(zhuǎn)換結(jié)果數(shù)字量對(duì)應(yīng)的最高位,下一個(gè)I/OCLOCK的下降沿驅(qū)動(dòng)DATAOUT輸出上一次轉(zhuǎn)換結(jié)果數(shù)字量對(duì)應(yīng)的次高位,第9個(gè)I/OCLOCK的下降沿將按次序驅(qū)動(dòng)DATAOUT輸出上一次轉(zhuǎn)換結(jié)果數(shù)字量的最低位,第10個(gè)I/OCLOCK的下降沿,DATAOUT輸出一個(gè)低電平,以便串行接口傳輸超過(guò)10個(gè)時(shí)鐘;I/OCLOCK從主機(jī)串行接口接收長(zhǎng)度在10~16個(gè)時(shí)鐘的輸入序列。CS的下降沿,上一次轉(zhuǎn)換的MSB出現(xiàn)在DATAOUT端。10位數(shù)字量通過(guò)DATAOUT發(fā)送到主機(jī)串行接口。為了開始傳輸,最少需要10個(gè)時(shí)鐘脈沖,如果I/OCLOCK傳送大于10個(gè)時(shí)鐘,那么在第10個(gè)時(shí)鐘的下降沿,內(nèi)部邏輯把DATAOUT拉至低電平以確保其余位清零。在正常轉(zhuǎn)換周期內(nèi),即規(guī)定的時(shí)間內(nèi)CS端由高電平至低電平的跳變可以終止該周期,器件返回初始狀態(tài)(輸出數(shù)據(jù)寄存器的內(nèi)容保持為上一次轉(zhuǎn)換結(jié)果)。由于可能破壞輸出數(shù)據(jù),所以在接近轉(zhuǎn)換完成時(shí)要小心防止CS拉至低電平。例:TLC1549轉(zhuǎn)換程序#include"reg51.H"#defineucharunsignedchar#defineuitunsignedchar#include"intrins.h"externuintTLC1549_value;externucharTLC1549_value_h;//高2位

externucharTLC1549_value_l;//低8位

sbitTLC1549_CS=P1^7;sbitTLC1549_DATA=P1^6;sbitTLC1549_CLK=P1^5;例:TLC1549轉(zhuǎn)換程序voidTLC1549_conver(void){uchari;TLC1549_value_h=0;TLC1549_value_l=0;TLC1549_CS=1;//初始狀態(tài)

TLC1549_CLK=0;_nop_();TLC1549_CS=0;_nop_();_nop_();_nop_();_nop_();例:TLC1549轉(zhuǎn)換程序if(TLC1549_DATA==1)//bit9{TLC1549_value_h|=0x01;}else{TLC1549_value_h&=0xFE;}TLC1549_value_h=TLC1549_value_h<<1;TLC1549_CLK=1;TLC1549_CLK=0;//clk的下降沿DAYA端輸出新的數(shù)據(jù)

if(TLC1549_DATA==1)//bit8{TLC1549_value_h|=0x01;}else{TLC1549_value_h&=0xFE;}例:TLC1549轉(zhuǎn)換程序for(i=0;i<8;i++)//讀低8位的數(shù)據(jù)

{TLC1549_CLK=1;TLC1549_CLK=0;//clk的下降沿DAYA端輸出新的數(shù)據(jù)

TLC1549_value_l=TLC1549_value_l<<1;if(TLC1549_DATA==1)//bit7~0{TLC1549_value_l|=0x01;}else{TLC1549_value_l&=0xFE;}}

TLC1549_CLK=1;TLC1549_CLK=0;TLC1549_CS=1;}

TLC154910位編程#include"reg51.H“#include"intrins.h"externuintTLC1549_value,temp;sbitTLC1549_CS=P1^7;sbitTLC1549_DATA=P1^6;sbitTLC1549_CLK=P1^5;ucharcodeled[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};voidTLC1549_conver(void){uchari;TLC1549_value=0;

TLC1549_CS=1;//初始狀態(tài)

TLC1549_CLK=0;_nop_();TLC1549_CS=0;_nop_();_nop_();_nop_();_nop_();for(i=0;i<10;i++)

{TLC1549_CLK=1;TLC1549_CLK=0;//clk的下降沿DAYA端輸出新的數(shù)據(jù)TLC1549_value=TLC1549_value<<1;if(TLC1549_DATA==1)//bit9~0{TLC1549_value|=0x01;}} TLC1549_CLK=1;TLC1549_CLK=0;TLC1549_CS=1;}

voiddelay(ucharn){uchari,j;for(i=0;i<n;i++)for(j=0;j<125;j++);}voiddisplay(){P0=led[temp/10000]&0x7f; P2=0xfd; delay(3);P2=0xff;temp=TLC1549_value%10000; P0=led[temp/1000]; P2=0xfb;

delay(3); P2=0xff;temp=temp%1000; P0=led[temp/100]; P2=0xf7; delay(3); P2=0xff; temp=temp%100; P0=led[temp/10];P2=0xef; delay(3); P2=0xff;}Voidmain(){While(1){TLC1549_conver();Temp=TLC1549_value*49;display();9.2D/A轉(zhuǎn)換器9.2.1D/A轉(zhuǎn)換器概述數(shù)/模轉(zhuǎn)換器(Digital-AnalogConverter,DAC)的功能是將數(shù)字量轉(zhuǎn)換為與其成正比例的模擬電壓或電流信號(hào),輸出到儀表外部進(jìn)行控制。在單片機(jī)應(yīng)用系統(tǒng)中,有許多如溫度、壓力、位移和速度等模擬量,需要轉(zhuǎn)換成數(shù)字量單片機(jī)才能處理,這稱作A/D轉(zhuǎn)換;同樣利用單片機(jī)對(duì)外部設(shè)備進(jìn)行控制,應(yīng)將單片機(jī)直接輸出的數(shù)字量轉(zhuǎn)換成模擬量再驅(qū)動(dòng)外部設(shè)備,稱作D/A轉(zhuǎn)換。1、D/A轉(zhuǎn)換過(guò)程D/A轉(zhuǎn)換的基本原理是用電阻解碼網(wǎng)絡(luò)將N位數(shù)字量逐位轉(zhuǎn)換成模擬量并求和。如圖9-11所示。在進(jìn)行轉(zhuǎn)換時(shí)首先將單片機(jī)輸出的數(shù)字信號(hào)傳遞到數(shù)據(jù)寄存器中,然后由模擬開關(guān)把數(shù)字量的高低電平轉(zhuǎn)換成對(duì)應(yīng)的電子開關(guān)狀態(tài)。當(dāng)數(shù)字量某位為1時(shí),電子開關(guān)將基準(zhǔn)電壓VR接入電阻網(wǎng)絡(luò)的相應(yīng)之路,若為0,則接地。各支路電流信號(hào)經(jīng)電阻網(wǎng)絡(luò)加權(quán)后,由運(yùn)算放大器求和轉(zhuǎn)換成電壓信號(hào)輸出。電阻解碼器類似圖9-11所示。

9.2.2并行D/A轉(zhuǎn)換器件DAC08321、DAC0832的內(nèi)部結(jié)構(gòu)DAC0832是采用CMOS工藝制成的單片直流輸出型8位數(shù)/模轉(zhuǎn)換器。如圖9-11所示,它由倒T型R-2R電阻網(wǎng)絡(luò)、模擬開關(guān)、運(yùn)算放大器和參考電壓VREF四大部分組成。運(yùn)算放大器輸出的模擬量V0為:

主要性能指標(biāo):(1)分辨率:8位(2)輸出穩(wěn)定時(shí)間:1μs(3)功耗:20mw(4)工作電源:+5V~+15V(5)非線性誤差:0.2%(6)工作方式:直通、單緩沖、雙緩沖2、信號(hào)引腳圖9-14為DAC0832引腳圖,引腳功能如下:D0~D7:數(shù)據(jù)輸入線,TTL電平。ILE:數(shù)據(jù)鎖存允許控制信號(hào)輸入線,高電平有效。CS:片選信號(hào)輸入線,低電平有效。WR1:為輸入寄存器的寫選通信號(hào)。XFER:數(shù)據(jù)傳送控制信號(hào)輸入線,低電平有效。WR2:為DAC寄存器寫選通輸入線。Iout1:電流輸出線。當(dāng)輸入全為1時(shí)Iout1最大。Iout:電流輸出線。其值與Iout1之和為一常數(shù)。Rfb:反饋信號(hào)輸入線,芯片內(nèi)部有反饋電阻。Vcc:電源輸入線(+5v~+15v)。Vref:基準(zhǔn)電壓輸入線(-10v~+10v)。AGND:模擬地,摸擬信號(hào)和基準(zhǔn)電源的參考地。DGND:數(shù)字地,兩種地線在基準(zhǔn)電源處共地比較好。3、DAC0832的工作方式從圖9-13可以看出,在DAC0832內(nèi)部有兩個(gè)寄存器,輸入信號(hào)要經(jīng)過(guò)這兩個(gè)寄存器才能進(jìn)入D/A轉(zhuǎn)換器進(jìn)行D/A轉(zhuǎn)換,而控制這兩個(gè)寄存器的信號(hào)共有5個(gè):輸入寄存器由ILE、WR1、CS控制;DAC寄存器由WR2、XFER控制。因此只要編程時(shí)用指令控制這五個(gè)控制端,就可以實(shí)現(xiàn)它的三種工作方式。(1)直通工作沖方式:直通方式是將兩個(gè)寄存器的五個(gè)控制信號(hào)都預(yù)先置為有效,兩個(gè)寄存器都開通,處于數(shù)據(jù)接收狀態(tài),只要數(shù)字信號(hào)送到數(shù)據(jù)輸入端DI0~DI7,就立即送到D/A轉(zhuǎn)換器進(jìn)行D/A轉(zhuǎn)換,一般這種方式使用于沒(méi)有單片機(jī)的電路中(2)單緩沖工作方式:若電路中只有一路D/A轉(zhuǎn)換或雖然有多路但不要求同步輸出,這時(shí)則可以采用單緩沖方式接口。此工作方式時(shí)DAC0832的ILE引腳可直接接電源,其余的4個(gè)控制信號(hào)接在一起,用一位I/O口(比如P2.0)控制,目的就是當(dāng)8位數(shù)據(jù)輸入端數(shù)據(jù)準(zhǔn)備好以后,單片機(jī)一次選通4個(gè)控制信號(hào),實(shí)現(xiàn)D/A轉(zhuǎn)換的控制。下面兩條指令可實(shí)現(xiàn)單緩沖方式的D/A轉(zhuǎn)換。MOVP1,A;把數(shù)字量送入P1口CLRP2.0;啟動(dòng)D/A轉(zhuǎn)換(3)雙緩沖工作方式:當(dāng)應(yīng)用系統(tǒng)有多路D/A轉(zhuǎn)換,并要求同步輸出時(shí),必須采用雙緩沖工作方式,雙緩沖工作方式的思路分步向各路D/A輸入寄存器寫入需要轉(zhuǎn)換的數(shù)字量,然后單片機(jī)對(duì)所有的D/A轉(zhuǎn)換發(fā)控制信號(hào),使各個(gè)D/A輸入寄存器中的數(shù)據(jù)打入DAC寄存器。實(shí)現(xiàn)同步輸入。雙緩沖工作方式電路圖如圖9-15所示執(zhí)行下面程序后可將兩路D/A同步轉(zhuǎn)換輸出MOVP1,#data1

CLRp2.5;數(shù)據(jù)鎖存0832(1)CLRp3.6

SETBp2.5

MOVP1,#data2

CLRp2.6;數(shù)據(jù)鎖存0832(2)SETBp2.6

CLRp2.7;D/A同時(shí)轉(zhuǎn)換輸出波形發(fā)生器4、DAC0832的應(yīng)用舉例【例9-1】:應(yīng)用DAC0832設(shè)計(jì)一個(gè)鋸齒波信號(hào)發(fā)生器。#include<absacc.h>#include<reg52.h>#include<intrins.h>#defineDAC0832XBYTE[0xfeff]intnum;voidmain(){while(1){for(num=0;num<255;num++)//DAC0832=num; {P2=num;}}}【例9-2】按圖9-15連接電路生成三角波。分析:三角波數(shù)據(jù)從0增加到FFH后,再依次減,減到0后再依次加,反復(fù)循環(huán)可產(chǎn)生三角波。程序如下:#include<absacc.h>#include<reg52.h>#include<intrins.h>intnum;voidmain(){while(1){for(num=0;num<255;num++) {P2=num;}for(num=254;num>=0;num--){P2=num;}}}9.3生成正弦波#include<absacc.h>#include<math.h>#include<reg51.h>#definepi 3.14voidmain(){ inti; floatT;

while(1) { for(i=0;i<256;i++) { T=pi*i/32; T=100*sin(T)+100; P0=(int)T; }//主函數(shù)

}}9.2.3串行D/A轉(zhuǎn)換器件TLC5615TLC5615為美國(guó)德州儀器公司1999年推出的產(chǎn)品,是具有串行接口的數(shù)模轉(zhuǎn)換器,其輸出為電壓型,最大輸出電壓是基準(zhǔn)電壓值的兩倍。帶有上電復(fù)位功能,即把DAC寄存器復(fù)位至全零。1、TLC5615的特點(diǎn)(1)10位CMOS電壓輸出;(2)5V單電源供電;(3)與CPU三線串行接口;(4)最大輸出電壓可達(dá)基準(zhǔn)電壓的二倍;(5)輸出電壓具有和基準(zhǔn)電壓相同極性;(6)建立時(shí)間12.5μs;(7)內(nèi)部上電復(fù)位;(8)低功耗,最大僅1.75mW。

2、TLC5615引腳說(shuō)明TLC5615有小型和塑料DIP封裝,DIP封裝的TLC5615芯片引腳排列如圖9-17所示。圖9-17TLC5615引腳排列圖引腳功能說(shuō)明如下:腳1DIN:串行數(shù)據(jù)輸入端;腳2SCLK:串行時(shí)鐘輸入端;腳3CS:芯片選用通端,低電平有效;腳4DOUT:用于級(jí)聯(lián)時(shí)的串行數(shù)據(jù)輸出端;腳5AGND:模擬地;腳6REFIN:基準(zhǔn)電壓輸入端;腳7OUT:DAC模擬電壓輸出端;腳8VDD:正電源端。3、TLC5615的時(shí)序分析TLC5615的時(shí)序如圖9-18所示。圖9-18TLC5615時(shí)序圖由時(shí)序圖可以看出,當(dāng)片選CS為低電平時(shí),輸入數(shù)據(jù)DIN由時(shí)鐘SCLK同步輸入或輸出,而且最高有效位在前,低有效位在后。輸入時(shí)SCLK的上升沿把串行輸入數(shù)據(jù)DIN移入內(nèi)部的16位移位寄存器,SCLK的下降沿輸出串行數(shù)據(jù)DOUT,片選CS的上升沿把數(shù)據(jù)傳送至DAC寄存器。當(dāng)片選CS為高電平時(shí),串行輸入數(shù)據(jù)DIN不能由時(shí)鐘同步送入移位寄存器;輸出數(shù)據(jù)DOUT保持最近的數(shù)值不變而不進(jìn)入高阻狀態(tài)。由此要想串行輸入數(shù)據(jù)和輸出數(shù)據(jù)必須滿足兩個(gè)條件:第一時(shí)鐘SCLK的有效跳變;第二片選CS為低電平。這里,為了使時(shí)鐘的內(nèi)部饋通最小,當(dāng)片選CS為高電平時(shí),輸入時(shí)鐘SCLK應(yīng)當(dāng)為低電平。串行數(shù)模轉(zhuǎn)換器TLC5615的使用有兩種方式,即級(jí)聯(lián)方式和非級(jí)聯(lián)方式。如不使用級(jí)聯(lián)方式,DIN只需輸入12位數(shù)據(jù)。DIN輸入的12位數(shù)據(jù)中,前10位為TLC5615輸入的D/A轉(zhuǎn)換數(shù)據(jù),且輸入時(shí)高位在前,低位在后,后兩位必須寫入數(shù)值為零的低于LSB的位,因?yàn)門LC5615的DAC輸入鎖存器為12位寬。如果使用TL5615的級(jí)聯(lián)功能,來(lái)自DOUT的數(shù)據(jù)需要輸入16位時(shí)鐘下降沿,因此完成一次數(shù)據(jù)輸入需要16個(gè)時(shí)鐘周期,輸入的數(shù)據(jù)也應(yīng)為16位。輸入的數(shù)據(jù)中,前4位為高虛擬位,中間10位為D/A轉(zhuǎn)換數(shù)據(jù),最后2位為低于LSB的位即零。4、應(yīng)用電路實(shí)例圖9-19給出了在開關(guān)電源中,TLC5615和51單片機(jī)的接口電路。在電路中,51單片機(jī)的P3.0-P3.2分別控制TLC5615的片選CS,串行時(shí)鐘輸入SCLK和串行數(shù)據(jù)輸入DIN。電路的連接采用非級(jí)聯(lián)方式。根據(jù)開關(guān)電源的設(shè)計(jì)要求,可變基準(zhǔn)電壓范圍為0V~4V。因此,TLC5615的基準(zhǔn)電壓選為2.048V,其最大模擬輸出電壓為4.096V??蓾M足開關(guān)電源的要求。圖9-19TLC5615與51單片機(jī)接口電路TLC5615采用非級(jí)聯(lián)方式,將要輸入的12位數(shù)據(jù)存在R0、R1寄存器中,其D/A轉(zhuǎn)換程序如下:CLRP3.0;片選有效MOVR2,#4;將要送入的前四位數(shù)據(jù)位數(shù)MOVA,R0;前四位數(shù)據(jù)送累加器低四位SWAPA;A中高四位與低四位互換LCALLWRdata;DIN輸入前四位數(shù)據(jù)MOVR2,#8;將要送入的后八位數(shù)據(jù)位數(shù)MOVA,R1;八位數(shù)據(jù)送入累加器ALCALLWRdata;DIN輸入后八位數(shù)據(jù)CLRP3.1;時(shí)鐘低電平SETBP3.0;片選高電平,輸入的12位數(shù)據(jù)有效END

結(jié)束送數(shù)子程序如下:WRdata:NOP

;空操作LOOP:CLRP3.1;時(shí)鐘低電平

RLCA;數(shù)據(jù)送入位標(biāo)志位CY

MOVP3.2,C;數(shù)據(jù)輸入有效

SETBP3.1;時(shí)鐘高電平

DJNZR2,LOOP;循環(huán)送數(shù)

RET

;返回5、結(jié)語(yǔ)由于采用接口簡(jiǎn)單的模擬數(shù)字轉(zhuǎn)換器TLC5615,使得開關(guān)電源的硬件電路大為簡(jiǎn)化,線路板面積縮小,成本降低。9.3I2C總線概述I2C總線是由數(shù)據(jù)線SDA和時(shí)鐘SCL構(gòu)成的串行總線,可發(fā)送和接收數(shù)據(jù)。在CPU與被控IC之間、IC與IC之間進(jìn)行雙向傳送,最高傳送速率100kbps。各種被控制電路均并聯(lián)在這條總線上,但就像電話機(jī)一樣只有撥通各自的號(hào)碼才能工作,所以每個(gè)電路和模塊都有唯一的地址,在信息的傳輸過(guò)程中,I2C總線上并接的每一模塊電路既是主控器(或被控器),又是發(fā)送器(或接收器),這取決于它所要完成的功能。CPU發(fā)出的控制信號(hào)分為地址碼和控制量?jī)刹糠?,地址碼用來(lái)選址,即接通需要控制的電路,確定控制的種類;控制量決定該調(diào)整的類別(如對(duì)比度、亮度等)及需要調(diào)整的量。這樣,各控制電路雖然掛在同一條總線上,卻彼此獨(dú)立,互不相關(guān)。9.3.1I2C總線的工作原理圖9-20I2C總線內(nèi)部結(jié)構(gòu)9.3.2I2C總線的接口電路I2C總線在傳送數(shù)據(jù)過(guò)程中共有三種類型信號(hào),它們分別是:開始信號(hào)、結(jié)束信號(hào)和應(yīng)答信號(hào)。開始信號(hào):SCL為高電平時(shí),SDA由高電平向低電平跳變,開始傳送數(shù)據(jù)結(jié)束信號(hào):SCL為高電平時(shí),SDA由低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)。應(yīng)答信號(hào):接收數(shù)據(jù)的IC在接收到8bit數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的IC發(fā)出特定的低電平脈沖,表示已收到數(shù)據(jù)。CPU向受控單元發(fā)出一個(gè)信號(hào)后,等待受控單元發(fā)出一個(gè)應(yīng)答信號(hào),CPU接收到應(yīng)答信號(hào)后,根據(jù)實(shí)際情況作出是否繼續(xù)傳遞信號(hào)的判斷。若未收到應(yīng)答信號(hào),由判斷為受控單元出現(xiàn)故障。輸出級(jí)每一個(gè)I2C總線器件內(nèi)部的SDA、SCL引腳電路結(jié)構(gòu)都是一樣的,引腳的輸出驅(qū)動(dòng)與輸入緩沖連在一起。其中輸出為漏極開路的場(chǎng)效應(yīng)管,輸入緩沖為一只高輸入阻抗的同相器,這種電路具有兩個(gè)特點(diǎn):由于SDA、SCL為漏極開路結(jié)構(gòu)(OD),因此它們必須接有上拉電阻,阻值的大小常為1k8,4k7and10k,但1k8時(shí)性能最好;當(dāng)總線空閑時(shí),兩根線均為高電平。連到總線上的任一器件輸出的低電平,都將使總線的信號(hào)變低,即各器件的SDA及SCL都是線"與"關(guān)系。引腳在輸出信號(hào)的同時(shí)還將引腳上的電平進(jìn)行檢測(cè),檢測(cè)是否與剛才輸出一致,為"時(shí)鐘同步"和"總線仲裁"提供了硬件基礎(chǔ)。1.主設(shè)備與從設(shè)備系統(tǒng)中的所有外圍器件都具有一個(gè)7位的"從器件專用地址碼",其中高4位為器件類型,由生產(chǎn)廠家制定,低3位為器件引腳定義地址,由使用者定義。主控器件通過(guò)地址碼建立多機(jī)通信的機(jī)制,因此I2C總線省去了外圍器件的片選線,這樣無(wú)論總線上掛接多少個(gè)器件,其系統(tǒng)仍然為簡(jiǎn)約的二線結(jié)構(gòu)。終端掛載在總線上,有主端和從端之分,主端必須是帶有CPU的邏輯模塊,在同一總線上同一時(shí)刻使能有一個(gè)主端,可以有多個(gè)從端,從端的數(shù)量受地址空間和總線的最大電容400pF的限制。主端主要用來(lái)驅(qū)動(dòng)SCLline;從設(shè)備對(duì)主設(shè)備產(chǎn)生響應(yīng);二者都可以傳輸數(shù)據(jù),但是從設(shè)備不能發(fā)起傳輸,且傳輸是受到主設(shè)備控制的。圖9-22具有多主機(jī)的I2C總線的系統(tǒng)結(jié)構(gòu)2.速率:普通模式:100kHz;快速模式:400kHz;高速模式:3.4MHz;沒(méi)有任何必要使用高速SCL,將SCL保持在100k或以下,然后忘了它吧。9.3.3I2C總線工作時(shí)序1.空閑狀態(tài)I2C總線的SDA和SCL兩條信號(hào)線同時(shí)處于高電平時(shí),規(guī)定為總線的空閑狀態(tài)。此時(shí)各個(gè)器件的輸出級(jí)場(chǎng)效應(yīng)管均處在截止?fàn)顟B(tài),即釋放總線,由兩條信號(hào)線各自的上拉電阻把電平拉高。2.起始位與停止位的定義:起始信號(hào):當(dāng)SCL為高期間,SDA由高到低的跳變;啟動(dòng)信號(hào)是一種電平跳變時(shí)序信號(hào),而不是一個(gè)電平信號(hào)。停止信號(hào):當(dāng)SCL為高期間,SDA由低到高的跳變;停止信號(hào)也是一種電平跳變時(shí)序信號(hào),而不是一個(gè)電平信號(hào)。圖9-23I2C總線的起始和終止時(shí)序3.ACK應(yīng)答信號(hào)發(fā)送器每發(fā)送一個(gè)字節(jié),就在時(shí)鐘脈沖9期間釋放數(shù)據(jù)線,由接收器反饋一個(gè)應(yīng)答信號(hào)。應(yīng)答信號(hào)為低電平時(shí),規(guī)定為有效應(yīng)答位(ACK簡(jiǎn)稱應(yīng)答位),表示接收器已經(jīng)成功地接收了該字節(jié);應(yīng)答信號(hào)為高電平時(shí),規(guī)定為非應(yīng)答位(NACK),一般表示接收器接收該字節(jié)沒(méi)有成功。對(duì)于反饋有效應(yīng)答位ACK的要求是,接收器在第9個(gè)時(shí)鐘脈沖之前的低電平期間將SDA線拉低,并且確保在該時(shí)鐘的高電平期間為穩(wěn)定的低電平。如果接收器是主控器,則在它收到最后一個(gè)字節(jié)后,發(fā)送一個(gè)NACK信號(hào),以通知被控發(fā)送器結(jié)束數(shù)據(jù)發(fā)送,并釋放SDA線,以便主控接收器發(fā)送一個(gè)停止信號(hào)P。圖9-24I2C總線的應(yīng)答時(shí)序這里面給我們的兩個(gè)信息是:1)接收器在SCL的上升沿到來(lái)之前的低電平期間拉低SDA;2)應(yīng)答信號(hào)一直保持到SCL的下降沿結(jié)束。4.數(shù)據(jù)的有效性:I2C線進(jìn)行數(shù)據(jù)傳送時(shí),時(shí)鐘信號(hào)為高電平期間,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定,只有在時(shí)鐘線上的信號(hào)為低電平期間,數(shù)據(jù)線上的高電平或低電平狀態(tài)才允許變化。雖然只要求在高電平期間保持穩(wěn)定,但是要有一個(gè)提前量,也就是數(shù)據(jù)在SCL的上升沿到來(lái)之前就需準(zhǔn)備好,因?yàn)閿?shù)據(jù)是在SCL的上升沿打入到器件(EEPROM)中的。圖9-25I2C總線上的數(shù)據(jù)位狀態(tài)I2C總線上每傳輸一位數(shù)據(jù)都有一個(gè)時(shí)鐘脈沖相對(duì)應(yīng)。在時(shí)鐘線高電平期間,數(shù)據(jù)線狀態(tài)就表示要傳送的數(shù)據(jù)。數(shù)據(jù)線上數(shù)據(jù)的改變必須在時(shí)鐘線為低電平期間完成,每位數(shù)據(jù)占一個(gè)時(shí)鐘脈沖。在數(shù)據(jù)傳輸期間,只要時(shí)鐘線為高電平,數(shù)據(jù)線都必須穩(wěn)定,否則數(shù)據(jù)線的任何變化都當(dāng)作起始或終止信號(hào)。I2C總線上數(shù)據(jù)位狀態(tài)如圖9-25所示。

5.數(shù)據(jù)的傳送:在I2C總線上傳送的每一位數(shù)據(jù)都有一個(gè)時(shí)鐘脈沖相對(duì)應(yīng)(或同步控制),即在SCL串行時(shí)鐘的配合下,在SDA上逐位地串行傳送每一位數(shù)據(jù)。數(shù)據(jù)位的傳輸是邊沿觸發(fā)。起始信號(hào)是一次傳送的開始,其后為尋址字節(jié),尋址字節(jié)由高位到低位組成,尋址字節(jié)后是按指定讀寫操作的數(shù)據(jù)字和應(yīng)答位。在數(shù)據(jù)傳送完成后主器件都必須發(fā)送停止信號(hào)。在起始和停止信號(hào)間傳輸?shù)臄?shù)據(jù)字節(jié)由單片機(jī)決定的。理論上字節(jié)沒(méi)限制。圖9-26I2C總線的一次完整的數(shù)據(jù)傳送9.5I2C器件的應(yīng)用I2C(Inter-IntegratedCircuit)總線是由PHILIPS公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備。是微電子通信控制領(lǐng)域廣泛采用的一種總線標(biāo)準(zhǔn)。它是同步通信的一種特殊形式,具有接口線少,控制方式簡(jiǎn)單,器件封裝形式小,通信速率較高等優(yōu)點(diǎn)。I2C總線特征:1、只要求兩條總線線路:一條串行數(shù)據(jù)線SDA,一條串行時(shí)鐘線SCL;2、每個(gè)連接到總線的器件都可以通過(guò)唯一的地址和一直存在的簡(jiǎn)單的主機(jī)/從機(jī)關(guān)系軟件設(shè)定地址,主機(jī)可以作為主機(jī)發(fā)送器或主機(jī)接收器;3、它是一個(gè)真正的多主機(jī)總線,如果兩個(gè)或更多主機(jī)同時(shí)初始化,數(shù)據(jù)傳輸可以通過(guò)沖突檢測(cè)和仲裁防止數(shù)據(jù)被破壞;4、串行的8位雙向數(shù)據(jù)傳輸位速率在標(biāo)準(zhǔn)模式下可達(dá)100kbit/s,快速模式下可達(dá)400kbit/s,高速模式下可達(dá)3.4Mbit/s;5、連接到相同總線的IC數(shù)量只受到總線的最大電容400pF限制。I2C總線位傳輸:由于連接到I2C總線的器件有不同種類的工藝(CMOS、NMOS、PMOS、雙極性),邏輯0(低)和邏輯1(高)的電平不是固定的,它由電源VCC的相關(guān)電平?jīng)Q定,每傳輸一個(gè)數(shù)據(jù)位就產(chǎn)生一個(gè)時(shí)鐘脈沖。數(shù)據(jù)的有效性:在傳輸數(shù)據(jù)的時(shí)候,SDA線必須在時(shí)鐘的高電平周期保持穩(wěn)定,SDA的高或低電平狀態(tài)只有在SCL線的時(shí)鐘信號(hào)是低電平時(shí)才能改變。圖9-28I2C位傳輸數(shù)據(jù)有效性SCL線是高電平時(shí),SDA線從高電平向低電平切換,這個(gè)情況表示起始條件;SCL線是高電平時(shí),SDA線由低電平向高電平切換,這個(gè)情況表示停止條件。起始和停止條件一般由主機(jī)產(chǎn)生,總線在起始條件后被認(rèn)為處于忙的狀態(tài),在停止條件的某段時(shí)間后總線被認(rèn)為再次處于空閑狀態(tài)。如果產(chǎn)生重復(fù)起始條件而不產(chǎn)生停止條件,總線會(huì)一直處于忙的狀態(tài),此時(shí)的起始條件(S)和重復(fù)起始條件(Sr)在功能上是一樣的。I2C總線數(shù)據(jù)傳輸必須帶響應(yīng),相關(guān)的響應(yīng)時(shí)鐘脈沖由主機(jī)產(chǎn)生。在響應(yīng)的時(shí)鐘脈沖期間發(fā)送器釋放SDA線(高)。圖9-29起始和停止條件在響應(yīng)的時(shí)鐘脈沖期間,接收器必須將SDA線拉低,使它在這個(gè)時(shí)鐘脈沖的高電平期間保持穩(wěn)定的低電平。通常被尋址的接收器在接收到的每個(gè)字節(jié)后,除了用CBUS地址開頭的數(shù)據(jù),必須產(chǎn)生一個(gè)響應(yīng)。當(dāng)從機(jī)不能響應(yīng)從機(jī)地址時(shí),從機(jī)必須使數(shù)據(jù)線保持高電平,主機(jī)然后產(chǎn)生一個(gè)停止條件終止傳輸或產(chǎn)生重復(fù)起始條件開始新的傳輸。如果從機(jī)接收器響應(yīng)了從機(jī)地址,但是在傳輸了一段時(shí)間后不能接收更多數(shù)據(jù)字節(jié),主機(jī)必須再一次終止傳輸。從機(jī)使數(shù)據(jù)線保持高電平,主機(jī)產(chǎn)生一個(gè)停止或重復(fù)起始條件。圖9-30I2C器件的應(yīng)用原理圖如果傳輸中有主機(jī)接收器,它必須通過(guò)在從機(jī)不產(chǎn)生時(shí)鐘的最后一個(gè)字節(jié)不產(chǎn)生一個(gè)響應(yīng),向從機(jī)發(fā)送器通知數(shù)據(jù)結(jié)束。從機(jī)發(fā)送器必須釋放數(shù)據(jù)線,允許主機(jī)產(chǎn)生一個(gè)停止或重復(fù)起始條件。實(shí)驗(yàn)?zāi)康模毫私釯2C器件的使用實(shí)驗(yàn)的功能:I2C總線存儲(chǔ)器的讀寫元件清單:AT89C51,24C02,7SEG-MPX8-CC-BLUE,BUTTON原理圖:圖9-31I2C器件的應(yīng)用原理圖程序設(shè)計(jì):將鍵盤識(shí)別的數(shù)字在數(shù)碼管上顯示暫存于內(nèi)部寄存器30H-37H中,之后將內(nèi)部寄存器30H-37H中的數(shù)據(jù)寫入24c02中,再將24c02中存儲(chǔ)的數(shù)據(jù)讀取出來(lái)存放于以內(nèi)部寄存器50H-57H中。程序流程圖:圖9-32I2C總線寫流程圖圖9-33I2C總線讀流程圖程序調(diào)試好后生成.HEX文件,并加載該文件,運(yùn)行ProteusISIS。可通過(guò)內(nèi)部存儲(chǔ)器看到數(shù)據(jù)變化,如圖9-35所示。圖9-35I2C器件的應(yīng)用結(jié)果圖9.6SPI器件的應(yīng)用SPI接口主要應(yīng)用在EEPROM,F(xiàn)LASH,實(shí)時(shí)時(shí)鐘,AD轉(zhuǎn)換器,還有數(shù)字信號(hào)處理器和數(shù)字信號(hào)解碼器之間。SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時(shí)為PCB的布局上節(jié)省空間,提供方便,正是出于這種簡(jiǎn)單易用的特性,現(xiàn)在越來(lái)越多的芯片集成了這種通信協(xié)議,比如AT91RM9200。SPI總線系統(tǒng)是一種同步串行外設(shè)接口,它可以使MCU與各種外圍設(shè)備以串行方式進(jìn)行通信以交換信息。外圍設(shè)置FLASHRAM、網(wǎng)絡(luò)控制器、LCD顯示驅(qū)動(dòng)器、A/D轉(zhuǎn)換器和MCU等。SPI總線系統(tǒng)可直接與各個(gè)廠家生產(chǎn)的多種標(biāo)準(zhǔn)外圍器件直接接口,該接口一般使用4條線:串行時(shí)鐘線(SCLK)、主機(jī)輸入/從機(jī)輸出數(shù)據(jù)線MISO、主機(jī)輸出/從機(jī)輸入數(shù)據(jù)線MOSI和低電平有效的從機(jī)選擇線SS(有的SPI接口芯片帶有中斷信號(hào)線INT、有的SPI接口芯片沒(méi)有主機(jī)輸出/從機(jī)輸入數(shù)據(jù)線MOSI)。SPI的通信原理很簡(jiǎn)單,它以主從方式工作,這種模式通常有一個(gè)主設(shè)備和一個(gè)或多個(gè)從設(shè)備,需要至少4根線,事實(shí)上3根也可以(用于單向傳輸時(shí),也就是半雙工方式)。也是所有基于SPI的設(shè)備共有的,它們是SDI(數(shù)據(jù)輸入),SDO(數(shù)據(jù)輸出),SCLK(時(shí)鐘),CS(片選)。(1)MOSI–SPI總線主機(jī)輸出/從機(jī)輸入(SPIBusMasterOutput/SlaveInput);(2)MISO–SPI總線主機(jī)輸入/從機(jī)輸出(SPIBusMasterInput/SlaveOutput);(3)SCLK–時(shí)鐘信號(hào),由主設(shè)備產(chǎn)生;(4)CS–從設(shè)備使能信號(hào),由主設(shè)備控制(Chipselect),有的IC此pin腳叫SS,其中CS是控制芯片是否被選中的,也就是說(shuō)只有片選信號(hào)為預(yù)先規(guī)定的使能信號(hào)時(shí)(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論