⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 music.h

📁 基于keil 3环境下的lpc2132的pwm试验
💻 H
字号:

/*
*********************************************************************************************************
** 文件名 :music.h
** 描述   :节拍和简谱频率
*********************************************************************************************************
*/

#ifndef _MUSIC_H
#define _MUSIC_H

// 以4分音符为1拍
#define TEMPO   8
#define _1      TEMPO*4     //全音符
#define _1d     TEMPO*6     //附点全音符
#define _2      TEMPO*2     //2音符
#define _2d     TEMPO*3     //附点2音符
#define _4      TEMPO*1     //4分音符
#define _4d     TEMPO*3/2   //附点4分音符
#define _8      TEMPO*1/2   //8分音符
#define _8d     TEMPO*3/4   //附点8音符
#define _16     TEMPO*1/4   //16分音符
#define _16d    TEMPO*3/8   //附点16分音符
#define _32     TEMPO*1/8   //32分音符
#define _64     TEMPO*1/16   //64分音符

/* 低音 */
#define _1DO    262	
#define _1RE    294
#define _1MI    330
#define _1FA    349
#define _1SO    392
#define _1LA    440
#define _1TI    494

/* 中音 */
#define _DO    	523		  1
#define _RE    	587		   2
#define _MI    	659		   3
#define _FA    	698		   4
#define _SO    	784		   5
#define _LA    	880			6
#define _TI    	988		   7

/* 高音 */
#define _DO1    1047
#define _RE1    1175
#define _MI1    1319
#define _FA1    1397
#define _SO1    1568
#define _LA1    1760
#define _TI1    1976

uint8  music_table[180][2];
uint8  music_shijian[180];
uint32 SoundLength;
//===========================================================================================
/*const uint32 HCMM[] =
{
	_LA, _SO, _MI, _LA, _SO, _MI,
	_LA, _LA, _SO, _LA,
	_LA, _SO, _MI, _LA, _SO, _MI,
	_RE, _RE, _DO, _RE,
	_MI, _MI, _SO, _LA, _DO1, _LA, _SO,
	_MI, _MI, _SO, _DO,
	_MI, _MI, _MI, _MI, _MI,
	_1LA,_1LA,_1SO,_1LA,
};	*/
uint32 HCMM[][2]={{1,6},{1,5},{1,3},{1,6},{1,5},{1,3},   {1,6},{1,6},{1,5},{1,6}, 
                  {1,6},{1,5},{1,3},{1,6},{1,5},{1,3},	 {1,2},{1,2},{1,1},{1,2},
				  {1,3},{1,3},{1,5},{1,6},{2,1},{1,6},{1,5},      {1,3},{1,3},{1,5},{1,1}, 
                  {1,3},{1,3},{1,3},{1,3},{1,3},{1,3},
				  {0,6},{0,6},{0,5},{0,6}
				  };
uint32 yinpin[3][7]={{262,294,330,349,392,440,494},{523,587,659,698,784,880,988},{1047,1175,1319,1397,1568,1760,1976}};
uint32 yinfu[7]={_1,_2,_4,_8,_16,_32,_64};
//=====================两只老虎
/*const uint32 lzlh[] =
{
_DO,_RE ,_MI,_DO,	_DO,_RE ,_MI,_DO,_SO,_LA,_TI,_SO,_LA,_TI,
};	 */
const uint32 lz[] =
{
  _4,_4 ,_4,_4,	_4,_4 ,_4,_4,_4,_4,_4,_2,_2,_2,
};
/* 歌曲节拍 */
const uint32 HCMM_L[] =
{
	_4, _8, _8, _4, _8, _8,
	_8, _4, _8, _2,
	_4, _8, _8, _4, _8, _8,
	_8, _4, _8, _2,
	_4, _8, _8, _8, _8, _8, _8,	
	_8, _4, _8, _2,
	_4, _4, _4, _8, _8,
	_8, _4, _8, _2,
};
/*说明**************************************************************************
 曲谱存贮格式 unsigned char code MusicName{音高,音长,音高,音长...., 0,0}; 末尾:0,0 表示结束(Important)

 音高由三位数字组成:   个位是表示 1~7 这七个音符                         
					    十位是表示音符所在的音区:1-低音,2-中音,3-高音;   
						百位表示这个音符是否要升半音: 0-不升,1-升半音。  
 音长最多由三位数字组成:个位表示音符的时值,其对应关系是:     |数值(n):  |0 |1 |2 |3 | 4 | 5 | 6    
                                                                |几分音符: |1 |2 |4 |8 |16 |32 |64   
																音符=2^n   
						 十位表示音符的演奏效果(0-2):  0-普通,1-连音,2-顿音   
						 百位是符点位: 0-无符点,1-有符点
 调用演奏子程序的格式
   Play(乐曲名,调号,升降八度,演奏速度);
 |乐曲名           : 要播放的乐曲指针,结尾以(0,0)结束;
 |调号(0-11)       : 是指乐曲升多少个半音演奏;
 |升降八度(1-3)   : 1:降八度, 2:不升不降, 3:升八度;
 |演奏速度(1-12000): 值越大速度越快;

***************************************************************************/

