單片機原理:12-1串行擴展技術(shù)-單總線-C_第1頁
單片機原理:12-1串行擴展技術(shù)-單總線-C_第2頁
單片機原理:12-1串行擴展技術(shù)-單總線-C_第3頁
單片機原理:12-1串行擴展技術(shù)-單總線-C_第4頁
單片機原理:12-1串行擴展技術(shù)-單總線-C_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

第10章

AT89S51單片機

系統(tǒng)的串行擴展

1 單片機的串行擴展技術(shù)與并行擴展技術(shù)相比具有顯著的優(yōu)點,串行接口器件與單片機接口時需要的I/O口線很少(僅需1~4條),串行接口器件體積小,因而占用電路板的空間小,僅為并行接口器件的10%,明顯減少電路板空間和成本。 除上述優(yōu)點,還有工作電壓寬、抗干擾能力強、功耗低、數(shù)據(jù)不易丟失等特點。串行擴展技術(shù)在IC卡、智能儀器儀表以及分布式控制系統(tǒng)等領(lǐng)域得到廣泛應(yīng)用。210.1單總線串行擴展 單總線(也稱1-Wirebus)是由美國DALLAS公司推出的外圍串行擴展總線。 只有一條數(shù)據(jù)輸入/輸出線DQ,總線上的所有器件都掛在DQ上,電源也通過這條信號線供給,使用一條信號線的串行擴展技術(shù),稱為單總線技術(shù)。 單總線系統(tǒng)的各種器件,由DALLAS公司提供的專用芯片實現(xiàn)。每個芯片都有64位ROM,廠家對每一個芯片用激光燒寫編碼,其中存有16位十進制編碼序列號,它是器件的地址編號,確保它掛在總線上后,可唯一被確定。3 除地址編碼外,片內(nèi)還包含收發(fā)控制和電源存儲電路,如圖10-1所示。這些芯片的耗電量都很?。臻e時幾微瓦,工作時幾毫瓦),從總線上饋送電能到大電容中就可以工作,故一般不需另加電源。下面說明具體應(yīng)用。

4圖10-1

單總線芯片的內(nèi)部結(jié)構(gòu)示意圖【例10-1】圖10-2所示為一個由單總線構(gòu)成的分布式溫度監(jiān)測系統(tǒng),也可用于各種狹小空間內(nèi)設(shè)備的數(shù)字測溫。圖中多個帶有單總線接口的數(shù)字溫度傳感器DS18B20芯片都掛在單片機的1根I/O口線(即DQ線)上。對每個DS18B20通過總線DQ尋址。DQ為漏極開路,須加上拉電阻。DS18B20封裝形式多樣,其中的一種封裝形式見圖10-2。在該單總線數(shù)字溫度傳感器系列中還有DS1820、DS18S20、DS1822等其他型號,工作原理與特性基本相同。

5

6圖10-2單總線構(gòu)成的分布式溫度監(jiān)測系統(tǒng)具有如下特點:(1)體積小、結(jié)構(gòu)簡單、使用方便。(2)每芯片都有唯一的64位光刻ROM編碼,家族碼為28H。(3)溫度測量范圍-55~+125oC,在-10~+85oC范圍內(nèi),測量精度可達±0.5oC。(4)分辨率為可編程的9~12位(其中包括1位符號位),對應(yīng)的溫度變化量分別為0.5oC、0.25oC、0.125oC、0.0625oC。7(5)轉(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。(6)片內(nèi)含有SRAM、E2PROM,單片機寫入E2PROM的報警的上下限溫度值和以及對DS18B20的設(shè)置,在芯片掉電的情況下不丟失。功能命令包括兩類:1條啟動溫度轉(zhuǎn)換命令(44H),5條讀/寫SRAM和E2PROM命令。..\資料\PDF\DS18B20.pdf

p18

8圖10-2電路如果再擴展幾位(根據(jù)需要)LED數(shù)碼管顯示器,即可構(gòu)成簡易的數(shù)字溫度計系統(tǒng)。在1-Wire總線傳輸?shù)氖菙?shù)字信號,數(shù)據(jù)傳輸均采用CRC碼校驗。DALLAS公司為單總線的尋址及數(shù)據(jù)的傳送制定了總線協(xié)議,具體內(nèi)容讀者可查閱相關(guān)資料。1-Wire協(xié)議不足在傳輸速率稍慢,故1-Wire總線協(xié)議特別適用于測控點多、分布面廣、種類復(fù)雜,而又需集中監(jiān)控、統(tǒng)一管理的應(yīng)用場合。9片內(nèi)有9個字節(jié)的高速暫存器RAM單元,9個字節(jié)具體分布如下:第1字節(jié)和第2字節(jié)是在單片機發(fā)給DS18B20溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值,以兩字節(jié)補碼形式存放其中。一般情況下,用戶多使用第1字節(jié)和第2字節(jié)。單片機通過單總線可讀得該數(shù)據(jù),讀取時低位在前,高位在后。第3、4字節(jié)分別是由軟件寫入用戶報警的上下限值TH和TL。第5個字節(jié)為配置寄存器,可對其更改DS18B20的測溫分辨率,高速暫存器的第6、7、8字節(jié)未用,為全1。第9字節(jié)是前面所有8個字節(jié)的CRC碼,用來保證正確通信。片內(nèi)還有1個E2PROM為TH、TL以及配置寄存器的映像。配置寄存器各位的定義如下:1(1個0)-2-5(5個1)其中,TM位出廠時已被寫入0,用戶不能改變;低5位都為1;R1和R0用來設(shè)置分辨率。表10-1列出了R1、R0與分辨率和轉(zhuǎn)換時間的關(guān)系。用戶可通過修改R1、R0位的編碼,獲得合適的分辨率。12由表10-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。表10-2列出了DS18B20溫度轉(zhuǎn)換后所得到的16位轉(zhuǎn)換結(jié)果的典型值。下面介紹溫度轉(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)/16=(0×163+3×162+7×161+0×160)/16=55℃

