傳感器課程設(shè)計(jì)_第1頁(yè)
傳感器課程設(shè)計(jì)_第2頁(yè)
傳感器課程設(shè)計(jì)_第3頁(yè)
傳感器課程設(shè)計(jì)_第4頁(yè)
傳感器課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、地下室火災(zāi)報(bào)警器學(xué)院:信息工程學(xué)院班級(jí):13普本測(cè)控學(xué)號(hào):姓名:目錄摘 要1一、 緒論21.1 課題描述21.2 方案設(shè)計(jì)21.3 方案比較:21.4 基本工作原理及框圖3二、 相關(guān)芯片、傳感器及硬件電路設(shè)計(jì)42.1 STC89C52RC芯片42.2 DS18B20 溫度傳感器52.3 LCD1602字符型液晶62.4 光敏電阻7三、 系統(tǒng)軟件設(shè)計(jì)293.1溫度傳感器控制程序93.2 液晶屏控制程序133.3主程序 “main.c”15四、 總結(jié)21五、 參考文獻(xiàn)22地下室火災(zāi)報(bào)警器摘 要本設(shè)計(jì)是用于地下室的火災(zāi)報(bào)警,利用火災(zāi)發(fā)生時(shí)產(chǎn)生的劇烈光強(qiáng),還有高溫,進(jìn)行感光感溫報(bào)警。同時(shí)如果地下室存放

2、的是一些溫度敏感的物品,也可以通過(guò)設(shè)置進(jìn)行溫度過(guò)高/過(guò)低報(bào)警。用到的傳感器主要有溫度傳感器DS18B20和光電傳感器光敏電阻。關(guān)鍵詞:DS18B20,光敏電阻,STC89C52,LCD16021、 緒論1.1 課題描述地下室常作為人們的雜物間使用,或者充當(dāng)飯店的酒窖功能,里面經(jīng)常擺放著很多易燃物品,由于地下室經(jīng)常潮濕和經(jīng)常飄散的灰塵會(huì)使普通的煙霧報(bào)警器誤報(bào)1。所以設(shè)計(jì)此種地下室火災(zāi)報(bào)警器。1.2 方案設(shè)計(jì)方案一:火災(zāi)發(fā)生的時(shí)候會(huì)有光亮,會(huì)使昏暗的地下室光強(qiáng)出現(xiàn)變化,故采用光敏電阻設(shè)計(jì)此報(bào)警器;方案二:火災(zāi)發(fā)生的時(shí)候會(huì)產(chǎn)生大量熱量,會(huì)使陰冷的地下室溫度變化,故采用溫度傳感器設(shè)計(jì)此報(bào)警器;方案三:

3、由于火災(zāi)發(fā)生時(shí)產(chǎn)生光和熱,同時(shí)采用光敏電阻和溫度傳感器級(jí)聯(lián)設(shè)計(jì)此報(bào)警器。1.3 方案比較:方案一只采用光敏電阻,電路設(shè)計(jì)比較簡(jiǎn)單,但是如果地下室入口沒(méi)有密封好,或者地下室開(kāi)有透光窗,外界光強(qiáng)變化時(shí),容易出現(xiàn)報(bào)警器誤報(bào);方案二采用溫度傳感器設(shè)計(jì),電路上和方案三相當(dāng),但是如果地下室密封性好,地下室的一些容易發(fā)酵的酒水或者其他糧食蔬菜之類的發(fā)酵產(chǎn)生的大量熱量,也會(huì)使報(bào)警器出現(xiàn)誤報(bào);方案三綜合光強(qiáng)變化和溫度變化,電路設(shè)計(jì)上只比方案二多一個(gè)光敏傳感器,但是卻同時(shí)具備了光強(qiáng)和溫度傳感。如果地下室密封性好,溫度升高的時(shí)候并沒(méi)有光照變化,避免誤報(bào);如果地下室密封性不好或者開(kāi)有透光窗,光強(qiáng)變化的時(shí)候,發(fā)酵產(chǎn)生的

