基于ds18b20的智能溫度檢測系統(tǒng)的設(shè)計包含詳細(xì)流程圖和詳細(xì)程序解析_第1頁
基于ds18b20的智能溫度檢測系統(tǒng)的設(shè)計包含詳細(xì)流程圖和詳細(xì)程序解析_第2頁
基于ds18b20的智能溫度檢測系統(tǒng)的設(shè)計包含詳細(xì)流程圖和詳細(xì)程序解析_第3頁
基于ds18b20的智能溫度檢測系統(tǒng)的設(shè)計包含詳細(xì)流程圖和詳細(xì)程序解析_第4頁
基于ds18b20的智能溫度檢測系統(tǒng)的設(shè)計包含詳細(xì)流程圖和詳細(xì)程序解析_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、題 目 基于DS18B20的智能溫度檢測系統(tǒng) 學(xué) 號 * 姓 名 轉(zhuǎn)載請注明出處 所 屬 系 機(jī)械工程學(xué)院 專 業(yè) 電子信息工程 班 級 10級電信本一班 指導(dǎo)教師 熊春如 基于DS18B20的智能溫度檢測系統(tǒng)的設(shè)計 摘 要在這次設(shè)計中,1.用STC89C52控制DS18B20,讀取數(shù)據(jù),并對DS18B20轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行處理,最后在數(shù)碼管上顯示DS18B20測出的溫度。2.使用4位數(shù)碼管顯示,最高位為符號位,如果溫度值為正,不顯示,如果溫度為負(fù),則顯示負(fù)號。3.測量的溫度上限到99度,下限超過50度。4.溫度的測量值要精確到小數(shù)點的后1位。4.能設(shè)置上限溫度和下限溫度值,當(dāng)被測量溫度在上限溫

2、度和下限溫度值之間時下四位燈全亮代表綠色LED亮,當(dāng)被測量溫度在上限溫度和下限溫度值之外時上四位燈全亮代表紅色LED亮,并蜂鳴器報警。6.設(shè)置的上限溫度和下限溫度值能夠斷電后保存(EEPROM)。7.實現(xiàn)上述功能人機(jī)界面簡單。關(guān)鍵字:DS18B20; 數(shù)碼管; 單片機(jī); 目 錄TOC o 1-3 h u HYPERLINK l _Toc311828600 摘 要 PAGEREF _Toc311828600 h 1 HYPERLINK l _Toc311828606 1整體設(shè)計方案3 HYPERLINK l _Toc311828610 1.1系統(tǒng)設(shè)計結(jié)構(gòu)圖3 HYPERLINK l _Toc31

3、1828611 2智能溫度檢測系統(tǒng)的硬件設(shè)計4 HYPERLINK l _Toc311828611 3 智能溫度檢測系統(tǒng)的軟件設(shè)計5 HYPERLINK l _Toc311828612 3.1 各個程序流程圖5 HYPERLINK l _Toc311828613 主程序流程圖6 HYPERLINK l _Toc311828614 3. 定時器0流程圖6 HYPERLINK l _Toc311828615 3.定時器1流程圖7 HYPERLINK l _Toc311828617 3.8 HYPERLINK l _Toc311828618 3. led顯示和報警流程圖8 HYPERLINK l _

4、Toc311828618 3.9 HYPERLINK l _Toc311828618 3.11 HYPERLINK l _Toc311828618 3. 按鍵界面顯示流程圖12 HYPERLINK l _Toc311828620 智能溫度檢測系統(tǒng)的源程序代碼13 HYPERLINK l _Toc311828623 4 系統(tǒng)硬件調(diào)試 PAGEREF _Toc311828623 h 23 HYPERLINK l _Toc311828630 5 總結(jié)241整體設(shè)計方案 系統(tǒng)設(shè)計結(jié)構(gòu)圖根據(jù)系統(tǒng)設(shè)計的要求和設(shè)計思路,確定該系統(tǒng)的系統(tǒng)設(shè)計結(jié)構(gòu)圖。如圖2.2所示。硬件電路主要由MCU微處理控制器單元、溫度檢

