c语言写按键控制蜂鸣器,51单片机用按键控制蜂鸣器发出do re mi fa...的声音,...
时间: 2024-02-27 18:58:12 浏览: 242
好的,下面是一个简单的 C 代码示例,可以使用按键控制蜂鸣器发出不同频率的声音:
```c
#include <reg51.h>
// 定义按键和蜂鸣器的引脚
sbit key = P1^0;
sbit buzzer = P2^0;
// 定义发声的频率
unsigned int freq[] = {262, 294, 330, 349, 392, 440, 494};
void delay(unsigned int t) {
while (t--);
}
void main() {
while (1) {
// 检测按键是否按下
if (key == 0) {
// 循环发出不同频率的声音
for (int i = 0; i < 7; ++i) {
// 计算定时器的初值
unsigned int t = 65536 - 11059200 / 12 / freq[i];
TH0 = (unsigned char)(t >> 8);
TL0 = (unsigned char)t;
// 启动定时器
TR0 = 1;
// 发出声音
buzzer = 1;
// 延时一段时间
delay(10000);
// 停止发声
buzzer = 0;
// 关闭定时器
TR0 = 0;
}
}
}
}
```
这个代码使用了 8051 单片机的定时器,通过计算不同频率下的定时器初值,来控制蜂鸣器发出不同频率的声音。同时,也使用了一个简单的延时函数来控制每个音符的持续时间。
阅读全文