環(huán)境溫度監(jiān)測系統(tǒng)_第1頁
環(huán)境溫度監(jiān)測系統(tǒng)_第2頁
環(huán)境溫度監(jiān)測系統(tǒng)_第3頁
環(huán)境溫度監(jiān)測系統(tǒng)_第4頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、.課題三、環(huán)境溫度監(jiān)測系統(tǒng)一、設計要求環(huán)境溫度監(jiān)測系統(tǒng)廣泛地用于住宅小區(qū)、樓宇建筑和設備內(nèi)部等。其主要功能和指標如下:1、可以監(jiān)測8 點環(huán)境溫度信號,可以擴充;2、測量范圍為0.00 99.9 ,可以擴充到55 125,精度為±0.5 ;3、用 4 位數(shù)碼管進行循環(huán)顯示,其中最高位顯示通道提示符A H,低 3 位顯示實際溫度值,每秒切換一個通道進行輪流顯示;4、 可以隨時查看指定通道的溫度值(擴充功能)。二、設計指導1、方案選擇該系統(tǒng)主要由溫度檢測和數(shù)據(jù)采集兩部分組成。下面列舉兩種實現(xiàn)方案:方案一:溫度檢測可以使用低溫熱偶或鉑電阻,數(shù)據(jù)采集部分則使用帶有A/D 通道的單片機??紤]到一

2、般的A/D 輸入通道都只能接收大信號,所以還應設計相應的放大電路。此方案的軟件簡單,但硬件復雜,且檢測點數(shù)追加時,成本會有較大增長幅度。方案二:使用單片機和單總線溫度傳感器構(gòu)成。單總線溫度傳感器可以采用DALLAS公司生產(chǎn)的 DS18B20系列,這類溫度傳感器直接輸出數(shù)字信號,且多路溫度傳感器可以掛在1 條總線上,共同占用單片機的1 條 I/O 線即可實現(xiàn)接口。在提升單片機I/O 線驅(qū)動能力的前提下,理論上可以任意擴充檢測的溫度點數(shù)。比較兩個方案后可以發(fā)現(xiàn),方案二更適合于用作本系統(tǒng)的實施方案。盡管方案二不需要A/D,但考慮到系統(tǒng)擴充等因素,單片機可以選用 ADuc812,以便于在需要的時候擴充

3、參數(shù)存儲、 D/A 輸出、溫度控制等功能。2、 硬件設計采用方案二的硬件設計比較簡單,系統(tǒng)構(gòu)成如圖1 所示,原理圖如圖5 所示。單片機的'.P0 口用作 4 位數(shù)碼管的段碼線,P3.4 P3.7 用作 4 位數(shù)碼管的位選線( ADuc812的 P3 有允許8mA 的灌電流,可以不加驅(qū)動)。P2.4 用作 DS18B20的數(shù)據(jù)輸入 / 輸出線。圖 1溫度監(jiān)測系統(tǒng)組成框圖DS18B20的引腳定義和封裝形式之一如圖2 所示。 DQ為數(shù)字信號輸入/ 輸出端; GND為電源地; VDD為外接電源。DS18B20的光刻 ROM中存有 64 位序列號,它可以看作是該 DS18B20的地址序列碼。 6

4、4 位光刻 ROM的排列是:開始 8 位( 28H)是產(chǎn)品類型標號,接著的48位是該 DS18B20自身的序列號,最后8 位是前面 56位的循環(huán)冗余校驗碼( CRC=X8+X5+X4+1)。光刻 ROM的作用是使每一個 DS18B20擁有惟一的地址序列碼,圖 2 DS18B20 引腳與封裝以確保在一根總線上掛接多個DS18B20。DS18B20內(nèi)部集成了暫存寄存器(或稱為暫存RAM)和 EEPROM兩類存儲器。暫存RAM為 9個字節(jié),其地址分配及其相關(guān)說明如表1 所示。單片機通過命令實現(xiàn)對DS18B20的控制, 其支持的主要命令如表2 所示。 DS18B20的復位操作、 讀寫操作都必須遵從嚴格

5、的時序,其復位時序、 讀寫時序分別如圖 3 和圖 4 所示。關(guān)于DS18B20的詳細介紹和使用方法可以參考其數(shù)據(jù)手冊。表 1 DS18B20 暫存 RAM地址分配及其說明地寄存器名稱說明址溫度低字節(jié)0溫度測量值的低8 位,即 b7 b6 b5 b4 b3 b2 b1 b0溫度高字節(jié)1溫度測量值的高3 位及符號位,即S S S S S b10 b9 b8'.溫度高限2溫度報警上限,也可以用作自定義字節(jié)溫度高限3溫度報警下限,也可以用作自定義字節(jié)配置寄存器4格式為 0R1R011111, R1和 R0為 00、 01、 10、 11 對應的分辨率分別為 9、10、 11 和 12 位(包括