5、測模塊、四個數(shù)碼管顯示模塊,鍵盤控制模塊,LED燈顯示模塊和蜂鳴器響應(yīng)模塊構(gòu)成。四個數(shù)碼管顯示四個數(shù)碼管顯示 MCU微處理控制器單元溫度檢測溫度檢測LED燈顯示LED燈顯示按鍵控制按鍵控制蜂鳴器響應(yīng)蜂鳴器響應(yīng) 圖 系統(tǒng)結(jié)構(gòu)圖設(shè)計 2 智能溫度檢測系統(tǒng)的硬件設(shè)計硬件電路圖如下: 3智能溫度檢測系統(tǒng)的軟件設(shè)計 3.1 系統(tǒng)的軟件設(shè)計也是工具系統(tǒng)功能的設(shè)計。各個程序流程圖如下: 開始 開始設(shè)置定時器0和1設(shè)置定時器0和1設(shè)置上下限溫度值設(shè)置上下限溫度值Led掃描和報警判定Led掃描和報警判定 按鍵控制掃描 按鍵控制掃描 圖3.1.1 主程序流程圖 開始 開始N 定時中斷響應(yīng) 定時中斷響應(yīng)Y次數(shù)清零,

6、蜂鳴器響應(yīng)次數(shù)清零,蜂鳴器響應(yīng) 結(jié)束 結(jié)束 圖3.1.2 定時器0中斷函數(shù)流程圖 開始 開始 獲取溫度 獲取溫度 定時中斷次數(shù) 定時中斷次數(shù) 四次 一次N N N N 四次 一次 三次 兩次 三次 兩次Y Y Y Y顯示小數(shù),次數(shù)清零顯示整數(shù)個位顯示整數(shù)十位判斷正負(fù)號顯示符號位顯示小數(shù),次數(shù)清零顯示整數(shù)個位顯示整數(shù)十位判斷正負(fù)號顯示符號位 結(jié)束 結(jié)束 圖3.1.3 定時器1中斷數(shù)碼管顯示程序流程圖 開始 開始 寫入上下限值 寫入上下限值 復(fù)制到EEPROM 復(fù)制到EEPROM 結(jié)束 結(jié)束 圖3.1.4 設(shè)置上下限并且復(fù)制到EEPROM 開始 開始 上下限之間 上下限之間上四位燈表示的紅燈亮,蜂

7、鳴器響應(yīng)下四位燈表示的綠燈亮,蜂鳴器不上四位燈表示的紅燈亮,蜂鳴器響應(yīng)下四位燈表示的綠燈亮,蜂鳴器不響應(yīng) 結(jié)束 結(jié)束 圖3.1.5 Led顯示和報警 開始 開始讀取當(dāng)前溫度值讀取當(dāng)前溫度值 整數(shù)溫度負(fù)數(shù) 整數(shù)溫度負(fù)數(shù) Y整數(shù)部分取反碼加一 N整數(shù)部分取反碼加一處理并合成整數(shù)溫度得到整數(shù)溫度處理并合成整數(shù)溫度得到整數(shù)溫度取出小數(shù)部分溫度值取出小數(shù)部分溫度值 結(jié)束 結(jié)束 圖3.1.6 獲取溫度值程序流程圖 開始 開始 N 有鍵按下 有鍵按下Y 延時等待 延時等待 N 確實按下 確實按下YN N 確定鍵 按下 減鍵 按下 加鍵按下 調(diào)節(jié)鍵按下 N N 確定鍵 按下 減鍵 按下 加鍵按下 調(diào)節(jié)鍵按下

8、調(diào)節(jié)鍵次數(shù)清零對所調(diào)的數(shù)減一對所調(diào)的數(shù)加一調(diào)節(jié)鍵次數(shù)清零對所調(diào)的數(shù)減一對所調(diào)的數(shù)加一兩次 一次兩次 一次調(diào)下限值調(diào)上限值調(diào)下限值調(diào)上限值顯示實時溫度數(shù)碼管顯示調(diào)節(jié)界面顯示實時溫度數(shù)碼管顯示調(diào)節(jié)界面 結(jié)束 結(jié)束 開始 圖3.1.7 按鍵掃描控制程序流程開始讀出上下限值讀出上下限值 是否負(fù)數(shù) 是否負(fù)數(shù) N Y 反碼加一 反碼加一得到正數(shù)的上下限值得到正數(shù)的上下限值調(diào)上或下限?調(diào)上或下限? 調(diào)下限 調(diào)下限 調(diào)上限 調(diào)上限顯示下限溫度值個位顯示下限溫度值十位 判斷 是否負(fù)數(shù)第一個數(shù)管顯下限標(biāo)志標(biāo)志顯示上限溫度值個位顯示上限溫度值十位 判斷 是否負(fù)數(shù)第一個數(shù)管顯上限標(biāo)志標(biāo)志顯示下限溫度值個位顯示下限溫度

