欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 16417|回復: 4
收起左側

基于STC89C52單片機的防盜報警系統課程設計報告(論文)下載

[復制鏈接]
ID:289599 發表于 2018-4-1 10:01 | 顯示全部樓層 |閱讀模式
課程設計(設計報告)論文
基于STC89C52單片機的防盜報警系統

專    業:自動化

摘  要

隨著現代科技社會的發展,人們的生活水平不斷地提高,科技產品每時每刻都在不斷地更新,人們不斷的追求創新的科技產品,家居智能化也逐步的走進了人們的生活。與此同時,人們對自己生活環境的舒適性和安全性有了新的要求,特別是在家居安全方面,舒適生活的前提就是有一個相對安全的環境,雖然在一些高端的住宅、酒店等已經實現了智能樓宇安保系統應用,但在絕大部分的普通住宅、賓館等仍然存在財產安全等一系列的安全問題。在本文中介紹了一種利用紅外熱釋電傳感器進行監控,并能夠及時進行報警的系統的設計。

本設計基于STC89C52單片機,利用熱釋電紅外傳感器良好的工作特性及隱蔽性高的特點射設計了防盜報警系統,以實現防盜報警的目的。

目  錄

1緒論

2系統設計

2.1硬件設計

2.1.1電源模塊

2.1.2熱釋電紅外傳感器

2.2程序設計

2.3軟件仿真

3仿真結果

4硬件調試

5設計總結

附錄:程序源代碼



1 緒論

隨著科技的進步,家居智能化、現代化的發展,我們的生活水平有了很大提高。各種類型的高檔家電和貴重物品已成為多數家庭中不可或缺的重要組成。同時也帶來了一定的安全問題,雖然智能樓宇安保系統能夠有效的解決這一問題,但是市場上的智能樓宇安保系統大部分是適用于一些大公司的重要機構或者僅僅應用在高檔住宅小區、酒店等,其價格昂貴,使普通家庭難以承受。

如果設計一種價格低廉,性能可靠、智能化的報警系統,必將在私人財產安全性的應用中發揮重要的作用。在防盜報警領域中,常利用紅外線的隱蔽性及其相關檢測產品的工作特性穩定的優勢進行防盜報警,紅外線報警器分為主動式和被動式兩種。主動式紅外線報警器,是報警器主動發出紅外線,紅外線碰到障礙物,就會反彈回來,被報警器的探頭接收。如果探頭監測到,紅外線是靜止不動的,那么報警器就不會報警。當物體隔斷紅外線的時候,探頭就會檢測到異常,就會報警。被動式報警器不能發射紅外線,只能被動接收紅外線。這類紅外線報警器對溫度敏感,溫度越高的物體輻射出的紅外線越強,當感應到環境中存在高出背景強度的輻射時,就觸發報警。

本設計采用被動式紅外線傳感器——熱釋電紅外傳感器,以STC89C52為控制核心,對人體發出的紅外線進行檢測,實現防盜報警。

2 系統設計

本設計包括硬件和程序設計兩個部分。硬件部分主要包括:紅外感應部分、STC89C52單片機、報警系統三大部分。程序設計部分為系統的控制程序。在系統設計過程中,首先通過Proteus仿真軟件對硬件電路的設計進行仿真搭建,通過軟件仿真完成對程序的驗證。完成程序驗證及元器件校驗后,進行硬件搭建,將程序下載到單片機芯片中,完成系統的調試。

本設計采用被動式紅外線傳感器——熱釋電紅外傳感器,以STC89C52為控制核心,對人體發出的紅外線進行檢測,實現防盜報警。若檢測到紅外信號則觸發報警器以實現防盜報警的目的。其中系統控制由以STC89C52為控制核心的最小系統和指示電路、報警電路、按鍵控制、紅外感應、電源模塊組成。系統工作原理為:由熱釋電紅外感應器完成信息采集、處理,經過處理后的模擬量變為數字量傳送至單片機,由單片機發出報警信號至報警裝置進行報警。系統總體設計原理圖如圖2-1所示:

圖2-1 系統總體設計框圖

2.1 硬件設計

2.1.1 電源模塊

本系統需求供電電壓為4.5v左右,可通過變壓器變壓由220v交流電之間供電,也可由3個1.5v的直流干電池直接供電。前者供電較為穩點,但由后者供電方便系統的安裝,其缺點是需要手動定時更換電池,以保證系統正常工作。

2.1.2 熱釋電紅外傳感器

