当前位置:   article > 正文

127-基于stm32单片机的人体红外探测防盗报警系统Proteus仿真+源程序_基于32单片机的红外报警系统设计

基于32单片机的红外报警系统设计

一:功能介绍

1、采用stm32单片机+按键+蜂鸣器+LED指示灯,制作一个基于stm32单片机的人体红外探测防盗报警系统;

2、系统默认是未布防状态,按下布防按键,进入布防状态,布防指示灯亮,此时如果有人闯入(采用按键模拟人体红外检测),蜂鸣器则会进行报警提醒;

3、按下取消报警/布防按键,则会停止报警和取消当前布防状态,布防LED灯关闭;

4、当遇到紧急情况,按下紧急报警按钮,蜂鸣器开启报警,紧急指示灯会开启;

二:仿真演示视频+程序简要讲解:(程序有中文注释,新手容易看懂)

127-基于stm32单片机的人体红外探测防盗报警系统Proteus仿真+源程序

三:设计软件介绍

本设计使用C语言编程设计,程序代码采用keil5编写,程序有中文注释,新手容易看懂,仿真采用Proteus软件进行仿真演示视频使用的是Proteus8.9版本;资料包里有相关软件包,可自行下载安装。

四:程序打开方法

特别注意:下载资料包以后一定要先解压!(建议解压到桌面上,文件路径太深会导致程序打开异常),解压后再用keil5打开。

03daba685bec9841c46169c908d354b3.png

08cbbdede4c746f53525260404fc7eee.png

  1. 程序部分展示,有中文注释,新手容易看懂
  2. #define K1 PBIN(15)
  3. #define K2 PBIN(14)
  4. #define K3 PBIN(13)
  5. #define ren PBIN(12)
  6. #define led1 PCout(7)
  7. #define led2 PCout(8)
  8. #define led3 PCout(9)
  9. #define beep PCout(10)
  10. u8 Time_count=0;
  11. //初始化引脚
  12. void GPIO_Config(void)
  13. {
  14. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
  15. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
  16. GPIO_InitTypeDef GPIO_InitStructure;
  17. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
  18. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  19. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  20. GPIO_Init(GPIOC, &GPIO_InitStructure);
  21. GPIO_SetBits(GPIOC,GPIO_Pin_All);
  22. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
  23. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  24. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  25. GPIO_Init(GPIOB, &GPIO_InitStructure);
  26. GPIO_SetBits(GPIOB,GPIO_Pin_All);
  27. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15|GPIO_Pin_14|GPIO_Pin_13|GPIO_Pin_12;
  28. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  29. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  30. GPIO_Init(GPIOB, &GPIO_InitStructure);
  31. }
  32. //获取独立按键数据
  33. u8 Get_key_num()
  34. {
  35. u8 temp_key=0;
  36. static u8 flag=0;
  37. if((flag==0)&&((K1==0)||(K2==0)||(K3==0)||(ren==0)))
  38. {
  39. flag=1;//按键只获取一次按键数值
  40. SysTick_Delay_Ms(10);//消除抖动
  41. //如果有对应的按键按下就返回对应按键数值
  42. if(K1==0)
  43. {temp_key=1;}
  44. else if(K2==0)
  45. {temp_key=2;}
  46. else if(K3==0)
  47. {temp_key=3;}
  48. else if(ren==0)
  49. {temp_key=4;}
  50. }
  51. else if((K1==1)&&(K2==1)&&(K3==1)&&(ren==1))
  52. {
  53. flag=0;//所有按键都弹起就清除标志
  54. }
  55. return temp_key;
  56. }
  57. //主函数部分
  58. int main(void)
  59. {
  60. u8 key_num=0,buf=0;
  61. GPIO_Config();
  62. while(1)
  63. {
  64. key_num=Get_key_num();//读取按键
  65. switch(key_num)
  66. {
  67. case 1:
  68. led3=beep=0; //紧急报警
  69. break;
  70. case 2:
  71. buf=1;led1=0;//打开布防
  72. break;
  73. case 3:
  74. led1=led2=led3=beep=1;buf=0;//关闭布防或者是报警
  75. break;
  76. case 4:
  77. if(buf==1)//当布防情况下,检测到有人闯入,开启报警
  78. {
  79. led2=beep=0;
  80. }
  81. break;
  82. }

:仿真文件(采用Proteus打开)

51a05f98dc145296f77e1afa7a2ea1c2.png

30f96ef20ec201fa06bf5ac86a14869d.png

43477f2504b809fcc47e086f82d31faa.png

六:资料清单展示(文件中包含的相关资料)

ffdb5cdaf0fc57b36a30169020a47823.png

资料下载链接(可点击)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/470796
推荐阅读
相关标签
  

闽ICP备14008679号