6、符號位)保留5未定義保留6未定義保留7未定義校驗碼8按 X8X5 X4 1 對前 8 個字節(jié)進行 CRC校驗表 2 DS18B20 主要命令及其功能說明命令碼功能說明命令碼功能說明33H讀 ROM中的 64 位地址序列碼BEH讀 9 字節(jié)暫存寄存器只有地址碼匹配的DS18B2 才能寫入溫度上 / 下限,緊隨其后是255H4EH接受后續(xù)的命令字節(jié)數(shù)據(jù),對應上限和下限值鎖定總線上DS18B20的個數(shù)和識將 9 字節(jié)暫存寄存器的第3 和 4F0H48H別其 ROM中的 64 位地址序列碼字節(jié)復制到 EEPROM中只 有 溫 度 超 過 上 限 或 下 限 的將 EEPROM的內(nèi)容恢復到暫存寄ECHB

7、8HDS18B20才做出響應存器的第 3 和 4 字節(jié)'.讀供電模式,寄生供電時啟動 DS18B20進行溫度轉(zhuǎn)換,結(jié)44HB4HDS18B20 發(fā)送0 ,外接電源時果存入 9 字節(jié)的暫存寄存器DS18B20發(fā)送 1C 忽略地址序列碼,適合單片CHDS18B20圖 3 DS18B20 復位時序圖 4 DS18B20 讀/ 寫讀時序'.圖 5 系統(tǒng)原理圖3 、 軟件設計1、 軟件模塊的劃分該系統(tǒng)的控制軟件可以分為單片機初始化程序、定時中斷服務 程序和 DS18B20接口程序 等模塊。單片機初始化程序由主函數(shù)實現(xiàn),主要完成定時器T0、 T1 的初始化、 中斷系統(tǒng)的初始化等功能。定時器

8、 T0(p3.4) 中斷函數(shù)每隔 5ms執(zhí)行 1 次,動態(tài)顯示 1 位數(shù)碼管;定時器 T1(p 3.5) 中斷函數(shù)每隔 50ms中斷 1 次,每中斷 20 次( 1 秒)即讀取 1 路 DS18B20的溫度代碼,轉(zhuǎn)換為溫度值,再拆分成單個數(shù)碼后送入顯示緩沖區(qū)。DS18B20接口程序主要由復位函數(shù) 、讀位函數(shù) 、讀字節(jié)函數(shù) 、寫位函數(shù) 、寫字節(jié)函數(shù) 、讀溫度函數(shù) 等組成。2、 參考程序#include <aduc812.h>#include <intrins.h>sbit led0=P34;/P3.4 P3.7 用作 4 位 LED 的位選線'.sbit led1

9、=P35;sbit led2=P36;sbit led3=P37;sbit DQ = P24;/P2.4 用作 DS18B20 的數(shù)據(jù)線 DQfloat data TMP2=0,0;/ 讀取后的 2 個溫度值 ,將其除以 2 即可得出實際溫度;?unsigned char data f2=0,0;/ 結(jié)果是否為負溫,"0" 為正溫 ,"1" 為負溫。unsigned char data disp_buf4=0,0,0,0; /4位數(shù)碼管對應的值放入該緩沖區(qū)unsigned char data dot_position=0;unsigned char da

10、ta chno=0;/ 對應某路DS18B20/存各路 DS18B20 的地址序列號,為便于調(diào)試,只設計了2 路,可以擴充到8 路或更多unsigned char code SN28= 16, 62,148,60,0,0,0, 247,16,229,146,60,0,0,0, 87 ;/數(shù)字 0 9 和通道提示符A H 的段碼unsigned char code seg_table =0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x6f,0x76;unsigned char co

11、de CH =10,11,12,13,14,15,16,17; /通道提示符的段碼偏移量/將 0.00999 之間的浮點數(shù)轉(zhuǎn)為單個數(shù)碼,并送顯示緩沖區(qū)和返回小數(shù)點的位置void ftochar(float valp)if(valp<10.0)dot_position=1;valp *=100.0;else if(valp>=10.0)&&(valp<100.0)dot_position=2;valp *=10.0;'.else if(valp>=100.0)&&(valp<1000.0) dot_position=3;dis