熱釋電紅外傳感器(簡稱PIR)是80年代發展起來的一種新型高靈敏度探測元件。熱釋電紅外傳感器是基于熱電效應原理的熱電型紅外傳感器。其熱電系數遠遠高于熱電偶,同時為了抑制因自身溫度變化而產生的干擾, 該傳感器在工藝上將兩個特征一致的熱電元反向串聯或接成差動平衡電路方式, 因而能以非接觸式檢測出物體放出的紅外線能量變化,并將其轉換成電壓信號輸出。同時通過裝在探頭內的場效應管完成電壓信號的放大以驅動各種控制電路,其在實際中的應用主要有:電源開關控制、防盜防火報警、自動監測等。

人體輻射的紅外線中心波長為9~10--um,而探測元件的波長靈敏度在0.2~20--um范圍內幾乎穩定不變。因此在探測器的前方裝設一個菲涅爾透鏡,該透鏡用透明塑料制成,將透鏡的上、下兩部分各分成若干等份,制成一種具有特殊光學系統的透鏡,它和放大電路相配合,可將信號放大70分貝以上,這樣就可以測出10~20米范圍內人的行動。在傳感器頂端開設了一個裝有濾光鏡片的窗口,這個濾光片可通過光的波長范圍為7~10--um,正好適合于人體紅外輻射的探測,而對其它波長的紅外線由濾光片予以吸收,這樣便形成了一種專門用作探測人體輻射的紅外線傳感器,本傳感器是整個系統的關鍵,通過本傳感器對人體紅外線的檢測以實現報警電路信號的獲取。如圖2-2所示為熱釋電紅外傳感器實物圖。

圖2-2 熱釋電紅外傳感器

2.1.3 單片機最小系統

STC89C52是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統可編程Flash 存儲器。片上Flash允許程序存儲器在系統可編程,同時也適用于常規編程器。其最重要的特點是有掉電保護,其RAM內容能夠被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。

單片機最小系統是由STC89C52單片機、復位電路和晶振電路構成。其工作電壓范圍為:4V-5.5V,通常我們給單片機5V直流電源。單片機的與電源的連接方式為40引腳VCC接正極(5V),20引腳VSS接地。

復位電路,就是利用它把電路恢復到起始狀態。確保使系統各部件處于確定的初始狀態,并從初態開始工作。VCC上電時,使電容C充電,在10 K電阻上出現高電位電壓,使得單片機復位;幾毫秒后,電容C充滿,10K電阻上電流降為0A,電壓也為0V,使得單片機進入工作狀態。工作期間,按下S1開關,電容C放電,在10K電阻上出現電壓,使得單片機復位。

時鐘電路一般由晶體振蕩器、晶震控制芯片和電容組成,產生像時鐘一樣準確運動的振蕩電路,向單片機提供一個正弦波信號作為基準,控制單片機的執行速度。XTAL1和XTAL2分別為反向放大器的輸入和輸出,該反向放大器可以配置為片內振蕩器。如采用外部時鐘源驅動器件,XTAL2應不接。因為一個機器周期含有6個狀態周期,而每個狀態周期為2個振蕩周期,所以一個機器周期共有12個振蕩周期,如果外接石英晶體振蕩器的振蕩頻率為12MHZ,一個振蕩周期為1/12us。如圖2-3所示為單片機最小系統。

圖2-3 單片機最小系統

2.1.4 按鍵控制電路

按鍵控制電路包括布防、緊急報警和取消報警三種工作狀態,當按下布防按鍵后,系統在20秒后進入檢測狀態,當有人靠近時,熱釋電紅外傳感器檢測到紅外信號,送至單片機,單片機發出信號控制報警電路進行聲光報警。如遇到緊急情況時,可直接按下緊急報警鍵,直接觸發聲光報警。按鍵控制電路如圖2-4所示。

圖2-4 按鍵控制電路

2.1.5 指示燈及報警電路

指示電路使用紅、綠、黃發光二極管共陽極連接構成,紅燈表示報警指示燈,黃燈表示系統指示燈,綠燈表示布防指示燈。在P20、P21和P22分別與LED指示燈相接,P23與蜂鳴器相接,同時與蜂鳴器串聯的三極管起到開關作用,當三極管達到飽和狀態時,蜂鳴器被驅動正常工作。報警電路如圖2-5所示。

圖2-5 報警電路

2.2 程序設計
     依據系統設計目的我們可以分析得到主程序工作流程圖,如圖2-4所示。

啟動防盜報警系統,黃色發光二極管亮,等待按鍵信號輸入,當布防按鍵按下時,系統進入20秒布防時間,在此期間綠色發光二極管閃爍,布防時間結束后,綠色發光二極管常亮,等待紅外信號輸入,當檢測到紅外信號時,觸發報警電路,蜂鳴器報警,紅色發光二極管閃爍;當緊急報警按鍵按下時,直接觸發報警電路,蜂鳴器報警,紅色發光二極管閃爍。



圖2-4 主程序流程圖

2.3 軟件仿真

