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

功能

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

最近更新

  1. TCP协议是安全的吗?

    2024-06-08 04:56:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-08 04:56:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-08 04:56:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-08 04:56:01       18 阅读

热门阅读

  1. 进位(bit)

    2024-06-08 04:56:01       8 阅读
  2. 如何在Python中创建和使用自定义模块

    2024-06-08 04:56:01       10 阅读
  3. 局域网、城域网、广域网的ip

    2024-06-08 04:56:01       9 阅读
  4. SpringMVC:@RequestMapping注解

    2024-06-08 04:56:01       8 阅读
  5. 【嵌入式 - 关于MCU的内存分配】

    2024-06-08 04:56:01       9 阅读
  6. Android面试题汇总-Handler

    2024-06-08 04:56:01       10 阅读
  7. Mybatis面试系列五

    2024-06-08 04:56:01       9 阅读
  8. Vue3响应式基础——ref()和reactive()

    2024-06-08 04:56:01       7 阅读
  9. Vue封装localStorage设置过期时间

    2024-06-08 04:56:01       8 阅读
  10. 使用 Ant Design Vue 实现动态表头与数据填充

    2024-06-08 04:56:01       9 阅读
  11. learn-vue中template根节点元素Div

    2024-06-08 04:56:01       8 阅读