本设计题目要求使用 8 个 LED 灯,按键和一个蜂鸣器组成一套声光报警器系统,当按键按下时 LED 灯按照预先排列好的形状(如圆圈,曲线等)流水闪烁,蜂鸣器则发出高低不同音调的报警器,当再次按下按键时停止报警。要求 8 个 LED 使用灌电流驱动方式连接至单片机的 P1 端口,使开关 S1 连接到 INT0(P3.2)引脚上,单片机还使用 P2.7 通过 NPN 三极管驱动一个蜂鸣器的代码
时间: 2023-06-25 14:05:49 浏览: 177
合工大嵌入式课程设计,源代码以及实验报告,具体题目见资源描述
5星 · 资源好评率100%
以下是基于51单片机的声光报警器系统代码:
```
#include <reg52.h>
sbit LED1 = P1^0;
sbit LED2 = P1^1;
sbit LED3 = P1^2;
sbit LED4 = P1^3;
sbit LED5 = P1^4;
sbit LED6 = P1^5;
sbit LED7 = P1^6;
sbit LED8 = P1^7;
sbit Buzzer = P2^7;
sbit Key = P3^2;
void Delay(unsigned int i)
{
while(i--);
}
void Alarm(void)
{
unsigned char i;
for(i=0; i<8; i++)
{
switch(i)
{
case 0: LED1 = 1; break;
case 1: LED2 = 1; break;
case 2: LED3 = 1; break;
case 3: LED4 = 1; break;
case 4: LED5 = 1; break;
case 5: LED6 = 1; break;
case 6: LED7 = 1; break;
case 7: LED8 = 1; break;
}
Delay(10000);
switch(i)
{
case 0: LED1 = 0; break;
case 1: LED2 = 0; break;
case 2: LED3 = 0; break;
case 3: LED4 = 0; break;
case 4: LED5 = 0; break;
case 5: LED6 = 0; break;
case 6: LED7 = 0; break;
case 7: LED8 = 0; break;
}
}
}
void main()
{
Key = 1;
Buzzer = 0;
while(1)
{
if(Key == 0)
{
Alarm();
Buzzer = 1;
Delay(10000);
Buzzer = 0;
while(Key == 0);
Delay(1000);
}
}
}
```
该代码中,使用 `sbit` 定义了 LED 和蜂鸣器的控制引脚,使用 `Delay` 函数实现延时功能,使用 `Alarm` 函数实现了 LED 流水闪烁的效果,并在其中控制了蜂鸣器的报警声音。在 `main` 函数中,不断检测按键状态,当按键按下时触发报警功能,同时防止短时间内多次触发报警。
阅读全文