Proteus是基于SPICE3F5仿真引擎的混合電路仿真軟件,不僅能夠仿真模擬、數字電路以及模數混合電路,更具特色的是它能夠仿真基于單片機的電子系統。Proteus不但完全支持MCS-51及其派生系列單片機的設計系統,另外也能仿真基于AVR和PIC系列的單片機系統。Proteus的仿真資源Proteus軟件可提供的模擬、數字、交(直)流等元器件達30多個元件庫,共計數千種。此外,對于元件庫中沒有的器件,使用者也可依照需要自己創建。軟件調試方面,其自身自帶匯編編譯器,不支持C語言。但可以將它與Keil C51集成開發環境連接,將用匯編和C語言編寫的程序編譯好之后,可以立即進行軟、硬件結合的系統仿真,如同使用仿真器一樣來調試程序。如圖2-5所示為Proteus軟件。

圖2-5 Proteus軟件

3 仿真結果

如圖3-1所示為系統仿真系統搭建。

圖3-1 Proteus仿真系統搭建

在仿真過程中,首先將源程序的.hex文件載入單片機芯片中,然后開始仿真,閉合電源模塊中的SW3開關,指示燈D5點亮;閉合布防按鍵,則D3指示燈開始閃爍,進入20秒布防時間,布防結束后,D3指示燈常亮,若紅外熱釋電傳感器檢測到紅外線即開關SW2閉合,則觸發報警(蜂鳴器LS1響,指示燈D1閃爍);閉合手動報警按鍵,直接觸發報警(蜂鳴器LS1響,指示燈D1閃爍);在報警過程中,閉合取消鍵則取消報警(蜂鳴器LS1停止報警,指示燈D1停止閃爍)。

仿真過程中,開始由于線路連接問題,導致仿真無法正常運行,經過反復檢查終于發現,在連線過程中未能將電源成功接入電路中,導致整個系統無法正常運行。

最終經仿真驗證,系統程序正確,硬件電路元件選擇合理。

4 硬件調試

如圖4-1為系統正面圖,圖4-2為系統背面圖。在系統正面圖中所示熱釋電紅外傳感器中有兩個調節旋鈕,左邊調節旋鈕為靈敏度調節,右邊調節旋鈕為延時調節,通過調節兩個旋鈕完成監測精度和信號延時的設定。

調試時,首先對焊接點進行觀察,檢查是否有虛焊、漏焊的焊點,保證系統能夠安全運行。初步檢查后,使用萬用表對各個焊點進行再次檢查,確保電路沒有短路且其通斷狀態與設計一致,保證系統能夠安全運行。在確保系統能夠安全運行后,對其加電檢查,用萬用表對各個器件兩端電壓進行檢測,確保其能夠正常工作,最后將程序寫入單片機中,對復位電路、指示電路、報警電路、按鍵控制和紅外檢測進行驗證。

圖4-1 系統正面圖

圖4-2 系統背面圖

5 設計總結

本設計完成了基于單片機的熱釋電紅外防盜報警器的制作。該防盜報警器以STC89C52單片機為系統處理核心,通過熱釋電紅外傳感器這種被動式紅外探測器件,以非接觸方式探測人體發出的紅外輻射,并將其轉化為電信號輸出,同時該傳感器能有效的抑制人體輻射波長以外的紅外光線與可見光的干擾。在正常工作時傳感器輸出低電平,當有人在探測區范圍內移動時,傳感器輸出變為高電平,并將此高電平信號作為單片機的外部觸發信號處理,同時單片機發出響應的控制信號,驅動聲光報警電路報警。該防盜報警器的特點有以下幾點:

  •         操作簡單、易懂、靈活。
  •         安裝方便、智能性高、誤報率低。

隨著人們安全意識的增強以及科學技術的快速發展,防盜報警器必將在更廣闊的領域得到更深層次的應用。


