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

📄 fileopermenu.c

📁 使用51单片机作为控制器
💻 C
字号:
#include "LCD_FUN.H"
#define MENUNUM 6
#define CHDISPMAX 2
uchar code CHIMenuText[][6]={
{66,65,0},//打开
{70,71,0},//属性
{72,73,0},//复制 
{76,77,0},//剪切
{74,75,0},//删除
{80,81,0}, //粘贴
{56,57,70,71,0},//优盘属性
{109,110,88,89,90,0}//新建文件夹
};
typedef struct
{
	uchar TextIndex;
	uchar TextNum;
}MeunTextStru;
MeunTextStru code MenuText[]={
{0,8}
 	};
uchar *Item_MenuText(uchar Index,Item)
{
	return	CHIMenuText[Item+Index];
}
uchar Item=0;
extern uchar where;
uchar IndexNum=0;
//extern uchar ItemPlace[MENUNUM];
//extern uchar SaveIndex[MENUNUM];
//uchar SaveItem[MENUNUM];
uchar ItemMaxNum;
//uchar MenuLay=0;
//---------------菜单处理函数----------------------------------------------------
void Menu_Up(void)
{   uchar ItemBackup;
    uchar i,Menu_j;
    ItemBackup=Item;
	if(Item==0)
		Item=ItemMaxNum-1;//最大条项数
    else
		Item--;
	if(where==0)//如果现在是在顶项处
	{   
		if(CHDISPMAX>=ItemMaxNum-1)//如果可以显示所有项。则由顶项跳到底项。
		{	
			where=ItemMaxNum-1;
			GUI_DispStringAt(Item_MenuText(IndexNum,ItemBackup),0,0,6,0,0);
			GUI_DispStringAt(Item_MenuText(IndexNum,Item),where,0,6,0,1);
		}
		else//否则所有项下移一行。
		{
			GUI_DispStringAt(Item_MenuText(IndexNum,Item),0,0,6,0,1);//显示当前项目
	        Menu_j=Item;
			for(i=1;i<3;i++)//显示其它项
	        {	Menu_j++;
				if(Menu_j>ItemMaxNum-1)
					Menu_j=0;
				GUI_DispStringAt(Item_MenuText(IndexNum,Menu_j),i,0,6,0,0);
			}
		}
	}
	else
	{
		where--;
		GUI_DispStringAt(Item_MenuText(IndexNum,Item),where,0,6,0,1);
        GUI_DispStringAt(Item_MenuText(IndexNum,ItemBackup),where+1,0,6,0,0);
	}
	GUI_ScrollBar(ItemMaxNum, Item);
}
void Menu_Down(void)
{   uchar ItemBackup;
    uchar i,Menu_j;
    ItemBackup=Item;
	if(Item==ItemMaxNum-1)
		Item=0;
    else
		Item++;
	if(where==CHDISPMAX||where==ItemMaxNum-1)//如果位于显示末项
	{	
		if(CHDISPMAX>=ItemMaxNum-1)//如果可以显示所有项。则由底项跳到顶项。
		{	
			where=0;
			GUI_DispStringAt(Item_MenuText(IndexNum,Item),where,0,6,0,1);
			GUI_DispStringAt(Item_MenuText(IndexNum,ItemBackup),ItemMaxNum-1,0,6,0,0);
		}
		else
		{
			GUI_DispStringAt(Item_MenuText(IndexNum,Item),2,0,6,0,1);
	        Menu_j=Item;
			for(i=CHDISPMAX;i>0;i--)
	        {	Menu_j--;
				if(Menu_j==255)
					Menu_j=ItemMaxNum-1;
				GUI_DispStringAt(Item_MenuText(IndexNum,Menu_j),i-1,0,6,0,0);
			}
		}
	}
	else
	{
		where++;
		GUI_DispStringAt(Item_MenuText(IndexNum,Item),where,0,6,0,1);
        GUI_DispStringAt(Item_MenuText(IndexNum,ItemBackup),where-1,0,6,0,0);
	}
	GUI_ScrollBar(ItemMaxNum, Item);
}
//---------------------根据条层选择号和所在位置刷新屏幕显示条层的内容---------------------------------
void Menu_Redisp(uchar whereI,uchar ItemJ)
{		
	uchar i;
	uchar Menu_j;
	GUI_DispStringAt(Item_MenuText(IndexNum,ItemJ),whereI,0,6,0,1);//显示当前选项
//显示其它选项。
    Menu_j=ItemJ;
	for(i=whereI;i>0;i--)//显示当前项上面部分。
	{
		if(Menu_j==0)
			Menu_j=ItemMaxNum-1;
		else 
			Menu_j--;
		GUI_DispStringAt(Item_MenuText(IndexNum,Menu_j),i-1,0,6,0,0);
	}
    Menu_j=ItemJ;
	for(i=whereI+1;i<=CHDISPMAX;i++)//显示当前项下面部分。
	{	
		if(i>ItemMaxNum-1)//如果所要显示项目小于最大显示数,则只显示到ItemMaxNum-1
			break;
		if(Menu_j==ItemMaxNum-1)
			Menu_j=0;
		else 
			Menu_j++;
		GUI_DispStringAt(Item_MenuText(IndexNum,Menu_j),i,0,6,0,0);
	}
    GUI_ScrollBar(ItemMaxNum, Item);
}
void FileOperInit(void)
{   LCD_clr();
	Item=0;
	where=0;
    IndexNum=0;
	ItemMaxNum=MenuText[0].TextNum;
	Menu_Redisp(where,Item);
	LCD_set_RC(3,0);
	LCD_putc(47,0);LCD_putc(48,0);//显示 -操作
    LCD_set_RC(3,5);
	LCD_putc(45,0);LCD_putc(46,0);//显示 -返回
}

⌨️ 快捷键说明

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