12、p_buf1=(int)valp/100;disp_buf2=(int)valp%100)/10;disp_buf3=(int)valp%100)%10;/延時 15 微妙的函數(shù)void delay(unsigned char n)do_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();/_nop_() 的頭文件為intrins.h_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();n-;while(n);/DS18B20 復位函數(shù),按復位時序進行設計void ow_reset(void)D

13、Q = 0;/ DQ 置為低電平delay(36);/ 保持 480 sDQ = 1;/ DQ 置為高電平delay(24);/ 延時,等DS18B20 輸出低電平/DS18B20 讀位函數(shù),按讀位時序進行設計unsigned char read_bit(void)unsigned char i;'.DQ = 0;/ DQ 置為低電平DQ = 1;/ DQ 置為高電平for (i=0; i<5; i+);/ 延時15 sreturn(DQ);/ 返回 DQ線的電平狀態(tài)/ DS18B20 寫位函數(shù),按寫位時序進行設計void write_bit(char bitval)DQ = 0

14、;/ DQ 置為低電平if(bitval=1) DQ =1;/ 如果寫 1 則 DQ 置為高電平delay(6);/ 延時以維持電平狀態(tài)DQ = 1;/ DQ 置為高電平/ 從 DS18B20 讀取字節(jié)的函數(shù)unsigned char read_byte(void)unsigned char i;unsigned char value = 0;for (i=0;i<8;i+)if(read_bit() value|=0x01<<i;/ 調(diào)用讀位函數(shù),讀出的8 個位移位成1 個字節(jié)delay(11);/ 延時以讀余下的位return(value);/寫字節(jié)到DS18B20 的函

15、數(shù)void write_byte(char val)'.unsigned char i;unsigned char temp;for (i=0; i<8; i+)/每次寫 1 位, 1 個字節(jié)分8 次完成temp = val>>i;temp &= 0x01;write_bit(temp);/調(diào)用寫位函數(shù)delay(10);/延時/ 從 DS18B20 讀物溫度代碼voidread_temp ()unsigned char i,j;unsigned char a,b;int mr;for(j=0;j<2;j+)/為便于調(diào)試, 僅以 2 路為例,改循環(huán)次數(shù)即

16、可擴充到8 路或更多,ow_reset();/調(diào)用復位函數(shù)delay(20);write_byte (0x55); / 發(fā)送 ROM 匹配命令for(i=0;i<8;i+)write_byte(SNji); /發(fā)送 64 位序列號write_byte (0xbe);/發(fā)送讀取暫存寄存器的命令'.a = read_byte();/連續(xù)讀取兩位溫度,余下數(shù)據(jù)沒有讀,實際使用時應讀出所有數(shù)b = read_byte();/據(jù),并進行校驗,以提高可靠性mr=b*256+a;if(mr&0xf800)!=0) mr=-mr+1;TMPj=mr*0.5;/定時器 T0 中斷函數(shù),每中

17、斷 1次,顯示 1 位數(shù)碼管void Time_disp(void) interrupt 1static unsigned char dispno=0;/ 數(shù)碼管位號TH0=0xee;/ 主頻為 11.0592,定時 5ms 的時間常數(shù)為 EE00HTL0=0x00;P3|=0xf0;P0=seg_tabledisp_bufdispno;/查當前數(shù)碼管的顯示數(shù)字對應的段碼if(dispno=dot_position) P0|=0x80;/當前位有小數(shù)點,則段碼最高位置1switch(dispno)/根據(jù)當前顯示的數(shù)碼管,接通位選線case 0 :led0=0;break;case 1 :led

18、1=0;break;case 2 :led2=0;break;case 3 :led3=0; break;dispno+;if(dispno=4) dispno=0;'./定時器 T1 中斷服務函數(shù),每50ms 中斷 1 次void Timer1(void) interrupt 3static unsigned int count;TH1=0x4c;/50ms 對應的時間常數(shù)為4C00HTL1=0x00;count+;if(count>=20)/中斷 20 次即為 1 秒count=0;ftochar(TMPchno);/當前通道對應的溫度值轉(zhuǎn)換為單個數(shù)碼送顯示緩沖區(qū)disp_buf0=CHchno; /當前通道的提示符的段碼偏移量送顯示緩沖區(qū)首地址 chno+;if(chno= =2

溫馨提示

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

評論

0/150

提交評論