注意,負(fù)號則需對采集的溫度進行判斷后,再予以顯示。132.DS18B20的工作時序工作時序要求嚴(yán)格,延時時間需準(zhǔn)確,否則容易出錯。DS18B20的工作時序包括初始化時序、寫時序和讀時序。(1)初始化時序,單片機將數(shù)據(jù)線電平拉低480~960μs后釋放,等待15~60μs,單總線器件即可輸出一持續(xù)60~240μs的低電平,單片機收到此應(yīng)答后即可進行操作。(6-1-4)(2)寫時序,當(dāng)單片機將數(shù)據(jù)線電平從高拉到低時,產(chǎn)生寫時序,有寫“0”和寫“1”兩種時序。寫時序開始后,DS18B20在15~60μs期間從數(shù)據(jù)線上采樣。如果采樣到低電平,則向DS18B20寫的是“0”;如果采樣到高電平,則向DS18B20寫的是“1”。這兩個獨立時序間至少需拉高總線電平1μs時間。14(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片內(nèi)都有唯一的64位光刻ROM編碼,出廠時已刻好。它是DS18B20的地址序列碼,目的是使每個DS18B20的地址都不相同,這樣就可實現(xiàn)在一根總線上掛接多個DS18B20的目的。64位光刻ROM的各位定義如下:BYTE:1+6+1DS18B20產(chǎn)品類型標(biāo)號:28H,最低字節(jié);CRC碼為高字節(jié)DS18B20所有命令均為8位長,常用的命令代碼見表10-3。1516表10-3DS18B20的部分命令下面介紹表10-3中命令的用法。當(dāng)主機需要對多個單總線上的某一DS18B20進行操作時,首先應(yīng)將主機逐個與DS18B20掛接,讀出其序列號(33H);然后再將所有的DS18B20掛接到總線上,單片機發(fā)出匹配ROM命令(55H),緊接著主機提供的64位序列號之后的操作就是針對該DS18B20的。如果主機只對一個DS18B20進行操作,就不需要讀取ROM編碼以及匹配ROM編碼,只要用跳過ROM(CCH)命令,就可按表10-4執(zhí)行如下溫度轉(zhuǎn)換和讀取命令。表10-4DS18B20的部分命令10.1.2設(shè)計案例:單總線DS18B20溫度測量系統(tǒng)

【例10-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ù)碼管顯示。1920圖10-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);uchar

readbyte(void);voidwritebyte(uchar);uchar

retemp(void);21voidmain(void) //主函數(shù){

uchar

i,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 } }}22voiddelay5(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);}23uchar

readbyte(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);}24voidwritebyte(uchar

dat) //函數(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); }}25uchar

retemp(void) //函數(shù)功能:讀取溫度{

uchar

a,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);}26DS18B20體積小、適用電壓范圍寬,是世界上第一片支持“單總線”接口的溫度傳感器?,F(xiàn)場溫度測量直接以“單總線”數(shù)字方式傳輸,大大提高系統(tǒng)抗干擾性。所以單總線系統(tǒng)特別適用于測控點多、分布面廣、環(huán)境惡劣以及狹小空間內(nèi)設(shè)備的測溫以及現(xiàn)場溫度測量,如環(huán)境控制、設(shè)備或過程控制、測溫類消費電子產(chǎn)品等。..\范例\51-DS18B20-1602..\范例\DS18B20多點測溫..\范例\基于DS18B20的多點測溫_ds130227ucharCRC8(){uchari,x;ucharcrcbuff;

crc=0;for(x=0;x<8;x++){crcbuff=RomCode[x];

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論