<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)的簡(jiǎn)易報(bào)警器

          基于單片機(jī)的簡(jiǎn)易報(bào)警器

          作者: 時(shí)間:2016-11-18 來源:網(wǎng)絡(luò) 收藏
          一、需求分析

          現(xiàn)代社會(huì),家庭安全、財(cái)產(chǎn)安全和社會(huì)公共安全已成為人們普遍關(guān)注的問題。盜賊破門而入、爬窗而出,博物館展品無(wú)故丟失,江河水位上漲……這一系列問題都和人們生活息息相關(guān)。

          本文引用地址:http://www.ex-cimer.com/article/201611/315863.htm

          針對(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)亮,紅燈熄滅,喇叭無(wú)聲;一旦信號(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、布線圖

          5、硬件三維圖

          五、單片機(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

          ;-------------------------------------
          ;端口定義
          ledgequp2.4
          ledrequp2.3
          bzzrequp2.0
          plsequp3.4

          ;-------------------------------------
          ;數(shù)據(jù)存儲(chǔ)
          pulseequ20h.0

          ;-------------------------------------
          ;程序代碼
          org0000h
          jmpmain
          org0100h
          ;系統(tǒng)初始化
          init :
          clrpulse
          setbledr
          clrledg
          setbbzzr
          setbpls
          ret

          ;延時(shí)ms毫秒
          delay_ms:
          movr7,a
          delay1 :movr6,#5
          delay2 :movr5,#100
          djnzr5,$
          djnzr6,delay2
          djnzr7,delay1
          ret

          ;脈沖檢測(cè)
          pls_ch :
          jbpls,fail
          mova,#1
          calldelay_ms
          jnbpls,succ
          jmpfail
          succ :setbpulse
          jmpexit
          fail :clrpulse
          exit :ret

          ;報(bào)警信號(hào)產(chǎn)生
          alarm :
          cplbzzr
          cplledr
          movc,ledr
          cplc
          movledg,c
          ret

          ;主程序
          main :
          callinit
          scan :callpls_ch
          jbpulse,start
          jmp scan
          start :callalarm
          mova,#200
          calldelay_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ì)。



          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();