基于AT89C51單片機(jī)溫度報(bào)警系統(tǒng)設(shè)計(jì)與制作_第1頁(yè)
基于AT89C51單片機(jī)溫度報(bào)警系統(tǒng)設(shè)計(jì)與制作_第2頁(yè)
基于AT89C51單片機(jī)溫度報(bào)警系統(tǒng)設(shè)計(jì)與制作_第3頁(yè)
基于AT89C51單片機(jī)溫度報(bào)警系統(tǒng)設(shè)計(jì)與制作_第4頁(yè)
基于AT89C51單片機(jī)溫度報(bào)警系統(tǒng)設(shè)計(jì)與制作_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、一、摘要我們介紹的是一種基于單片機(jī)控制的數(shù)字溫度報(bào)警,本溫度系統(tǒng)具有多功能性, 即可以當(dāng)數(shù)字溫度計(jì)使用, 顯示當(dāng)前環(huán)境溫度, 又可以作為報(bào)警器使用, 設(shè)置報(bào)警溫度,當(dāng)溫度不 在設(shè)置范圍內(nèi)時(shí),可以報(bào)警,并采取措施使溫度下降。該溫度報(bào)警系統(tǒng)控制器使用單片機(jī)AT89C51,測(cè)溫傳感器使 DS18B20用2位共陽(yáng)極LED數(shù)碼管,實(shí)現(xiàn)溫度顯示,能準(zhǔn)確達(dá)到以上要求。設(shè)計(jì)方案1、萬(wàn)案一由于本設(shè)計(jì)是測(cè)溫電路,可以使用熱敏電阻之類(lèi)的器件利用其感溫效應(yīng),在將隨被測(cè) 溫度變化的電壓或電流采集過(guò)來(lái),進(jìn)行A/D轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測(cè)溫度顯示出來(lái),這種設(shè)計(jì)需要用到 A/D轉(zhuǎn)換電路

2、,感溫電路比較麻煩。2、方案二進(jìn)而考慮到用溫度傳感器,在單片機(jī)電路設(shè)計(jì)中,大多都是使用傳感器,所以這是非 常容易想到的,所以可以采用一只溫度傳感器DS18B2Q此傳感器,可以很容易直接讀取被測(cè)溫度值,進(jìn)行轉(zhuǎn)換,就可以滿(mǎn)足設(shè)計(jì)要求。從以上兩種方案,很容易看出,采用方案二,電路比較簡(jiǎn)單,軟件設(shè)計(jì)也比較簡(jiǎn)單, 故采用了方案二。溫度報(bào)警系統(tǒng)電路設(shè)計(jì)總體設(shè)計(jì)方框圖如圖1 所示三、模塊功能分析1、單片機(jī)主板電路單片機(jī)AT89C51具有低電壓供電和體積小等特點(diǎn),該模塊包括中央處理 鐘電路及復(fù)位電路;CPU -AT89C51 時(shí)d口丨R1喰*圖2復(fù)位電路圖3時(shí)鐘電路2、DS18B20溫度傳感器與單片機(jī)的接口電

3、路DS18B20溫度傳感器是美國(guó) DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與 傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)912位的數(shù)字值讀數(shù)方式。DS18B20是采用電源供電方式,此時(shí) DS18B20的1腳接地,2腳作為信號(hào)線,3腳接電源。 該電路完成了信號(hào)的采集、轉(zhuǎn)換和傳輸。U4圖43、上下限報(bào)警調(diào)整電路分別調(diào)整溫度的上下限報(bào)警設(shè)置,有“+ “、”“ - ”、“確定”等鍵圖5上下限報(bào)警調(diào)整電路4、溫度顯示電路顯示當(dāng)前測(cè)得的溫度,數(shù)碼管采用74LS247驅(qū)動(dòng)U:3MLT»FCXZA3k3>更x”aJ»&#

4、187;®E4n nA n A A Auy yU2VW圖8 中斷電路圖6溫度顯示電路5、報(bào)警電路當(dāng)環(huán)境溫度超過(guò)設(shè)定溫度時(shí),蜂鳴器鳴叫,紅燈點(diǎn)亮,發(fā)生報(bào)警;當(dāng)人員發(fā)現(xiàn)警報(bào)時(shí),可按 圖8中的按鈕,暫時(shí)中斷蜂鳴器的鳴叫。圖7蜂鳴器、亮燈報(bào)警電路6、控制電路該電路的作用是: 當(dāng)測(cè)量溫度超過(guò)設(shè)定溫度時(shí),小風(fēng)扇以下轉(zhuǎn)動(dòng),加快儀器散熱,使溫度保持在設(shè)定溫度以下。U7A»LWX)圖9控制電路四、整體構(gòu)造及功能整體電路圖如下:nju-iEQ-w.HJiaH121惜”圖10整體電路圖 實(shí)現(xiàn)的總體功能:實(shí)現(xiàn)對(duì)環(huán)境溫度的測(cè)量和顯示能通過(guò)按鍵設(shè)置報(bào)警溫度溫度超過(guò)設(shè)置值時(shí),產(chǎn)生光聲報(bào)警報(bào)警同時(shí)系統(tǒng)自帶

