DS18B20單片機原理與接口技術(shù)課程設計_第1頁
DS18B20單片機原理與接口技術(shù)課程設計_第2頁
DS18B20單片機原理與接口技術(shù)課程設計_第3頁
DS18B20單片機原理與接口技術(shù)課程設計_第4頁
DS18B20單片機原理與接口技術(shù)課程設計_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 課程設計必選題目:_ 自選題目:_班 級 : 同組人: 學號: 同組人: 學號: 同組人: 學號: 完成時間:_廣東科學技術(shù)職業(yè)學院二o一 年 月 日目錄一 必選題目1 緒論 2 硬件電路設計 3 軟件系統(tǒng)設計 4 實驗結(jié)果分析與總結(jié) 5 參考文獻 二 自選題目1 緒論 2 硬件電路設計 3 軟件系統(tǒng)設計 4 實驗結(jié)果分析與總結(jié) 5 參考文獻 1 緒論 小組分工明細:莫天成 唐少雄 潘溢江 ds18b20總共有三個引腳,只有一個引腳是傳送數(shù)據(jù)的,即為引腳dq,另外兩個引腳分別接地gnd和電源vcc,所以只要將引腳dq與單片機相接即可。在原來的基礎上,單片機at89c51還剩下9個引腳未用,接

2、任意一個引腳都可以,為了焊接方便,避免跳線,最后決定選擇p2.0為dq的連接引腳。2 硬件電路設計,電路圖如下(1)ds18b20論述:美國dallas半導體公司的數(shù)字化溫度傳感器是世界上第一片支持 “一線總線”接口的溫度傳感器,其內(nèi)部使用了在板(on-b0ard)專利技術(shù)。全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)。一線總線獨特而且經(jīng)濟的特點,使用戶可輕松地組建傳感器網(wǎng)絡,為測量系統(tǒng)的構(gòu)建引入全新概念?,F(xiàn)在,新一代的ds18b20體積更小、更經(jīng)濟、更靈活。使你可以充分發(fā)揮“一線總線”的優(yōu)點。目前ds18b20批量采購價格僅5元左右。(2)ds18b20內(nèi)部結(jié)構(gòu):ds18b20支持

3、“一線總線”接口,測量溫度范圍為-55c+125c,在-10+85c范圍內(nèi),精度為0.5c。ds1822的精度較差為2c?,F(xiàn)場溫度直接以一線總線的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量,如:環(huán)境控制、設備或過程控制、測溫類消費電子產(chǎn)品等。與前一代產(chǎn)品不同,新的產(chǎn)品支持3v5.5v的電壓范圍,使系統(tǒng)設計更靈活、方便。而且新一代產(chǎn)品更便宜,體積更小。獨特的單線接口方式,ds18b20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與ds18b20的雙向通訊。ds18b20支持多點組網(wǎng)功能,多個ds18b20可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫。在使用中不需要任何外

4、圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)??删幊痰姆直媛蕿?12位,對應的可分辨溫度分別為0.5、0.25、0.125和0.0625,可實現(xiàn)高精度測溫,在9位分辨率時最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快。測量結(jié)果直接輸出數(shù)字溫度信號,以一線總線串行傳送給cpu,同時可傳送crc校驗碼,具有極強的抗干擾糾錯能力。負壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作。dq為數(shù)字信號輸 入/輸 出端;gnd為電源地;vdd為外接供電電源輸入端(在寄生電源接線方式時接地)。 (3)根據(jù)以上關(guān)于ds18b20

5、的資料可設計出溫度傳感器溫度顯示在數(shù)碼管上的電路圖,電路圖如下圖所示;3 軟件系統(tǒng)設計(1)ds18b20工作原理控制ds18b20指令:33h讀rom 55匹配rom foh-搜索rom cch-跳過rom ech-告警搜索命令44h溫度轉(zhuǎn)換 beh-讀暫存器 4eh寫暫存器 48h復制暫存器 b8h重調(diào)e2prom b4h讀供電方式(2)ds18b20工作流程 (a)初始化 單片機將dq設置為低電平,延時至少480us后再將其編程高電平,即提供一個脈沖480ust960us的復位脈沖。等待1560us后,檢查dq是否變成低電平,為低電平則表明復位成功。(b)寫時序?qū)τ赿s18b20的寫時序

