




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、綜合設計:基于DS18B20的智能溫度檢測系統電子系統綜合設計題 目 基于DS18B20的智能溫度檢測系統 學 號 * 姓 名 轉載請注明出處 所 屬 系 機械工程學院 專 業 電子信息工程 班 級 10級電信本一班 指導教師 熊春如 基于DS18B20的智能溫度檢測系統的設計 摘 要在這次設計中,1.用STC89C52控制DS18B20,讀取數據,并對DS18B20轉換后的數據進行處理,最后在數碼管上顯示DS18B20測出的溫度。2.使用4位數碼管顯示,最高位為符號位,如果溫度值為正,不顯示,如果溫度為負,則顯示負號。3.測量的溫度上限到99度,下限超過50度。4.溫度的測量值要精確到小數點
2、的后1位。4.能設置上限溫度和下限溫度值,當被測量溫度在上限溫度和下限溫度值之間時下四位燈全亮代表綠色LED亮,當被測量溫度在上限溫度和下限溫度值之外時上四位燈全亮代表紅色LED亮,并蜂鳴器報警。6.設置的上限溫度和下限溫度值能夠斷電后保存(EEPROM)。7.實現上述功能人機界面簡單。關鍵字:DS18B20; 數碼管; 單片機; 目 錄摘 要11整體設計方案3 1.1系統設計結構圖32智能溫度檢測系統的硬件設計43 智能溫度檢測系統的軟件設計5 3.1 各個程序流程圖5 3.1.1主程序流程圖6 3.1.2 定時器0流程圖6 3.1.3定時器1流程圖7 3.1.4設置上下限流程圖8 3.1.
3、5 led顯示和報警流程圖8 3.1.6獲取溫度值流程圖9 3.1.7按鍵掃描控制流程圖11 3.1.8 按鍵界面顯示流程圖12 3.2智能溫度檢測系統的源程序代碼13 4 系統硬件調試235 總結241整體設計方案1.1 系統設計結構圖根據系統設計的要求和設計思路,確定該系統的系統設計結構圖。如圖2.2所示。硬件電路主要由MCU微處理控制器單元、溫度檢測模塊、四個數碼管顯示模塊,鍵盤控制模塊,LED燈顯示模塊和蜂鳴器響應模塊構成。四個數碼管顯示 MCU微處理控制器單元溫度檢測LED燈顯示按鍵控制蜂鳴器響應 圖1.1 系統結構圖設計 2 智能溫度檢測系統的硬件設計硬件電路圖如下: 3智能溫度檢
4、測系統的軟件設計 3.1 系統的軟件設計也是工具系統功能的設計。各個程序流程圖如下: 開始設置定時器0和1設置上下限溫度值Led掃描和報警判定 按鍵控制掃描 圖3.1.1 主程序流程圖 開始N 定時中斷響應Y次數清零,蜂鳴器響應 結束 圖3.1.2 定時器0中斷函數流程圖 開始 獲取溫度 定時中斷次數 四次 一次N N N N 三次 兩次Y Y Y Y顯示小數,次數清零顯示整數個位顯示整數十位判斷正負號顯示符號位 結束 圖3.1.3 定時器1中斷數碼管顯示程序流程圖 開始 寫入上下限值 復制到EEPROM 結束 圖3.1.4 設置上下限并且復制到EEPROM 開始 上下限之間上四位燈表示的紅燈
5、亮,蜂鳴器響應下四位燈表示的綠燈亮,蜂鳴器不響應Y N 結束 圖3.1.5 Led顯示和報警 開始讀取當前溫度值 整數溫度負數 Y整數部分取反碼加一 N處理并合成整數溫度得到整數溫度取出小數部分溫度值 結束 圖3.1.6 獲取溫度值程序流程圖 開始 N 有鍵按下Y 延時等待 N 確實按下YN N 確定鍵 按下 減鍵 按下 加鍵按下 調節鍵按下 N N 調節鍵次數清零對所調的數減一對所調的數加一兩次 一次調下限值調上限值顯示實時溫度數碼管顯示調節界面 結束 開始 圖3.1.7 按鍵掃描控制程序流程讀出上下限值 是否負數 N Y 反碼加一得到正數的上下限值調上或下限? 調下限 調上限顯示下限溫度值
6、個位顯示下限溫度值十位 判斷 是否負數第一個數管顯下限標志標志顯示上限溫度值個位顯示上限溫度值十位 判斷 是否負數第一個數管顯上限標志標志負數顯示負號標志正數,第二個數碼管消隱負數顯示負號標志正數,第二個數碼管消隱 結束 圖3.1.8 按鍵界面顯示程序流程圖 3.2智能溫度檢測系統的源程序代碼/* 用單片機實現 */* 控制DS18B20并且用四個數碼管顯示實時溫度 */* 可設置上限溫度和下限溫度值并且可報警 */* 設置的上限溫度和下限溫度值能夠斷電后保存(EEPROM) */* 新余學院10屆電信本一班 余巍峰 制作 */* 轉載請注明出處 */#include<reg52.h&g
7、t;#define uchar unsigned char#define uint unsigned int#define wei P2#define duan P0#define led P1sbit DQ=P37;sbit beep=P36;uchar tab2=0xbf,0xff,0xdf,0xfb;/數碼管顯示內容,分別顯示負號標志,消隱,上限標志,下限標志uchar table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/段碼顯示uchar tab1=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x0
8、4,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;/小數表uchar readdat2;/取出溫度存儲的變量數組uchar hc9;char hc0=99;char hc1=-50;uchar flag=0; /負號標志uchar i=0;uchar count=0;uchar m=0; /調上下限的標志位char h; /上限值變量char l; /下限值變量void getwd();void Delay(uint j);void init();uchar readonebyte();void writeonebyte(uchar dat);void dis
9、playled();void displaykey();void displayset();void delay1(uint z);void setlimite(char th,tl);/*/void main()TMOD=0x11;/開兩個定時中斷TH1=-(1000/256);TL1=-(1000%256);TR1=1; /用于掃描顯示實時溫度TR0=0; /用于蜂鳴器報警ET1=1;ET0=1; TH0=-(1000/256);TL0=-(1000%256);EA=1;wei=0xff; setlimite(h,l);/首先設置的上下限溫度值while(1) displayled();
10、displaykey(); /*/void wendu () interrupt 3/定時中斷1服務函數uchar temp;getwd();i+;switch(i)case 1: /判斷是否顯示負號 if(flag=1) temp=tab20; else temp=tab21; wei=0xfe; duan=temp;break;case 2: /顯示整數溫度的十位 temp=hc2;/readdat1/10; wei=0xfd; duan=tabletemp;break;case 3: /顯示整數溫度的個位 temp=hc3;/readdat1%10; wei=0xfb; duan=tab
11、letemp&0x7f;break;case 4: /顯示小數位 temp=hc4;/readdat0; wei=0xf7; duan=tabletemp;break;if(i=4)i=0;TH1=-(1000/256);TL1=-(1000%256);/*/void beep1 () interrupt 1/定時中斷0服務函數 count+;if(count=100)count=0;beep=beep;/蜂鳴器發出警報 TH0=-(1000/256); TL0=-(1000%256);/*/void Delay(uint j)/延時較短的函數while(j-);/*/void ini
12、t()/初始化uchar x;DQ = 1; /DQ復位Delay(8); /稍做延時DQ = 0; /單片機將DQ拉低Delay(80); /精確延時 大于 480usDQ = 1; /拉高總線Delay(14);x=DQ; /稍做延時后 如果x=0則初始化成功 x=1則初始化失敗Delay(20);/*/uchar readonebyte()/讀一個字節uchar i=0;uchar dat=0;for (i=8;i>0;i-)DQ = 0; / 給脈沖信號dat>>=1;DQ = 1; / 給脈沖信號if(DQ)dat|=0x80;Delay(4);return(dat
13、);/*/void writeonebyte(uchar dat)/寫一個字節uchar i=0;for (i=8; i>0; i-)DQ = 0;DQ = dat&0x01;Delay(2);DQ = 1;dat>>=1;/*/void setlimite(char th,tl)/設置上下限溫度值同時把溫度值存入18b20的EEPROM函數 init();writeonebyte(0xcc);writeonebyte(0x4e);/寫入上下限值writeonebyte(th);writeonebyte(tl); init();writeonebyte(0xcc);w
14、riteonebyte(0x48);/把寫入的上下限值復制到EEPROMDelay(20);/*/void getwd()/獲取溫度值函數 uint x,result;char re;init();writeonebyte(0xcc);writeonebyte(0x44); init();writeonebyte(0xcc);writeonebyte(0xbe);/讀取當前的溫度readdat0=readonebyte();readdat1=readonebyte();re=readdat1;if(re&0xf8)!=0)/若溫度為負數,則取反碼加一flag=1;readdat1=re
15、addat1;readdat0=readdat0;result=readdat0+1; readdat0=result;if(result>255)readdat1+;readdat1=readdat1<<4;readdat1=readdat1&0x70;/取出讀取溫度1的低三位有效位,即整數部分的高三位x=readdat0;x=x>>4;x=x&0x0f;/取出讀出溫度2的高四位,即整數部分的低四位readdat1=readdat1|x; /合成整數部分溫度hc1=readdat1/100;hc2=readdat1%100/10;/轉化溫度為可以
16、顯示hc3=readdat1%100%10;readdat0=readdat0&0x0f;/取出小數部分hc4=tab1readdat0;/*/void displayled()/led顯示和報警函數uchar s0;s0=(readdat1>hc1)&&(readdat1<hc0); if(s0)/在上下限之間不報警 beep=1;/關蜂鳴器TR0=0;led=0x0f;/下四位燈全亮表示溫度正常elseled=0xf0;/上四位燈全亮表示溫度不正常,報警 TR0=1;/*/void displaykey()/按鍵檢測和按鍵功能掃描函數 uchar tem
17、; uchar key;h=hc0;l=hc1;key=wei&0xf0;if(key&0xf0)!=0xf0) /如果有鍵按下,則延時等待delay1(100); if(key&0xf0)!=0xf0) switch(key) case 0x70: /按一次,調上限值;按兩次,調下限值m+; TR1=0; if(m=3) m=1; while(key&0xf0!=0xf0); break;case 0xb0: /對當前所調的值加一if(m=1) h+; if(h>99) h=0; if(m=2) l+; if(l>99) l=0; if(l>
18、h|l=h)/如果所調的上下限值相等,則復位 TR0=1; l=-50; h=99; elseTR0=0;beep=1; setlimite(h,l); while(key&0xf0!=0xf0); break; case 0xd0: /對當前所調的值減一if(m=1) h-; if(h<-50) h=0; if(m=2) l-; if(l<-50) l=0; if(l>h|l=h)/如果所調的上下限值相等,則復位 TR0=1; l=-50; h=99; elseTR0=0;beep=1; setlimite(h,l); while(key&0xf0!=0xf
19、0); break; case 0xe0: m=0; /確定調好,返回顯示時間 TR1=1; while(key&0xf0!=0xf0); break; if(TR1=0) displayset();/*/void displayset()/按鍵時數碼管顯示掃描函數 char k,p;uchar a,b,c,d;init();writeonebyte(0xcc);writeonebyte(0x44); init();writeonebyte(0xcc); writeonebyte(0xb8);/把EEPROM中的上下限值復制到暫存器中 init();writeonebyte(0xcc)
20、;writeonebyte(0xbe);/讀取暫存器中的內容hc5=readonebyte();hc6=readonebyte();hc0=readonebyte();/所讀取的上下限溫度值hc1=readonebyte();/if(hc0<0)/p=hc0;p=p;p=p+1;elsep=hc0;a=p/10;b=p%10;if(hc1<0)/若為負數,反碼加一k=hc1; k=k;k=k+1;elsek=hc1;c=k/10;d=k%10;if(m=1)/按一下顯示的上限溫度值 wei=0xfe; duan=tab22;/上限標志delay1(5); wei=0xfd;if(hc0<0)duan=tab20;/若為負值,顯示負號elseduan=tab21;/消隱表示正delay1(5);wei=0xfb; du
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業內部控制規范課程設計與實施
- 民營電廠采購管理辦法
- 基礎學科創新人才培養體系優化研究
- 冶金建設工程管理辦法
- 遞送效率分子工程-洞察及研究
- 石墨烯材料在環保中的應用
- 高校面向未來的產業轉型與發展策略研究與實施
- 加強人員安全教育培訓
- 廣州市安全生產許可證延期
- 咖啡廳員工管理規范與培訓計劃
- 吊頂工程施工培訓講義內容詳細
- 天門山污水處理廠二期擴建項目環境影響報告書
- 婦產科學 妊娠合并心臟病
- -衛生資格-副高-疾病控制-副高-章節練習-慢性非傳染性疾病控制-試題(單選題)(共1125題)
- 骨質疏松病人的護理
- 高中英語全國高考考綱詞匯3600匯總
- GB/T 35068-2018油氣管道運行規范
- GB/T 13277.7-2021壓縮空氣第7部分:活性微生物含量測量方法
- 2023年婁底冷水江市廣播電視臺(融媒體中心)招聘筆試模擬試題及答案解析
- 特勞特戰略定位總裁課程課件
- 陳寶光-TTT課程開發與設計(講義)V2.1
評論
0/150
提交評論