5、小風(fēng)扇轉(zhuǎn)動(dòng)以降低溫度主程序主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B2 0的測(cè)量的當(dāng)前溫度值,溫度測(cè)量每1s進(jìn)行一次。這樣可以在一秒之內(nèi)測(cè)量一次被測(cè)溫度,其程序流程見(jiàn)下圖所示附錄:源程序*/* 溫度報(bào)警器 */*#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define Tube P0/ 數(shù)碼管端口#define Key P1/ 鍵盤(pán)端口sbit DQ = P1A4;sbit BUZZER = PU5;sbit RUN = P1A6;sbit SET = P1A7;sbit

6、 Feng = P3A3;/溫度傳感器DS18B20數(shù)據(jù)傳輸端/ 蜂鳴器端口/ 運(yùn)行指示燈端口/ 設(shè)置指示燈端口/ 風(fēng)扇端口bit Status;/ 設(shè)置狀態(tài)標(biāo)志位bit Warning;/ 警報(bào)標(biāo)志位bit Int;/ 外部中斷標(biāo)志位uchar OP1L;uchar NP1L;/ 原 P1 端低 4 位狀態(tài)/ 現(xiàn) P1 端低 4 位狀態(tài)uchar FinT; uchar LimT;/ 最終測(cè)得溫度/ 警報(bào)溫度下限uchar Count;/ 定時(shí)器計(jì)數(shù)*#include"Delay.h" #include"Display.h" #include"

7、;Initialize.h" #include"Error.h" #include"KeyScan.h" #include"Measure.h" #include"Interrupt.h"/*/* 主程序 */*void main()Initialize();/初始化doMeasure();while( FinT = 0X55 );/開(kāi)機(jī)自檢,跳過(guò)默認(rèn)初始的85 Cwhile(1)KeyScan();/鍵盤(pán)掃描Measure();/獲取測(cè)量溫度Display();/顯示*/* 初始化 */*void In

8、itialize()Status = 0;Warning = 0;/ 初始化設(shè)置狀態(tài)標(biāo)志位/ 初始化警報(bào)標(biāo)志位BUZZER = 1;RUN = 0;SET = 1;Feng = 1;/ 初始化蜂鳴器狀態(tài)/ 初始化運(yùn)行指示燈/ 初始化設(shè)置指示燈/ 初始化風(fēng)扇端口OP1L = 0X00;NP1L = 0X00;/初始化原P1低4位 / 初始化新 P1 低 4 位LimT = 0X1B;/初始化警報(bào)溫度下限為27 CCount = 0X00; EA = 1;EX0 = 1;IT0 = 1;/ 初始化定時(shí)器計(jì)數(shù)單元/ 開(kāi)總中斷/ 開(kāi)外部中斷 0 中斷允許/ 設(shè)置外部中斷 0 為邊沿觸發(fā)方式*/* 溫度

9、測(cè)量 */*void InitDS18B20();void WriteDS18B20( uchar ch ); uchar ReadDS18B20();/ 初始化 DS18B20/寫(xiě)DS18B20數(shù)據(jù)/ 讀 DS18B20數(shù)據(jù)void Measure()uchar TemH;uchar TemL;InitDS18B20();WriteDS18B20( 0XCC ); _nop_();InitDS18B20();WriteDS18B20( 0XCC ); _nop_();/保存?zhèn)鞲衅靼l(fā)送數(shù)據(jù)高8位/保存?zhèn)鞲衅靼l(fā)送數(shù)據(jù)低8位/跳過(guò) ROM/跳過(guò) ROMWriteDS18B20( 0X44 );De

10、lay1ms( 25 );Delay1ms( 25 );Delay1ms( 25 );Delay1ms( 25 );/ 發(fā)送溫度轉(zhuǎn)換指令/ 等待 1s 轉(zhuǎn)換InitDS18B20();WriteDS18B20( 0XCC ); WriteDS18B20( 0XBE );TemL = ReadDS18B20(); TemH = ReadDS18B20(); Delay1ms( 2 );/ 跳過(guò) ROM/ 發(fā)送溫度轉(zhuǎn)換指令/ 讀低位溫度值/ 讀高位溫度值TemH = ( TemH<<4 )|( TemL>>4 );/ 保留溫度值整數(shù)部分FinT = TemH;/ 判斷是否警

