單片機課程設計---熱敏電阻測溫_第1頁
已閱讀1頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  單片機課程設計報告</b></p><p>  題 目 熱敏電阻溫度采集系統設計 </p><p>  院 系 電子工程學院 </p><p>  專 業(yè) 自動化 </p><p>  姓 名

2、 xxxx </p><p>  xxxx </p><p>  班級學號 xxxx </p><p>  指導教師 xxxx </p><p>  日 期 2012-2-23

3、 </p><p><b>  目 錄</b></p><p>  第一部分:設計背景………………………………………3</p><p>  第二部分:系統主要功能…………………………………5</p><p>  第三部分:電路設計與參數選擇…………………………5</p><p>  第

4、四部分:系統軟件設計…………………………………11</p><p>  第五部分:系統調試與儀器使用…………………………21</p><p>  第六部分:測試數據與結果分析…………………………23</p><p>  第七部分:使用說明書……………………………………23</p><p>  第八部分:總結…………………………………………

5、24</p><p>  熱敏電阻溫度采集系統設計</p><p><b>  摘要</b></p><p>  溫度在人類的生活中扮演著極其重要的角色,在冶金、鋼鐵、石化、水泥、玻璃、醫(yī)藥等行業(yè)溫度的測量及為重要。本次課程設計采用單片機了STC12C5A60S2和10K NTC熱敏電阻為核心器件來設計熱敏電阻測溫系統。通過NTC熱敏電阻對外界

6、溫度信號進行采集,由于熱敏電阻的阻值隨外界溫度變化而變化,再通過測量電路把阻值的變化轉換為電壓的變化,利用STC12C5A60S2單片機的集成AD把采集到的模擬電壓信號轉換為數字信號,利用單片機對數字信號進行處理后就可以得到相應的溫度值,從而完成了對溫度的測量。</p><p>  該系統采用了STC12C5A60S2單片機、NTC熱敏電阻、共陰極數碼管顯示、電容、排阻、晶振、電阻等元器件。</p>

7、<p>  關鍵字:STC12C5A60S2單片機、熱敏電阻、測溫系統</p><p><b>  第一部分</b></p><p><b>  設計背景</b></p><p>  在人類的生活環(huán)境中,溫度扮演著極其重要的角色。無論你生活在哪里,從事什么工作,無時無刻不在與溫度打著交道。自18世紀工業(yè)革命以來

8、,工業(yè)發(fā)展對是否能掌握溫度有著絕對的聯系。在冶金、鋼鐵、石化、水泥、玻璃、醫(yī)藥等等行業(yè),可以說幾乎80%的工業(yè)部門都不得不考慮著溫度的因素。溫度對于工業(yè)如此重要,由此推進了溫度傳感器的發(fā)展。進入21世紀后,溫度傳感器正朝著高精度、多功能、總線標準化、高可靠性及安全性、開發(fā)虛擬傳感器和網絡傳感器、研制單片測溫系統等高科技的方向迅速發(fā)展。</p><p>  在工農業(yè)生產中,溫度檢測及其控制占有舉足輕重的地位,隨著現

9、代信息技術的飛速發(fā)展和傳統工業(yè)改造的逐步實現 ,能夠獨立工作的溫度檢測和顯示系統已經應用于諸多領域。要達到較高的測量精度需要很好的解決引線誤差補償問題、多點測量切換誤差問題和放大電路零點漂移誤差等問題,使溫度檢測復雜化。模擬信號在長距離傳輸過程中,抗電磁干擾時令設計者傷腦筋的問題,對于多點溫度檢測的場合,各被檢測點到監(jiān)測裝置之間引線距離往往不同,此外,各敏感元件參數的不一致,這些都是造成誤差的原因,并且難以完全清除。</p>

10、<p>  單片機以其功能強、體積小、可靠性高、造價低和開發(fā)周期短等優(yōu)點,成為自動化和各個測控領域中必不可少且廣泛應用的器件,尤其在日常生活中也發(fā)揮越來越大的作用。采用單片機對溫度采集進行控制,不僅具有控制方便、組態(tài)簡單和靈活性大等優(yōu)點,而且可以大幅度提高被控數據的技術指標,從而能夠大大提高產品的質量和數量。</p><p><b>  第二部分</b></p>

11、<p><b>  系統主要功能</b></p><p>  本系統測量的溫度范圍為2-42攝氏度,可以通過數碼管直觀地顯示出當前溫度值。</p><p><b>  第三部分</b></p><p><b>  電路設計與參數選擇</b></p><p><b

