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

📄 menusetup.c

📁 Atmega64单片机程序(完整工程)
💻 C
字号:
/******************************************************************************
 * MenuSetup.C - "设置"菜单  菜单函数使用模版
 ******************************************************************************/
#include "MenuSetup.h" 


//设置
void DispMenuSetupInit()
{
    GUI_Clear();
    //--------------------
    //切换Bar显示内容
    //---------------------
    BarMenu=&MenuSetup[language];
    ItemNum=(*BarMenu).TextNum ;
    DispItem=(*BarMenu).Text ;
    
    //用户的初始化代码请放在这里
	
	//显示按键对应的文字提示,1-->"选择"
    GUI_DispStringAt(*(Tip[language].Text+1),0,LCD_YSIZE-14);
    //显示按键对应的文字提示,0-->"退出"
	GUI_DispStringAt(*(Tip[language].Text+4),LCD_XSIZE-24,LCD_YSIZE-14);

    BarMenuInit();//公共初始化部分
}

/*
*****************************************************************************
菜单使用例程
0.Jump2Menu + FlashMode_AutoInit/FlashMode_ManualInit
  跳转到任意菜单,FlashMode_AutoInit-->在BarMenuInit函数中执行PUSH;
  FlashMode_ManualInit-->子菜单的Init函数中PUSH,看例子:DispMenuLanguageInit
1.PUSH + POP
  执行一些功能,并使用LCD后,回到原有界面,回到原有界面--包括反显位置都恢复
2.Jump2Menu(SelfMenuIndex,FlashMode_ReFlash);
  执行一些功能,并使用LCD后,执行如上调用,回到原有界面--包括反显位置都恢复
3.POP
  执行一些功能,并使用LCD后,回到上层菜单,恢复上层界面
4.Jump2Menu(SelfMenuIndex,FlashMode_NoAction);
  执行一定功能后,但不占用LCD的话,直接界面不动

*****************************************************************************
*/
void DispMenuSetupDown(void)
{
    POP();
}

void DispMenuSetupLeft(void)
{
    BarMenuLeft();
}

void DispMenuSetupRight(void)
{
    BarMenuRight();
}

void DispMenuSetupUp(void)
{
    switch(Item)
    {
        case 0 ://时间设置选项
        {
		    PUSH();
            GUI_Clear();
			if(language == CH)
			    GUI_DispStringAtBar("时间设置",0,0,LCD_XSIZE,GUI_TA_HCENTER);
			else
			    GUI_DispStringAtBar("Time Settings",0,0,LCD_XSIZE,GUI_TA_HCENTER);
			
			//显示按键对应的文字提示,1-->"确定"
            GUI_DispStringAt(*(Tip[language].Text+2),1,LCD_YSIZE-14);
            //显示按键对应的文字提示,0-->"退出"
	        GUI_DispStringAt(*(Tip[language].Text+4),LCD_XSIZE-24,LCD_YSIZE-14);
            
			Time_Settings();//时间设置函数
			POP();//返回到父菜单
            break ;
        }
        case 1 :
        {
            //PUSH  -->POP
            PUSH();
            GUI_Clear();
            GUI_DispStringAt("Do Something \nthen Back to \nThis Menu!",0,0);
            GUI_Delay(10000);
            POP();
            break ;
        }
        case 2 :
        {
            //ReFlash = 1
            GUI_Clear();
            GUI_DispStringAt("Do Something \nthen Back to \nThis Menu!",0,0);
            GUI_Delay(10000);
            Jump2Menu(SelfMenuIndex,FlashMode_ReFlash);
            break ;
        }
        case 3 :
        {
            //POP
            GUI_Clear();
            GUI_DispStringAt("Do Something \nthen Back to \nFather Menu!",0,0);
            GUI_Delay(10000);
            POP();
            break ;
        }
        default :
        {   
		    GUI_Clear();
			GUI_Delay(10000);
            Jump2Menu(SelfMenuIndex,FlashMode_NoAction);
            return ;
        }
    }
}


void Time_Settings(void)
{
    INT8U save_Hour,save_Minute ;
    
    save_Hour=Hour ;
    save_Minute=Minute ;
	
	Key_Deal_Flag=0 ;
    while(1)
    {
        GUITextMode=GUI_TEXTMODE_REVERSE ;
        GUI_Display_Time(24,32);
        GUITextMode=GUI_TEXTMODE_NORMAL ;
        
        if(Key_Deal_Flag==1)
        {
            if(Keyvalue==Key_Left)
            {
                Minute++;
                if(Minute>59)
                {
                    Minute=0 ;
                    Hour++;
                    if(Hour>23)
                        Hour=0 ;
                }
            }
            else if(Keyvalue==Key_Right)
            {
                Minute--;
                if(Minute==255)
                {
                    Minute=59 ;
                    Hour--;
                    if(Hour==255)
                        Hour=23 ;
                }
            }
            //确认键
            else if(Keyvalue==Key_Up)
            {
                GUI_Clear();
                if(language==CH)
                    GUI_DispStringAtBar("时间已设置",0,32,LCD_XSIZE,GUI_TA_HCENTER);
                else 
                    GUI_DispStringAtBar("Time is set",0,32,LCD_XSIZE,GUI_TA_HCENTER);
                
                GUI_Delay(3000);
                
                break ;
                
            }
            //退出键
            else if(Keyvalue==Key_Down)
            {
                Hour=save_Hour ;
                Minute=save_Minute ;
                
                break ;
            }
            Key_Deal_Flag=0 ;
        }
    }
	Key_Deal_Flag=0 ;
}

⌨️ 快捷键说明

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