9、值十位 判斷 是否負(fù)數(shù)第一個數(shù)管顯下限標(biāo)志標(biāo)志顯示上限溫度值個位顯示上限溫度值十位 判斷 是否負(fù)數(shù)第一個數(shù)管顯上限標(biāo)志標(biāo)志負(fù)數(shù)顯示負(fù)號標(biāo)志正數(shù),第二個數(shù)碼管消隱負(fù)數(shù)顯示負(fù)號標(biāo)志正數(shù),第二個數(shù)碼管消隱負(fù)數(shù)顯示負(fù)號標(biāo)志正數(shù),第二個數(shù)碼管消隱負(fù)數(shù)顯示負(fù)號標(biāo)志正數(shù),第二個數(shù)碼管消隱 結(jié)束 結(jié)束 圖3.1.8 按鍵界面顯示程序流程圖 的源程序代碼/* 用單片機(jī)實現(xiàn) */* 控制DS18B20并且用四個數(shù)碼管顯示實時溫度 */* 可設(shè)置上限溫度和下限溫度值并且可報警 */* 設(shè)置的上限溫度和下限溫度值能夠斷電后保存(EEPROM) */* 新余學(xué)院10屆電信本一班 余巍峰 制作 */* 轉(zhuǎn)載請注明出處 *

10、/#include#define uchar unsigned char#define uint unsigned int#define wei P2#define duan P0#define led P1sbit DQ=P37;sbit beep=P36;uchar tab2=0 xbf,0 xff,0 xdf,0 xfb;/數(shù)碼管顯示內(nèi)容,分別顯示負(fù)號標(biāo)志,消隱,上限標(biāo)志,下限標(biāo)志uchar table=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;/段碼顯示uchar tab1=0 x00,0 x01,0 x01

11、,0 x02,0 x03,0 x03,0 x04,0 x04,0 x05,0 x06,0 x06,0 x07,0 x08,0 x08,0 x09,0 x09;/小數(shù)表uchar readdat2;/取出溫度存儲的變量數(shù)組uchar hc9;char hc0=99;char hc1=-50;uchar flag=0; /負(fù)號標(biāo)志uchar i=0;uchar count=0;uchar m=0; /調(diào)上下限的標(biāo)志位char h; /上限值變量char l; /下限值變量void getwd();void Delay(uint j);void init();uchar readonebyte();

12、void writeonebyte(uchar dat);void displayled();void displaykey();void displayset();void delay1(uint z);void setlimite(char th,tl);/*/void main()TMOD=0 x11;/開兩個定時中斷TH1=-(1000/256);TL1=-(1000%256);TR1=1; /用于掃描顯示實時溫度TR0=0; /用于蜂鳴器報警ET1=1;ET0=1; TH0=-(1000/256);TL0=-(1000%256);EA=1;wei=0 xff; setlimite(h

13、,l);/首先設(shè)置的上下限溫度值while(1) displayled(); displaykey(); /*/void wendu () interrupt 3/定時中斷1服務(wù)函數(shù)uchar temp;getwd();i+;switch(i)case 1: /判斷是否顯示負(fù)號 if(flag=1) temp=tab20; else temp=tab21; wei=0 xfe; duan=temp;break;case 2: /顯示整數(shù)溫度的十位 temp=hc2;/readdat1/10; wei=0 xfd; duan=tabletemp;break;case 3: /顯示整數(shù)溫度的個位

14、temp=hc3;/readdat1%10; wei=0 xfb; duan=tabletemp&0 x7f;break;case 4: /顯示小數(shù)位 temp=hc4;/readdat0; wei=0 xf7; duan=tabletemp;break;if(i=4)i=0;TH1=-(1000/256);TL1=-(1000%256);/*/void beep1 () interrupt 1/定時中斷0服務(wù)函數(shù) count+;if(count=100)count=0;beep=beep;/蜂鳴器發(fā)出警報 TH0=-(1000/256); TL0=-(1000%256);/*/void De

