當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 單片機(jī)學(xué)習(xí) > 單片機(jī)教程 > 利用單片機(jī)制作報(bào)警器及報(bào)警系統(tǒng)常見問題分析
利用單片機(jī)制作報(bào)警器及報(bào)警系統(tǒng)常見問題分析,在現(xiàn)代社會(huì),家庭安全、財(cái)產(chǎn)安全和社會(huì)公共安全已成為人們普遍關(guān)注的問題。小偷闖入大門,爬上窗戶,博物館展品沒有理由失去,河水水位上升…這一系列問題與人們的生活息息相關(guān)。
針對(duì)這種現(xiàn)象,我們利用單片機(jī)原理,專門設(shè)計(jì)了一種簡(jiǎn)單的報(bào)警裝置來解決這些問題。
一、設(shè)計(jì)規(guī)劃
1、整體構(gòu)思系統(tǒng),確定工作原理。
2、用Protel99設(shè)計(jì)電路圖,確定所需元件參數(shù),并由此設(shè)計(jì)PCB圖。
3、購(gòu)買所需元件和實(shí)驗(yàn)板,依據(jù)PCB焊接電路。
4、用KeilC51編寫程序,并用仿真器仿真通過,下載至芯片AT89S52。
5、調(diào)試硬件系統(tǒng),符合預(yù)期構(gòu)想。
6、創(chuàng)新改進(jìn)系統(tǒng)。
二、原理設(shè)計(jì)
原理簡(jiǎn)介
通過單片機(jī)AT89S52控制紅色LED2、綠色LED1、蜂鳴器U1和監(jiān)測(cè)信號(hào)端口J2,C3排除干擾信號(hào)。圖中S2、EC1和R2組成單片機(jī)復(fù)位電路,三極管Q0起音頻放大作用,晶振Y0為12MHz,J1接DC5V電源。
工作描述
安全情況下,綠燈點(diǎn)亮,紅燈熄滅,喇叭無聲;一旦信號(hào)監(jiān)測(cè)端口有脈沖或電平變化(依場(chǎng)合設(shè)置為高脈沖或低脈沖,高電平或低電平)出現(xiàn),即觸發(fā)報(bào)警器進(jìn)入報(bào)警狀態(tài),紅綠燈交替閃爍,喇叭發(fā)出警報(bào)聲。
除非關(guān)閉電源或按下復(fù)位鍵,否則會(huì)報(bào)警不止,從而達(dá)到報(bào)警目的。
三、硬件設(shè)計(jì)
1、PCB的設(shè)計(jì)
PCB屬性:?jiǎn)蚊姘?.62×5.08cm2 (可依場(chǎng)合小型化)
2、元器件清單
3、元件安裝圖
4、布線圖
四、單片機(jī)程序
1、程序流程圖
2、C語(yǔ)言程序
#include
#define Signal 0x00 //脈沖信號(hào)定義
sbit LED_G=P0^0; //綠燈驅(qū)動(dòng)端口
sbit LED_R=P0^1; //紅燈驅(qū)動(dòng)端口
sbit Pulse=P2^0; //脈沖信號(hào)檢測(cè)端口
sbit Buzzer=P2^1; //喇叭驅(qū)動(dòng)端口
unsigned int Count=0;//閃爍時(shí)間計(jì)數(shù)
//延時(shí)1毫秒函數(shù)
void Delay_ms(unsigned int ms)
{
unsigned char Temp;
while(ms--)
for(Temp=0;Temp<120;Temp++);
}
//高脈沖信號(hào)掃描函數(shù)
unsigned char Key_Scan()
{
if(Pulse==0)
{
Delay_ms(100);
if(Pulse==1)
{
Delay_ms(200);
return Signal;
}
else return 0xff;
}
else return 0xff;
}
//定時(shí)器0初始化
void Timer_Start()
{
TMOD=0x01;
TH0=0xfc;
TL0=0x18;
TR0=0;
ET0=1;
EA=1;
}
//定時(shí)器0中斷服務(wù)函數(shù),閃燈和鳴喇叭
void Timer0_Serve()interrupt 1
{
TH0=0xfc;
TL0=0x18;
Count++;
if(Count>=200)
{
Count=0;
LED_G=~LED_G;
LED_R=~LED_G;
Buzzer=~Buzzer;
}
}
//主函數(shù)
void main()
{
unsigned char Key_Code;
Timer_Start();
LED_G=0;
LED_R=1;
Buzzer=1;
Pulse=1;
while(1)
{
Key_Code=Key_Scan();
switch(Key_Code)
{
case Signal:TR0=1;break;
default:break;
}
}
}
3、匯編程序
;程序名稱:
; 簡(jiǎn)易報(bào)警器
;硬件資源:
; 紅色LED-------------P2.3
; 綠色LED-------------P2.4
; 蜂鳴器--------------P2.0
; 脈沖輸入------------P3.4
;-------------------------------------
;端口定義
ledg equ p2.4
ledr equ p2.3
bzzr equ p2.0
pls equ p3.4
;-------------------------------------
;數(shù)據(jù)存儲(chǔ)
pulse equ 20h.0
;-------------------------------------
;程序代碼
org 0000h
jmp main
org 0100h
;系統(tǒng)初始化
init :
clr pulse
setb ledr
clr ledg
setb bzzr
setb pls
ret
;延時(shí)ms毫秒
delay_ms:
mov r7,a
delay1 :mov r6,#5
delay2 :mov r5,#100
djnz r5,$
djnz r6,delay2
djnz r7,delay1
ret
;脈沖檢測(cè)
pls_ch :
jb pls,fail
mov a,#1
call delay_ms
jnb pls,succ
jmp fail
succ :setb pulse
jmp exit
fail :clr pulse
exit :ret
;報(bào)警信號(hào)產(chǎn)生
alarm :
cpl bzzr
cpl ledr
mov c,ledr
cpl c
mov ledg,c
ret
;主程序
main :
call init
scan :call pls_ch
jb pulse,start
jmp scan
start :call alarm
mov a,#200
call delay_ms
jmp start
end
說明:匯編程序的設(shè)計(jì)思路與C語(yǔ)言的有所不同,程序更高效和緊湊,建議選用。
五、應(yīng)用舉例
1、家庭安全:在J2端口接一個(gè)大面積按鍵,置于門口地毯之下,夜間打開報(bào)警器,只要有人踏上地毯,J2獲得一個(gè)低脈沖,即觸發(fā)報(bào)警,如果再在窗欞上安置一個(gè)滑觸開關(guān),一同接入J2端口,則可達(dá)到綜合防盜目的。
2、文物安全:在J2端口接一個(gè)小按鍵,置于博物館文物之下,全天打開報(bào)警器,只要有人拿起文物,按鍵彈起,J2端口立即獲得一個(gè)高脈沖,即觸發(fā)報(bào)警,如果再增加同樣的檢測(cè)端口和指示燈,則可對(duì)多個(gè)文物同時(shí)監(jiān)控。
3、水利安全:在J2端口接一個(gè)浮力觸發(fā)裝置,放置在江邊,設(shè)定水位報(bào)警點(diǎn),一旦達(dá)到危險(xiǎn)水位,同樣報(bào)警,如果在江邊安置一個(gè)水位到電壓的傳感器,經(jīng)AD轉(zhuǎn)換送入單片機(jī),可實(shí)時(shí)遠(yuǎn)程監(jiān)測(cè)水位變化。
……
六、功能擴(kuò)展
在脈沖端口接入一個(gè)溫度傳感器,如DS18B20,單片機(jī)通過對(duì)溫度采樣,可實(shí)現(xiàn)自動(dòng)溫度超限報(bào)警。
……
說明:本報(bào)警器作為一個(gè)簡(jiǎn)單的單片機(jī)應(yīng)用設(shè)計(jì),適用于畢業(yè)設(shè)計(jì)或課程設(shè)計(jì),而且可依據(jù)需求進(jìn)行相應(yīng)的擴(kuò)展設(shè)計(jì)。
七、常見問題
利用單片機(jī)應(yīng)用系統(tǒng)進(jìn)行報(bào)警的常用方法是什么?
常用的方法就是把采集到的數(shù)據(jù)送到單片機(jī)應(yīng)用系統(tǒng)進(jìn)行處理,與該參數(shù)的上、下限給定值進(jìn)行比較,若超過給定值時(shí)則進(jìn)行報(bào)警,否則,就作為正常值進(jìn)行顯示或控制。
利用單片機(jī)應(yīng)用系統(tǒng)進(jìn)行報(bào)警的常用方法是什么?
在單片機(jī)報(bào)警系統(tǒng)中,發(fā)光二極管常用何種型號(hào)的集成電路驅(qū)動(dòng)?
由于發(fā)光二極管的驅(qū)動(dòng)電流在20~30mA,所以不能用TTL門電路的輸出直接啟動(dòng)。在單片機(jī)報(bào)警系統(tǒng)中,發(fā)光二極管常見的驅(qū)動(dòng)方法是采用OC門進(jìn)行驅(qū)動(dòng),如74LS06或74LS07等型號(hào)的OC門。
單片機(jī)報(bào)警系統(tǒng)有哪兩種程序設(shè)計(jì)方法?
依據(jù)報(bào)警參數(shù)和傳感器劃分,簡(jiǎn)單的報(bào)警程序可分為兩種:一種是全軟件報(bào)警程序,另一種是硬件申請(qǐng),軟件處理報(bào)警程序。
怎樣使用全軟件報(bào)警程序的方法實(shí)現(xiàn)報(bào)警?
全軟件件報(bào)警程序的基本方法是:作業(yè)現(xiàn)場(chǎng)的被測(cè)參數(shù)經(jīng)傳感器、變送器、模/數(shù)轉(zhuǎn)換器送到單片機(jī)后,再與規(guī)定的上、下限給定值相比較,根據(jù)比較的結(jié)果進(jìn)行報(bào)警或處理,其整個(gè)過程都由軟件實(shí)現(xiàn)。
怎樣用硬件申請(qǐng)、軟件處理報(bào)警程序的方法實(shí)現(xiàn)報(bào)警?
使用這種報(bào)警方法時(shí),報(bào)警要求不是通過程序比較法得到的,而是直接由傳感器產(chǎn)生的。在發(fā)現(xiàn)警性,傳感器發(fā)出報(bào)警要求之后,立即向CPU提出中斷申請(qǐng),CPU響應(yīng)中斷后,立刻進(jìn)入中斷服務(wù)程序,實(shí)現(xiàn)報(bào)警或?qū)?shù)、位置實(shí)現(xiàn)監(jiān)控。例如:電接點(diǎn)壓力式報(bào)警,吊車的限位控制等。
報(bào)警程序根據(jù)系統(tǒng)中的參數(shù)的要求,可以分為哪兩種程序?
報(bào)警程序根據(jù)系統(tǒng)和參數(shù)的要求,可以分為簡(jiǎn)單的越限報(bào)警和報(bào)警處理程序兩種。