51单片机按键控制无源蜂鸣器发Do Re Mi Fa So La Si Do代码
时间: 2024-02-13 21:02:00 浏览: 125
以下是基于51单片机的按键控制无源蜂鸣器发出Do Re Mi Fa So La Si Do的代码:
```
#include <reg51.h> // 在Keil C51中使用需要包含此头文件
#define uint unsigned int // 定义uint为unsigned int类型
sbit Buzzer = P1^5; // 定义控制蜂鸣器的引脚
sbit Key = P3^2; // 定义按键输入引脚
void DelayMs(uint); // 延时函数声明
void main() {
while(1) {
if(Key == 0) { // 如果按键被按下
Buzzer = 1; // 发出Do
DelayMs(300);
Buzzer = 0;
DelayMs(50);
Buzzer = 1; // 发出Re
DelayMs(300);
Buzzer = 0;
DelayMs(50);
Buzzer = 1; // 发出Mi
DelayMs(300);
Buzzer = 0;
DelayMs(50);
Buzzer = 1; // 发出Fa
DelayMs(300);
Buzzer = 0;
DelayMs(50);
Buzzer = 1; // 发出So
DelayMs(300);
Buzzer = 0;
DelayMs(50);
Buzzer = 1; // 发出La
DelayMs(300);
Buzzer = 0;
DelayMs(50);
Buzzer = 1; // 发出Si
DelayMs(300);
Buzzer = 0;
DelayMs(50);
Buzzer = 1; // 发出Do
DelayMs(300);
Buzzer = 0;
DelayMs(50);
}
}
}
void DelayMs(uint i) { // 毫秒级延时函数
uint j, k;
for(j=0; j<i; j++)
for(k=0; k<125; k++);
}
```
在此代码中,我们使用了一个外部按键来控制无源蜂鸣器发声。当按键被按下时,蜂鸣器会发出Do Re Mi Fa So La Si Do的声音,否则不发声。在实际应用中,可以根据需要进行更改。需要注意的是,同样需要外接电路放大输出功率,否则可能无法驱动无源蜂鸣器。
阅读全文