12、>  設計原理</b></p><p><b>  圖1</b></p><p>  如圖1所示,當外界溫度變化時,熱敏電阻的阻值隨著發(fā)生變化,熱敏電阻上分得的電壓發(fā)生變化,通過單片機的IO口和集成AD可以獲得熱敏電阻的電壓值為V,通過計算得出熱敏電阻的阻值變化規(guī)律R=V*R1/(5-V)。由于熱敏電阻的阻值與溫度有表1的對應關系,將各對應值用數組形

13、式寫入程序,通過查表便可以得到此時外界的溫度值。</p><p><b>  表1</b></p><p><b>  硬件電路</b></p><p><b>  圖2</b></p><p><b>  元器件選用及連接</b></p>

14、<p><b>  表2</b></p><p>  系統所用的元器件及說明如表2所示。引腳連接安排為:P1.1引腳接熱敏電阻,RST引腳接復位電路,X1、X2連接用來起振,P2.7-P2.4 引腳接數碼管的1、2、3、4,P0.0-P0.7引腳接數碼管的a b c d e f g h和10K的排阻。</p><p><b>  4、硬件選用&l

15、t;/b></p><p><b>  ⒈ 熱敏電阻的選用</b></p><p>  熱敏電阻器的熱敏電阻有電阻值隨溫度升高而升高的正溫度系數(簡稱PTC)熱敏電阻和電阻值隨溫度升高而降低的負溫度系數(簡稱NTC)熱敏電阻。 </p><p>  NTC熱敏電阻器,是一種以過渡金屬氧化物為主要原材料,采用電子陶瓷工藝制成的熱敏半導體陶瓷

16、組件。這種組件的電阻值隨溫度升高而降低,利用這一特性可制成測溫、溫度補償和控溫組件,又可以制成功率型組件,抑制電路的浪涌電流。 </p><p>  電阻溫度特性可以近似地用下式來表示: R= R*EXP[B*(1/T-1/T)] 式中:RT、RN分別表示NTC在溫度T(K)和額定額定溫度TN (K)下的電阻值,單位Ω,T、TN 為溫度,單位K(TN(k)=273.15+TN(℃))。B,稱作B值,NTC熱敏電阻

17、特定的材料常數(Beta)。由于B值同樣是隨溫度而變化的,因此NTC熱敏電阻的實際特性,只能粗略地用指數關系來描述,所以這種方法只能以一定的精度來描述額定溫度或電阻值附近的有限的范圍。 </p><p>  電阻-溫度關系: NTC熱敏電阻器CWF2-502F3950各溫度點的電阻值,即電阻-溫度關系表。NTC熱敏電阻器CWF2-502F3950的測溫范圍為[-55℃,125℃],其電阻值的變化范圍為[25006

18、2Ω,242.64Ω]。如表1所示,列舉了2-42攝氏度的電阻-溫度關系。</p><p>  ⒉ STC12C5A60S2單片機的選用及單片機資源安排</p><p>  2.1 STC12C5A60S2概述</p><p>  本次課程設計核心元件是單片機STC12C5A60S2,下面對STC12C5A60S2做簡單的概述。</p><p&g

19、t;  2.1.1 基本構造</p><p>  STC12C5A60S2單片機中包含中央處理器(CPU)、程序存儲器(Flash)、數據存儲區(qū)(SRAM)、定時/計數器、UART串口、串口2、I/O接口、高速A/D轉換、SPI接口、PCA、看門狗及片內R/C振動器和外部晶振等模塊。STC12C5A60S2系列單片機幾乎包含了數據采集和控制中所需的所有單元模塊,可稱得上一個片內系統。</p><

20、;p>  單片機STC12C5A60S2的基本構造如圖3所示:</p><p><b>  圖3</b></p><p>  2.1.2 性能特點</p><p>  60KB的Flash片內程序存儲器、256字節(jié)的內部隨機存取數據存儲器(RAM)、1024字節(jié)的外部存儲器、1K字節(jié)的數據Flash存儲(EEPROM)、ISP(在系統可編

21、程)/IAP(在應用可編程)、 看門狗、內部集成MAX810專用復位電路、外部掉電檢測電路、時鐘源:外部精度晶體/時鐘,內部R/C振蕩器、4個16位定時器、3個時鐘輸出口、7個外部中斷I/O口、PWM(2路)/PCA(可編程計數器陣列,2路)、A/D轉換,10位精度ADC,共8路.</p><p>  2.1.3 STC12C5A60S2單片機資源利用</p><p>  本次課程設計,主

22、要應用了STC12C5A60S2單片機中中央處理器(CPU)、高速A/D轉換、外部晶振等模塊。</p><p><b>  第四部分</b></p><p>  C語言程序流程圖及代碼 </p><p><b>  主函數流程圖:</b></p><p><b

23、>  AD中斷流程圖:</b></p><p><b>  圖</b></p><p><b>  數碼管顯示 </b></p><p><b>  系統C程序代碼:</b></p><p>  Config.h代碼:</p><p>

