freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機的智能火災(zāi)警報系統(tǒng)(編輯修改稿)

2025-07-16 12:55 本頁面
 

【文章內(nèi)容簡介】 )。 //檢查是否啟動設(shè)置報警值 if(Jia==0 || Jian==0)jingque()。 //是否顯示精確值 }} 中斷服務(wù)的程序系統(tǒng)設(shè)定定時器工作方式后開啟系統(tǒng)中斷,以便響應(yīng)中斷定時,及時對室內(nèi)煙霧濃度和溫度進(jìn)行采樣,并及時判斷是否超過設(shè)定的限值。系統(tǒng)初始化成功后便開始接受中斷申請,定時中斷間隔時間為65乘以16毫秒即約1秒左右對煙霧數(shù)據(jù)和溫度數(shù)據(jù)進(jìn)行一次采樣,然后把數(shù)據(jù)送入主程序的顯示函數(shù)中等待中斷退出然后顯示。中斷中同時判斷是否需要報警進(jìn)行判斷,能即使報警。因此本設(shè)計對數(shù)據(jù)有良好的時效性,不會因主程序的運行而影響對數(shù)據(jù)的處理。中斷服務(wù)程序如下:void timer0(void) interrupt 1 { TR0=0。 is++。 if(is==16){datadisp(dat0=adc0832(CH),ReadTemperature())。is=0。} Baoj()。 TH0=(Time)/256。 // TL0=(Time)%256。 // TR0=1。 } 數(shù)據(jù)處理的程序由于煙霧數(shù)據(jù)采集、AD轉(zhuǎn)換后得到的是煙霧濃度,設(shè)計中要求數(shù)碼管中顯示的是煙霧濃度的級別,所以對數(shù)據(jù)采集后,還要對煙霧濃度數(shù)據(jù)對煙霧濃度進(jìn)行分等級。煙霧等級數(shù)據(jù)放在disdata[0]中,由主函數(shù)里的xianshi()函數(shù)調(diào)用。本設(shè)計中將煙霧濃度等級分為6個級別:F0、FFFFF5,各個級別對應(yīng)煙霧濃度值如下:F0:煙霧濃度小于等于5;F1:煙霧濃度小于等于20;F2:煙霧濃度小于等于40;F3:煙霧濃度小于等于80;F4:煙霧濃度小于等于120;F5:煙霧濃度大于120;溫度數(shù)據(jù)采集并數(shù)據(jù)轉(zhuǎn)換后直接存放在disdata[2]和disdata[3]中,disdata[2]存放的是溫度的十位數(shù),disdata[3]則存放的是溫度的個位數(shù)。temp是用于判斷是否報警用的。數(shù)據(jù)處理程序如下:void datadisp(uint y,uint t)//數(shù)據(jù)處理{ ywu=(y%10000)/1000*1000+(y%1000)/100*100+(y%100)/10*10+y%10。 { if(ywu=0)disdata[0]=0。 if(ywu5)disdata[0]=1。 if(ywu20)disdata[0]=2。 if(ywu40)disdata[0]=3。 if(ywu80)disdata[0]=4。 if(ywu120)disdata[0]=5。 } temp0=t。 { disdata[2]=(t%1000)/100。 disdata[3]=(t%100)/10。 } temp=disdata[2]*10+disdata[3]。} 數(shù)據(jù)顯示的程序 為了將煙霧級別與溫度數(shù)據(jù)在數(shù)碼管中分開,設(shè)計中把煙霧級別現(xiàn)在是第一個數(shù)碼管,第二個數(shù)碼管顯示“”將其分開,第三四個數(shù)碼管分別顯示溫度的個位十位。這樣對數(shù)據(jù)的實際情況一目了然。數(shù)據(jù)顯示子程序如下:void xianshi() //將disdata[ ]里的溫度數(shù)據(jù)在數(shù)碼管上顯示{ int key=0。 if(pbi=0){show()。pbi。}else for(。key=3。key++)// { Disdata=~(led_mod[11])。 P1=~led_[key]。 //取反可變成共陰數(shù)碼管顯示 Disdata=~(led_mod[disdata[key]])。//取反可變成共陰數(shù)碼管顯示 Delay(200)。 }} 報警的程序報警程序流程圖如圖42所示。圖42 報警程序流程圖報警程序分為手動報警和自動報警,用戶可以自己啟動報警程序,也可以由系統(tǒng)自動報警。手動報警程序中sign為手動報警標(biāo)志,1秒內(nèi)兩次按下報警鍵為取消手動報警。報警時蜂鳴器發(fā)聲,3個通道的燈輪流閃亮,同時啟動馬達(dá)自救工作。手動報警程序如下:void sdong() //sign為手動報警標(biāo)志 { while(SD==0){sign=0。xianshi()。} //短按一次取消報警 delayt(350)。 while(SD==0){sign=1。xianshi()。} //1秒鐘內(nèi)兩次按下表示手動報警}當(dāng)煙霧濃度或溫度值超過報警限設(shè)定值時,系統(tǒng)自動報警,蜂鳴器發(fā)聲,對應(yīng)通道的燈亮起,綠燈滅掉,以提示操作人員采取安全對策或自動控制相關(guān)安全裝置,從而保障生產(chǎn)安全,避免火災(zāi)和爆炸事故的發(fā)生。為及時判斷煙霧、溫度數(shù)據(jù),在程序設(shè)計上,對煙霧濃度和溫度的采集程序放在了中斷服務(wù)程序里,定時性的檢測和報警。系統(tǒng)自動報警子程序如下:void Baoj(){ if(temp=tuxian || sign==1 || ywu=ybz) { Md=0。 //3個LED代替馬達(dá) { p05=0。p06=1。p07=1。Delay(15)。sound()。 //紅色 p05=1。p06=0。p07=1。Delay(15)。sound()。 //黃色 p05=1。p06=1。p07=0。Delay(15)。sound()。 p05=1。p06=1。p07=1。Delay(5)。 } if(sign==0) //非手動報警 { Ledzc=1。 if(temp=tuxian){Ledrbj=0。Md=0。}else Ledrbj=1。 if(disdata[0]=yuxian){Ledybj=0。Md=0。}else Ledybj=1。 } if(sign==1) //手動報警 { Ledzc=1。Ledrbj=1。Ledybj=0。Delay(15)。sound()。 Ledzc=1。Ledrbj=0。Ledybj=1。Delay(15)。sound()。 Ledzc=0。Ledrbj=1。Ledybj=1。Delay(15)。sound()。 Ledzc=1。Ledrbj=1。Ledybj=1。Delay(5)。 } }//判斷是否報警 else{Ledzc=0。Ledrbj=1。Ledybj=1。Md=1。} //不報警} 報警值設(shè)置的程序 系統(tǒng)初始化后,用戶可以根據(jù)自己修要對報警值進(jìn)行設(shè)置,溫度的設(shè)置值為整數(shù),設(shè)置的是溫度的實際值。煙霧的設(shè)置是對煙霧濃度的級別進(jìn)行設(shè)置。煙霧濃度分為6個級別(0~5),P0^1為設(shè)置鍵,當(dāng)檢測到啟動設(shè)置報警值按鍵被按下時,則系統(tǒng)進(jìn)入設(shè)置程序。P0^P0^3對應(yīng)減和加?!霸O(shè)置”鍵處于按下狀態(tài)時,顯示當(dāng)前所設(shè)置的煙霧級別與溫度報警值,釋放后則默認(rèn)進(jìn)入煙霧報警級別設(shè)置,數(shù)碼管只顯示當(dāng)前煙霧級別。再次按下設(shè)置按鍵時則進(jìn)入溫度報警值設(shè)置,數(shù)碼管只顯示當(dāng)前設(shè)定溫度。按“加”和“減”鍵進(jìn)行報警值的遞增、遞減設(shè)置,長按設(shè)置按鍵表示確認(rèn)設(shè)置并退出,若用戶在進(jìn)入設(shè)置狀態(tài)持續(xù)6秒沒有動作,系統(tǒng)則自動退出到正常狀態(tài)。報警值設(shè)置程序流程圖如圖43所示。圖43 報警值設(shè)置程序流程圖系統(tǒng)自動報警子程序如下:void czhi(void) // { js=1000。ys=js。ts=js。 //js=60為一秒 while(SET==0)show()。 while((ys0)amp。amp。(ts0)) //設(shè)置溫度報警值 { shezhi[1]=11。shezhi[2]=11。shezhi[3]=11。 //溫度的設(shè)定值不亮 while(ys0) { while(SET==0)show()。 ys=js。show()。 while(Jian==0){if(yuxian==0)break。show()。yuxian。delayt(300)。shezhi[0]=yuxian。} while(Jia==0) {if(yuxian==9)break。show()。yuxian++。delayt(300)。shezhi[0]=yuxian。} while(SET!=0 amp。amp。 Jia!=0 amp。amp。 Jian!=0) {show()。ys。if(ys=0){ys=0。ts=0。break。}} if(SET==0){ys=0。ts=js。delayt(250)。if(SET==0){ys=0。ts=0。}} } restzhi()。shezhi[0]=11。shezhi[1]=11。 //煙霧的設(shè)定值不亮 while(ts0) { ts=js。show()。 while(Jian==0) {if(tuxian==0)break。show()。tuxian。delayt(300)。shezhi[2]=tuxian/10。shezhi[3]=tuxian/1tuxian/10*10。} while(Jia==0) {if(tuxian==99)break。show()。tuxian++。 delayt(300)。shezhi[2]=tuxian/10。shezhi[3]=tuxian/1tuxian/10*10。} while(SET!=0 amp。amp。 Jia!=0 amp。amp。 Jian!=0) {show()。ts。if(ts=0){ts=0。ys=0。break。}} if(SET==0){ts=0。ys=js。delayt(250)。if(SET==0){ys=0。ts=0。}} } ts=js。restzhi()。 //重載設(shè)定值 } while(SET==0)show()。 } 精確值顯示的程序在正常狀態(tài)下,數(shù)碼管上顯示的是當(dāng)前煙霧濃度的級別和當(dāng)前溫度數(shù)據(jù)的整數(shù)部分,為了讓用戶能得到當(dāng)前精確的數(shù)據(jù),、:在煙霧級別與溫度顯示的正常狀態(tài)下, 對應(yīng)的“加”鍵是“顯示當(dāng)前精確煙霧數(shù)據(jù)”的功能、 對應(yīng)的“減”鍵是“顯示當(dāng)前精確溫度數(shù)據(jù)”的功能,這兩個功能拓展了本設(shè)計的基本功能。在正常狀態(tài)下,“加鍵”處于按下狀態(tài)時,顯示當(dāng)前設(shè)置的煙霧報警級別所對應(yīng)的精確煙霧濃度值,當(dāng)釋放按鍵后,則顯示當(dāng)前煙霧實際精確濃度,直到第二次按下則退出顯示?!皽p鍵”處于按下狀態(tài)時,顯示所設(shè)置的報警溫度值,釋放按鍵后則顯示當(dāng)前保留一位小數(shù)的精確溫度值,直到第二次按下則退出顯示。精確值顯示的程序流程圖如圖44所示。圖44 精確值顯示程序流程圖精確值顯示程序如下:void jingque(){ if(Jia==0) { jque[0]=11。 if(yuxian==0){jque[1]=11。jque[2]=11。jque[3]=0。} if(yuxian==1){jque[1]=11。jque[2]=11。jque[3]=5。} if(yuxian==2){jque[1]=11。jque[2]=2。jque[3]=0。} if(yuxian==3){jque[1]=11。jque[2]=4。jque[3]=0。} if(yuxian==4){jque[1]=11。jque[2]=8。jque[3]=0。} if(yuxian==5){jque[1]=1。jque[2]=2。jque[3]=0。} while(Jia==0)disjque()。//顯示煙霧報警濃度 while(Jia!=0) //顯示當(dāng)前精確煙霧濃度 { jque[3]=ywu%10。jque[2]=(ywu%100)/10。jque[1]=(ywu%1000)/100。jque[0]=(ywu%10000)/1000。 if(jque[0]==0){jque[0]=11。if(jque[1]==0)jque[1]=11。if(jque[2]==0)jque[2]=11。} disjque()。 } while(Jia==0)disjque()。 } if(Jian==0) { jque[0]=11。jque[1]=11。jque[2]=tuxian/10。jque[3]=tuxian%10。 while(Jian==0)disjque()。 tg=1。 while(Jian!=0) //顯示精確溫度 { if(tflag==0)jque[0]=(temp0%10000)/1000。 //百位 else jque[0]=10。 //符號位 jque[1]=(temp0%1000)/100。 //十位 jque[2]=(temp0%100)/10。 //個位 jque[3]=temp0%10。 //小數(shù)位 if(jque[0]==0){jque[0]=11。if(jque[1]==0)jque[1]=11。} disjque()。 } while(Jian==0)disjque()。 tg=0。 } 5 系統(tǒng)程序調(diào)試 (1) 源文件的建立:使用菜單“FileNew”即可在項目窗口的右側(cè)打開一個新的文本編輯窗口,在該窗口中輸入?yún)R編語言源程序。同時保存該文件,加上擴(kuò)展名(*.asm或*.C)。(2)建立
點擊復(fù)制文檔內(nèi)容
職業(yè)教育相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1