找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5758|回复: 6
收起左侧

单片机二路红外报警Proteus仿真电路+程序

[复制链接]
ID:360050 发表于 2020-2-18 10:52 | 显示全部楼层 |阅读模式
下来了就可以用,程序我自己改来的,有什么不好可以提出来,大家一起交流交流
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)

这是仿真电路图,程序和仿真电路图在两个包里

这是仿真电路图,程序和仿真电路图在两个包里


单片机源程序如下:
  1. #include <reg52.h>                 //调用单片机头文件
  2. #define uchar unsigned char  //无符号字符型 宏定义        变量范围0~255
  3. #define uint  unsigned int         //无符号整型 宏定义        变量范围0~65535

  4. //红外热释电传感器 平时为0  有输出为1

  5. sbit beep = P2^2;           //蜂鸣器定义
  6. sbit red = P2^0;           //红色发光二极管定义
  7. sbit yellow = P2^1;           //黄色发光二极管定义
  8. sbit hw_one = P1^0;           //红外热释传感器定义
  9. sbit hw_two = P1^1;
  10. bit flag_300ms = 0;
  11. uchar flag_alarm ;     //报警标志位
  12. uint  flag_value;      //用做定时器的变量

  13. /***********************1ms延时函数*****************************/
  14. void delay_1ms(uint q)
  15. {
  16.         uint i,j;
  17.         for(i=0;i<q;i++)
  18.                 for(j=0;j<120;j++);
  19. }

  20. /*************定时器0初始化程序***************/
  21. void time_init()          
  22. {
  23.         EA   = 1;                   //开总中断
  24.         TMOD = 0X01;          //定时器0工作方式1
  25.         ET0  = 1;                  //开定时器0中断
  26.         TR0  = 1;                  //允许定时器0定时
  27. }

  28. /******************红外报警处理**********************/          
  29. void hongwai_dis()
  30. {
  31.         if(hw_one == 1 && hw_two == 1)//无人
  32.         {
  33.                 flag_alarm = 0;//不报警
  34.                 red = ~red;//红灯亮
  35.                 yellow = yellow;//黄灯熄灭
  36.                 beep = beep;//蜂鸣器不响
  37.         }
  38.         if(hw_one == 0)//表示床上有时,报警提示床无法收缩
  39.         {
  40.                 flag_alarm = 1;//报警
  41.                 red = red;//红灯熄
  42.                 yellow = ~yellow;//黄灯亮
  43.                 beep = ~beep;//蜂鸣器响
  44.         }
  45.         if(hw_two == 0)//表示床板与墙面之间有人时候,报警提示床无法伸开
  46.         {
  47.                 flag_alarm = 1;//报警
  48.                 red = red;//红灯熄
  49.                 yellow = ~yellow;//黄灯亮
  50.                 beep = ~beep;//蜂鸣器响
  51.         }
  52. }


  53. /******************主程序**********************/          
  54. void main()
  55. {
  56.         time_init();   //定时器初始化程序
  57.         beep = 0;      //开机叫一声  
  58.         delay_1ms(200);
  59.         P0 = P1 = P2 = P3 = 0xff;  //初始化单片机IO口为高电平
  60.         while(1)
  61.         {
  62.                 red = ~hw_one;         //红外热释电指示灯 有输出就亮黄灯
  63.                 if(flag_300ms == 1)
  64.                 {
  65.                         flag_300ms = 0;
  66.                         hongwai_dis();           //红外报警函数
  67.                 }       
  68.         }
  69. }


  70. /*************定时器0中断服务程序***************/
  71. void time0_int() interrupt 1
  72. {       
  73.         static uint value;
  74.         TH0 = 0x3c;
  75.         TL0 = 0xb0;     // 50ms          
  76.         value ++;
  77.         if(value % 6 == 0)
  78.         {
  79.                 flag_300ms = 1;
  80.         }
  81. }
复制代码

全部资料51hei下载地址:
电路图.rar (112.51 KB, 下载次数: 73)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:427205 发表于 2020-4-18 22:08 | 显示全部楼层
感谢,代码还没运行,在学习中
回复

使用道具 举报

ID:732854 发表于 2020-4-19 17:23 | 显示全部楼层
打不开可怎么办啊
回复

使用道具 举报

ID:736860 发表于 2020-4-29 19:14 | 显示全部楼层
想问一下楼上,这个是什么
0$I$B_P)N}TYDH6%1W%R0AJ.png
回复

使用道具 举报

ID:714776 发表于 2020-4-30 21:13 | 显示全部楼层
22222546 发表于 2020-4-29 19:14
想问一下楼上,这个是什么

数字信号发生器
回复

使用道具 举报

ID:522591 发表于 2020-5-1 00:27 来自手机 | 显示全部楼层
江湖救急还好还好哈
回复

使用道具 举报

ID:647913 发表于 2020-6-8 18:02 | 显示全部楼层
请问具体哪里是红外热释电传感器呀?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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