4、熱量及時(shí)的散出地下室,報(bào)警器也不會(huì)誤報(bào)。只有火災(zāi)時(shí)候瞬間產(chǎn)生高溫不會(huì)及時(shí)散去,而且有大量光照,報(bào)警器才會(huì)工作。綜合以上方案,故采用方案三。1.4 基本工作原理及框圖1.4.1 工作原理:溫度傳感器測(cè)溫,在lcd1602上實(shí)時(shí)顯示溫度。當(dāng)溫度超過(guò)設(shè)置的標(biāo)準(zhǔn)溫度時(shí),打開(kāi)外部中斷。如果沒(méi)有中斷,主程序繼續(xù)檢測(cè)溫度報(bào)警開(kāi)關(guān)K1是否打開(kāi),如果溫度報(bào)警開(kāi)關(guān)關(guān)閉,則程序返回開(kāi)始位置繼續(xù)測(cè)溫。如果溫度報(bào)警開(kāi)關(guān)打開(kāi),則出現(xiàn)提示音“地下室溫度過(guò)高,請(qǐng)及時(shí)通風(fēng)”。在溫度過(guò)高時(shí),同時(shí)出現(xiàn)了光照,光敏電阻阻值減小,電壓拉低,則出現(xiàn)外部中斷,提示音“地下室有火情”。程序流程圖:主程序:中斷處理程序:框圖:按鍵1:設(shè)置報(bào)警

5、溫度+;按鍵2:設(shè)置報(bào)警溫度-;按鍵3:設(shè)置每次加減的大小(1或者5);按鍵4:退出設(shè)置;開(kāi)關(guān)1:打開(kāi)/關(guān)閉溫度報(bào)警;溫度報(bào)警:用LED燈亮表示;火災(zāi)報(bào)警:用蜂鳴器響表示;2、 相關(guān)芯片、傳感器及硬件電路設(shè)計(jì)2.1 STC89C52RC芯片STC89C52RC是STC公司生產(chǎn)的一款8051內(nèi)核芯片,內(nèi)部含有Flash EEPROM,為CMOS產(chǎn)品,內(nèi)部有8KB的程序存儲(chǔ)空間,512B的RAM。因?yàn)楸驹O(shè)計(jì)應(yīng)用于火災(zāi)報(bào)警,因此要選用溫度范圍-40至+85的工業(yè)級(jí)產(chǎn)品。外部晶振最高可接入40MHz,雙列直插式封裝。需要為維持51單片機(jī)運(yùn)行搭建最小系統(tǒng),硬件連接如圖。2.2 DS18B20 溫度傳感器

6、使用DS18B20單線數(shù)字溫度傳感器具有以下優(yōu)點(diǎn):(1) 和微處理器連接時(shí),僅需要一個(gè)I/O口就可實(shí)現(xiàn)。單總線具有經(jīng)濟(jì)性好、抗干擾能力強(qiáng)、使用方便等優(yōu)點(diǎn);(2) 測(cè)溫范圍寬,測(cè)量精度高:DS18B20測(cè)溫范圍為-55到+125;在-10至+85范圍內(nèi),精度為±0.5。(3) 測(cè)量參數(shù)可配置:DS18B20測(cè)量分辨率可通過(guò)程序設(shè)定9-12位。(4) DS18B20體積小、適用電壓寬。DS18B20連接如圖:測(cè)溫電路實(shí)圖:2.3 LCD1602字符型液晶LCD1602是一種專門用來(lái)顯示字母、數(shù)字、符號(hào)的點(diǎn)陣型液晶模塊。它是由若干個(gè)5x7或者5x11的點(diǎn)陣字符位組成,一共可顯示2行,每行可

7、顯示16個(gè)字符,每個(gè)點(diǎn)陣字符位都可以用顯示一個(gè)字符,每位之間有一個(gè)點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用。LCD1602的電路圖如圖液晶連接實(shí)物圖:2.4 光敏電阻光敏電阻器是利用半導(dǎo)體的光電導(dǎo)效應(yīng)制成的一種電阻值隨入射光的強(qiáng)弱而改變的一種電阻器,又稱為光電導(dǎo)探測(cè)器,入射光強(qiáng),電阻減小,入射光弱,電阻增大。光敏電阻部分的電路如圖:總電路圖如圖:總電路實(shí)圖:3、 系統(tǒng)軟件設(shè)計(jì)23.1溫度傳感器控制程序頭文件名“ds18b20.h”#ifndef _DS18B20_H_#define _DS18B20_H /定義ds18b20.h#include <reg52.h>

8、#ifndef uchar#define uchar unsigned char#endif /定義uchar為類型unsigned char#ifndef uint#define uint unsigned int#endif /定義uint 為類型unsigned intsbit DSIO = P23; /將P23命名為DSIOvoid TempDelay1ms(); /聲明一個(gè)延時(shí)1ms的函數(shù)void TempDelay100ms(); /聲明一個(gè)延時(shí)100ms的函數(shù)uchar Ds18b20Init(); /聲明DS18B20的初始化函數(shù)void Ds18b20WriteByte(uc

