main._c

来自「M16-Mp3.rar」· _C 代码 · 共 363 行 · 第 1/2 页

_C
363
字号
    0x3e10, 0xb803, 0x3e11, 0x7806, 0x3e11, 0xf813, 0x3e13, 0xf80e,
    0x3e13, 0x4024, 0x3e04, 0x7810, 0x449a, 0x0040, 0x0001, 0x0003,
    0x2800, 0x7304, 0x4036, 0x03c1, 0x0003, 0xffc2, 0xb326, 0x0024,
    0x0018, 0x0042, 0x4326, 0x4495, 0x4024, 0x40d2, 0x0000, 0x0180,
    0xa100, 0x4090, 0x0010, 0x0fc2, 0x4204, 0x0024, 0xbc82, 0x4091,
    0x459a, 0x0024, 0x0000, 0x0054, 0x2800, 0x7204, 0xbd86, 0x4093,
    0x2400, 0x71c5, 0xfe01, 0x5e0c, 0x5c43, 0x5f2d, 0x5e46, 0x020c,
    0x5c56, 0x8a0c, 0x5e53, 0x5e0c, 0x5c43, 0x5f2d, 0x5e46, 0x020c,
    0x5c56, 0x8a0c, 0x5e52, 0x0024, 0x4cb2, 0x4405, 0x0018, 0x0044,
    0x654a, 0x0024, 0x2800, 0x8000, 0x36f4, 0x5810, 0x81d1, 0x3e12,
    0xb814, 0x0000, 0x800a, 0x3e10, 0x3801, 0x3e10, 0xb803, 0x3e11,
    0x7806, 0x3e11, 0xf813, 0x3e13, 0xf80e, 0x3e13, 0x4024, 0x3e04,
    0x7810, 0x449a, 0x0040, 0x0000, 0x0803, 0x2800, 0x7ec4, 0x30f0,
    0x4024, 0x0fff, 0xfec2, 0xa020, 0x0024, 0x0fff, 0xff02, 0xa122,
    0x0024, 0x4036, 0x0024, 0x0000, 0x1fc2, 0xb326, 0x0024, 0x0010,
    0x4002, 0x4326, 0x4495, 0x4024, 0x40d2, 0x0000, 0x0180, 0xa100,
    0x4090, 0x0010, 0x0042, 0x4204, 0x0024, 0xbc82, 0x4091, 0x459a,
    0x0024, 0x0000, 0x0054, 0x2800, 0x7dc4, 0xbd86, 0x4093, 0x2400,
    0x7d85, 0xfe01, 0x5e0c, 0x5c43, 0x5f2d, 0x5e46, 0x0024, 0x5c56,
    0x0024, 0x5e53, 0x5e0c, 0x5c43, 0x5f2d, 0x5e46, 0x0024, 0x5c56,
    0x0024, 0x5e52, 0x0024, 0x4cb2, 0x4405, 0x0010, 0x4004, 0x654a,
    0x9810, 0x0000, 0x0144, 0xa54a, 0x1bd1, 0x0006, 0x0013, 0x3301,
    0xc444, 0x687e, 0x2005, 0xad76, 0x8445, 0x4ed6, 0x8784, 0x36f3,
    0x64c2, 0xac72, 0x8785, 0x4ec2, 0xa443, 0x3009, 0x2440, 0x3009,
    0x2741, 0x36f3, 0xd80e, 0x36f1, 0xd813, 0x36f1, 0x5806, 0x36f0,
    0x9803, 0x36f0, 0x1801, 0x2000, 0x0000, 0x36f2, 0x9814, 0x8211,
    0x4c82, 0x0024, 0x0000, 0x0024, 0x2000, 0x0005, 0xf5c2, 0x0024,
    0x0000, 0x0980, 0x2000, 0x0000, 0x6010, 0x0024, 0x0050,
};
//--------------  音乐播放程序 -------------------//

void VS1003_Play(void);



//----------------- ------------------------------
//
//                   主函数
//
//------------------------------------------------
void main()
{
   Usart_Init(9600);     // 串口初始化9600bps
   SPI_Init();           // SPI初始化,默认速度400Hz
   VS1003_Init();        // VS1003芯片初始化
   while(SD_Init());     // SD卡循环初始化
   Fat_Init();           // 文件系统初始化
   AD_Init();            // AD初始化
   TC0_Init();           // T/C0初始化
   
   VS1003_Play();        // 音乐播放
}



//----------------- ------------------------------
//
//                  音乐播放函数
//
//------------------------------------------------
void VS1003_Play(void)
{
	uint32 n;
	uint32 i;
	uint32 size_buf=0;        // 已播放的文件大小
	uint32 num;               // 音乐文件所在的簇
	uint8 music_num=0;        // 正在播放文件的号码
	uint8 play_flag=0;        // 播放标志
	uint16 data_pointer=0;   
	uint8 music_next=0,music_last=0; // 音乐换曲标志
	uint8 vol_flag=0;         // 音量调节标志
	
	AD_Flag=0;                // AD键盘标志
    AD_time=0;                // AD键盘采样次数
    key_num=0;                // 按键号
	
	GetMusicFile();           // 获取音乐文件
	
	num = fclust[music_num];  // 调用音乐文件

	while(1)
	{
		for(i=0;i<8;i++)
		{ 
		   SD_ReadBlock(FirstDataSector+(num-2)*8+i,Fat_Buffer);   // 获取音乐文件的数据
			do
			{	
			    //--------------------------- AD按键检测 ---------------------------//
				
			    if(key_num==6&&AD_time==0)play_flag=1;             // Key6按下,播放
				else if(key_num==5&&AD_time==0)play_flag=0;        // Key5按下,停止
				else if(key_num==1&&AD_time==0)music_next=1;       // Key1按下,下一首
				else if(key_num==4&&AD_time==0)music_last=1;       // Key4按下,上一首
				else if(key_num==3&&AD_time==0)vol_flag=1;         // Key3按下,音量+
				else if(key_num==2&&AD_time==0)vol_flag=2;         // Key2按下,音量-
				
				//-------------- 音量调节 ----------------//
				if(vol_flag!=0)                                 
				{
				  if(vol_flag==1)
				  {
				    if(VOL>27)VOL=29;
					else VOL+=2;
				  }
				  else
				  {
				    if(VOL<2)VOL=0;
					else VOL-=2;
				  }
					
				  VS1003_WriteReg(VS1003_SPI_VOL ,VOL_BUFFER[VOL]); // 送音量数据
				  
				  while(VS1003_DREQ_STATE() != VS1003_DREQ);	 // 等待
				  
				  key_num = 0;
				  vol_flag=0;
				}
				
				
				//----------------- 换曲操作 -----------------//  
				
				if(music_next!=0||music_last!=0)
				{
				  data_pointer=512;
				  i=8;
				}
				
				//---------------- 音乐数据送入 ------------------//  
				else if(VS1003_DREQ_STATE()== VS1003_DREQ&&play_flag!=0) 
				{	
					for(n=0;n<32;n++)
					{	
						VS1003_WriteDat(Fat_Buffer[data_pointer]); // 发送数据
						data_pointer++;	
					}
					size_buf+=32;
				}
				
				if(size_buf>=fsize[music_num]-64)
				{
				   data_pointer=512;
				   i=8;
				  size_buf=0;
				}
				
			}while(data_pointer<511); 
			
		  data_pointer=0;
		  
		}
		
		//---------- 下一簇 ------------//  
		num = FatNextCluster(num);	
		
		if(num==CLUST_EOFE||music_next!=0||music_last!=0)
		{
		   if(music_last!=0)
		   {
		     if(music_num>0)music_num--;
			 else music_num = fcount-1;
		   }
		   
		   else
		   {
		     if(music_num<fcount-1)music_num++;
			 else music_num=0;
		   }
		   
		   num = fclust[music_num];
		   play_flag=1;
		   music_next = 0;
		   music_last = 0;
		   key_num=0;
	   }
		
	} 
	 	
}


⌨️ 快捷键说明

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