




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、課題三、環(huán)境溫度監(jiān)測系統(tǒng)一、設(shè)計(jì)要求環(huán)境溫度監(jiān)測系統(tǒng)廣泛地用于住宅小區(qū)、樓宇建筑和設(shè)備內(nèi)部等。其主要功能和指標(biāo)如下:1、可以監(jiān)測8點(diǎn)環(huán)境溫度信號(hào),可以擴(kuò)充;2、測量范圍為0.0099.9,可以擴(kuò)充到55125,精度為±0.5;3、用4位數(shù)碼管進(jìn)行循環(huán)顯示,其中最高位顯示通道提示符AH,低3位顯示實(shí)際溫度值,每秒切換一個(gè)通道進(jìn)行輪流顯示;4、 可以隨時(shí)查看指定通道的溫度值(擴(kuò)充功能)。二、設(shè)計(jì)指導(dǎo)1、方案選擇該系統(tǒng)主要由溫度檢測和數(shù)據(jù)采集兩部分組成。下面列舉兩種實(shí)現(xiàn)方案:方案一:溫度檢測可以使用低溫?zé)崤蓟蜚K電阻,數(shù)據(jù)采集部分則使用帶有A/D通道的單片機(jī)??紤]到一般的A/D輸入通道都只能
2、接收大信號(hào),所以還應(yīng)設(shè)計(jì)相應(yīng)的放大電路。此方案的軟件簡單,但硬件復(fù)雜,且檢測點(diǎn)數(shù)追加時(shí),成本會(huì)有較大增長幅度。方案二:使用單片機(jī)和單總線溫度傳感器構(gòu)成。單總線溫度傳感器可以采用DALLAS公司生產(chǎn)的DS18B20系列,這類溫度傳感器直接輸出數(shù)字信號(hào),且多路溫度傳感器可以掛在1條總線上,共同占用單片機(jī)的1條I/O線即可實(shí)現(xiàn)接口。在提升單片機(jī)I/O線驅(qū)動(dòng)能力的前提下,理論上可以任意擴(kuò)充檢測的溫度點(diǎn)數(shù)。比較兩個(gè)方案后可以發(fā)現(xiàn),方案二更適合于用作本系統(tǒng)的實(shí)施方案。盡管方案二不需要A/D,但考慮到系統(tǒng)擴(kuò)充等因素,單片機(jī)可以選用ADuc812,以便于在需要的時(shí)候擴(kuò)充參數(shù)存儲(chǔ)、 D/A輸出、溫度控制等功能。
3、2、 硬件設(shè)計(jì)采用方案二的硬件設(shè)計(jì)比較簡單,系統(tǒng)構(gòu)成如圖1所示,原理圖如圖5所示。單片機(jī)的P0口用作4位數(shù)碼管的段碼線,P3.4P3.7用作4位數(shù)碼管的位選線(ADuc812的P3有允許8mA的灌電流,可以不加驅(qū)動(dòng))。P2.4用作DS18B20的數(shù)據(jù)輸入/輸出線。圖1 溫度監(jiān)測系統(tǒng)組成框圖DS18B20的引腳定義和封裝形式之一如圖2所示。DQ為數(shù)字信號(hào)輸入/輸出端;GND為電源地;VDD為外接電源。圖2 DS18B20引腳與封裝DS18B20的光刻ROM中存有64位序列號(hào),它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28H)是產(chǎn)品類型標(biāo)號(hào),接著的48位是該DS
4、18B20自身的序列號(hào),最后8位是前面56位的循環(huán)冗余校驗(yàn)碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個(gè)DS18B20擁有惟一的地址序列碼,以確保在一根總線上掛接多個(gè)DS18B20。DS18B20內(nèi)部集成了暫存寄存器(或稱為暫存RAM)和EEPROM兩類存儲(chǔ)器。暫存RAM為9個(gè)字節(jié),其地址分配及其相關(guān)說明如表1所示。單片機(jī)通過命令實(shí)現(xiàn)對(duì)DS18B20的控制,其支持的主要命令如表2所示。DS18B20的復(fù)位操作、讀寫操作都必須遵從嚴(yán)格的時(shí)序,其復(fù)位時(shí)序、讀寫時(shí)序分別如圖3和圖4所示。關(guān)于DS18B20的詳細(xì)介紹和使用方法可以參考其數(shù)據(jù)手冊(cè)。表1 DS18B20暫存RAM地址分配及
5、其說明寄存器名稱地址說 明溫度低字節(jié)0溫度測量值的低8位,即b7 b6 b5 b4 b3 b2 b1 b0溫度高字節(jié)1溫度測量值的高3位及符號(hào)位,即S S S S S b10 b9 b8溫度高限2溫度報(bào)警上限,也可以用作自定義字節(jié)溫度高限3溫度報(bào)警下限,也可以用作自定義字節(jié)配置寄存器4格式為0 R1 R0 1 1 1 1 1,R1和R0為00、01、10、11對(duì)應(yīng)的分辨率分別為9、10、11和12位(包括符號(hào)位)保留5未定義保留6未定義保留7未定義校驗(yàn)碼8按X8X5X41對(duì)前8個(gè)字節(jié)進(jìn)行CRC校驗(yàn)表2 DS18B20主要命令及其功能說明命令碼功能說明命令碼功能說明33H讀ROM中的64位地址序
6、列碼BEH讀9字節(jié)暫存寄存器55H只有地址碼匹配的DS18B2才能接受后續(xù)的命令4EH寫入溫度上/下限,緊隨其后是2字節(jié)數(shù)據(jù),對(duì)應(yīng)上限和下限值F0H鎖定總線上DS18B20的個(gè)數(shù)和識(shí)別其ROM中的64位地址序列碼48H將9字節(jié)暫存寄存器的第3和4字節(jié)復(fù)制到EEPROM中ECH只有溫度超過上限或下限的DS18B20才做出響應(yīng)B8H將EEPROM的內(nèi)容恢復(fù)到暫存寄存器的第3和4字節(jié)44H啟動(dòng)DS18B20進(jìn)行溫度轉(zhuǎn)換,結(jié)果存入9字節(jié)的暫存寄存器B4H讀供電模式,寄生供電時(shí)DS18B20發(fā)送0,外接電源時(shí)DS18B20發(fā)送1CCH忽略地址序列碼,適合單片DS18B20圖3 DS18B20復(fù)位時(shí)序圖4
7、 DS18B20讀/寫讀時(shí)序圖5 系統(tǒng)原理圖 3、 軟件設(shè)計(jì)1、 軟件模塊的劃分該系統(tǒng)的控制軟件可以分為單片機(jī)初始化程序、定時(shí)中斷服務(wù)程序和DS18B20接口程序等模塊。單片機(jī)初始化程序由主函數(shù)實(shí)現(xiàn),主要完成定時(shí)器T0、T1的初始化、中斷系統(tǒng)的初始化等功能。定時(shí)器T0(p3.4)中斷函數(shù)每隔5ms執(zhí)行1次,動(dòng)態(tài)顯示1位數(shù)碼管;定時(shí)器T1(p 3.5)中斷函數(shù)每隔50ms中斷1次,每中斷20次(1秒)即讀取1路DS18B20的溫度代碼,轉(zhuǎn)換為溫度值,再拆分成單個(gè)數(shù)碼后送入顯示緩沖區(qū)。DS18B20接口程序主要由復(fù)位函數(shù)、讀位函數(shù)、讀字節(jié)函數(shù)、寫位函數(shù)、寫字節(jié)函數(shù)、讀溫度函數(shù)等組成。2、 參考程序
8、#include <aduc812.h>#include <intrins.h>sbit led0=P34;/P3.4P3.7用作4位LED的位選線sbit led1=P35;sbit led2=P36;sbit led3=P37;sbit DQ = P24; /P2.4用作DS18B20的數(shù)據(jù)線DQ float data TMP2=0,0; /讀取后的2個(gè)溫度值,將其除以2即可得出實(shí)際溫度;?unsigned char data f2=0,0; /結(jié)果是否為負(fù)溫,"0"為正溫,"1"為負(fù)溫。unsigned char data
9、disp_buf4=0,0,0,0; /4位數(shù)碼管對(duì)應(yīng)的值放入該緩沖區(qū)unsigned char data dot_position=0;unsigned char data chno=0;/對(duì)應(yīng)某路DS18B20/存各路DS18B20的地址序列號(hào),為便于調(diào)試,只設(shè)計(jì)了2路,可以擴(kuò)充到8路或更多unsigned char code SN28= 16, 62,148,60,0,0,0, 247,16,229,146,60,0,0,0, 87 ;/數(shù)字09和通道提示符AH的段碼unsigned char code seg_table =0x3f,0x06,0x5b,0x4f,0x66,0x6d,0
10、x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x6f,0x76;unsigned char code CH =10,11,12,13,14,15,16,17;/通道提示符的段碼偏移量/將0.00999之間的浮點(diǎn)數(shù)轉(zhuǎn)為單個(gè)數(shù)碼,并送顯示緩沖區(qū)和返回小數(shù)點(diǎn)的位置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;e
11、lse if(valp>=100.0)&&(valp<1000.0) dot_position=3;disp_buf1=(int)valp/100;disp_buf2=(int)valp%100)/10;disp_buf3=(int)valp%100)%10;/延時(shí)15微妙的函數(shù)void delay(unsigned char n)do_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();/_nop_()的頭文件為intrins.h_nop_();_nop_();_nop_();_nop_();_nop_();_nop_()
12、;_nop_();n-;while(n);/DS18B20復(fù)位函數(shù),按復(fù)位時(shí)序進(jìn)行設(shè)計(jì)void ow_reset(void)DQ = 0; / DQ置為低電平delay(36); / 保持480sDQ = 1; / DQ置為高電平delay(24); / 延時(shí),等DS18B20輸出低電平 /DS18B20讀位函數(shù),按讀位時(shí)序進(jìn)行設(shè)計(jì)unsigned char read_bit(void)unsigned char i;DQ = 0; / DQ置為低電平DQ = 1; / DQ置為高電平for (i=0; i<5; i+); / 延時(shí) 15s return(DQ); / 返回DQ 線的電平
13、狀態(tài)/ DS18B20寫位函數(shù),按寫位時(shí)序進(jìn)行設(shè)計(jì)void write_bit(char bitval)DQ = 0; / DQ置為低電平if(bitval=1) DQ =1; / 如果寫1則DQ置為高電平delay(6); / 延時(shí)以維持電平狀態(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個(gè)位移位成1個(gè)
14、字節(jié)delay(11); /延時(shí)以讀余下的位return(value);/寫字節(jié)到DS18B20的函數(shù)void write_byte(char val)unsigned char i;unsigned char temp;for (i=0; i<8; i+) /每次寫1位,1個(gè)字節(jié)分8次完成temp = val>>i; temp &= 0x01; write_bit(temp); /調(diào)用寫位函數(shù)delay(10);/延時(shí)/ 從DS18B20讀物溫度代碼void read_temp () unsigned char i,j; unsigned char a,b; int
15、 mr;for(j=0;j<2;j+) /為便于調(diào)試,僅以2路為例,改循環(huán)次數(shù)即可擴(kuò)充到8路或更多, ow_reset(); /調(diào)用復(fù)位函數(shù)delay(20);write_byte (0x55); /發(fā)送ROM匹配命令 for(i=0;i<8;i+) write_byte(SNji); /發(fā)送64位序列號(hào) write_byte (0xbe); /發(fā)送讀取暫存寄存器的命令 a = read_byte(); /連續(xù)讀取兩位溫度,余下數(shù)據(jù)沒有讀,實(shí)際使用時(shí)應(yīng)讀出所有數(shù)b = read_byte();/據(jù),并進(jìn)行校驗(yàn),以提高可靠性mr=b*256+a;if(mr&0xf800)!=
16、0) mr=-mr+1;TMPj=mr*0.5; /定時(shí)器T0中斷函數(shù),每中斷1次,顯示1位數(shù)碼管void Time_disp(void) interrupt 1static unsigned char dispno=0;/數(shù)碼管位號(hào)TH0=0xee;/主頻為11.0592,定時(shí)5ms的時(shí)間常數(shù)為EE00HTL0=0x00;P3|=0xf0;P0=seg_tabledisp_bufdispno;/查當(dāng)前數(shù)碼管的顯示數(shù)字對(duì)應(yīng)的段碼if(dispno=dot_position) P0|=0x80;/當(dāng)前位有小數(shù)點(diǎn),則段碼最高位置1switch(dispno)/根據(jù)當(dāng)前顯示的數(shù)碼管,接通位選線cas
17、e 0 : led0=0;break;case 1 :led1=0;break;case 2 :led2=0;break;case 3 :led3=0; break;dispno+;if(dispno=4) dispno=0;/定時(shí)器T1中斷服務(wù)函數(shù),每50ms中斷1次void Timer1(void) interrupt 3static unsigned int count;TH1=0x4c;/50ms對(duì)應(yīng)的時(shí)間常數(shù)為4C00HTL1=0x00;count+;if(count>=20)/中斷20次即為1秒count=0;ftochar(TMPchno);/當(dāng)前通道對(duì)應(yīng)的溫度值轉(zhuǎn)換為單個(gè)數(shù)碼送顯示緩沖區(qū)disp_buf0=CHchno;/當(dāng)前通道的提示符的段碼偏移量送顯示緩沖區(qū)首地址chno+;if(chno=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中外樂器試題及答案大全
- 益陽市重點(diǎn)中學(xué)2025屆高二化學(xué)第二學(xué)期期末監(jiān)測模擬試題含解析
- 浙江省杭州地區(qū)2024-2025學(xué)年高二下物理期末學(xué)業(yè)質(zhì)量監(jiān)測試題含解析
- 高效車庫租賃合同范本:涵蓋車位租賃與增值服務(wù)
- 茶具行業(yè)展會(huì)舉辦與贊助合同
- 雞類產(chǎn)品養(yǎng)殖基地與包裝企業(yè)采購合同
- 金融服務(wù)代理授權(quán)委托合同樣本
- 讀一本書的心得體會(huì)(32篇)
- 天津市老年城建設(shè)項(xiàng)目可行性研究報(bào)告
- 2024年高郵市衛(wèi)健系統(tǒng)事業(yè)單位招聘專業(yè)技術(shù)人員筆試真題
- 電競店加盟合同協(xié)議書
- 2025中國甲烷大會(huì):2024-2025全球甲烷控排進(jìn)展報(bào)告
- 術(shù)后急性疼痛及個(gè)體化鎮(zhèn)痛
- 2024年公安機(jī)關(guān)理論考試題庫500道附參考答案【基礎(chǔ)題】
- 血管內(nèi)導(dǎo)管相關(guān)性血流感染預(yù)防與診治指南(2025)解讀
- GB/T 196-2025普通螺紋基本尺寸
- 2025年湖南省長沙市語文中考作文趨勢(shì)預(yù)測(基于近十年分析)
- 2025至2030中國PDH裝置市場深度調(diào)查與競爭格局研究報(bào)告
- 集團(tuán)統(tǒng)借統(tǒng)還管理制度
- 酒店二次供水管理制度
- 瀝青攪拌站原材料采購管理流程
評(píng)論
0/150
提交評(píng)論