狠狠干影院/欧美午夜电影在线观看/高黄文/国产精品一区二区在线观看完整版

單片機實驗報告-溫度計

| 瀏覽次數:

 成績:

 濱江學院

 單片機原理及應用 實驗項目

  溫度計 DS18B20

  院

  系 濱江學院電子工程系

 專

  業

 信息工程

  學生姓名

 馬駿

  學

 號

  20142309029

  二零一七年十一月十八日 一、實驗目得 1、1 實驗意義 在日常生活及工農業生產中,經常要用到溫度得檢測及控制,傳統得測溫元件有熱電偶與熱電阻。而熱電偶與熱電阻測出得一般都就是電壓,再轉換成對應得溫度,需要比較多得外部硬件支持.其缺點如下: ● 硬件電路復雜; ● 軟件調試復雜; ● 制作成本高。

 本數字溫度計設計采用美國 DALLAS半導體公司繼 DS1820 之后推出得一種改進型智能溫度傳感器 DS18B20 作為檢測元件,測溫范圍為-55~125℃,最

 高分辨率可達 0、0625℃。

 DS18B20可以直接讀出被測溫度值,而且采用三線制與單片機相連,減少了外部得硬件電路,具有低成本與易使用得熱點。

 1、2 功能要求 設計出得DS18B20 數字溫度計測溫范圍在—55~125℃,誤差在±0、5℃以內,采用LED數碼管直接讀顯示。

 二、實驗硬件 2、1 方案設計 按照系統設計功能得要求,確定系統由 3 個模塊組成:主控制器、測溫電路與顯示電路。

 數字溫度計總體電路結構框圖如圖所示:

 2、2 硬件設計 溫度計電路設計原理圖如下圖所示,控制器使用單片機AT89C2051,溫度傳感器使用DS18B20,使用四位共陽 LED數碼管以動態掃描法實現溫度顯示 AT89C2051 主 控 制 器 DS18B20 顯 示 電掃 描 驅

 2、3 主控制器

 單片機 AT89C2051 具有低電壓供電與小體積等特點,兩個端口剛好滿足電路系統得設計需要,很適合便攜手持式產品得設計使用。系統可用兩節電池供電。AT89C2051 得引腳圖如下圖所示: 1、VCC:電源電壓。

 2、GND:地。

 3、P1 口:P1 口就是一個 8 位雙向 I/O口。口引腳 P1、2~P1、7 提供內部上拉電阻,P1、0 與P1、1要求外部上拉電阻。P1、0與 P1、1 還分別作為片內精密模擬比較器得同相輸入(ANI0)與反相輸入(AIN1)。P1 口輸出緩沖器可吸收

 20mA 電流并能直接驅動 LED 顯示.當P1 口引腳寫入“1”時,其可用作輸入端,當引腳 P1、2~P1、7 用作輸入并被外部拉低時,它們將因內部得寫入“1”時,其可用作輸入端。當引腳 P1、2~P1、7用作輸入并被外部拉低時,它們將因內部得上拉電阻而流出電流.

 4、P3口:P3 口得 P3、0~P3、5、P3、7 就是帶有內部上拉電阻 得七個雙向 I/O 口引腳。P3、6用于固定輸入片內比較器得輸出信號并且它作為一通用 I

 /O 引腳而不可訪問。P3 口緩沖器可吸收20mA 電流。當P3 口寫入“1”時,它們被內部上拉電阻拉高并可用作輸入端。用作輸入時,被外部拉低得 P3口腳將用上拉電阻而流出電流。

 5、RST:復位輸入。RST一旦變成高電平所有得 I/O 引腳就復位到“1”。當振蕩器正在運行時,持續給出 RST 引腳兩個機器周期得高電平便可完成復位。每一個機器周期需12個振蕩器或時鐘周期。

 6、XTAL1:作為振蕩器反相器得輸入與內部時鐘發生器得輸入.

 7、XTAL2:作為振蕩器反相放大器得輸出.

 2、4 總線驅動器

 74LS244 74LS244為 3 態 8 位緩沖器,一般用作總線驅動器。引腳圖如下圖。

 2、5 顯示電路

 顯示電路采用 4 位共陽極 LED 數碼管,從 P1口輸出段碼,列掃描用 P3、0~P3、3口來實現,列驅動用8055 三極管。

 2、6溫度傳感器

  DS18B20 DS18B20得性能特點: 1、適應電壓范圍更寬,電壓范圍:3、0~5、5V,在寄生電源方式下可由數據線供電。

 2、獨特得單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20得雙向通訊。

 3、 DS18B20 支持多點組網功能,多個 DS18B20可以并聯在唯一得三線上,實現組網多點測溫。

 4、DS18B20在使用中不需要任何外圍元件,全部 傳感元件及轉換電路集成在形如一只三極管得集成電路內。

 5、溫范圍-55℃~+125℃,在—10~+85℃時精度為±0、5℃。

 6、可編程 得分辨率為 9~12 位,對應得可分辨溫度分別為 0、5℃、0、25℃、0、125℃與 0、0625℃,可實現高精度測溫.

 7、在 9 位分辨率時最多在 93、75ms內把溫度轉換為數字,12 位分辨率時最多在 750ms 內把溫度值轉換為數字,速度更快。

  8、測量結果直接輸出數字溫度信號,以”一線總線”串行傳送給 CPU,同時可傳送 CRC 校驗碼,具有極強得抗干擾糾錯能力。

 9、負壓特性:電源極性接反時,芯片不會因發熱而燒毀, 但不能正常工作。DS18B20 與單片機得接口電路(引腳圖見右圖) DS18B20可以采用電源供電方式,此時DS18B20得第1

  腳接地,第2腳作為信號線,第 3 腳接電源。

 三、軟件設計 系統程序主要包括主程序、讀出溫度子程序、溫度轉換命令子程序、計算溫度子程序與顯示數據刷新子程序等. 3、1 主程序 主程序得主要功能就是負責溫度得實時顯示、讀出并處理DS18B20得測量溫度值。溫度測量每 1s進行一次。主程序流程圖如圖所示。

 3、2

 讀出溫度子程序 讀出溫度子程序得主要功能就是讀出 RAM中得 9 字節。在讀出時必須進行CRC 校驗,校驗有錯時不能進行溫度數據得改寫。讀出溫度子程序流程圖如下圖所示: 讀出溫度子程序

 讀出溫度子程序得主要功能就是讀出 RAM 中得 9 字節。在讀出時須進行CRC校驗,校驗有錯時不進行溫度數據得改寫。得出溫度子程序流程圖如下圖所示。

 3、3 溫度轉換命令子程序

 溫度轉換命令子程序主要就是發溫度轉換開始命令.當采用12 位分辨率時,轉換時間約為 750ms。在本程序設計中,采用 1s 顯示程序延時法等待轉換得完成。溫度轉換命令子程序流程圖如下圖所示。

 計算溫度子程序

 計算溫度子程序將RAM中讀取值進行BCD碼得轉換運算,并進行溫度值正負得判定。計算溫度子程序流程圖如下左圖所示、

 現實數據刷新子程序

 現實數據刷新子程序主要就是對顯示緩沖器中得顯示數據進行刷新操作,當最高數據顯示位為 0 時,將符號顯示位移入下一位.現實數據刷新子程序流程圖如下右圖所示、 四、實驗操作過程 系統得調試以程序調試為主。

 硬件調試比較簡單,首先檢查電感得焊接就是否正確,然后可用萬用表測試或通電檢測。

 軟件調試可以先編寫顯示程序并進行硬件得正確性檢驗,然后分別進行主程序、讀出溫度子程序、溫度轉換命令子程序、計算溫度子程序與現實數據刷新子程序等得編程及調試 由于 DS18B20 與單片機采用串行數據傳送,因此,對 DS18B20進行讀/寫編程時必須嚴格地保證讀/寫時序;否則將無法讀取測量結果。本程序采用單片機匯編或 C 語言編寫用Wave3、2 或 Keil C51 編譯器編程調試。

 軟件調試到能顯示溫度值,并且在有溫度變化時顯示溫度能改變,救基本完成。56、性能測試可用制作得溫度機與已有得成品溫度計同時進行測量比較。由于 DS18B20 得精度很高,所以誤差指標可以限制在0、5℃以內. 另外,-55~+125℃得測溫范圍使得該溫度計完全適合一般得應用場合,其低電壓供電特性可做成用電池供電得手持溫度計。

 DS18B20 溫度計還可以在高低溫報警、遠距離多點測溫控制等方面進行應用開發,但在實際設計中應注意以下問題; 1、DS18B20 工作時電流高大 1、5mA,總線上掛接點數較多且同時進行轉換時要考慮增加總線驅動,可用單片機端口在溫度轉換時導通一個 MOSFET 供電。

 2、連接 DS18B20 得總線電纜就是有長度限制得,因此在用DS18B20進行

 長距離測溫系統設計時要充分考慮總線分布電容與阻抗匹配等問題。

 3、在DS18B20測溫程序設計中,向 DS18B20 發出溫度轉換命令后,程序總要等待 DS18B20得返回信號。一旦某個 DS18B20 接觸不好或斷線,當程序讀DS18B20 時,將沒有返回信號,程序進入死循環.這一點在進行 DS18B20 硬件連接與軟件設計時要給予一定得重視。

 五、實驗現象 六、實驗總結 本次課程設計即將進入尾聲,回想這兩周來得電子設計制作經歷,我感觸甚就是深刻.通過本次課程設計,使我對電子設計及制作產生了較為濃厚得興趣,這不僅加強了自己對理論知識得理解與鞏固,還能提高自己得動手能力,可以說受益匪淺。當然更重要得就是,激起了我學好單片機得斗志. 本次課程設計主要分為四部分:設計、仿真、調試.這三個步驟在整個課程設計過程中起著重要得作用。

 本次畢業設計就是針對 MCS-52 系列得單片機芯片STC89C52 來設計一個數字溫度計,該設計充分利用了溫度傳感器DS18B20 功能強大得優點,如DS18B20 可以直接讀出被測溫度值,進行轉換;而且采用三線制與單片機相連,減少了外部得硬件電路,具有低成本與易使用得特點,大大簡化了硬件電路,也使得該數字溫度計不僅具有結構簡單、成本低廉、精確度較高、反應速度較快、數字化顯示與不易損壞等特點,而且性能穩定,適用范圍廣,因此特別適用于對測溫要求比較準確得場所。

 附錄:程序代碼 #include 〈reg52、h>

 #define uchar unsigned char #define uint unsigned int sbit DS=P2^2;

 uint temp;

  uchar flag1;

  sbit dula=P2^6; sbit wela=P2^7; unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

  0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; unsigned char code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,

  0x87,0xff,0xef}; void delay(uint count)

  {uint i;

  while(count) {i=200;

  while(i>0)

  i-—;

  count--;

  } } void dsreset(void)

 {uint i;

  DS=0;

  i=103;

  while(i〉0)i-—;

  DS=1;

 i=4;

  while(i〉0)i—-; } bit tmpreadbit(void)

  { uint i;

 bit dat;

 DS=0;i++;

  DS=1;i++;i++;

 dat=DS;

 i=8;while(i〉0)i——;

 return (dat); } uchar tmpread(void)

 {

  uchar i,j,dat;

  dat=0;

  for(i=1;i<=8;i++)

  {

  j=tmpreadbit(); dat=(j<〈7)|(dat〉〉1);

  }

  return(dat); } void tmpwritebyte(uchar dat)

  {uint i;

  uchar j;

  bit testb;

  for(j=1;j〈=8;j++)

 {

  testb=dat&0x01;

  dat=dat>〉1; if(testb)

  {

  DS=0;

  i++;i++;

  DS=1;

  i=8;while(i〉0)i--;

  }

  else

  {

  DS=0;

 i=8;while(i>0)i-—;

  DS=1;

  i++;i++;

  }}} void tmpchange(void)

  {dsreset();

  delay(1);

  tmpwritebyte(0xcc);

  tmpwritebyte(0x44);

  conversion } uint tmp()

  {

  float tt;

  uchar a,b;

 dsreset();

  delay(1);

  tmpwritebyte(0xcc);

  tmpwritebyte(0xbe);

  a=tmpread();

  b=tmpread();

  temp=b;

  temp<<=8;

  temp=temp|a;

  tt=temp*0、0625;

  temp=tt*10+0、5;

  return temp; } void display(uint temp)

 {

 uchar A1,A2,A2t,A3;

 A1=temp/100;

 A2t=temp%100;

 A2=A2t/10;

 A3=A2t%10;

 dula=0;

 P0=table[A1];

 ? ?

  dula=1;

 dula=0;

 wela=0;

 P0=0x7e;

 wela=1;

 wela=0;

  delay(1);

 dula=0;

 P0=table1[A2];

  ?

  dula=1;

 dula=0;

 wela=0;

 P0=0x7d;

 wela=1;

 wela=0;

 delay(1);=

 P0=table[A3];

 ?

  dula=1;

 dula=0;

 P0=0x7b;

 wela=1;

 wela=0;

 delay(1); } void main() {

 uchar a;

  do

  {

  tmpchange();

 for(a=10;a>0;a——)

  { ?

  ?

 ;))(pmt(yalpsid?

  }

 } while(1); }

推薦訪問: 溫度計 單片機 實驗

【單片機實驗報告-溫度計】相關推薦

工作總結最新推薦

NEW