【TB作品】msp430单片机,播放蜂鸣器音乐,天空之城

作者 : admin 本文共1981个字,预计阅读时间需要5分钟 发布时间: 2024-06-3 共6人阅读

功能

msp430单片机,连接一个无源蜂鸣器,播放蜂鸣器音乐天空之城

适用于所有msp430单片机。

硬件

无源蜂鸣器,接单片机P1.5,使用vcc3.3v供电。

如果根据简谱修改音乐?

//第一步
//首先修改music0 的变量,
//低音下面加点
//中音不加点
//高音上面加点
//根据简朴的符号写出对应C调音
//第二步 修改music0_JP数组 这个数组和上一个数组对应 就是每一个音 响多长时间
//普通无点是延时 7 即是800ms
//如果音 下有一条下划线,延时 4
//如果音 下有两条下划线,延时2
//如果音 后加一个点 延时12
//如果音后加一条线 延时16
//如果音后加2条线 延时20
//当然 觉得不好听 可以适当修改延时的值

部分程序


/*  ******************************************    */
//  ********  音乐0	   天空之城
/*  ******************************************    */
//以下是《天空之城》简谱    //每行对应一小节音符
unsigned int  music0[]=
{	Z6,Z7,/**/H1,Z7,H1,H3,/**/Z7,Z3,Z3, /**/Z6,Z5,Z6,H1,/**/Z5,Z3,Z3, /**/Z4,Z3,Z4,H1,
Z3,H1,H1,H1,/**/Z7,Z4,Z4,Z7,/**/Z7,Z6,Z7, /**/H1,Z7,H1,H3,/**/Z7,Z3,Z3, /**/Z6,Z5,Z6,H1,
Z5, Z3,/**/Z4,H1,Z7,H1,/**/H2,H2,H2,H1,/**/H1,Z6,Z7,Z5,/**/Z6,H1,H2, /**/H3,H2,H3,H5,
H2,Z5,Z5, /**/H1,Z7,H1,H3,/**/H3, /**/Z6,H1,Z7,H2,/**/H1,Z5,Z5, /**/H4,H3,H2,H1,
H3, /**/Z3,H3, /**/H6,H5,H5, /**/H3,H2,H1,H1,/**/H2,H1,H2,H5,/**/H3,H3,
H6,H5, /**/H3,H2,H1,H1,/**/H2,H1,H2,Z7,/**/Z6,Z6,Z7, /**/Z6,0xff}; //以0xff作为音符的结束标志
//以下是简谱中每个音符的节拍
//"4"对应4个延时单位,"2"对应2个延时单位,"1"对应1个延时单位
unsigned char  music0_JP[ ]=
{	4,4, /**/12,4,8,8, /**/20,4,4, /**/12,4,8,8, /**/20,4,4, /**/12,4,4,12,
20,4,4,4, /**/12,4,8,8, /**/20,4,4, /**/12,4,8,8, /**/20,4,4, /**/12,4,8,8,
32, 4, /**/8,4,6,8, /**/4,4,4,16, /**/8,4,6,8, /**/24,4,4, /**/12,4,8,8,
24,4,4, /**/4,4,8,8, /**/32, /**/4,8,8,6, /**/12,4,16, /**/8,8,8,8,
30, /**/20,8, /**/16,8,8, /**/4,4,16,8, /**/8,4,4,8, /**/20,8,
16,16, /**/4,20,8, /**/8,4,4,8, /**/20,4,4, /**/32};
/*  ******************************************    */
/*  ********   延时100ms	控制音乐节拍 */
/*  ******************************************    */
void delay1()
{
delay_ms( 100 );
}
int main( void )
{
unsigned char u = 0, t = 0;
WDTCTL = WDTPW + WDTHOLD;                               /* Stop WDT */
P1DIR |= BIT5;                                          /* P1.0 output */
_EINT();
while ( 1 )
{
u = 0, t = 0;
while ( music0[u] != 0xff )                     /* 只要没有读到结束标志就继续播放 */
{
CCR0	= SYSCLK / music0[u] / 2;       /*选一个频率 */
for ( t = 0; t < music0_JP[u]; t++ )    /* 控制节拍数 */
delay1();                       /* 延时1个节拍单位 */
TACTL = TASSEL_2 + MC_0;                /* 关闭 */
u++;                                    /* 播放下一个音符 */
}
}
}
/* Timer A0 interrupt service routine */
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A( void )
{
P1OUT ^= BIT5;
}

全部程序

https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2
本站无任何商业行为
个人在线分享 » 【TB作品】msp430单片机,播放蜂鸣器音乐,天空之城
E-->