15、lay(uint j)/延時較短的函數(shù)while(j-);/*/void init()/初始化uchar x;DQ = 1; /DQ復(fù)位Delay(8); /稍做延時DQ = 0; /單片機(jī)將DQ拉低Delay(80); /精確延時 大于 480usDQ = 1; /拉高總線Delay(14);x=DQ; /稍做延時后 如果x=0則初始化成功 x=1則初始化失敗Delay(20);/*/uchar readonebyte()/讀一個字節(jié)uchar i=0;uchar dat=0;for (i=8;i0;i-)DQ = 0; / 給脈沖信號dat=1;DQ = 1; / 給脈沖信號if(DQ)d

16、at|=0 x80;Delay(4);return(dat);/*/void writeonebyte(uchar dat)/寫一個字節(jié)uchar i=0;for (i=8; i0; i-)DQ = 0;DQ = dat&0 x01;Delay(2);DQ = 1;dat=1;/*/void setlimite(char th,tl)/設(shè)置上下限溫度值同時把溫度值存入18b20的EEPROM函數(shù) init();writeonebyte(0 xcc);writeonebyte(0 x4e);/寫入上下限值writeonebyte(th);writeonebyte(tl); init();writ

17、eonebyte(0 xcc);writeonebyte(0 x48);/把寫入的上下限值復(fù)制到EEPROMDelay(20);/*/void getwd()/獲取溫度值函數(shù) uint x,result;char re;init();writeonebyte(0 xcc);writeonebyte(0 x44); init();writeonebyte(0 xcc);writeonebyte(0 xbe);/讀取當(dāng)前的溫度readdat0=readonebyte();readdat1=readonebyte();re=readdat1;if(re&0 xf8)!=0)/若溫度為負(fù)數(shù),則取反碼加

18、一flag=1;readdat1=readdat1;readdat0=readdat0;result=readdat0+1; readdat0=result;if(result255)readdat1+;readdat1=readdat14;x=x&0 x0f;/取出讀出溫度2的高四位,即整數(shù)部分的低四位readdat1=readdat1|x; /合成整數(shù)部分溫度hc1=readdat1/100;hc2=readdat1%100/10;/轉(zhuǎn)化溫度為可以顯示hc3=readdat1%100%10;readdat0=readdat0&0 x0f;/取出小數(shù)部分hc4=tab1readdat0;/*

19、/void displayled()/led顯示和報警函數(shù)uchar s0;s0=(readdat1hc1)&(readdat199) h=0; if(m=2) l+; if(l99) l=0; if(lh|l=h)/如果所調(diào)的上下限值相等,則復(fù)位 TR0=1; l=-50; h=99; elseTR0=0;beep=1; setlimite(h,l); while(key&0 xf0!=0 xf0); break; case 0 xd0: /對當(dāng)前所調(diào)的值減一if(m=1) h-; if(h-50) h=0; if(m=2) l-; if(lh|l=h)/如果所調(diào)的上下限值相等,則復(fù)位 TR

20、0=1; l=-50; h=99; elseTR0=0;beep=1; setlimite(h,l); while(key&0 xf0!=0 xf0); break; case 0 xe0: m=0; /確定調(diào)好,返回顯示時間 TR1=1; while(key&0 xf0!=0 xf0); break; if(TR1=0) displayset();/*/void displayset()/按鍵時數(shù)碼管顯示掃描函數(shù) char k,p;uchar a,b,c,d;init();writeonebyte(0 xcc);writeonebyte(0 x44); init();writeonebyte

21、(0 xcc); writeonebyte(0 xb8);/把EEPROM中的上下限值復(fù)制到暫存器中 init();writeonebyte(0 xcc);writeonebyte(0 xbe);/讀取暫存器中的內(nèi)容hc5=readonebyte();hc6=readonebyte();hc0=readonebyte();/所讀取的上下限溫度值hc1=readonebyte();/if(hc00)/p=hc0;p=p;p=p+1;elsep=hc0;a=p/10;b=p%10;if(hc10)/若為負(fù)數(shù),反碼加一k=hc1; k=k;k=k+1;elsek=hc1;c=k/10;d=k%10;if(m=1)/按一下顯示的上限溫度值 wei=0 xfe; duan=tab22;/上限標(biāo)志delay1(5); wei=0 xfd;if(hc00)duan=tab20;/若為負(fù)值,顯示負(fù)

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論