main.c

来自「嵌入式开发试验:蜂鸣器播放音乐实验」· C语言 代码 · 共 181 行

C
181
字号
/*
 *	main.c    -     demo of beep api
 *	
 *	Author: 	li ming <admin@lumit.org>
 *	Date:		2005-6-11
 *	Copyleft:	http://www.lumit.org
 */


#include "beep_api.h"

/*
实现播放新的曲子很简单,只要按照 main.c 中的歌曲格式,输入一个新的歌曲音符数组即可。
以 <<东方红>> 歌曲为例, 其中最开始的音符
{ { 5, 2, 4 },{ 0, 0, 0 },

5 表示应该唱 So
2 表示中八度,如果为 1 表示低八度,4 表示高八度
4 表示是一个四分音符, 如果是 2 则表示是一个 二分音符,8 则表示 八分音符

{ 0, 0, 0 } 则表示 此处有一个简短的停顿,以使得歌曲播放起来比较有节奏感。
{ -1, 0, 0 }  则表示歌曲结束。

大家可以根据这个格式,输入新的歌曲简谱,修改 main.c 文件重新编译即可。
*/


/* 歌曲 <<东方红>> */
int dfh[][3] = 	{	{ 5, 2, 4 },	{ 0, 0, 0 },
			{ 5, 2, 8 },
			{ 6, 2, 8 },	{ 0, 0, 0 },
			{ 2, 2, 2 }, 	{ 0, 0, 0 },	{ 0, 0, 0 },
			
			{ 1, 2, 4 },	{ 0, 0, 0 },
			{ 1, 2, 8 },
			{ 6, 1, 8 },	{ 0, 0, 0 },
			{ 2, 2, 2 }, 	{ 0, 0, 0 },	{ 0, 0, 0 },
				
	 		{ 5, 2, 4 },	{ 0, 0, 0 },
	 		{ 5, 2, 4 },	{ 0, 0, 0 },	
	 		{ 6, 2, 8 },	
	 		{ 1, 4, 8 },	{ 0, 0, 0 },
	 		{ 6, 2, 8 },
	 		{ 5, 2, 8 },	{ 0, 0, 0 },	
	 		{ 1, 2, 4 },	{ 0, 0, 0 },
	 		{ 1, 2, 8 },		
	 		{ 6, 1, 8 },	{ 0, 0, 0 },
	 		{ 2, 2, 2 },	{ 0, 0, 0 },	{ 0, 0, 0 },
			
	 		{ 5, 2, 4 },	{ 0, 0, 0 },
	 		{ 2, 2, 4 },	{ 0, 0, 0 },	
	 		{ 1, 2, 4 },	{ 0, 0, 0 },
	 		{ 7, 1, 8 },
	 		{ 6, 1, 8 },	{ 0, 0, 0 },
	 		{ 5, 1, 4 },	{ 0, 0, 0 },	
	 		{ 5, 2, 4 },	{ 0, 0, 0 },
	 		{ 2, 2, 4 },	{ 0, 0, 0 },
	 		{ 3, 2, 8 },
	 		{ 2, 2, 8 },	{ 0, 0, 0 },	
	 		{ 1, 2, 4 },	{ 0, 0, 0 },	
	 		{ 1, 2, 8 },
	 		{ 6, 1, 8 },	{ 0, 0, 0 },	
	 		{ 2, 2, 8 },
	 		{ 3, 2, 8 },	{ 0, 0, 0 },
	 		{ 2, 2, 8 },
	 		{ 1, 2, 8 },	{ 0, 0, 0 },
	 		{ 2, 2, 8 },
	 		{ 1, 2, 8 },	{ 0, 0, 0 },
	 		{ 7, 1, 8 },
	 		{ 6, 1, 8 },	{ 0, 0, 0 },
	 		{ 5, 1, 2 },	{ 5, 1, 8 },	{ 0, 0, 0 },	{ 0, 0, 0 },
				
			{ -1, 0, 0 }					
		};


