亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? mp3player.c

?? 基于stm32的MP3播放器
?? C
字號(hào):
#include "COMM.h"  

u16 f_kbps=0;//歌曲文件位率	

//進(jìn)度條,時(shí)間,比特率 等事實(shí)信息顯示控制
void MP3_PROG(u32 pos,u32 lenth)
{	
	static u16 playtime=0;//播放時(shí)間標(biāo)記	     
	float propos=0;	
	u16 time=0;// 時(shí)間變量
	u16 temp=0;

	if(f_kbps==0xffff)//未更新過(guò)
	{
		playtime=0;
		f_kbps=GetHeadInfo();	   //獲得比特率
	}
	POINT_COLOR=GREEN;
	BACK_COLOR=MP3COLOR4;	    

	if(lenth)
	{
		propos=(float)pos*512/lenth;//得到百分比 	
		if(propos>1)propos=1;//限制propos的范圍
	}else return;//文件為空,返回    

  	if(f_kbps)//對(duì)位率不為0 的文件
	{
		time=(lenth/f_kbps)/125;//總時(shí)間
		time=propos*time;       //得到當(dāng)前比例時(shí)間
	}else time=GetDecodeTime(); //對(duì)位率為0的文件,得到解碼時(shí)間
 	
	propos=propos*180;//得到實(shí)際長(zhǎng)度 
	TFT_ProBar((u8)propos);//顯示進(jìn)度條	  
	if(time!=playtime)//1s時(shí)間到,更新顯示數(shù)據(jù)
	{
		  
		temp=GetHeadInfo(); //獲得比特率	   				 
		if(temp)
		{
			f_kbps=temp;//更新KBPS	
			time=(((float)lenth/f_kbps)/125)*(propos/180);//更新時(shí)間	 
		}
		playtime=time;//更新時(shí)間 	 
		 
		//顯示播放時(shí)間			 
		TFT_ShowNum(87,72,time/60,12,0); //分鐘	   
		TFT_ShowChar(99,72,':',12,0);   
		TFT_ShowNum(105,72,time%60,12,0);//秒鐘 
		TFT_ShowChar(117,72,'/',12,0);	 
		//顯示總時(shí)間
		if(f_kbps)time=(lenth/f_kbps)/125;//得到秒鐘數(shù)   (文件長(zhǎng)度(字節(jié))/(1000/8)/比特率=持續(xù)秒鐘數(shù)    	  
		else time=0;//非法位率
		TFT_ShowNum(123,72,time/60,12,0);//顯示總分鐘數(shù)

		TFT_ShowChar(135,72,':',12,0);  	  
		TFT_ShowNum(141,72,time%60,12,0);//顯示總秒鐘數(shù)  
		//顯示位率			   
		TFT_Show3Num(168,72,f_kbps,12,0);
		TFT_ShowChar(186,72,'k',12,0);
		TFT_ShowChar(192,72,'b',12,0);
		TFT_ShowChar(198,72,'p',12,0);
		TFT_ShowChar(204,72,'s',12,0);
	}   		 
}
u8 *MP3_VOL[5]={" 音量 "," 高音 "," 低音 ","左聲道","右聲道"};
u8 *MP3_OTHER[3]={"頻譜顯示","歌詞顯示","退出播放"};
 		  
