標(biāo)題: 單片機防盜報警器Proteus仿真程序設(shè)計 [打印本頁]
作者: 34567890- 時間: 2021-2-18 18:03
標(biāo)題: 單片機防盜報警器Proteus仿真程序設(shè)計
我們設(shè)計為3V-5V的工作電壓以便報警系統(tǒng)安裝更加靈活方便。通常情況下可以使用3只1.5V普通直流干電池為電源,考慮到更換電池的問題,也可以外接4.5V直流電源使用起來更為長久。
單片機運行起始情況都是由復(fù)位電路來控制和確定的,而且復(fù)位電路完成單片機的啟動過程十分高效簡潔。一般情況下電源連接上的時候單片機就會生成一個復(fù)位信號,如果此時單片機完成了啟動動作,那么我們可以判斷單片機目前運行正常;如果沒有完成啟動動作則單片機運行不正常,需要調(diào)試。當(dāng)單片機運行之中遇到程序跑飛這種外界環(huán)境干擾和影響而產(chǎn)生的情況之時,我們通常使用復(fù)位按鈕來啟動熱釋電紅外報警器系統(tǒng)單片機內(nèi)部設(shè)定的程序讓單片機重新運行我們所需要它運行的程序。通常情況中電路中的單片機復(fù)位方式要么是自動復(fù)位,要么就是手動復(fù)位,這是最常用最實用的電路復(fù)位方法。自動復(fù)位一般都是上電自動復(fù)位,手動復(fù)位就是按鍵復(fù)位,單片機復(fù)位動作往往是在時鐘電路運行后于RESET端生成了兩個周期高電平而完成的。至于手動復(fù)位,本設(shè)計采用了一個按鍵來實現(xiàn),即手動復(fù)位鍵,改按鍵的設(shè)計使得電路復(fù)位變得更加簡單可靠,為了把輸出電平升高到一定的值,我們通常都連接了上拉電阻。
3.2 按鍵電路設(shè)計
本報警系統(tǒng)中不同狀態(tài)的工作形式也是不同的,考慮到操作的簡單和實用功能,我們對本設(shè)計的電路初步進行了簡單的規(guī)劃設(shè)計,經(jīng)過再三研討后設(shè)計確定如下:布防狀態(tài)在我們按了布防按鍵后立即啟動,大約5 秒系統(tǒng)進入布防狀態(tài),這5 秒的時間是為了操作人員離開布防區(qū)域而設(shè)置的,這個時間可以根據(jù)具體的離開布防區(qū)域需要的時間來設(shè)置;倘若無人闖入監(jiān)控布防范圍內(nèi),則不動作;倘若有人在探測器布防范圍內(nèi)移動,那么人體輻射的紅外線會被探測器立刻感應(yīng)到,并立刻通過電路傳至單片機進行運算處理,單片機快速運算后立馬通過電路發(fā)出信號控制聲光報警部分報警?紤]到一些始料未及的突發(fā)情況,客戶還需要我們對報警系統(tǒng)附加一個緊急的報警方案,為解決此問題,我們在設(shè)計中使用了一個緊急報警電路從根本上解決了這個需求,既方便又實用,在緊急報警按鍵按下后電路立刻進行聲光報警。如圖下圖3-8所示。
3.3 指示燈電路設(shè)計
高低不同的電平狀態(tài)是由單片機的I/O端口的輸出來決定的,P22連接黃色LED指示燈,P21連接綠色LED指示燈,P20連接紅色LED指示燈,P12連接報警用蜂鳴器,而蜂鳴器工作的驅(qū)動與否是由外部連接的三極管是否達到飽和狀態(tài)而決定的,該三極管如同一個開關(guān),達到了飽和狀態(tài)就會驅(qū)動報警蜂鳴器運行。
第四章 程序設(shè)計
4.1 程序流程圖
4.2 程序設(shè)計(黑體四號)
4.2.1 按鍵設(shè)計程序
//自動報警按鍵
void baojing()
{if(s1==0)
{delay(10);
if(s1==0)
{while(!s1);
jinji=1;temp=4;}
}}
//布防按鍵
void prebufang()
{if(jinji==0)
{if(s2==0)
{delay(10);
if(s2==0)
{while(!s2);
temp=1;}}}}
//關(guān)閉報警,撤銷布防按鍵
void guanbi()
{ if(s3==0)
{temp=5;}}
//紅外檢測按鍵
void alarm()
{if(SR==0&temp==2)
{delay(10);
if(SR==0)
{while(!SR);
temp=3; }} }
4.2.2指示燈和報警程序
switch(temp)
{case 1:{LY=0;delay(500);LY=1;delay(500);TR0 =1;}break; //布防鍵按下
case 2 : {LY=0;TR0=0;}break; //5秒后常亮
case 3:{fmq=0;LR=0;LY=1;LG=0; delay(500);
fmq=1;LR=1;LY=1;LG=1;delay(500);}break;//布防期間,有人來了
case 4 :{fmq=0;LR=0;LY=1;LG=1; delay(500);
fmq=1;LR=1;LY=1;LG=1; delay(500);} break; //報警
case 5 :{LR=1;LG=1;LY=1;fmq=1;jinji=0;}break;//關(guān)閉報警/取消布防
default:{}
}}}
5.1 軟件調(diào)試調(diào)試主要方法和技巧:
通常一個調(diào)試程序應(yīng)該具備至少四種性能:跟蹤、斷點、查看變量、更改數(shù)值。整個程序是一個主程序調(diào)用各個子程序?qū)崿F(xiàn)功能的過程,要使主程序和整個程序都能平穩(wěn)運行,各個模塊的子程序的正確與平穩(wěn)運行必不可少,所以在軟件調(diào)試的最初階段就是把各個子程序模塊進行分別調(diào)試。
我們在調(diào)試時,先對緊急報警模塊與基本布防功能(黃燈常亮)進行了測試,在按下鍵后紅燈閃爍,蜂鳴器閃鳴;布防鍵按下,黃燈常亮,功能正確;隨后,增加了黃燈閃爍功能,布防鍵按下,黃燈閃爍5秒后常亮,有人闖入布防區(qū)域,綠燈與紅燈閃爍,蜂鳴器閃鳴。最后,增加了取消報警撤銷布防按鈕。
5.2 仿真結(jié)果

