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

單片機實驗報告-溫度計

| 瀏覽次數(shù):

 成績:

 濱江學(xué)院

 單片機原理及應(yīng)用 實驗項目

  溫度計 DS18B20

  院

  系 濱江學(xué)院電子工程系

 專

  業(yè)

 信息工程

  學(xué)生姓名

 馬駿

  學(xué)

 號

  20142309029

  二零一七年十一月十八日 一、實驗?zāi)康?1、1 實驗意義 在日常生活及工農(nóng)業(yè)生產(chǎn)中,經(jīng)常要用到溫度得檢測及控制,傳統(tǒng)得測溫元件有熱電偶與熱電阻。而熱電偶與熱電阻測出得一般都就是電壓,再轉(zhuǎn)換成對應(yīng)得溫度,需要比較多得外部硬件支持.其缺點如下: ● 硬件電路復(fù)雜; ● 軟件調(diào)試復(fù)雜; ● 制作成本高。

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

 高分辨率可達 0、0625℃。

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

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

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

 數(shù)字溫度計總體電路結(jié)構(gòu)框圖如圖所示:

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

 2、3 主控制器

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

 2、GND:地。

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

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

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

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

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

 6、XTAL1:作為振蕩器反相器得輸入與內(nèi)部時鐘發(fā)生器得輸入.

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

 2、4 總線驅(qū)動器

 74LS244 74LS244為 3 態(tài) 8 位緩沖器,一般用作總線驅(qū)動器。引腳圖如下圖。

 2、5 顯示電路

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

 2、6溫度傳感器

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

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

 3、 DS18B20 支持多點組網(wǎng)功能,多個 DS18B20可以并聯(lián)在唯一得三線上,實現(xiàn)組網(wǎng)多點測溫。

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

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

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

 7、在 9 位分辨率時最多在 93、75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12 位分辨率時最多在 750ms 內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快。

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

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

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

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

 3、2

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

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

 3、3 溫度轉(zhuǎn)換命令子程序

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

 計算溫度子程序

 計算溫度子程序?qū)AM中讀取值進行BCD碼得轉(zhuǎn)換運算,并進行溫度值正負得判定。計算溫度子程序流程圖如下左圖所示、

 現(xiàn)實數(shù)據(jù)刷新子程序

 現(xiàn)實數(shù)據(jù)刷新子程序主要就是對顯示緩沖器中得顯示數(shù)據(jù)進行刷新操作,當(dāng)最高數(shù)據(jù)顯示位為 0 時,將符號顯示位移入下一位.現(xiàn)實數(shù)據(jù)刷新子程序流程圖如下右圖所示、 四、實驗操作過程 系統(tǒng)得調(diào)試以程序調(diào)試為主。

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

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

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

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

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

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

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

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

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

 附錄:程序代碼 #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); }

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

【單片機實驗報告-溫度計】相關(guān)推薦

工作總結(jié)最新推薦

NEW