標(biāo)題: 基于51單片機(jī)的人體紅外報(bào)警器程序設(shè)計(jì) [打印本頁(yè)]

作者: 大哥大雷神    時(shí)間: 2016-12-21 14:31
標(biāo)題: 基于51單片機(jī)的人體紅外報(bào)警器程序設(shè)計(jì)
//51單片機(jī)簡(jiǎn)人體紅外報(bào)警器設(shè)計(jì),手動(dòng)按鍵控制實(shí)現(xiàn)緊急報(bào)警、布防、撤防、關(guān)閉報(bào)警)//
#include <reg52.h>
#define uchar unsigned char
#define uint  unsigned int

uchar Mode=1,Mode1=0;
uchar t;

sbit s1=P1^0;
sbit s2=P1^2;
sbit s3=P1^1;

bit alarm=1,kai=1;

sbit LR=P2^0;//紅燈報(bào)警燈
sbit LY=P2^2;//布防燈
sbit LG=P2^1;//紅外信號(hào)檢測(cè)燈

sbit Feng=P1^3;//蜂鳴器報(bào)警
sbit HR=P0^3;//紅外模塊接入端口

void delay(uint x) //毫秒級(jí)延時(shí)函數(shù)
{
  uint i,j;
  for(i=x;i>0;i--)
     for(j=110;j>0;j--);
}

void di()
{
        LR=0;//蜂鳴器報(bào)警,紅燈跟隨閃爍
        Feng=0;
        delay(80);
        LR=1;
        Feng=1;
        delay(200);        
}
void main()
{
        LR=1;//初始化三個(gè)燈都是滅
        LG=1;
        LY=1;
        delay(5);
        while(1)
        {
                if(s1==0)                                //緊急手動(dòng)報(bào)警
                {
                                delay(5);            //延時(shí)消抖
                                if(s1==0)        
                                {
                                        delay(5);
                                        while(!s1);
                                        kai=0;
                                        LY=1;            
                                        LG=1;
                                        alarm=0;  //進(jìn)入報(bào)警狀態(tài)
                                        Mode1=1;  //Mode1置1:緊急報(bào)警過(guò)程中以防按了布防鍵取消緊急報(bào)警
                                        delay(5);
                                }                        

                }
                if(s3==0)                           //取消報(bào)警
                {
                                                               
                                delay(5);
                                if(s3==0)                                
                                {
                                        delay(5);
                                        while(!s3);
                                        LR=1;
                                        LY=1;
                                        Mode=1;
                                        Mode1=0;
                                        alarm=1;
                                        delay(5);
                                }
                }
                if(s2==0)                        //布防
                {
                        if(Mode1==1)    //判斷Mode1的狀態(tài),如果是緊急報(bào)警狀態(tài)就保持,否則進(jìn)入布防設(shè)置
                        {
                                alarm=0;
                        }
                        else
                        {
                                for(t=0;t<200;t++)
                                {
                                  LY=~LY;
                                  delay(200);
                                }
                                LR=1;
                                LY=0;
                                Mode=0;        //布防狀態(tài)標(biāo)識(shí)
                                kai=1;
                                delay(5);
                        }
                                
                }                 
                if(alarm==0)
                {
                        di();
                        delay(100);
                        di();
                        delay(100);
                }
                if(HR==1&&Mode==0)
                {
                        alarm=0;//開(kāi)始進(jìn)入報(bào)警
                }
                else
                {
                        if(kai)
                        {
                                alarm=1;
                                LR=1;
                        }
                }
                if(HR==1)  //檢測(cè)紅外模塊有信號(hào),綠燈亮,否則滅
                {           
                        LG=0;
                        delay(200);
                }
                else
                {
                        LG=1;
                }                        
        }
}



作者: kkfy888    時(shí)間: 2016-12-21 22:07
試驗(yàn)看看正常不
作者: 說(shuō)過(guò)的挺好    時(shí)間: 2016-12-21 22:26
抱走~~試試看行不行~
作者: 大哥大雷神    時(shí)間: 2016-12-23 11:17
肯定行
作者: 303977143    時(shí)間: 2017-11-28 11:39
51有你真好
作者: 1318777948    時(shí)間: 2018-6-22 22:36
有沒(méi)有PCB圖啊
作者: huang137    時(shí)間: 2018-11-18 22:19
怎么在開(kāi)發(fā)板上面連接線

作者: 我家小姚    時(shí)間: 2018-11-22 13:22
有沒(méi)有仿真圖,原理圖呢
作者: 電子灬愛(ài)好者    時(shí)間: 2018-12-5 15:51
很好的資料
作者: snowy.    時(shí)間: 2019-6-25 10:12
有沒(méi)有用紅外感應(yīng)人在五米內(nèi)一直報(bào)警的系統(tǒng)呢
作者: 來(lái)51學(xué)習(xí)    時(shí)間: 2019-6-26 22:11
snowy. 發(fā)表于 2019-6-25 10:12
有沒(méi)有用紅外感應(yīng)人在五米內(nèi)一直報(bào)警的系統(tǒng)呢

如果人在5米內(nèi)一直報(bào)警,可以采用單次觸發(fā)模式
作者: 121081    時(shí)間: 2019-6-27 10:04
紅外感應(yīng)范圍是多少
作者: ssst    時(shí)間: 2019-11-6 20:46
你有沒(méi)有仿真圖啊
作者: 流浪2020年    時(shí)間: 2019-12-11 23:48
不可能可以,紅外線檢測(cè)部分實(shí)現(xiàn)不了,請(qǐng)樓主認(rèn)真看看51單片機(jī)使用手冊(cè),單片機(jī)檢測(cè)不了外部高電平。
作者: 我們不一樣111    時(shí)間: 2019-12-16 11:28
仿真圖沒(méi)有
作者: 熱愛(ài)科技生活    時(shí)間: 2020-4-20 10:24
是不是要用keil燒錄




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1