//檢測(cè)數(shù)據(jù)合法性
void VOL_Data_Check(u8 volx,u8 *datax)
{
	switch(volx)
	{
		case 0:	//主音量
			if(*datax>64)*datax=64;
			if(*datax<1)*datax=1;
			break;
		case 1:	//高音			  
		case 2:	//低音
			if(*datax>15)*datax=15;
			if(*datax<1)*datax=1;
			break;
		case 3: //左聲道
		case 4:	//右聲道
			if(*datax>32)*datax=32;
			if(*datax<1)*datax=1;
			break;
		case 5://超重音
			if(*datax>1)*datax=1;
			break;		    
	}
}
//顯示數(shù)據(jù)
void MP3_MsgBox_Data(u16 *sysmsg,u8 menu,u8 key)
{
	u16 volx;	   
	BACK_COLOR=MP3COLOR6;//背景色
	POINT_COLOR=RED;
	TFT_Fill(58,259,138,275,MP3COLOR6);//抹掉上次數(shù)據(jù)
	switch(menu)
	{
		case 0://音效模式		 
			if(key==7)INITDSP++;	 
			else if(key==8)
			{
				if(INITDSP==0)INITDSP=4;//數(shù)據(jù)合法性判斷
				else INITDSP--; 
			}					    	
			if(INITDSP>4)INITDSP=0;				   
			TFT_ShowNum(82,259,INITDSP+1,16,0);//顯示數(shù)據(jù)
			break;
		case 1:
			volx=(*sysmsg>>2)&0x07;
			if(key==7)voltemp[volx]++;	 
			else if(key==8)voltemp[volx]--; 
			VOL_Data_Check(volx,&voltemp[volx]);//數(shù)據(jù)合法性判斷  
			TFT_ShowNum(82,259,voltemp[volx],16,0);//顯示數(shù)據(jù)
			break;
		case 2:	
			volx=(*sysmsg>>5)&0x03;	 
			if(key==7){volx++;if(volx>2)volx=0;}	 
			else if(key==8) 
			{
				if(volx)volx--;
				else volx=2;
			} 				    						    	 
			*sysmsg&=0XFF9F;
			*sysmsg|=volx<<5; 					   
			Show_Str(58,259,MP3_OTHER[volx],0);
			break;   
	}
	//第三欄信息更新
	BACK_COLOR=MP3COLOR3;//背景色
	POINT_COLOR=GRED;
	for(volx=0;volx<3;volx++)TFT_ShowNum(26+60*volx,47,voltemp[volx],16,0);//顯示音量信息  
	TFT_ShowNum(206,47,INITDSP+1,16,0);//顯示音效信息  
}
//顯示MP3目錄表的信息
//*menu	  :先前的目錄號(hào)
//*sysmsg :但前運(yùn)行標(biāo)志信息
//curmenu:當(dāng)前目錄號(hào)
void MP3_MsgBox_Menu(u16 *sysmsg,u8 *menu,u8 curmenu)
{
	u16 temp;   	 
	BACK_COLOR=MP3COLOR6;  
	//顯示音效部分
	temp=(*sysmsg>>9)&0x01;
	if(curmenu==0)
	{
		POINT_COLOR=RED;  
		if(*menu==curmenu)//再次點(diǎn)擊
		{
			temp=!temp;								  
			*sysmsg&=0XFDFF;
			*sysmsg|=temp<<9;
		}
		*menu=curmenu;
	}	 						
	else POINT_COLOR=GREEN;	  
	if(temp)Show_Str_Mid(8,227,"存音效",0,48);
	else Show_Str_Mid(8,227," 音效 ",0,48); 
	//顯示音量
	temp=(*sysmsg>>2)&0x07;	   
	if(curmenu==1)
	{
		POINT_COLOR=RED;
		if(*menu==curmenu)//再次點(diǎn)擊
		{
			temp++;
			if(temp>=5)temp=0;						   	 
			*sysmsg&=0XFFE3;
			*sysmsg|=temp<<2;
			temp=(*sysmsg>>2)&0x07;
		}
		*menu=curmenu;
	}	 
	else POINT_COLOR=GREEN;	  
	Show_Str_Mid(64,227,MP3_VOL[temp],0,48);
	//其他選擇			    	 
	if(curmenu==2)
	{
		*menu=curmenu;
		POINT_COLOR=RED;  	 
	}
	else POINT_COLOR=GREEN;	 
	Show_Str_Mid(120,227," 其他 ",0,48);	 
}

							  
//RGB音樂(lè)彩燈控制
//val:0~100的數(shù)據(jù)	
void Mus_RGB_LED(u8 rval,u8 gval,u8 bval)
{	
	float ftemp;
	ftemp=(float)MAX_Red/100;
	rval=ftemp*rval;//得到紅色分量值
	ftemp=(float)255/100;
	gval=ftemp*gval;//得到紅色分量值
	bval=ftemp*bval;//得到紅色分量值
	LED_R=rval;
	LED_G=gval;
	LED_B=bval;
}
							  	 
