找回密码
 注册

QQ登录

只需一步,快速开始

搜索

51单片机红外感应防盗报警设计 仿真程序与PCB原理图资料

[复制链接]
eng 发表于 2021-7-12 16:03:22 | 显示全部楼层 |阅读模式
本系统是防火防盗功能,烟雾传感器能检测烟雾浓度,浓度超标后单片机驱动声光报警,当热释电红外传感器检测到有人的时候,单片机引脚电平转换,从而也驱动声光报警电路进行报警。
本文附件包含了:详细设计报告文档、51单片机源码、PCB和SCH图纸、Proteus仿真文件、元件清单
完整资源: 基于51的红外感应防盗报警设计.zip (16.53 MB)
4.jpg
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
3.gif
制作出来的实物图如下:
1.jpg 2.jpg
Altium Designer画的原理图和PCB图如下:(附件中可下载工程文件)

3.png 3.jpg

部分源码:完整源码见附件
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit huang=P2^0;//黄灯
  5. sbit lv=P2^2;//绿灯
  6. sbit hong=P2^4;//红灯

  7. sbit hongwai=P1^0;//热释电
  8. sbit butter=P2^6;//蜂鸣器低电平开蜂鸣器

  9. sbit  baojing=P1^1//直接报警按键;
  10. sbit  bufang=P1^7;//布防按键
  11. sbit  quxiao=P3^4;//取消按键
  12. uchar tt=0;//定时器变量
  13. uchar num=0;//定时的计时变量
  14. uchar flag=0;//标志位
  15. void timer1init(void)//定时器1,16位方式2
  16. {        EA=0;
  17.        TMOD=0x11;//设置定时器0为工作方式1
  18.         TH0=(65536-10000)/256;
  19.         TL0=(65536-10000)%256;
  20.         ET0=1;//开定时器0中断
  21.         TR0=1;//启动定时器0
  22.         tt=0;//
  23.         EA=0;//关总中断
  24. }
  25. void delay(uint z)//延时函数
  26. {
  27.         uint x,y;
  28.         for(x=z;x>0;x--)
  29.                 for(y=110;y>0;y--);
  30. }
  31. void main()//主函数
  32. {      
  33.                  huang=0;//初始黄灯亮
  34.                  lv=0;//初始绿灯亮
  35.                  hong=0;//初始红灯亮
  36.                  timer1init();//初始化定时器
  37.                  while(1)
  38.                  {
  39.                   
  40.             if(!baojing)//如果直接报警键被按下
  41.                                 {
  42.                                         delay(5);//延时消抖
  43.                                         if(!baojing)//判断报警键是不是被按下
  44.                                         {
  45.                                           hong=1;//红灯亮
  46.                                           lv=0;        //绿灯灭
  47.                                           flag=7;//标志位等于7
  48.                                           butter=0;//蜂鸣器响
  49.                                           EA=0;//关中断
  50.                                         }
  51.                                         while(!baojing);//判断按键是不是弹开
  52.                                         delay(5);//如果弹开延时消抖
  53.                                         while(!baojing);//弹开后跳出程序
  54.                                 }            
  55.              if((!bufang)&&(flag<4))//在初始状态和按下取消键后可以进去这个函数
  56.                                 {
  57.                                         delay(5);//延时消抖
  58.                                         if(!bufang)//如果布防被按下
  59.                                         {
  60.                                            EA=1;   //开定时器
  61.                                            flag=2;//另=2
  62.                                         }
  63.                                         while(!bufang);//布防键是不是弹开
  64.                                         delay(5);//延时
  65.                                         while(!bufang);//布防键弹开
  66.                                 }
  67.                         if(!quxiao)//如果取消键按下
  68.                                 {
  69.                                         delay(5);//延时消抖
  70.                                         if(!quxiao)//取消键是不是按下
  71.                                         {   
  72.                                           flag=3;//FLAG等于3
  73.                                           butter=1;//蜂鸣器不响
  74.                                           tt=0;//
  75.                                           num=0;//定时初始0
  76.                                           EA=0;//关中断
  77.                                           lv=0;//绿灯灭
  78.                                           hong=0;//红灯灭
  79.                                         }
  80.                                         while(!quxiao);//取消按键抬开
  81.                                         delay(5);//延时消抖
  82.                                         while(!quxiao);//如果弹开跳出

  83.                                 }
  84.                     if(flag==4)//如果布防时间到
  85.                           {
  86.                            tt=0;//清计数为0
  87.                            EA=0;//关中断
  88.                            num=0;//记的秒数清零
  89.                            lv=1;//关绿灯
复制代码


gometek 发表于 2024-7-8 10:53:18 | 显示全部楼层
楼主威武,值得拜读拜读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|ELEOK |网站地图

GMT+8, 2024-11-21 14:26

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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