24、  #ifndef _CONFIG_H_</p><p>  #define _CONFIG_H_</p><p>  #include <STC.h></p><p>  #define FOSC 12000000L</p><p>  #define ADC_POWER 0x80</p><p>

25、  #define ADC_FLAG0x10</p><p>  #define ADC_START0x08</p><p>  #define ADC_SPEEDLL0x00</p><p>  #define ADC_SPEEDL0x20</p><p>  #define ADC_SPEEDH0x40</p>&

26、lt;p>  #define ADC_SPEEDHH0x60</p><p>  #define ADC_POSITION 1//AD通道位置0-7</p><p>  #define NUX_DATA P0//數碼管段選</p><p>  #define NUX_SEGP2//數碼管位選</p><p>

27、  void Delay_ms(unsigned int ms);//延時函數</p><p>  void InitADC(); //初始化AD功能</p><p><b>  #endif</b></p><p><b>  Main.c代碼:</b></p><p>  #in

28、clude "config.h"</p><p>  unsigned int code Ttable[42][2]={2,257, 3,246, 4,236, 5,225, 6,216, 7,207 8,198 9,190 10,182 11,174 12,167 13,160 14,154 15,148 16,142 17,136 18,131 19,126 20,121 21,116 2

29、2,112 23,107 24,103 25,100 26,96 27,92 28,89 29,86 30,82 31,80 32,77 33,74 34,71 35,69 36,66 37,64 38,62 39,60 40,58 41,56 42,54 43,52 }; // 此數組保存熱敏電阻的溫度值(從2-43攝氏度),超出無效</p><p>  unsigned char code TableDA

30、TA[13]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D,0x7D, 0x07, 0x7F, 0x6F/*0-9*/, 0x00/*無*/, 0x02, 0x39,}</p><p>  //數碼管數字0-9</p><p>  unsigned char code TableSEG [ 4] = {0xEF,0xDF,0xBF,0x7F};</p>

31、<p>  //數碼管位置0-3</p><p>  unsigned char show[4];</p><p><b>  //定義溫度全局 </b></p><p>  /********************************************</p><p>  ** 函數名稱:

32、void Delay_ms(unsigned int ms)</p><p>  ** 功能描述: 延時函數</p><p>  ** 輸  入: unsigned int ms 延時時間</p><p>  ** 輸  出: 無</p><p>  ** 全局變量: 無</p><p>  ** 調用模塊: 無

33、</p><p>  **********************************************/</p><p>  void Delay_ms(unsigned int ms)</p><p><b>  {</b></p><p>  for(;ms>0;ms--);</p>

34、<p><b>  }</b></p><p>  /*****************************************************</p><p>  ** 函數名稱: void adc_isr() interrupt 5</p><p>  ** 功能描述: AD中斷,獲取AD數據</p>

35、<p>  ** 輸  入: 無</p><p>  ** 輸  出: show</p><p>  ** 全局變量: show</p><p>  ** 調用模塊: Delay_ms</p><p>  ********************************************************/<

