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

📄 picture.c

📁 多功能MP3代码
💻 C
字号:
#include "COMM.h"
//图片浏览部分代码,包括模式控制等					    
//正点原子@SCUT
//V1.1

//图片浏览模式控制
//index:当前编号/返回值
//total:总文件数
void PIC_Mode_Control(u16 *index,u16 total)
{
	u8 temp;
	u16 nextindex;	 
	nextindex=*index;
	temp=PIC_View_Status>>6;//得到模式
	if(temp==1)//顺序播放
	{
		nextindex++;
		if(nextindex>total)nextindex=1;//范围控制
	}else //随机播放
	{
	 	srand(RTC->CNTL);//得到种子
		while(1)
		{
			nextindex=rand();//得到下一个值
			if(nextindex>0&&nextindex<=total)break;//得到了可用的随机数
		}
	}
	*index=nextindex;
}

//图片浏览器
//支持FAT32/16文件系统的浏览.
//check:09/04/18
void Pic_Viewer(void)
{		    
	u8 key;
	FileInfoStruct *FileInfo;		 
	u16 pic_cnt=0;//当前目录下图片文件的个数
	u16 index=0;  //当前选择的文件编号	
	u8 enout=0; 
	u8 keycnt=0; 

	u16 dtime=0;
	u16 tcnt=0;		    

	//从根目录开始浏览
	if(FAT32_Enable)Cur_Dir_Cluster=FirstDirClust;//根目录簇号
 	else Cur_Dir_Cluster=0;						   
	Fat_Dir_Cluster=Cur_Dir_Cluster;//父目录就是当前目录

	PIC_View_Status=FM24C16_ReadOneByte(486);//读取图片浏览播放模式信息	 
	dtime=PIC_Time_Table[PIC_View_Status&0x07];//得到延迟时间 
	dtime*=1000;//扩大1000倍 ms级别 1000ms 			   	  
	while(1)
	{
BROS:	 							  			 
		Load_Gui_Bro("选择");//显示GUI界面	
		POINT_COLOR=RED;	 
		Show_Str(88,2,"图片浏览",0x01);//叠加模式,非自动换行
		index=File_Browse(T_JPG|T_JPG|T_BMP);//浏览文件夹    
		if(!index)return;//结束浏览,退出此功能!!!!!

		pic_cnt=0;	 
		Get_File_Info(Cur_Dir_Cluster,FileInfo,T_JPG|T_JPG|T_BMP,&pic_cnt);//获取当前文件夹下面的目标文件个数 
		Pen_Point.Key_Sta=Key_Up;         //释放显示期间的触发 
		FileInfo=&F_Info[0];//开辟暂存空间.
		while(1)
		{
			Get_File_Info(Cur_Dir_Cluster,FileInfo,T_JPG|T_JPG|T_BMP,&index);//得到这张图片的信息	 
			TFT_CLEAR(WHITE);//清屏,加载下一幅图片的时候,一定清屏	
			AI_LoadPicFile(FileInfo,0,0,240,320);//显示图片	    
			Pen_Point.Key_Sta=Key_Up;//释放显示期间的触发 
			key=0;enout=0;
			tcnt=0; 	 
			while(1)
			{
                if((Pen_Point.Key_Sta==Key_Down||NPEN)&&Pen_Point.Key_LSta)key=Touch_To_Num(7);//扩展按键扫描
		 		if(PEN)//按键松开了,状态改变(状态机)
				{
					
					Pen_Point.Key_LSta=1;	  
					Pen_Point.Key_Sta=Key_Up;  
					keycnt=0;
				} 		  
				if(enout&&Is_In_Area(200,300,239,319))goto BROS;//返回浏览模式				  		
				if(key)
				{			 
					Pen_Point.Key_LSta=Key_Up;//释放显示期间的触发		    
					switch(key)
					{
						case KEY_PREV:	  
							if(index>1)index--;
							else index=pic_cnt;//到最后一副(循环) 
							break;	
						case KEY_NEXT:
		   					index++;
							if(index>pic_cnt)index=1;//显示第一副,循环
							break;
						case KEY_FUNC://短按暂停,长按退出	 
							Pen_Point.Key_LSta=Key_Down;//允许下次进入
							keycnt++;
							tcnt=0;//清空时间计数器	    
							if(keycnt>=20)
							{ 				 
								enout=1;//使能退出
								POINT_COLOR=RED;
								TFT_Fill(0,298,239,319,0X81BF);//填充底部颜色
								Show_Str(203,300,"返回",0x01); //叠加模式,非自动换行	  
							}  	
					}
					if(key!=KEY_FUNC)break;//上下翻页		  
					key=0;//清除键值
				}   
				delay_ms(1);  
				if(tcnt>=dtime)//延迟时间到了
				{	 
					tcnt=0;
					if((PIC_View_Status>>6))//非手动模式
					{
						PIC_Mode_Control(&index,pic_cnt);//模式控制
						break;//播放下一幅
					}
				}
				tcnt++;//时间累加			 
			}
		}
	}			 
}

















⌨️ 快捷键说明

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