/* 歌曲 <<友谊地久天长>> */
int youyi[][3] = {	{ 5, 1, 4 },	{ 0, 0, 0 },
			{ 1, 2, 4 },	{ 1, 2, 8 },	{ 0, 0, 0 },
			{ 1, 2, 8 },	{ 0, 0, 0 },
			{ 1, 2, 4 },	
			{ 3, 2, 8 },	{ 0, 0, 0 },
			{ 2, 2, 4 },	{ 2, 2, 16 },	
			{ 1, 2, 8 },	{ 0, 0, 0 },
			{ 2, 2, 4 },
			{ 3, 2, 4 },	{ 0, 0, 0 },
			{ 1, 2, 4 },	{ 1, 2, 8 },	{ 0, 0, 0 },
			{ 1, 2, 8 },	{ 0, 0, 0 },
			{ 3, 2, 4 },
			{ 5, 2, 4 },	{ 0, 0, 0 },
			{ 6, 2, 2 },	{ 6, 2, 4 },	{ 0, 0, 0 },	{ 0, 0, 0 },
				
			{ 6, 2, 4 },	{ 0, 0, 0 },
			{ 5, 2, 4 },	{ 5, 2, 8 },	{ 0, 0, 0 },
			{ 3, 2, 8 },	{ 0, 0, 0 },
			{ 3, 2, 4 },	
			{ 1, 2, 8 },	{ 0, 0, 0 },
			{ 2, 2, 4 },	{ 2, 2, 8 },	
			{ 1, 2, 8 },	{ 0, 0, 0 },
			{ 2, 2, 4 },
			{ 3, 2, 4 },	{ 0, 0, 0 },
			{ 1, 2, 4 },	{ 1, 2, 8 },	{ 0, 0, 0 },
			{ 6, 1, 8 },	{ 0, 0, 0 },
			{ 6, 1, 4 },
			{ 5, 1, 4 },	{ 0, 0, 0 },
			{ 1, 2, 2 },	{ 1, 2, 4 },	{ 0, 0, 0 },	{ 0, 0, 0 },
			{ -1, 0, 0 }
		};

/* 歌曲 <<两只老虎>> */
int laohu[][3] = {	{ 1, 2, 8 },	{ 0, 0, 0 },
			{ 2, 2, 8 },	{ 0, 0, 0 },
			{ 3, 2, 8 },	{ 0, 0, 0 },
			{ 1, 2, 8 }, 	{ 0, 0, 0 },	
			
			{ 1, 2, 8 },	{ 0, 0, 0 },
			{ 2, 2, 8 },	{ 0, 0, 0 },
			{ 3, 2, 8 },	{ 0, 0, 0 },
			{ 1, 2, 8 }, 	{ 0, 0, 0 },	
			
			{ 3, 2, 8 },	{ 0, 0, 0 },
			{ 4, 2, 8 },	{ 0, 0, 0 },
			{ 5, 2, 4 },	{ 0, 0, 0 },
			
			{ 3, 2, 8 },	{ 0, 0, 0 },
			{ 4, 2, 8 },	{ 0, 0, 0 },
			{ 5, 2, 4 },	{ 0, 0, 0 },
			
			{ 5, 2, 16 },	{ 0, 0, 0 },
			{ 6, 2, 16 },	{ 0, 0, 0 },
			{ 5, 2, 16 },	{ 0, 0, 0 },
			{ 4, 2, 16 }, 	{ 0, 0, 0 },				
			{ 3, 2, 8 },	{ 0, 0, 0 },
			{ 1, 2, 8 },	{ 0, 0, 0 },
			
			{ 5, 2, 16 },	{ 0, 0, 0 },
			{ 6, 2, 16 },	{ 0, 0, 0 },
			{ 5, 2, 16 },	{ 0, 0, 0 },
			{ 4, 2, 16 }, 	{ 0, 0, 0 },				
			{ 3, 2, 8 },	{ 0, 0, 0 },
			{ 1, 2, 8 },	{ 0, 0, 0 },
			
			{ 2, 2, 8 },	{ 0, 0, 0 },
			{ 5, 1, 8 }, 	{ 0, 0, 0 },	
			{ 1, 2, 4 },	{ 0, 0, 0 },
			
			{ 2, 2, 8 }, 	{ 0, 0, 0 },	
			{ 5, 1, 8 },	{ 0, 0, 0 },
			{ 1, 2, 4 }, 	{ 0, 0, 0 },	
			
			{ -1, 0, 0 }
		};	
		
int main( void )
{
	/* test beep Do, Re, Mi ... */
	beep_test();
	
	beep_init();
	beep_rest();
	
	/* 歌曲 <<东方红>> */
	beep_music( dfh );
	beep_rest();
	
	/* 歌曲 <<友谊地久天长>> */
	beep_music( youyi );
	beep_rest();

	/* 歌曲 <<两只老虎>> */	
	beep_music( laohu );
	beep_rest();
	
	return 0;
}

void __rt_entry( void )
{
	main();	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?