36、/p><p>  void Adc_isr() interrupt 5</p><p><b>  {</b></p><p>  unsigned char i;</p><p>  unsigned int m;</p><p>  m = ADC_RES;</p><p>

37、;  //計算此時熱敏電阻阻值</p><p>  m = (100*m)/(255-m);</p><p>  //計算此時的溫度值</p><p>  for(i=41;i<42;i--)</p><p><b>  {</b></p><p>  if(m >= Ttable[i

38、][1] && m < Ttable[i-1][1])</p><p><b>  {</b></p><p>  show[0] = (Ttable[i][0]+1)/10;</p><p>  show[1] = (Ttable[i][0]+1)%10;</p><p>  show[2] =

39、11;</p><p>  show[3] = 12;</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  ADC_CONTR = ADC_POWER

40、|ADC_SPEEDLL|ADC_START|ADC_POSITION;//重新使能AD轉換</p><p><b>  }</b></p><p>  /******************************************************</p><p>  ** 函數名稱: void InitADC()</

41、p><p>  ** 功能描述: 初始化AD功能</p><p>  ** 輸  入: 無</p><p>  ** 輸  出: 無</p><p>  ** 全局變量: 無</p><p>  ** 調用模塊: Delay_ms</p><p>  **********************

42、***********************************/</p><p>  void InitADC()</p><p><b>  {</b></p><p>  P1ASF = 0xff;</p><p>  ADC_RES = 0;</p><p>  ADC_CONTR

43、= ADC_POWER|ADC_SPEEDLL|ADC_START|1;//使能P11為AD輸入</p><p>  IE = 0xa0; </p><p>  Delay_ms(20);</p><p><b>  }</b></p><p><b>  main()</b></p

44、><p><b>  {</b></p><p>  unsigned char i,j;</p><p>  InitADC();</p><p><b>  while(1)</b></p><p><b>  {</b></p><

45、p>  for(j=255;j>0;j--)</p><p><b>  {</b></p><p>  for(i=0;i<4;i++)</p><p><b>  //數碼管掃描</b></p><p><b>  {</b></p>&l

46、t;p>  NUX_SEG = TableSEG[3-i];</p><p>  NUX_DATA = TableDATA[show[i]];</p><p>  Delay_ms(100);</p><p>  NUX_DATA = 0x00;</p><p><b>  }</b></p>

47、<p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  第五部分</b></p><p><b>  系統調試與儀器使用</b></p

48、><p>  1、系統調試的儀器選用及其使用</p><p><b>  如表3所示</b></p><p><b>  表3</b></p><p>  2、系統調試及調試故障的檢測與分析</p><p>  第一步 用下載程序的電路板和電腦給單片機下載編寫好的程序</p

49、><p>  第二步 將下載好的單片機安裝在設計的電路板上,給電路板接上5V的電源(接上電源后,數碼管沒有顯示。分析:電路出現短路或者斷路或者連線有誤 ;檢測:用萬用表測量單片機正負引腳有電壓,測量各引腳之間的電阻,核對電路圖及其電路板上的連線,一切正常。分析:電路板焊接無誤,程序出現問題)</p><p>  第三步 在電腦上修改原有的程序,并且將程序下載到下載電路板上,用下載電路板上的熱敏

50、電阻測溫系統進行檢測(修改程序后,數碼管有顯示,但是沒有規(guī)律 分析:程序出現錯誤)</p><p>  第四步 在電腦上繼續(xù)修改原有的程序,并且將程序下載到下載電路板上,用下載電路板上的熱敏電阻測溫系統進行檢測(修改程序后,數碼管有顯示,且運行正常)</p><p>  第五步 將修改好的程序用下載程序的電路板和電腦下載到單片機(數碼管顯示正常,但是與下載電路板上的熱敏電阻測溫系統有1攝氏

51、度的溫度差距,并且顯示的溫度數字不停地左右跳動 分析:實際電路使用的電阻和程序里給定的電阻有差距,A/D轉換掃描的頻率太快;檢測:修改程序,將溫度計算公式加1,減小A/D轉換掃描的頻率)</p><p>  第六步 將修改好的程序用下載程序的電路板和電腦下載到單片機(成功正確顯示)</p><p><b>  第六部分</b></p><p>

52、<b>  測試數據與結果分析</b></p><p><b>  1、測試數據</b></p><p>  ①讓該熱敏電阻測溫系統處于空氣中時,溫度顯示為12攝氏度左右</p><p>  ②當在該熱敏電阻上用吹風機吹冷風時,溫度顯示9攝氏度左右</p><p>  ③當在該熱敏電阻上用吹風機吹熱

53、風時,溫度顯示25攝氏度左右</p><p> ?、苡檬钟|摸該熱敏電阻時,溫度顯示17攝氏度左右</p><p><b>  2、結果分析</b></p><p>  該熱敏電阻測溫系統能夠正常工作,且靈敏度比較高,但是顯示溫度不太穩(wěn)定,會有數據的稍微跳動,總體來說是合格的。</p><p><b>  第七部

54、分</b></p><p><b>  使用說明書</b></p><p><b>  1、使用說明</b></p><p>  該熱敏電阻測溫系統測量溫度在2-42攝氏度范圍內,超出范圍則無效,主要用于室內測溫。該熱敏電阻測溫系統能顯示溫度數據和溫度單位符號,但是只能顯示溫度數據的整數部分,所以不能用于高精度

55、的溫度測量。該熱敏電阻測溫系統所接電源為5V,切記不可接12V等電源,以免燒壞單片機。</p><p>  2、系統軟件和應用軟件列表</p><p>  主要用到的軟件有ISPLAY,PROTEUS,KEIL4</p><p><b>  3、參考資料</b></p><p>  [1] 楊路明.C語言程序設計教程.北

56、京郵電大學出版社</p><p>  [2] 童詩白.模擬電子技術基礎.高等教育出版社</p><p>  [3] 閻石.數字技術基礎第五版.高等教育出版社</p><p>  4、小組成員及所做的工作</p><p>  xxx:負責電路焊接及電路調試與檢測</p><p>  xxx:負責程序編寫及電路調試與檢測&

57、lt;/p><p>  xxx:負責報告編寫及電路調試與檢測</p><p><b>  第八部分</b></p><p><b>  總結</b></p><p>  這次課程設計將單片機與傳感器進行了結合跟進一步想我展示了單片機得強大功能此外還接觸了模數轉換器件,了解了有關AD轉換的知識,同時也溫習

溫馨提示

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

評論

0/150

提交評論