//播放選定的歌曲 					  
//index:當(dāng)前播放的歌曲索引
//total:總共音樂(lè)文件的個(gè)數(shù)
//關(guān)于音樂(lè)的幾乎所有控制都在這個(gè)里面
u8 Mus_Play(FileInfoStruct *FileName,u16 index,u16 total)
{	 
    unsigned long bfactor=0; //物理扇區(qū),絕對(duì)地址
    unsigned long bcluster=0;//物理簇號(hào)
	u32 file_pos=0;          //記錄文件播放的長(zhǎng)度 
    u8 count=0; 			 //扇區(qū)計(jì)數(shù)器,用于換簇
    u16 i,n;
    u8 key,menux=1;
	u8 keycnt;	 //按鍵計(jì)數(shù)器
	u8 FFT_LRC=0;//默認(rèn)FFT

 	u8 *BUFFER=(u8*)MCUBuffer;//指向JPEG的開(kāi)始512字節(jié)
	u8 *spedate=(u8*)MCUBuffer+512;//當(dāng)前頻譜分析的結(jié)果寄存器
  	u8 *topval=(u8*)MCUBuffer+526; //FFT柱的最高點(diǎn)記錄表
	u8 *flyval=(u8*)MCUBuffer+540; //FFT柱的懸浮點(diǎn)記錄表
			  	   
	u8 mark=1;		//標(biāo)記
	u8 timer=0;		//頻譜定時(shí)器
	u32 topstay1;   //最高點(diǎn)頻點(diǎn)延時(shí)1
	u32 topstay2;	//最高點(diǎn)頻點(diǎn)延時(shí)2
	//bit0~9用來(lái)標(biāo)記功能 ,默認(rèn)全部循環(huán)
	//bit0,1:循環(huán)模式;bit2,3,4:音量設(shè)置;bit5,6:其他設(shè)置
	//bit7:超重低音標(biāo)記;bit8:是否有歌詞;bit9:音效存/取標(biāo)記
	u16 sysfun=1;
	u16 temp;		  
	u8 forpreclust;//快進(jìn)快退需要的簇?cái)?shù)  									 
 	 		   															 
	timer3_init();//初始化歌詞顯示定時(shí)器
	INITDSP=FM24C16_ReadOneByte(30);//調(diào)用DSP值
	if(INITDSP>4)//未初始化,則初始化
	{
		INITDSP=0;			
		for(temp=0;temp<31;temp++)FM24C16_WriteOneByte(temp,0);//全部清空
	}else read_dsp();  //已經(jīng)初始化過(guò)了	讀取DSP效果	  
	init_pt2314(MP3_Audio);//設(shè)置聲音

	MUS_RGB_Status=FM24C16_ReadOneByte(487);//讀取音樂(lè)彩燈標(biāo)志		  
	if(FFT_LRC==0)
	{
		LED_R=0;
		LED_G=0;
		LED_B=0;	
		ENRGB(MUS_RGB_Status);//使能音樂(lè)彩燈(如果設(shè)置MUS_RGB_Status位的話)			 
	}else ENRGB(0);		      //關(guān)閉彩燈
	Read_VS_Set();//讀取VS1003的設(shè)置

RESTART:

	forpreclust=FileName->F_Size/(SectorsPerClust*BytesPerSector*50);//每次前進(jìn)/后退 2%所需要的簇?cái)?shù)	   
	if(forpreclust<2)forpreclust=2;//最少也要兩個(gè)簇
	//fft部分,變量清空
	topstay1=0;
	topstay2=0;
	file_pos=0;	  
	keycnt=0;
	f_kbps=0xffff;//文件位率設(shè)置為不可能值
	count=0;	  //扇區(qū)計(jì)數(shù)器

    bfactor=fatClustToSect(FileName->F_StartCluster);//得到開(kāi)始簇對(duì)應(yīng)的扇區(qū)
	bcluster=FileName->F_StartCluster;				 //得到文件開(kāi)始簇號(hào)	
	printf("F_StartCluster:%d\n",FileName->F_StartCluster);
	   
	//從當(dāng)前目錄下找歌詞文件,有,則標(biāo)記.	 
	if(FindLrcFile(Cur_Dir_Cluster,FileName->F_ShortName))
	{								   
		sysfun|=1<<8;     //標(biāo)記有歌詞
		Lrc_Read_Init();  //初始化歌詞讀取
	}else sysfun&=~(1<<8);//標(biāo)記沒(méi)有歌詞
								  
	Mp3Reset();       //硬復(fù)位
	Vs1003SoftReset();//軟復(fù)位VS1003
	LoadPatch();      //加載頻譜分析代碼 
 	Load_Gui_Mp3(sysfun);//加載播放界面

	timer=5;//設(shè)置到一個(gè)不可能的值,初始化信息欄						 
	MP3_MsgBox_Menu(&sysfun,&timer,menux);//加載信息欄
	MP3_MsgBox_Data(&sysfun,menux,1);     //加載數(shù)據(jù) 
	//顯示但前文件夾下的歌曲數(shù)目,及當(dāng)前歌曲的索引
	BACK_COLOR=MP3COLOR4;
	POINT_COLOR=GREEN; 
	TFT_Show3Num(30,72,index,12,0);
	TFT_ShowChar(48,72,'/',12,0); 
	TFT_Show3Num(54,72,total,12,0); 
	//顯示歌曲標(biāo)題
	POINT_COLOR=WHITE;
	Show_Str_Mid(0,24,FileName->F_Name,0x01,240); //顯示歌曲名字
	//FFT數(shù)據(jù)清空
	for(i=0;i<14;i++)//清空相關(guān)數(shù)據(jù)
	{
		topval[i]=0;		 	    
		flyval[i]=0;
		spedate[i]=0;
	}								  
	key=0;		 	    
	Pen_Point.Key_Sta=Key_Up;//釋放按鍵			
	while(1)   //播放音樂(lè)的主循環(huán)
    {
        if(SD_ReadSingleBlock(bfactor,BUFFER))break;//讀取一個(gè)扇區(qū)的數(shù)據(jù) 
        i=0;  	  
        count++;//扇區(qū)計(jì)數(shù)器 
		do      //主播放循環(huán)
        {  
			while((GPIOC->IDR&MP3_DREQ)==0&&((sysfun&0X0400)==0)) //等待高/進(jìn)行頻譜顯示/非暫停 
			{
				if(FFT_LRC==0)//頻譜模式
				{
					if(mark)
					{
						GetSpec(spedate);//得到頻譜數(shù)據(jù)
						if(MUS_RGB_Status==1)Mus_RGB_LED(topval[1],topval[10],topval[7]);//使能了漸變模式	   
						else if(MUS_RGB_Status==2)Mus_RGB_LED(spedate[1],spedate[10],spedate[7]);//使能了跳變模式

						MP3_PROG(file_pos,FileName->F_Size);//MP3進(jìn)度顯示/播放時(shí)間  
					}
					else TFT_ShowFFT(spedate,topval,flyval,&topstay1,&topstay2);//頻譜顯示     	  
					timer++; 
					if(timer>=3)//FFT最高的懸浮點(diǎn)控制 
					{
						Top_Delet_FFT(flyval,&topstay1,&topstay2);//刪除高端
						timer=0; 
					}   
				}else 	    //歌詞模式
				{					   											    
					if(mark&&sysfun&(1<<8))LyricDisplayCtrl();//存在歌詞,則顯示
					else if(mark==0)MP3_PROG(file_pos,FileName->F_Size);//MP3進(jìn)度顯示/播放時(shí)間 				  
					//printf("end\n");
				}	
				mark=!mark;
			}	 
			if((GPIOC->IDR&MP3_DREQ)!=0&&((sysfun&0X0400)==0))  //非暫停,送數(shù)據(jù)給VS1003
			{			   	 
	            for(n=0;n<32;n++)Vs1003_DATA_Write(BUFFER[i++]);//發(fā)送音樂(lè)數(shù)據(jù)    
			} 
			if((Pen_Point.Key_Sta==Key_Down||NPEN)&&Pen_Point.Key_LSta)key=Touch_To_Num(3);//得到按鍵值 
			if(PEN)//按鍵松開(kāi)了,狀態(tài)改變(狀態(tài)機(jī))
			{
				Pen_Point.Key_LSta=1;
				keycnt=0;
				Pen_Point.Key_Sta=Key_Up;
			}
			if(key)//有按鍵按下
			{
				Pen_Point.Key_LSta=0;
				switch(key)
				{
					case 1://循環(huán)模式更改
						temp=sysfun&0x03;
						temp++;
						if(temp>1)temp=0;//只用其中兩個(gè),單曲循環(huán)/全部循環(huán)
						//顯示循環(huán)模式		  
						BACK_COLOR=MP3COLOR4;
						POINT_COLOR=GREEN;
						TFT_ShowButton(214,72,temp+2);//加載循環(huán)模式   
						sysfun&=0XFFFC;
						sysfun|=temp;//更改標(biāo)志位	
						break;
					case 2://Supper Bass 部分
						temp=(sysfun>>7)&0x01;	   
						voltemp[5]=temp;//記錄超重低音值
						temp=!temp;	 
						init_pt2314(MP3_Audio);//設(shè)置生效
						//顯示超重低音部分		 
						BACK_COLOR=MP3COLOR5;
						POINT_COLOR=GRED;  
						if(temp)Show_Str_Mid(0,102,"Supper Bass",0,240);
						else Show_Str_Mid(0,102,"           ",0,240);//清除顯

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
极品美女销魂一区二区三区 | 亚洲精品在线观看网站| 国产精品综合网| 一区二区三区视频在线看| 欧美成人一级视频| 欧美在线免费视屏| 国产精品91xxx| 丝袜脚交一区二区| 亚洲乱码中文字幕| 久久久久国产一区二区三区四区 | 亚洲一二三四区不卡| 欧美精品亚洲一区二区在线播放| 国产精品资源站在线| 日韩中文字幕麻豆| 亚洲精品视频一区二区| 久久久国产精品不卡| 欧美高清一级片在线| 99re成人在线| 国产99一区视频免费| 99久久精品免费看国产免费软件| 日韩不卡免费视频| 一区二区三区四区国产精品| 久久久99久久| 欧美大片顶级少妇| 亚洲人一二三区| 国产亚洲精品资源在线26u| 欧美理论片在线| 在线观看不卡视频| 99久久精品国产观看| 成人网男人的天堂| 国产大陆a不卡| 国产综合色视频| 日本成人在线电影网| 亚洲午夜在线观看视频在线| 国产精品传媒在线| 欧美激情一区二区三区在线| 精品sm在线观看| 日韩免费电影网站| 日韩欧美国产综合在线一区二区三区| 在线亚洲高清视频| 91久久国产综合久久| 91在线云播放| 色狠狠av一区二区三区| 99国产精品国产精品久久| 成人精品一区二区三区四区 | 国产精品久久久久精k8| 国产欧美日本一区二区三区| 久久亚洲私人国产精品va媚药| 91精品国产综合久久精品图片| 欧美三级蜜桃2在线观看| 在线视频一区二区三区| 色悠悠久久综合| 欧亚洲嫩模精品一区三区| 色哟哟国产精品免费观看| 日本韩国一区二区三区视频| 色999日韩国产欧美一区二区| 色狠狠一区二区三区香蕉| 欧美综合一区二区| 欧美日韩黄色一区二区| 欧美肥妇毛茸茸| 日韩欧美国产不卡| 国产丝袜欧美中文另类| 国产欧美日韩在线| 综合色中文字幕| 亚洲第一福利一区| 玖玖九九国产精品| 国产成人av福利| 91小视频免费观看| 欧美日韩国产区一| 欧美xxxxxxxx| 国产精品污网站| 亚洲一区二区三区在线看 | 国产不卡视频一区| 99精品偷自拍| 欧美男男青年gay1069videost| 日韩午夜电影在线观看| 久久精品视频一区二区三区| 亚洲欧美综合另类在线卡通| 亚洲综合在线观看视频| 美女在线观看视频一区二区| 国产不卡高清在线观看视频| 色噜噜狠狠色综合中国 | 欧美国产精品v| 一区二区三区资源| 精品一区二区久久久| 99热在这里有精品免费| 制服丝袜亚洲精品中文字幕| 性做久久久久久免费观看欧美| 男人的天堂亚洲一区| 国产成人免费视频一区| 欧美午夜理伦三级在线观看| 日韩精品一区国产麻豆| 亚洲欧洲美洲综合色网| 免费观看在线色综合| 99久久久久免费精品国产| 91精品国产91久久综合桃花| 亚洲国产成人午夜在线一区| 亚洲成av人片一区二区梦乃| 国产精品一区二区在线观看不卡| 91久久线看在观草草青青| 26uuu精品一区二区在线观看| 亚洲色图在线播放| 国产在线一区二区| 欧美日韩精品免费| 国产精品久久久久久久久久久免费看 | 91在线视频观看| 欧美不卡123| 亚洲国产人成综合网站| 国产精品一区不卡| 91精品国产综合久久福利软件| 国产精品三级久久久久三级| 同产精品九九九| 91网站最新地址| 久久久99久久| 另类人妖一区二区av| 欧美三级电影网| 国产精品日韩成人| 激情六月婷婷久久| 在线综合视频播放| 一区二区成人在线观看| www.欧美日韩| 日本一区二区三级电影在线观看| 人人超碰91尤物精品国产| 在线日韩国产精品| 成人欧美一区二区三区1314| 国产剧情在线观看一区二区| 91精品国产综合久久久蜜臀粉嫩| 日韩一区欧美一区| 国产精品综合一区二区三区| 日韩精品一区二区三区在线| 午夜视频在线观看一区二区三区| 色先锋aa成人| 亚洲天天做日日做天天谢日日欢| 成人免费不卡视频| 亚洲国产精品精华液2区45| 国产麻豆午夜三级精品| 欧美成人video| 久久超碰97人人做人人爱| 欧美日韩午夜精品| 亚洲地区一二三色| 欧美日韩视频在线一区二区| 成人综合婷婷国产精品久久蜜臀 | ...av二区三区久久精品| 国产成a人亚洲精品| 欧美激情综合五月色丁香| 国产 欧美在线| 欧美高清在线一区二区| 成人精品在线视频观看| 中文字幕亚洲视频| 色综合视频一区二区三区高清| 亚洲欧美一区二区久久| 色综合久久中文综合久久97 | 精品在线观看视频| 久久综合九色欧美综合狠狠| 国内国产精品久久| 国产欧美一区二区三区鸳鸯浴 | 精品在线一区二区| 久久久久久久久岛国免费| 福利电影一区二区三区| 国产精品国产三级国产普通话三级 | 91免费精品国自产拍在线不卡| 亚洲同性gay激情无套| 色哟哟亚洲精品| 午夜精品久久久久久久久久 | 日本不卡视频在线观看| 精品日韩成人av| 成人性生交大片免费| 亚洲欧美日韩电影| 欧美伦理视频网站| 国内精品嫩模私拍在线| 国产精品丝袜一区| 欧洲视频一区二区| 精品一区二区免费看| 国产精品你懂的| 欧美日韩在线不卡| 国产自产视频一区二区三区 | 蜜乳av一区二区| 欧美激情中文字幕| 欧美三级蜜桃2在线观看| 看国产成人h片视频| 国产精品久久久久久久久果冻传媒| 91麻豆国产福利在线观看| 视频一区二区国产| 国产欧美一区二区精品仙草咪 | 亚洲精品一区二区三区99| 久久亚洲一级片| 成人激情视频网站| 午夜影院久久久| 久久精品欧美一区二区三区不卡| 91黄视频在线| 国产在线精品一区二区不卡了 | 国产午夜精品一区二区三区嫩草| 色综合中文字幕国产| 亚洲成a人片在线观看中文| 欧美精品一区二区精品网| av在线不卡免费看| 久久99精品久久久久久动态图| 自拍偷在线精品自拍偷无码专区 | 日本亚洲电影天堂| 成人欧美一区二区三区小说|