找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13509|回复: 13
收起左侧

单片机防盗报警器proteus仿真+源码

  [复制链接]
ID:341624 发表于 2018-5-30 19:47 | 显示全部楼层 |阅读模式
带3个灯:紧急报警灯,红外人体检测信号灯,布防指示灯
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.jpg

说明:
1、按下紧急报警按键,紧急报警灯闪烁,蜂鸣器报警
2、按下布防按键,布防指示灯开始闪烁,闪烁大约30秒,保持亮的状态,进入布防模式
3、按下取消报警/布防按键,取消布防和紧急报警功能

用按键代替人体感应模块如果按下感应到人体,绿灯亮,否则灭



单片机源程序如下:
  1. //51单片机简人体红外报警器设计,手动按键控制实现紧急报警、布防、撤防、关闭报警)//
  2. #include <reg52.h>
  3. #define uchar unsigned char
  4. #define uint  unsigned int

  5. uchar Mode=1,Mode1=0;
  6. uchar t;

  7. sbit s1=P1^0;
  8. sbit s2=P1^2;
  9. sbit s3=P1^1;

  10. bit alarm=1,kai=1;

  11. sbit LR=P2^0;//红灯报警灯
  12. sbit LY=P2^2;//布防灯
  13. sbit LG=P2^1;//红外信号检测灯

  14. sbit Feng=P1^3;//蜂鸣器报警
  15. sbit HR=P0^3;//红外模块接入端口

  16. void delay(uint x) //毫秒级延时函数
  17. {
  18.   uint i,j;
  19.   for(i=x;i>0;i--)
  20.      for(j=110;j>0;j--);
  21. }

  22. void di()
  23. {
  24.         LR=0;//蜂鸣器报警,红灯跟随闪烁
  25.         Feng=0;
  26.         delay(80);
  27.         LR=1;
  28.         Feng=1;
  29.         delay(200);        
  30. }
  31. void main()
  32. {
  33.         LR=1;//初始化三个灯都是灭
  34.         LG=1;
  35.         LY=1;
  36.         delay(5);
  37.         while(1)
  38.         {
  39.                 if(s1==0)                                //紧急手动报警
  40.                 {
  41.                                 delay(5);           //延时消抖
  42.                                 if(s1==0)        
  43.                                 {
  44.                                         delay(5);
  45.                                         while(!s1);
  46.                                         kai=0;
  47.                                         LY=1;            
  48.                                         LG=1;
  49.                                         alarm=0; //进入报警状态
  50.                                         Mode1=1; //Mode1置1:紧急报警过程中以防按了布防键取消紧急报警
  51.                                         delay(5);
  52.                                 }                        

  53.                 }
  54.                 if(s3==0)                        //取消报警
  55.                 {
  56.                                                                
  57.                                 delay(5);
  58.                                 if(s3==0)                                
  59.                                 {
  60.                                         delay(5);
  61.                                         while(!s3);
  62.                                         LR=1;
  63.                                         LY=1;
  64.                                         Mode=1;
  65.                                         Mode1=0;
  66.                                         alarm=1;
  67.                                         delay(5);
  68.                                 }
  69.                 }
  70.                 if(s2==0)                        //布防
  71.                 {
  72.                         if(Mode1==1) //判断Mode1的状态,如果是紧急报警状态就保持,否则进入布防设置
  73.                         {
  74.                                 alarm=0;
  75.                         }
  76.                         else
  77.                         {
  78.                                 for(t=0;t<200;t++)
  79.                                 {
  80.                                   LY=~LY;
  81.                                   delay(200);
  82.                                 }
  83.                                 LR=1;
  84.                                 LY=0;
  85.                                 Mode=0;        //布防状态标识
  86.                                 kai=1;
  87.                                 delay(5);
  88.                         }
  89.                                 
  90.                 }                 
  91.                 if(alarm==0)
  92.                 {
  93.                         di();
  94.                         delay(100);
  95.                         di();
  96.                         delay(100);
  97.                 }
  98.                 if(HR==1&&Mode==0)
  99.                 {
  100.                         alarm=0;//开始进入报警
  101.                 }
  102.                 else
  103.                 {
  104.                         if(kai)
  105.                         {
  106.                                 alarm=1;
  107.                                 LR=1;
  108.                         }
  109.                 }
  110.                 if(HR==1)  //检测红外模块有信号,绿灯亮,否则灭
  111.                 {           
  112.                         LG=0;
  113.                         delay(200);
  114.                 }
  115.                 else
  116.                 {
  117.                         LG=1;
  118.                 }                        
  119.         }
  120. }
复制代码

Keil2代码和Proteus7.5版本的仿真 51hei附件下载:
单片机防盗报警器仿真.rar (125.9 KB, 下载次数: 341)

评分

参与人数 1黑币 +2 收起 理由
1246 + 2

查看全部评分

回复

使用道具 举报

ID:339366 发表于 2018-5-31 11:40 | 显示全部楼层
请问这个红外是红外对管吗?
回复

使用道具 举报

ID:293762 发表于 2018-6-1 22:21 | 显示全部楼层
单片机小渣渣1 发表于 2018-5-31 11:40
请问这个红外是红外对管吗?

不是,这里说的红外指的是热释电红外线探测模块,当然,就程序来看,所有高电平输出的探头都是用。
回复

使用道具 举报

ID:357533 发表于 2018-6-23 23:37 | 显示全部楼层
C:\Users\Administrator\desktop
请问运行以后灯不亮是什么原因?
限流电阻什么的都已经更改,并且不管做什么实验,LED灯就是不亮。。。
回复

使用道具 举报

ID:726183 发表于 2020-4-23 16:49 来自手机 | 显示全部楼层
sssyy123 发表于 2018-6-23 23:37
请问运行以后灯不亮是什么原因?
限流电阻什么的都已经更改,并且不管做什么实验,LED灯就是不亮。。。

LED灯可能用错了,proteus我所知到的里有两种LED,有一种LED不亮。
回复

使用道具 举报

ID:744311 发表于 2020-5-12 14:16 来自手机 | 显示全部楼层
请问为什么无法运行啊?
回复

使用道具 举报

ID:65237 发表于 2020-5-12 21:09 | 显示全部楼层
这个不错 收下了
回复

使用道具 举报

ID:787812 发表于 2020-6-25 12:06 | 显示全部楼层
还有其他方法代替感应模块吗
回复

使用道具 举报

ID:790922 发表于 2020-6-27 14:43 | 显示全部楼层
做的很好!值得学习
回复

使用道具 举报

ID:792187 发表于 2020-7-1 14:09 来自手机 | 显示全部楼层
楼主,可以把这个蜂鸣器变播放音乐吗
回复

使用道具 举报

ID:850294 发表于 2020-12-4 23:02 | 显示全部楼层
linsheng 发表于 2020-6-25 12:06
还有其他方法代替感应模块吗

同问?
回复

使用道具 举报

ID:990156 发表于 2021-12-9 16:43 | 显示全部楼层
运行了一下程序,不知道为什么很多语法错误
回复

使用道具 举报

ID:262 发表于 2021-12-9 20:50 | 显示全部楼层
dramu5 发表于 2021-12-9 16:43
运行了一下程序,不知道为什么很多语法错误

附件是Keil2的工程 要用Keil2来编译 我这里是0错误
回复

使用道具 举报

ID:1051470 发表于 2022-11-11 11:16 来自手机 | 显示全部楼层
heicad 发表于 2021-12-9 20:50
附件是Keil2的工程 要用Keil2来编译 我这里是0错误

我是keil2的  为啥在delay(5)  while(1)哪里报错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表