51单片机无源蜂鸣器发Do Re Mi Fa So La Si Do代码
时间: 2023-08-10 07:07:14 浏览: 556
51单片机蜂鸣器代码
以下是基于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; // 定义控制蜂鸣器的引脚
void DelayMs(uint); // 延时函数声明
void main() {
while(1) {
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++);
}
```
需要注意的是,由于51单片机的IO口输出电流非常小,因此需要外接三极管等电路来放大输出功率,否则可能无法驱动无源蜂鸣器。另外,不同型号的无源蜂鸣器需要的驱动电压和频率也可能不同,因此具体实现时需要根据自己的硬件进行调整。
阅读全文