9、har dat); /聲明一個(gè)函數(shù)將一個(gè)8位的二進(jìn)制數(shù)寫入DS18B20uchar Ds18b20ReadByte(); /聲明一個(gè)函數(shù)讀取DS18B20的一個(gè)8位二進(jìn)制數(shù)void Ds18b20ChangTemp(); /聲明一個(gè)函數(shù)寫入溫度轉(zhuǎn)換命令到DS18B20void Ds18b20ReadTempCom(); /聲明一個(gè)函數(shù)發(fā)送讀取溫度命令到DS18B20int Ds18b20ReadTemp(); /聲明一個(gè)函數(shù)讀取溫度并返回#endif源文件名“ds18b20.c”#include"ds18b20.h"void TempDelay1ms() uchar a,b

10、,c; for(c=1;c>0;c-) for(b=142;b>0;b-) for(a=2;a>0;a-);void TempDelay100ms() uchar a,b,c; for(c=19;c>0;c-) for(b=20;b>0;b-) for(a=130;a>0;a-);uchar Ds18b20Init()uint i;DSIO=0; /拉低總線i=70;while(i-); /延時(shí)DSIO=1; /釋放總線while(DSIO)i+;if(i>5)return 0; /初始化失敗 return 1; /初始化成功void Ds18b20W

11、riteByte(uchar dat)uint i,j;for(j=0;j<8;j+)DSIO=0; /拉低總線i+; /延時(shí)DSIO=dat&0x01; /從最低位開(kāi)始送數(shù)據(jù)到ds18b20i=6; while(i-); /延時(shí)DSIO=1; /釋放總線dat>>=1; /數(shù)據(jù)移位,準(zhǔn)備送下一位uchar Ds18b20ReadByte()uchar byte,bi;uint i,j;for(j=8;j>0;j-)DSIO=0; /拉低總線i+; /延時(shí)DSIO=1; /釋放總線i+;i+; /延時(shí)bi=DSIO; /讀ds18b20傳到總線的數(shù)據(jù),從最低位開(kāi)

12、始byte=(byte>>1)|(bi<<7); /移位,準(zhǔn)備讀取下一位i=4;while(i-); /延時(shí)return byte; /返回讀取到的數(shù)據(jù)void Ds18b20ChangTemp()Ds18b20Init(); /初始化TempDelay1ms(); /延時(shí)Ds18b20WriteByte(0xcc); /跳過(guò)ROM操作Ds18b20WriteByte(0x44); /發(fā)送溫度轉(zhuǎn)換命令TempDelay100ms(); /延時(shí)void Ds18b20ReadTempCom()Ds18b20Init(); /初始化TempDelay1ms(); /延時(shí)Ds

13、18b20WriteByte(0xcc); /跳過(guò)ROM操作Ds18b20WriteByte(0xbe); /發(fā)送讀取溫度命令int Ds18b20ReadTemp()uint temp=0;uchar tmh,tml;Ds18b20ChangTemp(); /發(fā)送溫度轉(zhuǎn)換命令Ds18b20ReadTempCom(); /發(fā)送讀取溫度命令tml=Ds18b20ReadByte(); /讀取溫度(共16位),先讀低8位tmh=Ds18b20ReadByte(); /讀取溫度高8位temp=tmh;temp<<=8;temp|=tml; /將16位溫度數(shù)據(jù)保存到16位變量tempret

14、urn temp; /返回溫度值3.2 液晶屏控制程序頭文件名“l(fā)cd1602.h”#ifndef _LCD1602_H_#define _LCD1602_H_ /定義lcd1602.h#include<reg51.h>#ifndef uchar#define uchar unsigned char /定義uchar為類型unsigned char#endif#ifndef uint#define uint unsigned int /定義uint 為類型unsigned int#endif#define GPIO_LCD P1 /定義GPIO_LCD替換P1,作為lcd1602的

15、輸入sbit RS=P20; /聲明RS為I/O口P20sbit RW=P21; /聲明RW為I/O口P21sbit E=P22; /聲明E為I/O口P22void LcdDelay5ms(); /聲明一個(gè)延時(shí)5ms的函數(shù)void LcdWriteCom(uchar com); /聲明一個(gè)函數(shù)給lcd1602寫入命令void LcdWriteData(uchar dat); /聲明一個(gè)函數(shù)給lcd1602寫數(shù)據(jù)void LcdInit(); /聲明一個(gè)函數(shù)lcd1602初始化#endif源文件名“l(fā)cd1602.c”#include"lcd1602.h"void LcdDe

