找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6969|回复: 1
收起左侧

单片机声光报警器代码

[复制链接]
ID:430864 发表于 2018-11-21 21:48 | 显示全部楼层 |阅读模式
014619ib14l8tdt8w5ld00.png

/* 本程序是一个以89C51为核心的声光报警器控制程序
系统的晶振频率12MHz,外界报警触发脉冲接至INT0,报警复位按钮接P1.2,喇叭接P1.1
当外界报警脉冲触发报警后,LED(接P1.0)以1Hz的频率闪动,同时喇叭种发出"Wu,Wa......"的警笛声
该声音由1kHz和500Hz方波以0.5秒为间隔交替发声
值班人员按动报警复位钮后声光报警停止。*/

#include "AT89X51.h"

bit hisound;     /* 高音标志 */
sbit led=P1^0;         /* 报警灯接口 */
sbit speak=P1^1; /* 喇叭接口 */
sbit stop=P1^2;         /* 复位按钮 */
unsigned char data i; /* 50ms中断次数计数单元 */
void delayms(unsigned int x);  /* 延时1ms倍数的延时子程序 */

void main(void)
{
IT0=1; /* 设置INT0为边沿中断 */
ET0=1; /* 允许T0中断 */
ET1=1; /* 允许T1中断 */
EX0=1; /* 允许INT0中断 */
PT0=1; /* T0设为高级中断 */
EA=1;  /* 开中断 */
hisound=1; /* 高音标志置1,先发高音 */
led=1;  /* 熄灭报警灯 */
speak=0; /* 喇叭断电 */
TMOD=0x11; /* 设T0、T1为定时器,方式1 */
TH0=0xfe; /* 0.5ms定时初值 */
TL0=0x0c;
TH1=0x3c;  /* 50ms定时初值 */
TL1=0xb0;
i=10;   /* 50ms中断10次为0.5秒 */
stop=1; /* 允许报警复位按钮输入 */
while (1)
{
   if (stop==0) /* 如果按下停止报警按钮 */
    {
     delayms(20);  /* 延时20ms消除开关抖动 */
      }
   if (stop==0)
    {
      TR0=0;  /* 停止T0定时 */
      TR1=0;  /* 停止T1定时 */
      led=1;  /* 熄灭报警灯 */
      speak=0; /* 关闭喇叭 */      
      }
   }
}

/* INT0 中断服务程序 */
void int0(void) interrupt 0
{
TR0=1; /* 启动T0定时 */
TR1=1; /* 启动T1定时 */
}

/* T0中断服务程序 */
/* 用来产生救护车的警笛声 */
void timer0(void) interrupt 1
{
  if (hisound==1)  /* 如果产生高音 */
    {
     TH0=0xfe;   /* 0.5ms定时初值 */
     TL0=0x0c;
      }
   else
    {
     TH0=0xfc;   /* 1ms定时初值 */
     TL0=0x18;      
      }
   speak=!speak; /* 驱动喇叭的输出取反 */
}

/* T1中断服务程序 */
/* 用来产生0.5秒的定时 */
void timer1(void) interrupt 3
{
  TH1=0x3c; /* 50ms定时初值 */
  TL1=0xb0;
  i=i-1;
  if (i==0) /* 如果到0.5秒 */
    {
      i=10;
      hisound=!hisound;  /* 高音标志取反,变音 */
      led=!led;   /* 报警灯改变亮灭 */
      }
}

/* 延时子程序,延时1ms的倍数 */
void delayms(unsigned int x)
{
  unsigned char j;
  while(x--)
    {
      for(j=0;j<123;j++){;}
    }
}

回复

使用道具 举报

ID:448566 发表于 2018-12-18 10:47 | 显示全部楼层
为什么复位开关不行啊
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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