單片機源程序如下:
  1. #include <reg52.h>                       //調用單片機頭文件
  2. #define uchar unsigned char  //無符號字符型 宏定義              變量范圍0~255
  3. #define uint  unsigned int              //無符號整型 宏定義              變量范圍0~65535

  4. #define key_io P1
  5. uchar key_can;

  6. //   紅外熱釋電平時為0  有輸出為1

  7. sbit beep = P2^3;                 //蜂鳴器定義
  8. sbit red  = P2^2;                 //紅色發光二極管定義
  9. sbit green = P2^1;                 //綠色發光二極管定義
  10. sbit yellow = P2^0;                 //黃色發光二極管定義
  11. sbit hw    = P1^3;                 //紅外熱釋傳感器定義
  12. bit flag_300ms = 0;

  13. /****************獨立按鍵處理函數************************/               
  14. void key()
  15. {
  16.               static uchar key_new = 0,key_old = 0,key_value = 0;
  17.               if(key_new == 0)                            //按鍵松開
  18.               {
  19.                             if((key_io & 0x07) == 0x07)
  20.                                           key_value ++;
  21.                             else
  22.                                           key_value = 0;
  23.                             if(key_value >= 5)              //按鍵松開松手檢測
  24.                             {
  25.                                           key_value = 0;
  26.                                           key_new = 1;              //按鍵松開后進入等待按鍵狀態
  27.                             }
  28.               }
  29.               else
  30.               {
  31.                             if((key_io & 0x07) != 0x07)              //按鍵按下
  32.                                           key_value ++;
  33.                             else
  34.                                           key_value =0;
  35.                             if(key_value >= 5)              //按鍵按下消抖
  36.                             {
  37.                                           key_value = 0;
  38.                                           key_new = 0;                 //按鍵松開后進入等待松開按鍵狀態
  39.                             }
  40.               }
  41.               key_can = 20;
  42.               if((key_new == 0) && (key_old == 1))
  43.               {
  44.                             switch(key_io & 0x07)
  45.                             {
  46.                                           case 0x06: key_can = 1; break;                //得到按鍵值
  47.                                           case 0x05: key_can = 2; break;                //得到按鍵值
  48.                                           case 0x03: key_can = 3; break;                //得到按鍵值
  49.                             }
  50.               }                                         
  51.               key_old = key_new;            
  52. }

  53. /*************定時器0初始化程序***************/
  54. void time_init()               
  55. {
  56.               EA   = 1;                              //開總中斷
  57.               TMOD = 0X01;                //定時器0工作方式1
  58.               ET0  = 1;                              //開定時器0中斷
  59.               TR0  = 1;                              //允許定時器0定時
  60. }

  61. uchar flag_alarm ;     //報警標志位
  62. uchar flag_bufang ;    //布防標志位
  63. uchar flag_bufang_en ; //布防標志位使能
  64. uint  flag_value;      //用做定時器的變量

  65. /******************紅外報警處理**********************/               
  66. void hongwai_dis()
  67. {
  68.               if(flag_alarm == 1)                 //報警
  69.               {
  70.                             red = ~red;                               //紅燈報警
  71.                             beep = ~beep;                 //蜂鳴器報警
  72.               }            
  73.               if(flag_bufang_en == 1) //準備開始布防
  74.               {
  75.                             green = ~green;                 //綠燈閃
  76.                                          
  77.               }
  78.               if(flag_bufang == 1)   //確認布防
  79.               {
  80.                             green = 0;         //如果延時布防成功 綠燈長亮
  81.                             if(hw == 1)                     //紅外有輸出
  82.                             {
  83.                                           flag_alarm = 1;            
  84.                             }
  85.               }

  86. }

  87. /******************對應不同按鍵處理**********************/               
  88. void key_with()
  89. {
  90.               if(key_can == 1)              //按鍵緊急報警
  91.               {
  92.                             flag_alarm = 1;  //報警標志位 ;                           
  93.               }
  94.               if(key_can == 2)     //布防按鍵
  95.               {
  96.                             flag_bufang_en = 1;                           
  97.               }
  98.               if(key_can == 3)              //取消報警  把變量清零
  99.               {
  100.                             flag_alarm = 0;  
  101.                             flag_bufang = 0;
  102.                             flag_bufang_en = 0;            
  103.                             flag_value = 0;            
  104.                             P2 = 0xff;     
  105.               }                                         
  106. }


  107. /******************主程序**********************/               
  108. void main()
  109. {
  110.               time_init();
  111.               while(1)
  112.               {
  113.                             key();                             
  114.                             yellow = ~hw;              //紅外熱釋電指示燈 有輸出就亮黃燈
  115.                             if(key_can < 10)
  116.                             {
  117.                                           key_with();              //按鍵設置函數
  118.                             }
  119.                             if(flag_300ms == 1)
  120.                             {
  121.                                           flag_300ms = 0;
  122.                                           hongwai_dis();                 //紅外報警函數
  123.                             }            
  124.               }
  125. }

  126. /*************定時器0中斷服務程序***************/
  127. void time0_int() interrupt 1
  128. {            
  129. ……………………

  130. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
課程設計.docx (1.13 MB, 下載次數: 117)



回復

使用道具 舉報

ID:1 發表于 2018-4-5 04:09 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

無效樓層,該帖已經被刪除
ID:549906 發表于 2019-5-30 23:40 來自觸屏版 | 顯示全部樓層
好資料
回復

使用道具 舉報

ID:564484 發表于 2019-6-17 17:54 | 顯示全部樓層

好資料,51黑有你更精彩!!!
回復

使用道具 舉報

ID:565188 發表于 2019-6-18 00:07 來自觸屏版 | 顯示全部樓層
傳感器接哪個引腳
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表