单片机蜂鸣器编程音乐
时间: 2023-06-29 09:07:26 浏览: 59
单片机蜂鸣器可以通过控制其输出频率来播放音乐。下面是一个简单的例子,演示如何使用MSP430G2系列单片机的蜂鸣器模块来播放音乐。
```c
#include<msp430g2553.h>
#define C4 7645
#define D4 6810
#define E4 6061
#define F4 5727
#define G4 5102
#define A4 4545
#define B4 4050
void delay_us(unsigned int us)
{
while(us--)
__delay_cycles(1);
}
void delay_ms(unsigned int ms)
{
while(ms--)
__delay_cycles(1000);
}
void buzzer_on(unsigned int freq)
{
TA1CCR0 = freq;
TA1CCTL1 = OUTMOD_3;
TA1CTL = TASSEL_2 + MC_1;
}
void buzzer_off()
{
TA1CTL = MC_0;
TA1CCTL1 = OUTMOD_0;
}
int main(void)
{
WDTCTL = WDTPW + WDTHOLD;
BCSCTL1 = CALBC1_16MHZ;
DCOCTL = CALDCO_16MHZ;
P2DIR |= BIT1;
P2SEL |= BIT1;
while(1)
{
buzzer_on(C4);
delay_ms(200);
buzzer_on(D4);
delay_ms(200);
buzzer_on(E4);
delay_ms(200);
buzzer_on(F4);
delay_ms(200);
buzzer_on(G4);
delay_ms(200);
buzzer_on(A4);
delay_ms(200);
buzzer_on(B4);
delay_ms(200);
buzzer_off();
delay_ms(2000);
}
}
```
上面的代码定义了一些常量来表示不同音符的频率。使用了定时器TA1来控制蜂鸣器的输出频率。buzzer_on()函数接收一个频率参数,并将TA1CCR0设置为该值,然后开启定时器输出。buzzer_off()函数用于关闭定时器和蜂鸣器输出。
在主函数中,我们将不同的音符播放了一遍,每个音符之间有200ms的延迟,整个乐曲结束后有2s的延迟。
你可以根据自己的需要修改代码中的频率和时间,来演奏不同的音乐。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)