国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee

 找回密碼
 注冊
搜索

基于STM32F103單片機智能門禁熱釋人體感應報警程序設計

[復制鏈接]
樓主
路漫漫 發表于 2020-5-24 22:38:18 | 只看該作者 |倒序瀏覽 |閱讀模式
本設計由STM32F103C8T6單片機核心電路+撥動開關電路+按鍵電路+高亮LED燈電路+LCD1602液晶電路+蜂鳴器報警電路+GSM短信模塊SIM800A電路+光敏電阻檢測光照強度電路+熱釋紅外感應模塊E18電路+電源電路組成。
1、通過熱釋紅外傳感器檢測是否有人,如果有人靠近門時,液晶屏提示亮并顯示歡迎詞:Welcome to home!,夜間探測到有人時開燈,燈用9個高亮LED燈設計,無人時,關燈。
2、主人可設定門禁系統工作狀態,家里有人和無人兩種狀態。通過一個撥動開關設置,撥上去,液晶顯示有人:Somebody!,撥下來液晶顯示沒人:Nobody!有人時,客人按下門鈴,蜂鳴器鳴叫提示,無人時,客人按下門鈴,無任何反應。
3、門外人員逗留時間超過一定時間則發出報警信息。
4、檢測到有人或者沒有人,有狀態指示燈指示。
源程序(C語言含詳細備注).zip (354.86 KB, 售價: 5 E幣)
PDF格式的PCB圖.zip (72.58 KB, 售價: 2 E幣)
實物圖(高清).zip (4.2 MB, 售價: 2 E幣)
原理圖(sch源文件 PDF版 照片版).zip (263.6 KB, 售價: 2 E幣)
部分代碼:
  1. #include "delay.h"
  2. #include "sys.h"
  3. #include "usart.h"
  4. #include "key.h"
  5. #include "led.h"
  6. #include "lcd1602.h"

  7. u8 lighFlag=0;                //光照 標志
  8. u8 doorFlag=0;                //門檢測 標志
  9. u8 manFlag=0;                        //人檢測 標志
  10. u8 menlingFlag=0;        //門鈴檢測 標志
  11. u8 baojFlag=0;                //報警 標志

  12. int main(void)
  13. {
  14.         u32 time10ms=0;
  15.          
  16.         delay_init();                     //延時函數初始化         

  17.         KEY_Init();                  //初始化 按鍵
  18.         LED_Init();                  //初始化電機引腳 作為輸出 類似led
  19.         delay_ms(1);
  20.         
  21.         Lcd_GPIO_init();  //初始化lcd引腳        
  22.         Lcd_Init();                  //初始化lcd屏幕
  23.         delay_ms(20);
  24.         
  25.   Lcd_Puts(0,0,"Waitting for you");        //初始化顯示
  26.         Lcd_Puts(0,1,"Nobody!         ");         
  27.          
  28.         buzzer=1;                        //打開 上電開關一下 方便檢測
  29.         ligh=1;
  30.         led_hot = 0;
  31.         delay_ms(200);
  32.         led_hot = 1;//關閉 用于測試
  33.         buzzer=0;                        
  34.         ligh=0;
  35.         
  36.         while(1)
  37.         {
  38.                 delay_ms(10);
  39.                 if(manFlag==1)
  40.                 {
  41.                           Lcd_Puts(0,0,"Welcome to home!");        //顯示有人
  42.                         if(lighFlag==1)        //有人情況查看是否需要開燈
  43.                         {
  44.                                 ligh=1;//打開 燈
  45.                         }
  46.                         else
  47.                         {ligh=0;}//關閉
  48.                         time10ms++;
  49.                         if(time10ms>=3000)           //有人超過30s 報警
  50.                         {
  51.                                  buzzer=1;  //打開蜂鳴器
  52.                                 baojFlag=1;//報警
  53.                         }
  54.                 }
  55.                 else
  56.                 {
  57.                          Lcd_Puts(0,0,"Waitting for you");   //沒有人情況 顯示等待
  58.                         ligh=0;                                                                  //沒有人關閉led
  59.                         time10ms=0;                                                 //清零緊急報警
  60.                         baojFlag=0;     
  61.         }

  62.                 if(doorFlag==1)
  63.                 {
  64.                   Lcd_Puts(0,1,"Somebody!       ");        //家中有人
  65.                         if(baojFlag==0)                                        //非緊急情況
  66.                         {
  67.                                 if(menlingFlag==1)                //門鈴
  68.                                 {
  69.                                          buzzer=1;//打開蜂鳴器
  70.                                 }
  71.                                 else
  72.                                 {buzzer=0;}                //關閉蜂鳴器        
  73.                         }
  74.                 }
  75.                 else
  76.                 {
  77.                         Lcd_Puts(0,1,"Nobody!         ");                //家中無人
  78.                         if(baojFlag==0)                                          //非緊急情況
  79.                         {        buzzer=0;}
  80.                 }
  81.                
  82.                 if(key_menling==0)   //檢測
  83.                 {
  84.                         menlingFlag=1;
  85.                 }
  86.                 else
  87.                 {menlingFlag=0;}  //否則復位標志

  88.                 if(key_redhot==1)   //檢測人體
  89.                 {
  90.                                 manFlag=1;led_hot = 0;//標志               
  91.                 }
  92.                 else
  93.                 {manFlag=0;led_hot = 1;}  //否則復位標志

  94.                 if(key_door==1)   //檢測 門狀態
  95.                 {
  96.                         doorFlag=1;
  97.                 }
  98.                 else
  99.                 {doorFlag=0;}  //否則復位標志

  100.                 if(key_ligh==1)   //檢測光度
  101.                 {
  102.                                 lighFlag=1;
  103.                 }
  104.                 else
  105.                 {lighFlag=0;}  //否則復位標志
  106.         }                 
  107. }
復制代碼




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

本版積分規則

手機版|小黑屋|ELEOK |網站地圖

GMT+8, 2026-5-26 01:07

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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