版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p><b> 1.背景與意義1</b></p><p><b> 2.設(shè)計方案1</b></p><p><b> 3.電路設(shè)計2</b></p><p> 3.1 主控制器2<
2、/p><p> 3.2 顯示電路2</p><p> 3.3 溫度傳感器2</p><p> 3.4 DS18B20與單片機的接口電路4</p><p> 3.5 元器件清單4</p><p> 3.6 原理圖設(shè)計5</p><p><b> 4.程序相關(guān)6<
3、/b></p><p> 4.1 DS18B20.c6</p><p><b> 5.實物圖11</b></p><p><b> 6.使用說明12</b></p><p><b> 7.總結(jié)13</b></p><p><b
4、> 8.參考文獻14</b></p><p> 基于單片機的數(shù)字溫度計設(shè)計與制作</p><p><b> 1.背景與意義</b></p><p> 隨著人們生活水平的不斷提高,單片機控制無疑是人們追求的目標(biāo)之一,它所給人帶來的方便也是不可否定的,其中數(shù)字溫度計就是一個典型的例子,但人們對它的要求越來越高,要為現(xiàn)代人
5、工作、科研、生活、提供更好的更方便的設(shè)施就需要從數(shù)單片機技術(shù)入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。</p><p> 現(xiàn)代測溫應(yīng)用中,溫度計向數(shù)字化方向發(fā)展。傳統(tǒng)的機遇物理方法的溫度計功能單一,而數(shù)字溫度計以其便攜,檢測精度高,功能多等優(yōu)點應(yīng)用的越來越廣泛。隨著人們生活水平的不斷提高,單片機控制無疑是人們追求的目標(biāo)之一,它所給人帶來的方便也是不可否定的,其中數(shù)字溫度計就是一個典型的例子,但人們對它的要求
6、越來越高,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設(shè)施就需要從數(shù)單片機技術(shù)入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。</p><p> 本課程設(shè)計研究四位數(shù)字溫度計的設(shè)計與實現(xiàn),并采用Protues軟件和Keil</p><p> 軟件來對其進行仿真,通過電阻值的變化使相應(yīng)電壓發(fā)生改變,輸出電壓經(jīng)A/D轉(zhuǎn)換后,</p><p> 其值由AT89C20
7、51處理,最后將其顯示在4個七段數(shù)碼顯示器上。隨著技術(shù)的發(fā)展,一些環(huán)境比較惡劣的場合中也能覓得數(shù)字溫度計的蹤跡。在本文中,主要從功能組合,硬件組合,軟件算法等幾個方面探討溫度計的設(shè)計。數(shù)字溫度計在現(xiàn)代測溫應(yīng)用方面具有諸多優(yōu)勢,值得進一步學(xué)習(xí)和研究。</p><p><b> 2.設(shè)計方案</b></p><p> 本設(shè)計所介紹的數(shù)字溫度計與傳統(tǒng)的溫度計相比,具有讀
8、數(shù)方便,測溫范圍廣,測溫準(zhǔn)確,其輸出溫度采用數(shù)字顯示,主要用于對測溫比較準(zhǔn)確的場所,或科研實驗室使用,該設(shè)計控制器使用單片機AT89C2051,測溫傳感器使用DS18B20,用3位共陽極LED數(shù)碼管以串口傳送數(shù)據(jù),實現(xiàn)溫度顯示,能準(zhǔn)確達到以上要求。</p><p> 溫度計電路設(shè)計總體設(shè)計方框圖如圖1所示,控制器采用單片機AT89C2051,溫度傳感器采用DS18B20,用3位LED數(shù)碼管以串口傳送數(shù)據(jù)實現(xiàn)溫度
9、顯示。</p><p> 圖1 總體設(shè)計方框圖</p><p> 3.電路設(shè)計 </p><p><b> 3.1 主控制器</b></p><p> 單片機AT89S51具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統(tǒng)的設(shè)計需要,很適合便攜手持式產(chǎn)品的設(shè)計使用系統(tǒng)可用三節(jié)電池供電。<
10、;/p><p><b> 3.2 顯示電路</b></p><p> 顯示電路采用3位共陽LED數(shù)碼管,從P3口RXD,TXD串口輸出段碼。</p><p><b> 3.3 溫度傳感器</b></p><p> DS18B20溫度傳感器是美國DALLAS半導(dǎo)體公司最新推出的一種改進型智能溫度傳
11、感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)9~12位的數(shù)字值讀數(shù)方式。DS18B20的性能特點如下:</p><p> ●獨特的單線接口僅需要一個端口引腳進行通信;</p><p> ●多個DS18B20可以并聯(lián)在惟一的三線上,實現(xiàn)多點組網(wǎng)功能;</p><p><b> ●無須外部器件;<
12、/b></p><p> ●可通過數(shù)據(jù)線供電,電壓范圍為3.0~5.5V;</p><p><b> ●零待機功耗;</b></p><p> ●溫度以9或12位數(shù)字;</p><p> ●用戶可定義報警設(shè)置;</p><p> ●報警搜索命令識別并標(biāo)志超過程序限定溫度(溫度報警條
13、件)的器件;</p><p> ●負電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作; </p><p> DS18B20采用3腳PR-35封裝或8腳SOIC封裝,其內(nèi)部結(jié)構(gòu)框圖如圖2所示。</p><p> 圖2 DS18B20內(nèi)部結(jié)構(gòu)</p><p> 64位ROM的結(jié)構(gòu)開始8位是產(chǎn)品類型的編號,接著是每個器件的惟
14、一的序號,共有48位,最后8位是前面56位的CRC檢驗碼,這也是多個DS18B20可以采用一線進行通信的原因。溫度報警觸發(fā)器TH和TL,可通過軟件寫入戶報警上下限。</p><p> DS18B20溫度傳感器的內(nèi)部存儲器還包括一個高速暫存RAM和一個非易失性的可電擦除的EERAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲器,頭2個字節(jié)包含測得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復(fù)位時被刷新。
15、第5個字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。低5位一直為1,TM是工作模式位,用于設(shè)置DS18B20在工作模式還是在測試模式,DS18B20出廠時該位被設(shè)置為0,用戶要去改動,R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來設(shè)置分辨率。</p><p> 3.4 DS18B20與單片機的接口電路</p><p>
16、DS18B20可以采用兩種方式供電,一種是采用電源供電方式,此時DS18B20的1腳接地,2腳作為信號線,3腳接電源.另一種是寄生電源供電方式,如圖3所示。單片機端口接單線總線,為為保證有效DS18B20時鐘周期內(nèi)提供足夠的電流,可用一個MOSFET管來完成對總線的上拉。</p><p> 圖3 DS18B20采用寄生電源的電路圖</p><p><b> 3.5 元器件清單
17、</b></p><p> 綜上,根據(jù)設(shè)計方框圖,選擇相應(yīng)元器件,就可以在Protues或者protel軟件環(huán)境下畫出原理圖。所需要元器件清單如下:</p><p><b> 圖4元器件清單</b></p><p><b> 3.6 原理圖設(shè)計</b></p><p> 如圖5所
18、示即為本設(shè)計總體原理圖,控制器使用單片機AT89C2051,溫度傳感器使用DS18B20,用3位共陽LED數(shù)碼管以動態(tài)掃描法實現(xiàn)溫度顯示。設(shè)計簡潔而邏輯清晰,具有一定的科技含量與難度,而且功能強大,應(yīng)用廣泛。</p><p><b> 圖 5 原理圖</b></p><p><b> 4. 程序相關(guān)</b></p><p
19、> 由于本設(shè)計中用到了控制器即單片機AT89C2051,所以要設(shè)計相應(yīng)的C語言程序或者匯編語言程序以實現(xiàn)相應(yīng)的控制功能。基于DS18B20數(shù)字溫度傳感器的軟件設(shè)計采用C51編寫程序,主要完成DS18B20的測量溫度值計算及溫度值的顯示功能。其采用模塊化設(shè)計,程序設(shè)計包括系統(tǒng)初始化、復(fù)位程序、讀取溫度程序、溫度轉(zhuǎn)換程序、數(shù)碼管顯示程序和延時程序,溫度控制器的關(guān)鍵程序代碼如下所示:</p><p> 4.1
20、 DS18B20.c</p><p> #include "ds18b20.h"</p><p> #include "delay.h"</p><p> bit Init_ds18b20( )</p><p><b> {</b></p><p>
21、 bit tempData;</p><p> DQ=1; </p><p> DelayUs2x(5); </p><p> DQ=0; </p><p> DelayUs2x(200);</p><p> DelayUs2x(200);</p><
22、;p> DQ=1; </p><p> DelayUs2x(50); </p><p> tempData=DQ; </p><p> DelayUs2x(25); </p><p> return tempData;</p><p><b> }</b&g
23、t;</p><p> void Write_ds18b20(uchar dt)</p><p><b> {</b></p><p> uchar i=0;</p><p> for(i=0;i<8;i++)</p><p><b> {</b></p
24、><p><b> DQ=0;</b></p><p> DQ=dt&0x01;</p><p> DelayUs2x(25);</p><p><b> DQ=1;</b></p><p><b> dt=dt>>1;</b>
25、</p><p><b> }</b></p><p> DelayUs2x(25);</p><p><b> }</b></p><p> uchar Read_ds18b20()</p><p><b> {</b></p>
26、<p> uchar i=0;</p><p> uchar dt=0;</p><p> for(i=0;i<8;i++)</p><p><b> {</b></p><p><b> DQ=0;</b></p><p><b>
27、dt>>=1;</b></p><p><b> DQ=1;</b></p><p><b> if(DQ)</b></p><p><b> {</b></p><p><b> dt|=0x80;</b></p&g
28、t;<p><b> }</b></p><p> DelayUs2x(25);</p><p><b> }</b></p><p> return dt;</p><p><b> }</b></p><p> uint R
29、eadTemperature()</p><p><b> {</b></p><p> uint dt,tempH,tempL;</p><p> Init_ds18b20();</p><p> Write_ds18b20(0xcc);</p><p> Write_ds18b20(
30、0x44);</p><p> DelayMs(10);</p><p> Init_ds18b20();</p><p> Write_ds18b20(0xcc);</p><p> Write_ds18b20(0xbe);</p><p> tempL=Read_ds18b20();</p>
31、<p> tempH=Read_ds18b20();</p><p> tempH=tempH<<8;</p><p> dt=tempH+tempL;</p><p> return dt;</p><p><b> }</b></p><p><b>
32、; 4.2.延時程序</b></p><p> #include "delay.h"</p><p> void DelayUs2x(unsigned char t)</p><p> { while(--t);</p><p><b> }</b></p>&l
33、t;p> void DelayMs(unsigned char t)</p><p><b> {</b></p><p> while(t--)</p><p><b> { </b></p><p> DelayUs2x(245);</p><p> D
34、elayUs2x(245);</p><p><b> }</b></p><p><b> }</b></p><p><b> 4.3.主程序</b></p><p> #include <reg52.h></p><p> #
35、include "delay.h"</p><p> #include "ds18b20.h"</p><p> #define uint unsigned int</p><p> #define uchar unsigned char</p><p> #define duanMa P0&l
36、t;/p><p> #define weiMa P2</p><p> uchar code disCode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,</p><p> 0x82,0xf8,0x80,0x90,0xff,0xBF,0xc6}; </p><p> ucha
37、r code disBit[]={0x01,0x02,0x04,0x08,0x10,0x20}; </p><p> uchar disBuf[]={6,6,6,9,9,9}; </p><p> uint tempNum=0,tempH,tempL;</p><p> bit tempFlag=
38、0;</p><p> void Init();</p><p> void Display();</p><p> void main()</p><p><b> {</b></p><p><b> Init();</b></p><p&g
39、t;<b> while(1)</b></p><p><b> {</b></p><p> tempNum=ReadTemperature();</p><p> if(tempNum&(1<<15)) </p><p><b> {</
40、b></p><p> tempNum=~tempNum;</p><p> tempNum+=1;</p><p> tempFlag=1; }</p><p> //tempL=tempNum|0x0F; </p><p> tempH=tempNum>>4;
41、 </p><p> if(tempFlag==1)</p><p><b> {</b></p><p> tempFlag=0;</p><p> disBuf[0]=11; }</p><p><b> else</b></p>
42、<p><b> {</b></p><p> disBuf[0]=10; } </p><p> disBuf[1]=tempH/100;</p><p> disBuf[2]=tempH%100/10;</p><p> disBuf[3]=(tempH%10);
43、</p><p> disBuf[4]=10; </p><p> disBuf[5]=12; </p><p> Display();</p><p><b> }</b></p><p><b> }</b></p>&l
44、t;p> void Init()</p><p><b> {</b></p><p> duanMa=0xFF; </p><p> weiMa=0x00; </p><p><b> }</b></p><p> void Display()&
45、lt;/p><p><b> {</b></p><p> uchar i=0;</p><p> for(i=0;i<6;i++)</p><p><b> {</b></p><p> duanMa=disCode[disBuf[i]];</p>
46、<p> weiMa=disBit[i];</p><p> DelayMs(1);</p><p> weiMa=0x00;</p><p><b> }</b></p><p><b> }</b></p><p><b> 5. 實物圖
47、</b></p><p> 程序、仿真調(diào)試無誤后可以進行相關(guān)硬件的制作,具體包括板子的選擇與元器件的選擇與焊接等,由于是手工焊接,過程中要細心、耐心;也可在網(wǎng)上購買相應(yīng)散件自己進行制作焊接,圖6所示是散件圖與最終的成品圖:</p><p> 圖6 PCB板及散件圖</p><p> 將相關(guān)元器件連接之后,要進行調(diào)試,保證連接無誤。本設(shè)計實物圖如圖7
48、所示,連接上三節(jié)5號干電池,即使用4.5v直流電源供電,即可正常工作:檢測室溫、設(shè)置報警溫度等等。如下圖所示:</p><p> 圖7 連接實物圖 </p><p><b> 6.使用說明</b></p><p> 本電路采用用DS18B20做溫度傳感器,3位共陽數(shù)碼管做顯示,AT89C2051單片機做處理控制,電路簡單。從
49、X1接入5V±0.5V直流電源(注意正負極),按一下S1電路顯示當(dāng)前的溫度值,再按一下S1進入溫度設(shè)定狀態(tài),這時可以按S2或S3調(diào)整設(shè)定溫度值,再次按下S1時返回當(dāng)前溫度顯示同時會對設(shè)定溫度值進行保存,這個設(shè)定值會保存在DS18B20中,掉電后也不會丟失,下次上電時,單片機會自動讀入上次的溫度設(shè)定值。長按S1為關(guān)閉顯示和溫控,再次按下時功能再次打開。電路中還設(shè)計了一路控制輸出,當(dāng)當(dāng)前溫度超出設(shè)定溫度時LED1被點亮,同時從X2
50、輸出5V電壓,可驅(qū)動5V繼電器等。</p><p><b> 總結(jié)</b></p><p> 本設(shè)計利用AT89C2051芯片控制溫度傳感器DS18B20,再輔之以部分外圍電路實現(xiàn)對環(huán)境溫度的測控,性能穩(wěn)定,精度較高,而且擴展性很大。</p><p> 這次的單片機課程設(shè)計分倆部分,板子的焊接還算順利,開關(guān)能正??刂疲业恼n題是四位數(shù)字溫
51、度計的設(shè)計,需要一個溫度傳感器18B20給板子通上電,板子顯示了室內(nèi)溫,當(dāng)溫度產(chǎn)生變化時板子能夠根據(jù)溫度變化示數(shù)也發(fā)生變化。</p><p> 數(shù)字溫度計被利用于很多領(lǐng)域,在一些人不能直接進去的場所,利用單片機控制的數(shù)字溫度計,可以設(shè)置并控制其中的溫度,數(shù)字溫度計還可以利用在溫室中,這樣就可以方便的控制溫室中的溫度,當(dāng)溫度超過所要求的溫度時,可發(fā)生報警,總之?dāng)?shù)字溫度計被利用于很多領(lǐng)域。</p>&
52、lt;p> 在這次的課程設(shè)計中,我真正的意識到,在以后的學(xué)習(xí)中,要理論聯(lián)系實際,把我們所學(xué)的理論知識用到實際當(dāng)中,學(xué)習(xí)單片機更是如此,程序只有在經(jīng)常寫與讀的過程中才能提高,這就是這次課程設(shè)計的最大收獲。</p><p><b> 參考文獻 </b></p><p> 1.王迎旭編.《單片機原理與應(yīng)用》[M].機械工業(yè)出版社.2004.</p>
53、<p> 2.樓然苗編.《51系列單片機設(shè)計實例》[M].北京航空航天大學(xué)出版社. </p><p> 3.黃勤編.《計算機硬件技術(shù)基礎(chǔ)實驗教程》[M].重慶大學(xué)出版社</p><p> 4.劉樂善編.《微型計算機接口技術(shù)及應(yīng)用》[M].華中科技大學(xué)出版社. </p><p> 5.陳光東編.《單片微型計算機原理及接口技術(shù)》[M].華中科技大學(xué)出
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 溫度計課程設(shè)計---基于51單片機數(shù)字溫度計設(shè)計
- 數(shù)字溫度計課程設(shè)計---基于51單片機數(shù)字溫度計設(shè)計
- 基于單片機數(shù)字溫度計課程設(shè)計
- 單片機課程設(shè)計--數(shù)字溫度計
- 單片機課程設(shè)計--數(shù)字溫度計
- 單片機課程設(shè)計-數(shù)字溫度計
- 單片機課程設(shè)計—數(shù)字溫度計
- 單片機數(shù)字溫度計課程設(shè)計
- 單片機課程設(shè)計---數(shù)字溫度計
- 單片機課程設(shè)計-數(shù)字溫度計
- 單片機課程設(shè)計—數(shù)字溫度計
- 單片機課程設(shè)計——數(shù)字溫度計
- 單片機課程設(shè)計—數(shù)字溫度計
- 課程設(shè)計--基于單片機數(shù)字溫度計設(shè)計
- 單片機課程設(shè)計-數(shù)字溫度計
- 數(shù)字溫度計--單片機課程設(shè)計
- 單片機課程設(shè)計-- 基于單片機的數(shù)字溫度計設(shè)計
- 單片機課程設(shè)計--數(shù)字溫度計設(shè)計
- 基于單片機的數(shù)字溫度計課程設(shè)計
- 單片機課程設(shè)計--數(shù)字溫度計設(shè)計
評論
0/150
提交評論