結(jié)果分析根據(jù)仿真結(jié)果可知,本設(shè)計能夠準(zhǔn)確并徹底的完成設(shè)計要求。
按下自動報警按鍵,紅燈閃爍,蜂鳴器閃鳴;按下布防按鍵,黃燈閃爍5秒后常亮,進入布防狀態(tài),這時若檢測到有人來,紅燈和綠燈閃爍,蜂鳴器閃鳴;按下關(guān)閉按鍵,關(guān)閉報警,撤銷布防。
遇到的困難及解決辦法
1.設(shè)置報警為最高優(yōu)先級:在報警過程中,除關(guān)閉按鈕外,不受其他按鈕控制.(設(shè)置jinji標(biāo)志位,添加限制條件)
2.程序需要多次判斷,導(dǎo)致結(jié)構(gòu)混亂。(將程序模塊化處理)
3.閃爍時按下關(guān)閉按鈕,跳不出死循環(huán)(設(shè)置狀態(tài)標(biāo)志位,用switch多分支選擇語句)
- //51單片機簡人體紅外報警器設(shè)計,手動按鍵控制實現(xiàn)緊防、撤急報警、布防、關(guān)閉報警)
- #include <reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit s1=P1^0; //緊急報警按鍵
- sbit s2=P1^1; //布防按鍵
- sbit s3=P1^3;
- sbit SR=P2^6;
- sbit LY=P2^2;
- sbit LG=P2^1;
- sbit LR=P2^0;
- sbit fmq=P1^2;
- uchar temp=0;
- uchar value=0;
- uchar jinji=0;
-
- void delay(uint j)
- {uchar t;
- while(j--)
- for(t=0;t<125;t++);
- }
-
- void baojing()
- {if(s1==0)
- {delay(10);
- if(s1==0)
- {while(!s1);
- jinji=1;temp=4;}
- }}
-
- void prebufang()
- {if(jinji==0)
- {if(s2==0)
- {delay(10);
- if(s2==0)
- {while(!s2);
- temp=1;} }}}
- void guanbi()
- { if(s3==0)
- {temp=5;}}
- void alarm()
- {if(SR==0&temp==2)
- {delay(10);
- if(SR==0)
- {while(!SR);
- temp=3; }} }
- void time0_int() interrupt 1{
- TH0 = 0x3c; TL0 = 0xb0; // 50ms
- value ++;
- if(value == 100)
- { temp=2;value=0; } }
- void main( )
- {LR=1;LY=1;LG=1;
- EA = 1; //開總中斷
- TMOD = 0X01; //定時器0工作方式1
- ET0 = 1; //開定時器0中斷
- TH0 = 0x3c;
- TL0 = 0xb0;
- while(1)
- { baojing();
- prebufang();
- guanbi();
- alarm();
- switch(temp)
- {case 1:{LY=0;delay(500);LY=1;delay(500);TR0 =1;}break; //布防鍵按下
- case 2 : {LY=0;TR0=0;}break; //5秒后常亮
- case 3:{fmq=0;LR=0;LY=1;LG=0; delay(500);
- fmq=1;LR=1;LY=1;LG=1;delay(500);}break;//布防期間,有人來了
- case 4 :{fmq=0;LR=0;LY=1;LG=1; delay(500);
- fmq=1;LR=1;LY=1;LG=1; delay(500);} break; //報警
- case 5 :{LR=1;LG=1;LY=1;fmq=1;jinji=0;}break;//關(guān)閉報警/取消布防
- default:{}
- }}}
復(fù)制代碼
仿真文件下載:
單片機設(shè)計.7z
(425.98 KB, 下載次數(shù): 152)
2021-2-18 20:24 上傳
點擊文件名下載附件
作者: 額。。 時間: 2021-3-28 19:25
請問做成實物需要什么器件.
作者: 已飛的鷹 時間: 2021-5-5 20:04
根本就沒有文中那些按鍵,不對版的東西,各位不要下載
-
51hei.png
(12.33 KB, 下載次數(shù): 136)
下載附件
2021-5-17 18:17 上傳
作者: YOLO2333 時間: 2021-5-17 11:01
自己加一下就行了,論壇很多程序為了防止伸手黨,故意把對的程序改錯一點點了發(fā)上來的,這樣由于伸手黨都不懂,他就無法使用了,當(dāng)然有心學(xué)習(xí)的可以分分鐘搞定這些小錯誤
作者: genchua 時間: 2021-5-19 10:35
請問做成實物需要什么器件,傳感器什么的需要什么呢
作者: 34567890- 時間: 2021-5-25 23:30
沒有哪個按鍵 能說清楚嗎
作者: 34567890- 時間: 2021-5-25 23:39
熱釋電紅外報警器 單片機開發(fā)板 按鍵 燈
作者: 曾某人。 時間: 2021-5-26 20:30
照著你的代碼和仿真圖做好后,運行時燈不會亮是什么原因啊
作者: 34567890- 時間: 2021-6-9 16:46
三個燈都不亮嗎
作者: dramu5 時間: 2021-12-9 16:43
分圖跟主圖不太一致
作者: xhjdjdjdj 時間: 2022-5-26 23:52
分圖跟主圖不太一致
作者: zhangyinan1102 時間: 2022-5-27 12:57
這個對我很不錯
作者: yhyxxx 時間: 2023-1-3 00:18
不行,燈不亮
作者: 35456 時間: 2023-1-3 19:39
分圖跟主圖不太一致
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |