C51-声光报警器

第三篇
一、功能模块解析
引脚定义:
S1=P3^1
:按键输入(低电平触发)beep=P1^5
:蜂鸣器输出green=P2^0
:绿灯控制(低电平亮)red=P2^1
:红灯控制(低电平亮)
功能函数:
1 | void delay(unsigned int i) // 阻塞延时 |
- 主控制逻辑:
1 | void main() { |
二、核心工作原理
待机状态:
- 绿灯常亮(
green=0
)表示系统就绪 - 红灯熄灭(
red=1
)
- 绿灯常亮(
报警触发机制:
- 当按键
S1
被按下时(低电平):- 先进行1200单位的消抖延时
- 熄灭绿灯(
green=1
)指示状态切换 - 二次确认按键按下(防误触)
- 调用
all(1000)
执行声光报警
- 当按键
声光报警实现:
1
2
3
4
5
6
7
8
9void all(unsigned int i) {
for(a=0;a<i;a++) {
red=0; // 红灯亮
Beep(50); // 高频蜂鸣
delay(5000); // 持续亮灯
red=1; // 红灯灭
Beep(50); // 不同频率蜂鸣
}
}- 红灯按固定频率闪烁
- 亮/灭状态切换时蜂鸣器发出不同频率声响
- 循环次数
i=1000
决定报警时长
三、关键设计特性
硬件控制特性:
蜂鸣器驱动:通过
Beep()
函数实现PWM方波1
2for(k=0;k<i;k++) { beep=0; } // 低电平持续
for(j=0;j<i;j++) { beep=1; } // 高电平持续i
值控制音频频率(值越小频率越高)
安全设计:
- 两级按键检测(首次扫描+消抖后确认)
- 状态可视化(绿灯表示待机,红灯表示报警)
待优化点:
Light()
函数定义但未使用- 报警结束后无状态恢复逻辑
- 延时精度依赖主频(未使用定时器)
- 缺少按键释放检测(会持续触发)
系统典型应用场景:安全设备报警、异常状态提醒或工业设备紧急指示。当检测到按键触发(模拟异常事件)时,系统通过交替的灯光闪烁和多频蜂鸣实现高辨识度报警。
1 |
|
代码下载链接(123云盘):https://www.123684.com/s/wFuijv-i8Zgh
- 标题: C51-声光报警器
- 作者: lemon
- 创建于 : 2025-07-22 21:24:10
- 更新于 : 2025-07-23 00:11:41
- 链接: https://lemon2003.github.io/post/20250722212410.html
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论