11、報(bào)if( FinT > LimT ) Warning = 1;elseWarning = 0; uchar ReadDS18B20()uchar ch;uchar q ;/讀DS18B20數(shù)據(jù)for( q=0; q<8; q+ ) ch = ch >> 1; DQ = 0;_nop_();DQ = 1;_nop_(); _nop_(); _nop_(); _nop_();if( DQ =1 )ch =ch | 0X80;elsech =ch & 0X7f;Delay15us( 3 );DQ = 1;return( ch );/ 寫(xiě) DS18B20數(shù)據(jù)void W

12、riteDS18B20( uchar ch ) uchar i;for( i=0; i<8; i+ )DQ=0;Delay15us( 1 );DQ = ch & 0X01;Delay15us( 3 );DQ = 1;ch = ch >> 1; _nop_();void InitDS18B20()DQ = 0;Delay15us( 33 );DQ = 1;Delay15us( 10 );/ 初始化 DS18B20/ 至少延時(shí) 480us/ 至少延時(shí) 100us*/* 顯示 */*void Display()uchar T;/ 判斷狀態(tài)if( Status = 1 )T

13、= LimT;elseT = FinT;T = T % 10 + T / 10 * 16; Tube = T;RUN = Warning; BUZZER = !Warning | Int;Feng = !Warning;SET = !Status;II將2進(jìn)制碼轉(zhuǎn)化為 BCD碼/ 數(shù)碼管顯示II 運(yùn)行指示燈顯示II 蜂鳴器II 風(fēng)扇II 設(shè)置指示燈顯示Delay1ms( 20 );/* 鍵盤(pán)掃描 */*void KeyScan()NP1L = Key;NP1L = NP1L & 0X0F;NP1L = NP1L A OXOF;/ 讀取按鍵狀態(tài)if( NP1L != OP1L )swit

14、ch(NP1L)case 0X01: Status = 1; break;case 0X02:if( Status = 1) LimT+;LimT = LimT % 100;Delay1ms(255); else Error();break;/ 判斷按鍵/ 按鍵為“設(shè)置”/ 進(jìn)入設(shè)置狀態(tài)/ 按鍵為“ +1 ”/ 判斷是否為設(shè)置狀態(tài)/ 警報(bào)溫度下限 +1/ 超過(guò) 99 清零case 0X04:if( Status = 1) LimT-; if( LimT < 0 )LimT = 0X63; Delay1ms(255); elseError();break;case 0X08: Status

15、 = 0; break;/ 按鍵為“ -1 ”/ 判斷是否為設(shè)置狀態(tài)/ 警報(bào)溫度下限 -1/ 低于 0 變?yōu)?99/ 按鍵為“確認(rèn)”/ 返回測(cè)溫狀態(tài)default:/ 多鍵按下/ 出錯(cuò)復(fù)位/ 重新初始化Error(); break;NP1L = 0X00;*/* 中斷服務(wù) */*void Int0( void ) interrupt 0 Int = 1;EX0 = 0;TMOD = 0X01;TH0 = 0X3C;TL0 = 0XB0;Count = 0X3C;ET0 = 1;TR0 = 1;/ 外部中斷標(biāo)志位置 1/ 關(guān)外部中斷 0 中斷允許/ 設(shè)置定時(shí)器 0 工作在模式 1/ 為 T0 賦

16、初值,令其定時(shí) 50ms/ 設(shè)置計(jì)數(shù)次數(shù)/ 開(kāi) T0 中斷允許/ 開(kāi) T0 中斷*void Timer0( void ) interrupt 1 if( Count = 0 )ET0 = 0;TR0 = 0;Int = 0; EX0 = 1;else/ 判斷定時(shí)計(jì)數(shù)是否結(jié)束/ 關(guān) T0 中斷允許/ 關(guān) T0 中斷/ 外部中斷標(biāo)志位置 0/ 開(kāi)外部中斷 0 中斷允許/ 重新賦 T0 初值/ 定時(shí)計(jì)數(shù)減 1TL0 = 0XB0;TH0 = 0X3C; Count -; /* 延遲函數(shù) */*void Delay15us( uchar n )/ 延遲 n*15usdo_nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_();_nop_();n-;while( n );void Delay1ms( uc

溫馨提示

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

評(píng)論

0/150

提交評(píng)論