uint8  Music_Girl[]=            { 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x03,
                                  0x16,0x03, 0x17,0x03, 0x17,0x03, 0x17,0x03, 0x18,0x03,
                                  0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x02, 0x18,0x03,
                                  0x17,0x03, 0x15,0x02, 0x18,0x03, 0x17,0x03, 0x18,0x02,
                                  0x10,0x03, 0x15,0x03, 0x16,0x02, 0x15,0x03, 0x16,0x03,
                                  0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x1A,0x03,
                                  0x1B,0x03, 0x1F,0x03, 0x1F,0x03, 0x17,0x03, 0x18,0x03,
                                  0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03,
                                  0x18,0x03, 0x1F,0x03, 0x1F,0x02, 0x16,0x03, 0x17,0x03,
                                  0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02,
                                  0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,
                                  0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03,
                                  0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,
                                  0x1A,0x03, 0x19,0x03, 0x15,0x03, 0x15,0x03, 0x17,0x03,
                                  0x16,0x66, 0x17,0x04, 0x18,0x04, 0x18,0x03, 0x19,0x03,
                                  0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,
                                  0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03,
                                  0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,
                                  0x1A,0x03, 0x19,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03,
                                  0x1F,0x00, 0x1A,0x03, 0x1A,0x03, 0x1A,0x03, 0x1B,0x03,
                                  0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x19,0x02, 0x17,0x03,
                                  0x15,0x17, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x18,0x03,
                                  0x17,0x04, 0x18,0x0E, 0x18,0x03, 0x17,0x04, 0x18,0x0E,
                                  0x18,0x66, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03,
                                  0x20,0x03, 0x20,0x02, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66,
                                  0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03,
                                  0x1F,0x66, 0x1F,0x04, 0x1B,0x0E, 0x1B,0x03, 0x19,0x03,
                                  0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03,
                                  0x15,0x03, 0x15,0x03, 0x17,0x03, 0x16,0x66, 0x17,0x04,
                                  0x18,0x04, 0x18,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03,
                                  0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03,
                                  0x1B,0x03, 0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03,
                                  0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03,
                                  0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x00, 0x18,0x02,
                                  0x18,0x03, 0x1A,0x03, 0x19,0x0D, 0x15,0x03, 0x15,0x02,
                                  0x18,0x66, 0x16,0x02, 0x17,0x02, 0x15,0x00, 0x00,0x00};
unsigned char  Music_Two[] ={ 0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03,
                                  0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02,
                                  0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03,
                                  0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x16,0x03,
                                  0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01,
                                  0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03,
                                  0x16,0x03, 0x15,0x03, 0x10,0x03, 0x15,0x03, 0x16,0x01,
                                  0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03,
                                  0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02,
                                  0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03,
                                  0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x19,0x03,
                                  0x19,0x01, 0x19,0x03, 0x1A,0x03, 0x19,0x03, 0x17,0x01,
                                  0x16,0x03, 0x16,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03,
                                  0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0D, 0x15,0x00,
                                  0x19,0x03, 0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1B,0x03,
                                  0x1B,0x03, 0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03,
                                  0x16,0x0D, 0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03,
                                  0x1A,0x02, 0x1A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03,
                                  0x16,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03,
                                  0x19,0x02, 0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E,
                                  0x1B,0x04, 0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E,
                                  0x1B,0x04, 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03,
                                  0x17,0x0D, 0x16,0x03, 0x17,0x03, 0x19,0x01, 0x19,0x03,
                                  0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1B,0x03, 0x1B,0x03,
                                  0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03, 0x16,0x03,
                                  0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03, 0x1A,0x02,
                                  0x1A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x01,
                                  0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03, 0x19,0x03,
                                  0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,
                                  0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,
                                  0x17,0x16, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,
                                  0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x0F,0x02,
                                  0x10,0x03, 0x15,0x00, 0x00,0x00 };
