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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

7、顯示16個字符,每個點陣字符位都可以用顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用。LCD1602的電路圖如圖液晶連接實物圖:2.4 光敏電阻光敏電阻器是利用半導體的光電導效應制成的一種電阻值隨入射光的強弱而改變的一種電阻器,又稱為光電導探測器,入射光強,電阻減小,入射光弱,電阻增大。光敏電阻部分的電路如圖:總電路圖如圖:總電路實圖:3、 系統(tǒng)軟件設計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(); /聲明一個延時1ms的函數(shù)void TempDelay100ms(); /聲明一個延時100ms的函數(shù)uchar Ds18b20Init(); /聲明DS18B20的初始化函數(shù)void Ds18b20WriteByte(uc

9、har dat); /聲明一個函數(shù)將一個8位的二進制數(shù)寫入DS18B20uchar Ds18b20ReadByte(); /聲明一個函數(shù)讀取DS18B20的一個8位二進制數(shù)void Ds18b20ChangTemp(); /聲明一個函數(shù)寫入溫度轉(zhuǎn)換命令到DS18B20void Ds18b20ReadTempCom(); /聲明一個函數(shù)發(fā)送讀取溫度命令到DS18B20int Ds18b20ReadTemp(); /聲明一個函數(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-); /延時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+; /延時DSIO=dat&0x01; /從最低位開始送數(shù)據(jù)到ds18b20i=6; while(i-); /延時DSIO=1; /釋放總線dat>>=1; /數(shù)據(jù)移位,準備送下一位uchar Ds18b20ReadByte()uchar byte,bi;uint i,j;for(j=8;j>0;j-)DSIO=0; /拉低總線i+; /延時DSIO=1; /釋放總線i+;i+; /延時bi=DSIO; /讀ds18b20傳到總線的數(shù)據(jù),從最低位開

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

13、18b20WriteByte(0xcc); /跳過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(); /聲明一個延時5ms的函數(shù)void LcdWriteCom(uchar com); /聲明一個函數(shù)給lcd1602寫入命令void LcdWriteData(uchar dat); /聲明一個函數(shù)給lcd1602寫數(shù)據(jù)void LcdInit(); /聲明一個函數(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(); /延時(大于40ns)E=1; /開使能LcdDelay5ms(); /延時 (大于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(); /延時(大于40ns)E=1; /開使能LcdDelay5ms(); /延時(大于150ns)E=0; /寫數(shù)據(jù)結(jié)束,關(guān)閉使能void LcdInit()LcdWriteCom(0x38); /設置顯示模式(8位總線,雙行顯示,5*7點陣字符)LcdWriteCom(0x0c); /顯示開關(guān)控制(整屏顯示開,不顯示光標)LcdWriteCom(0x06); /設置輸入模式,讀/寫一個字符,地址指針加1,整屏顯示不動LcdWriteCom(0x01); /清屏LcdWriteCom(0x80); /設置數(shù)據(jù)存儲器地址(第一行第一位)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;/默認報警溫度step=1;/默認每次加/減溫度的步長P2|=0xf0;/按鍵IO寫1,準備讀取按鍵狀態(tài)K1=1;/報警開關(guān)IO口寫1,準備讀取報警開關(guān)狀態(tài)/*進入報警溫度設置,Key1(報警溫度加),Key2(報警溫度減),Key3(每次加/減d 步長1或者5),Key4退出設置,按復位鍵重新進入設置*/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的設定溫度LcdDelay5ms();LcdDelay5ms();LcdDelay5ms();LcdDelay5ms();LcdDelay5ms();LcdWriteCom(0xce);LcdWriteData(step+'0');/顯示步長if(Key1=0)LcdDelay5ms();if(Key1=0)if(set<100

溫馨提示

  • 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

提交評論