資料包:
0.png (13.1 KB, 下載次數(shù): 44)
下載附件
2018-1-10 04:19 上傳

傳感器課程設(shè)計報告 課 題: 家居分布式溫度監(jiān)測報警系統(tǒng)
班 級: 自152 姓 名:
目錄 一、設(shè)計目的 二、總體設(shè)計 2.1設(shè)計方法 2.2 設(shè)計中所用器件介紹 三、硬件設(shè)計 3.1 原理圖電路 3.2復(fù)位電路 3.3時鐘電路 3.4 DS18B20傳感器電路 3.5顯示電路 四、系統(tǒng)軟件設(shè)計 4.1 系統(tǒng)設(shè)計的整體思想 4.2 系統(tǒng)總流程圖 4.3系統(tǒng)程序設(shè)計 五、 系統(tǒng)仿真 六、 調(diào)試過程 七、 總結(jié)
一、設(shè)計目的 設(shè)計一個家居分布式溫度監(jiān)測報警系統(tǒng),因此要求該系統(tǒng)必須有較好的實時溫度顯示以及溫度過高或過低的報警功能,以便能夠及時發(fā)現(xiàn)火災(zāi)等安全隱患,保障人身安全和家庭財產(chǎn)。 二、總體設(shè)計 2.1設(shè)計方法 本次設(shè)計為了突出經(jīng)濟、可靠、耐用的特點,決定采用以單片機系統(tǒng)設(shè)計代替常規(guī)模擬電路系統(tǒng)設(shè)計。本系統(tǒng)在硬件設(shè)計上采用STC89C51單片機和DS18B20數(shù)字溫度傳感器組成下行機硬件系統(tǒng),具有即時溫度采集,可實現(xiàn)溫度自動記錄,分析,持續(xù)運行,使系統(tǒng)有良好的可靠性、擴展、人性化設(shè)計和較低的生產(chǎn)成本性能。 本系統(tǒng)的電路設(shè)計方框圖如圖1所示,它由三部分組成:①控制部分主芯片采用單片機89C51;②顯示部分采用ED數(shù)碼管以動態(tài)掃描方式實現(xiàn)溫度顯示;③溫度采集部分采用DS18B20溫度傳感器。 圖1(詳見附件) 2.2 設(shè)計中所用器件介紹 1.DS18B20溫度傳感器 (1)管腳圖如圖2,有以下幾點特點: ①獨特的單線總線接口方式:DS18B20與上位機連接時可通過一條傳輸線路實現(xiàn)雙向數(shù)據(jù)傳輸。 ②可通過數(shù)據(jù)線供電,供電電壓容許范圍大,為+3.0~+5.5V,也可選用外部+5V供電。 ③實際工作過程中,不需要添加外圍器件。 ④用戶可自行設(shè)定溫度報警上下限值,其值是非易失性的。 ⑤可測溫度范圍為-55~+125℃,測溫分辨率為0.5℃(-10℃—+85℃),2℃(-55~+125℃)。 ⑥負壓特性,電源反接時能夠自動保護DS18B20不會被燒毀,此時的芯片無法正常工作。 ⑦轉(zhuǎn)換速度快,效率高,可在93.75ms內(nèi)完成9位溫度轉(zhuǎn)換。 ⑧可實現(xiàn)多點測溫,多個DS18B20溫度傳感器可并聯(lián)在唯一的三線上。 ⑨適用于各種微處理器和上位機系統(tǒng)。 ⑩內(nèi)含64位的只讀存儲ROM,每片DS18B20出廠前就有唯一的產(chǎn)品序號。大型測溫系統(tǒng),單線上可掛接多片DS18B20傳感器。 
圖2 1腳—GND:接地。 2腳—I/O:數(shù)據(jù)輸入/輸出端(即單線總線),屬于漏極開路輸出。外接上拉電阻后,常態(tài)下成高電平。 3腳—VCC:電源端,為可供選用的外部+5V電源端,不用時接地。 (2)DS18B20的工作原理 根據(jù)DS18B20的通訊協(xié)議,主機控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過三個步驟: (1) 每一次讀寫之前都必須要對DS18B20進行復(fù)位; (2) 復(fù)位成功后發(fā)送一條ROM指令; (3) 最后發(fā)送RAM指令,這樣才能對DS18B20進行預(yù)定的操作。 復(fù)位要求主CPU將數(shù)據(jù)線下拉500微秒,然后釋放,DS18B20收到信號后等待15~60微秒左右后發(fā)出60~240微秒的存在低脈沖,主CPU收到此信號表示復(fù)位成功。其工作時序包括初始化時序、寫時序和讀時序。 2.74LS245芯片 74LS245是常用的芯片,用來驅(qū)動led或者其他的設(shè)備,它是8路同相三態(tài)雙向總線收發(fā)器,可雙向傳輸數(shù)據(jù)。其引腳圖如圖3。 片選端/CE低電平有效,當DIR="0"時,信號由 B 向 A 傳輸;(接收)DIR="1",信號由 A 向 B 傳輸;(發(fā)送)當CE為高電平時,A、B均為高阻態(tài)。由于P2口始終輸出地址的高8位,接口時74LS245的三態(tài)控制端1G和2G接地,P2口與驅(qū)動器輸入線對應(yīng)相連。P0口與74LS245輸入端相連,E端接地,保證數(shù)據(jù)線暢通。8051的/RD和/PSEN相與后接DIR,使得RD和PSEN有效時,74LS245輸入(P0.1←D1),其它時間處于輸出(P0.1→D1)。 
圖3 三、硬件設(shè)計 如下圖4所示,該圖主要由單片機控制電路、顯示電路、晶振電路、繼電器電路和復(fù)位電路組成。 
圖4 2.復(fù)位電路 電路圖如圖5 復(fù)位電路作用: 一是在給電路通電時馬上進行復(fù)位操作 二是在必要時可以由手動操作 三是根據(jù)程序或者電路運行的需要自動地進行。 
圖5 3.時鐘電路 電路圖如圖6 時鐘模塊主要起作用的是晶振,每個單片機系統(tǒng)里都有晶振,全稱叫晶體振蕩器,在單片機系統(tǒng)里晶振的作用非常大,它結(jié)合單片機內(nèi)部的電路,產(chǎn)生單片機所必須的時鐘頻率,單片機的一切指令的執(zhí)行都是建立在這個基礎(chǔ)上的,晶振的提供的時鐘頻率越高,單片機的運行速度也就越快。晶振用一種能把電能和機械能相互轉(zhuǎn)化的晶體,在共振的狀態(tài)下工作,以提供穩(wěn)定,精確的單頻振蕩。 
圖6
4.DS18B20傳感器電路 該電路傳感器采用更穩(wěn)定,測量更為準確的外部供電的方式VCC端口上接5V的電源,如圖7 圖7 5.顯示電路 顯示電路采用了7段共陰數(shù)碼管掃描電路,節(jié)約了單片機的輸出端口,便于程序的編寫,如圖8 圖8 四、系統(tǒng)軟件設(shè)計 4.1 系統(tǒng)設(shè)計的整體思想 一個應(yīng)用系統(tǒng)要完成各項功能,首先必須有較完善的硬件作保證。同時還必須得到相應(yīng)設(shè)計合理的軟件的支持,尤其是微機應(yīng)用高速發(fā)展的今天,許多由硬件完成的工作,都可通過軟件編程而代替。甚至有些必須采用很復(fù)雜的硬件電路才能完成的工作,用軟件編程有時會變得很簡單,如數(shù)字濾波,信號處理等。因此充分利用其內(nèi)部豐富的硬件資源和軟件資源,采用與S51系列單片機相對應(yīng)的51匯編語言和結(jié)構(gòu)化程序設(shè)計方法進行軟件編程。 程序設(shè)計語言有三種:機器語言、匯編語言和高級語言。機器語言是機器唯一能“懂”的語言,用匯編語言或高級語言編寫的程序(稱為 源程序)最終都必須翻譯成機器語言的程序(成為目標程序),計算機才能“看懂”,然后逐一執(zhí)行。 高級語言是面向問題和計算過程的語言,它可通過于各種不同的計算機,用戶編程時不必仔細了解所用的計算機的具體性能與指令系統(tǒng),而且語句的功能強,常常一個語句已相當于很多條計算機指令,于是用高級語言編制程序的速度比較快,也便于學習和交流,所以本系統(tǒng)采用C語言來編寫程序。 本裝置的軟件包括主程序、讀出溫度子程序、復(fù)位應(yīng)答子程序、寫入子程序、以及有關(guān)DS18B20的程序(初始化子程序、寫程序和讀程序)等。 主程序的功能是:啟動DS18B20測量溫度,將測量值與給定值進行比較,若測得溫度小于設(shè)定值,置P1.5為低電平。當測得溫度大于設(shè)定值,則置P1.4為低電平。 4.2 系統(tǒng)總流程圖 如下圖9 圖9 系統(tǒng)總體流程圖(詳見附件)
4.3系統(tǒng)程序設(shè)計
如下圖,用開關(guān)來控制多個傳感器,先打開一個開關(guān),若傳感器檢測到溫度為71.5顯示到數(shù)碼管上,因為大于所設(shè)定最高溫度70,揚聲器發(fā)出報警并且高溫指示燈亮。 如下圖,若傳感器檢測到溫度低于-20,將-24.50顯示到數(shù)碼管中,且揚聲器報警,低溫指示燈亮。
如下圖,傳感器檢測到溫度為28.5在所設(shè)溫度上下限之間,揚聲器不報警且指示燈不亮。
在keil5中對程序進行編譯,調(diào)試成功,調(diào)試結(jié)果如下圖 緊緊張張的傳感器課設(shè)就將要結(jié)束了,首先給我的感覺就是有好多東西都不懂。但這未必是一件壞事,越是不懂就說明我要學的東西很多,我的提升空間也就越大。 我利用自己課余時在自習室里學習單片機,查閱傳感器方面相關(guān)文獻,以此提升自己。當東西做不完時,我都有一種沖動,呆在自習教室晚上不回了。正是因為這種執(zhí)著拼搏的精神使我收獲很多,多數(shù)天我都會感覺腦子里都是滿滿的,不管是懂得的收獲還是不懂得煩惱。 從剛開始的什么也不懂到現(xiàn)在的Proteus仿真、程序編寫、調(diào)試等一些東西基本上動能很好的掌握了,可以說這是一個巨大的進步,調(diào)試是一個復(fù)雜而漫長的過程,需要我不斷地去做。 有一次我程序也做出來了,但是在仿真上就是不行,結(jié)果總是不對,經(jīng)過一上午的檢查調(diào)試,終于知道了是我在Proteus上的一根線接錯了,從這可以看出這是一個看似簡單而最容易出錯的過程,需要嚴謹?shù)墓ぷ鲬B(tài)度。 現(xiàn)在我的家居分布式溫度監(jiān)控報警系統(tǒng)已經(jīng)做出來了,當檢測到的環(huán)境溫度值大于最小上線溫度時,蜂鳴器會做頻率較低的報警;當環(huán)境溫度大于較大上線溫度值時,蜂鳴器會做頻率較高的報警。除此之外,它還可以用于倉庫、實驗室、機房等設(shè)備上,具有一定實用價值。 該系統(tǒng)的整體設(shè)計還是有很大的提升空間的,比如該系統(tǒng)只是報警這是不夠的,最終還是需要人去做出反應(yīng),我們可以讓它自動切斷電源,從而保護設(shè)備,這樣使其更具有自動化,從而會有更大的推廣應(yīng)用范圍。
單片機源程序如下:
- #include <REG52.H>
- #include <INTRINS.H>
- #include <ds18b20.h>
- void delayms(unsigned char xms)
- {unsigned char i=200;while(--xms)while(--i);}
- unsigned char table[]={
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x40,0x00};
- unsigned char shu[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
- //************數(shù)碼管掃描程序***********************************************************//
- void display(unsigned char z,x)
- {
- P2=0xfe;
- if(Tflag)P0=table[10];
- else P0=0x00;
- delayms(2);
- P0=0x00;
- P2=_crol_(P2,1);
- P0=table[z/100];
- delayms(2);
- P0=0x00;
- P2=_crol_(P2,1);
- P0=table[z%100/10];
- delayms(2);
- P0=0x00;
- P2=_crol_(P2,1);
- P0=table[z%10]|0x80;
- delayms(2);
- P0=0x00;
- P2=_crol_(P2,1);
- P0=table[x/10];
- delayms(2);
- P0=0x00;
- P2=_crol_(P2,1);
- P0=table[x%10];
- delayms(2);
- P0=0x00;
- P2=_crol_(P2,1);
- }
- sbit SOUND=P3^7;
- void T_init()
- {
- TMOD = 0x11;
- TH1 = (65536-500)/256;
- TL1 = (65536-500)%256;
- TH0 = (65536-50000)/256;
- TL0 = (65536-50000)%256;
- EA = 1;
- ET1 = 1;
- TR1 = 0;
- ET0 = 1;
- TR0 = 1;
- }
- //主函數(shù)
- void main()
- {
- T_init();
- P2=0xff;
- delayms(250);
- while(1)
- {
- if((Tflag==1&tmpZ>=20)|(Tflag==0&tmpZ>=70))
- {
- TR1=1;
- if(tmpZ>=70)P1=0xef;
- else P1=0xdf;
- }
- else {P1=0xff;TR1=0;}
- display(tmpZ,tmpX); //動態(tài)顯示數(shù)碼
- }
- }
- void timeint(void) interrupt 3
- {
- TR1=0;
- TH1 = (65536-200)/256;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載(word格式課設(shè)論文+仿真+源代碼):
http://www.zg4o1577.cn/bbs/dpj-104141-1.html
|