蜂鸣器实验 *实现现象:下载程序后蜂鸣器发声 *注意事项:无 ******************************************************************************/ #include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 #include<intrins.h> //因为要用到左右移函数,所以加入这个头文件 typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; sbit beep=P1^5; /****************************************************************************** * 函 数 名:delay(u16 i) * 函数功能:延时函数,i=1时,大约延时10us。 ******************************************************************************/ void delay(u16 i) { while(i--); } /****************************************************************************** * 函 数 名:main() * 函数功能:主函数 * 输 入:无 * 输 出:无 ******************************************************************************/ void main( ) { while(1) { beep=~beep; delay(70); //延时大约700us } while(1) { beep=~beep; delay(50); //延时大约500us } } 六、实验思考题 模拟救护车报警声:低频650-750Hz,持续0.4秒,高频900-1000Hz,持续0.6秒,交替进行。程序应如何修改?
时间: 2023-07-18 10:47:50 浏览: 78
蜂鸣器的测试程序下载
4星 · 用户满意度95%
要实现模拟救护车报警声,需要将蜂鸣器的频率和持续时间分别设置为低频650-750Hz、持续0.4秒和高频900-1000Hz、持续0.6秒,然后交替进行。
下面是修改后的程序代码:
```
#include "reg52.h"
#include <intrins.h>
typedef unsigned int u16;
typedef unsigned char u8;
sbit beep=P1^5;
void delay(u16 i) {
while(i--);
}
void alarm() {
for (u8 i = 0; i < 4; i++) { // 交替进行4次
for (u16 j = 0; j < 4000; j++) { // 低频650-750Hz,持续0.4秒
beep = ~beep;
delay(1);
}
for (u16 j = 0; j < 6000; j++) { // 高频900-1000Hz,持续0.6秒
beep = ~beep;
delay(1);
}
}
}
void main() {
while (1) {
alarm();
delay(1000); // 报警声结束后延时1秒
}
}
```
在main函数中,我们使用一个while(1)循环来不断播放报警声,每次调用alarm函数。在alarm函数中,我们使用两个for循环来分别控制低频和高频的持续时间,并使用beep=~beep来控制输出蜂鸣器的高低电平,从而实现不同频率的声音。最后在每次播放完报警声后,我们使用delay函数延时1秒,等待下一次播放。
阅读全文