6、分為寫0時序和寫1時序兩個過程。寫0時序和寫1時序的要求不同,當要寫0時序時,單總線要被拉低至少60us,保證ds18b20能夠在15us到45us之間能夠正確地采樣io總線上的“0”電平,當要寫1時序時,單總線被拉低之后,在15us之內(nèi)就得釋放單總線。(c)讀時序?qū)τ赿s18b20的讀時序分為讀0時序和讀1時序兩個過程。 對于ds18b20的讀時序是從主機把單總線拉低之后,在15u秒之內(nèi)就得釋放單總線,以讓ds18b20把數(shù)據(jù)傳輸?shù)絾慰偩€上。ds18b20在完成一個讀時序過程,至少需要60us才能完成。 (d)寫程序?qū)s18b20的引腳dq與單片機的p20相接,程序如下:#include

7、/調(diào)用函數(shù)的頭文件sbit dq=p20; /特殊位定義unsigned char a,b,c,d; /全局變量的定義/*延時函數(shù)*void delay(unsigned char j) unsigned char i; for(i=j;i0;i-);/*定時/計數(shù)器的初始化*void init_t0() tr0=0;tf0=0; /溢出位和啟動位的初始化 th0=0xff;tl0=0xfe; /定義初值 tr0=1; /啟動定時/計數(shù)器/*ds18b20芯片的初始化*void init_ds18b20() dq=1;delay(5); /拉高總線,延時15us dq=0;delay(30);

8、 /拉低總線。延時320us dq=1; /釋放總線,15us后可檢測芯片自動拉低,延時160us delay(20);/*寫一個字節(jié)給芯片的函數(shù)*void writeonechar(unsigned char write) unsigned char i=0; for(i=8;i0;i-) /要給芯片總線發(fā)信號單片機要給它信號了 dq=0;delay(1); /拉低總線,延時1us即可 dq=write&0x01; /取出最低位接收 delay(1); /等待芯片接收完成 dq=1; /釋放總線 write=1; /為下一位的取出做準備,同時有延時功能/*單片機讀芯片發(fā)出信號的函數(shù)*unsi

9、gned char readonechar() unsigned char i; unsigned char read; /單片機要讀芯片的字節(jié),要告訴芯片,通過高低電平的時序完成 for(i=8;i0;i-) dq=1;delay(1); /拉高,延時15us dq=0;read=1; /拉低,延時15us,同時為位的存放做準備 dq=1;delay(1); /釋放總線,延時。 if(dq=1) read|=0x80; /判斷總線給單片發(fā)的信號并存入變量read中 delay(4); /等待完成 return read; /返回read的值/*讀取溫度值函數(shù)*float readtemper

10、ature() unsigned char templ=0; / 變量的定義 unsigned int temph=0; / 因為后面高位要處理所以不能定義為char float temperature=0; / 要做小數(shù)temperature不能定義為int init_ds18b20(); /芯片初始化 writeonechar(0xcc); /跳過rom即跳過序列號查詢 writeonechar(0x44); /啟動ds18b20溫度轉(zhuǎn)換 init_ds18b20(); /芯片初始化 writeonechar(0xcc); /跳過rom即跳過序列號查詢 writeonechar(0xbe)

11、; /讀取寄存器的溫度值 templ=readonechar(); /讀取溫度低字節(jié) temph=readonechar(); /讀取溫度高字節(jié) temperature=(temph8)+templ)*0.0625; /轉(zhuǎn)換成十進制 return temperature; /返回temperature值/*溫度數(shù)值中取出各個位的函數(shù)*void zhuan_huan() unsigned int t; t=readtemperature()*100; /取小數(shù)點后兩位 a=t/1000; /十位 b=(t-a*1000)/100; /個位 c=(t-a*1000-b*100)/10; /小數(shù)點后

12、一位 d=t%10; /小數(shù)點后兩位/*主函數(shù)*main() tmod=0x01; /定時/計數(shù)器的模式選擇:方式一 ea=1;et0=1; /啟動中斷,啟動中斷0 init_t0(); /定時/計數(shù)器的初始化 while(1) /無限循環(huán) init_ds18b20(); /初始化ds18b20 readtemperature(); /讀取溫度/*定時/計數(shù)器中斷0中斷函數(shù)*void a0_intdpy_8seg() interrupt 1 unsigned char h=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/數(shù)碼管的顯示數(shù)組定義 unsigned char i; i+; /變量自增 zhuan_huan(); /溫度數(shù)值中取出各個位 switch(i) /開關(guān)函數(shù)顯示為選共陽極數(shù)碼管 case 1: p2=0xf7;p0=hd;break; case 2: p2=0xef;p0=hc;break; case 3: p2=0xdf;p0=hb&0x7f;break; case 4: p2=0xbf;p0=h

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論