16、lay5ms() uchar a,b; for(b=19;b>0;b-) for(a=130;a>0;a-);void LcdWriteCom(uchar com)RS=0; /操作命令RW=0; /寫操作E=0; /關(guān)閉使能GPIO_LCD=com; /命令送到P1口LcdDelay5ms(); /延時(shí)(大于40ns)E=1; /開(kāi)使能LcdDelay5ms(); /延時(shí) (大于150ns)E=0; /寫命令結(jié)束,關(guān)閉使能void LcdWriteData(uchar dat)RS=1; /操作數(shù)據(jù)RW=0; /寫操作E=0; /關(guān)閉使能GPIO_LCD=dat; /將數(shù)據(jù)送到P

17、1口LcdDelay5ms(); /延時(shí)(大于40ns)E=1; /開(kāi)使能LcdDelay5ms(); /延時(shí)(大于150ns)E=0; /寫數(shù)據(jù)結(jié)束,關(guān)閉使能void LcdInit()LcdWriteCom(0x38); /設(shè)置顯示模式(8位總線,雙行顯示,5*7點(diǎn)陣字符)LcdWriteCom(0x0c); /顯示開(kāi)關(guān)控制(整屏顯示開(kāi),不顯示光標(biāo))LcdWriteCom(0x06); /設(shè)置輸入模式,讀/寫一個(gè)字符,地址指針加1,整屏顯示不動(dòng)LcdWriteCom(0x01); /清屏LcdWriteCom(0x80); /設(shè)置數(shù)據(jù)存儲(chǔ)器地址(第一行第一位)3.3主程序 “main.c”

18、#include <reg51.h>#include "lcd1602.h"#include "ds18b20.h"sbit Key1=P27;sbit Key2=P26;sbit Key3=P25;sbit Key4=P24;sbit K1=P30;sbit LED=P36;sbit BZ=P37;int temp100;/*溫度顯示函數(shù)*/void TempDisplay(int temp)int a;uchar datas=0,0,0,0,0;float tp;a=temp;if(temp<0)LcdWriteCom(0x86);

19、LcdWriteData('-');a-=1;a=a;tp=a;a=tp*0.0625*100+0.5;elseLcdWriteCom(0x86);LcdWriteData('+');tp=a;a=tp*0.0625*100+0.5;temp100=a;datas0=a/10000;datas1=a%10000/1000;datas2=a%1000/100;datas3=a%100/10;datas4=a%10;LcdWriteCom(0x87);LcdWriteData(datas0+'0');LcdWriteData(datas1+'

20、0');LcdWriteData(datas2+'0');LcdWriteData('.');LcdWriteData(datas3+'0');LcdWriteData(datas4+'0');void main()/*初始化*/uchar i,step,set;uchar code st="STD:"uchar code wd="TEMP:"uchar code sp="STEP:"uchar sets=0,0,0;int temp;Ds18b20Init();

21、Ds18b20ChangTemp();LED=0;BZ=0;LcdInit();EA=1;/中斷允許EX0=0;/外部中斷0關(guān) set=24;/默認(rèn)報(bào)警溫度step=1;/默認(rèn)每次加/減溫度的步長(zhǎng)P2|=0xf0;/按鍵IO寫1,準(zhǔn)備讀取按鍵狀態(tài)K1=1;/報(bào)警開(kāi)關(guān)IO口寫1,準(zhǔn)備讀取報(bào)警開(kāi)關(guān)狀態(tài)/*進(jìn)入報(bào)警溫度設(shè)置,Key1(報(bào)警溫度加),Key2(報(bào)警溫度減),Key3(每次加/減d 步長(zhǎng)1或者5),Key4退出設(shè)置,按復(fù)位鍵重新進(jìn)入設(shè)置*/while(Key4)LcdWriteCom(0xc0);for(i=0;i<4;i+)LcdWriteData(sti);/顯示字符stdLc

22、dWriteCom(0xc8);for(i=0;i<5;i+)LcdWriteData(spi);/顯示字符stepsets0=set/100;sets1=set%100/10;sets2=set%10;LcdWriteCom(0xc4);for(i=0;i<3;i+)LcdWriteData('_');/std的溫度閃爍LcdDelay5ms();LcdWriteCom(0xc4);for(i=0;i<3;i+)LcdWriteData(setsi+'0');/顯示std的設(shè)定溫度LcdDelay5ms();LcdDelay5ms();LcdDelay5ms();LcdDelay5ms();LcdDelay5ms();LcdWriteCom(0xce);LcdWriteData(step+'0');/顯示步長(zhǎng)if(Key1=0)LcdDelay5ms();if(Key1=0)if(set<100

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論