标题: 基于STM32F103单片机智能门禁热释人体感应报警程序设计 [打印本页]

作者: 北凉sama    时间: 2020-4-23 16:32
标题: 基于STM32F103单片机智能门禁热释人体感应报警程序设计
本设计由STM32F103C8T6单片机核心电路+拨动开关电路+按键电路+高亮LED灯电路+LCD1602液晶电路+蜂鸣器报警电路+GSM短信模块SIM800A电路+光敏电阻检测光照强度电路+热释红外感应模块E18电路+电源电路组成。
1、通过热释红外传感器检测是否有人,如果有人靠近门时,液晶屏提示亮并显示欢迎词:Welcome to home!,夜间探测到有人时开灯,灯用9个高亮LED灯设计,无人时,关灯。
2、主人可设定门禁系统工作状态,家里有人和无人两种状态。通过一个拨动开关设置,拨上去,液晶显示有人:Somebody!,拨下来液晶显示没人:Nobody!有人时,客人按下门铃,蜂鸣器鸣叫提示,无人时,客人按下门铃,无任何反应。
3、门外人员逗留时间超过一定时间则发出报警信息。
4、检测到有人或者没有人,有状态指示灯指示。





单片机源程序如下:
  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. }
复制代码

所有资料51hei提供下载:
基于STM32F103单片机智能门禁热释人体感应报警设计.7z (4.56 MB, 下载次数: 334)



作者: 陈玉顺    时间: 2020-4-25 14:19
这个东西看起来好像有点复杂,但是也不是这么的复杂吧
作者: 嵌入式咋整    时间: 2020-5-26 22:36
有没有cubemx的详细设置啊
作者: haijenny    时间: 2020-5-30 16:46
可以下载收藏用
作者: chenziqiang    时间: 2020-6-2 08:55
先看看吧
作者: 1928308110    时间: 2020-6-4 00:42
老哥,可以发一下嘛
想看看
作者: LVCXX    时间: 2020-6-12 15:08
你好,能加个好友请教你一下吗?
作者: 喜糖    时间: 2020-6-15 13:49
请问有protues仿真嘛?
作者: kkhg    时间: 2020-6-18 23:30
你好,板子你是自己弄的吗?
作者: zhangjinfm    时间: 2020-10-12 10:58
你好可请教一下吗
作者: zhangjinfm    时间: 2020-10-12 13:29
你好 32的板子是自己做的还是买的?那个店的
作者: laidage2450    时间: 2020-10-24 20:06
我下载了,没原理图怎么办,楼主救命
作者: 51hei团团    时间: 2020-10-26 03:08
laidage2450 发表于 2020-10-24 20:06
我下载了,没原理图怎么办,楼主救命

我在楼主的压缩包里面帮你找到了

51hei.png (64.13 KB, 下载次数: 172)

51hei.png

作者: 安鹏飞    时间: 2020-12-15 14:42
这个能用嘛
作者: weijian_13    时间: 2021-1-30 13:35
这是哪家店的
作者: 皮皮峰    时间: 2021-2-25 22:04
有相关文档吗
兄弟???

作者: BlueFox    时间: 2021-3-7 16:51
虽然不复杂,但谢谢楼主分享!!
作者: XLJ0517    时间: 2023-8-28 16:00
感觉代码和原理图不一样,引脚配置对不上。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1