unsigned char  Music_Same[]={ 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x66, 0x18,0x03,
                                  0x17,0x02, 0x15,0x02, 0x16,0x01, 0x15,0x02, 0x10,0x02,
                                  0x15,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x02,
                                  0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x02, 0x18,0x66,
                                  0x17,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x16,0x00,
                                  0x17,0x01, 0x19,0x02, 0x1B,0x02, 0x1B,0x70, 0x1A,0x03,
                                  0x1A,0x01, 0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x1B,0x02,
                                  0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x18,0x66, 0x18,0x03,
                                  0x19,0x02, 0x1A,0x02, 0x19,0x0C, 0x18,0x0D, 0x17,0x03,
                                  0x16,0x01, 0x11,0x02, 0x11,0x03, 0x10,0x03, 0x0F,0x0C,
                                  0x10,0x02, 0x15,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66,
                                  0x19,0x03, 0x1A,0x01, 0x1B,0x02, 0x1B,0x03, 0x1B,0x03,
                                  0x1B,0x0C, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x1F,0x01,
                                  0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x10,0x02,
                                  0x10,0x03, 0x10,0x03, 0x1A,0x0C, 0x18,0x0D, 0x17,0x03,
                                  0x16,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x70,
                                  0x18,0x03, 0x17,0x02, 0x15,0x03, 0x15,0x03, 0x16,0x66,
                                  0x16,0x03, 0x16,0x02, 0x16,0x03, 0x15,0x03, 0x10,0x02,
                                  0x10,0x01, 0x11,0x01, 0x11,0x66, 0x10,0x03, 0x0F,0x0C,
                                  0x1A,0x02, 0x19,0x02, 0x16,0x03, 0x16,0x03, 0x18,0x66,
                                  0x18,0x03, 0x18,0x02, 0x17,0x03, 0x16,0x03, 0x19,0x00,
                                  0x00,0x00 };

//=======================================================================================================
/*
********************************************************************************************************
** 函数名称: Delay
** 功能描述: 软件延时函数
*******************************************************************************************************
*/
void zhuanhuan_music(uint8 s[])
    {
	 uint32 i;
	 SoundLength = 0;
     while(s[SoundLength] != 0x00) //计算歌曲长度
              {
                 SoundLength+=2;
			   }
	  for(i=0;i<=SoundLength/2;i++)
	           {music_table[i][1]=s[2*i]%10-1;
			    music_table[i][0]=s[2*i]/10%10-1;
				music_shijian[i]=s[2*i+1]%10;
			   }
	}
void PWM_init()
   {
    PINSEL0  =PINSEL0| 0x02 << 14;		// P0.7选择PWM2功能
    
    /* PWM初始化 */

    PWMPR    = 0x00;		    // 不分频,计数频率为Fpclk
    PWMMCR   = 0x02;			// 设置PWMMR0匹配时复位PWMTC
    PWMPCR   = 0x0400;			// 允许PWM2输出,单边PWM
    PWMMR0   = Fpclk / 1000;
    PWMMR2   = PWMMR0 / 2;		// 50%占空比
    PWMLER   = 0x05;			// PWM0和PWM2匹配锁存
    PWMTCR   = 0x02;            // 复位PWMTC
    PWMTCR   = 0x09;            // 启动PWM输出
   }
void Delay(uint8 dly)
{
    uint32 i;
    
    for(; dly > 0; dly--)
        for(i = 0; i < 0x40000; i++);
}
#endif


⌨️ 快捷键说明

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