基于單片機數(shù)字溫度計課程設(shè)計_第1頁
已閱讀1頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

評論

0/150

提交評論