标题:
单片机声光报警器 (C语言源码,Proteus仿真)
[打印本页]
作者:
uoiuouo
时间:
2018-5-2 19:33
标题:
单片机声光报警器 (C语言源码,Proteus仿真)
声光报警器仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
(21.34 KB, 下载次数: 87)
下载附件
2018-5-3 01:46 上传
0.png
(53.87 KB, 下载次数: 65)
下载附件
2018-5-3 01:46 上传
单片机源程序如下:
/* 本程序是一个以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++){;}
}
}
复制代码
所有资料51hei提供下载:
声光报警器 (C语言,适用于Proteus 7.72).rar
(27.52 KB, 下载次数: 195)
2018-5-2 19:33 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
vip2824080214
时间:
2020-3-17 20:36
很好,很有用
作者:
cycserver
时间:
2021-5-11 12:32
巧妙地构思,感谢
作者:
arkling
时间:
2025-7-2 15:45
很好,非常感谢
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1