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

📄 menu.i

📁 智能充电参考程序 可以控制整个充电过程希望对大家有帮助
💻 I
📖 第 1 页 / 共 3 页
字号:
/*SUBMENU of ID:32 */ 42, 4,
/*SUBMENU of ID:33 */ 46, 4,
/*SUBMENU of ID:03 */ 50, 3,
/*SUBMENU of ID:04 */ 53, 2,
/*SUBMENU of ID:53 */ 55, 2,
/*SUBMENU of ID:54 */ 57, 2,
/*SUBMENU of ID:05 */ 59, 2,
0
};

void ExecuteMenu(unsigned char MenuID);



/*******************************************************************************************************
** 函数名称: ExecuteMenu
** 功能描述: 菜单显示程序,每 100 mS 调用一次即可
** 输入参数: 无
** 输出参数: 无
********************************************************************************************************/
void ExecuteMenu(unsigned char MenuID)
{
	
	if (MenuID == 50)
	{
		ReadBatterySTAT(1);
	}
	else if (MenuID == 51)
	{
		ReadBatterySTAT(2);
	}
	
	else if (MenuID == 52)
	{
		ReadBatterySTAT(3);		
	}
	
}

/*******************************************************************************************************
** 函数名称: MenuNo
** 功能描述: 菜单序号
** 输入参数: INT8U No:
** 输出参数: 
********************************************************************************************************/
unsigned char MenuNo(unsigned char No)
{
    if ((No >= 0) && (No <= 9))
    {
        return No + '0';
    }
    else if ((No >= 10) && (No <= 36))
    {
        return No - 10 + 'A';
    }
    else
    {
        return '?';
    }
}


/*******************************************************************************************************
** 函数名称: ChooseRadioMenu
** 功能描述: 选择单选菜单
** 输入参数: INT8U ParamCaptionID:
**           INT8U MenuDefineID:
**           INT8U *Value
** 输出参数: 无
********************************************************************************************************/
/*
void ChooseRadioMenu(INT8U ParamCaptionID, INT8U MenuDefineID, INT8U *Value)
{
    flash INT8U *Caption;
    flash INT8U *pDefine;
    INT8U Key;
    INT8U Pos;
    INT16U TopMenuItem;
    INT16U CurrentMenuItem;
    //INT8U i;
    INT8U MenuCount;

    delay_ms(10);
    
    //LCD_WriteCaption(ParamCaptionID, 0);
    //Pos = LCD_Position() - 1;  
    
     lcd_locate(0,0);
     
    //WriteCGRAM(0x82,1,0);
    //WriteCGRAM(0x83,2,0);
    //WriteCGRAM(0x84,3,0);
    
    pDefine = SubMenuDefine + (INT16U)2 * (INT16U)MenuDefineID;
    MenuCount = pDefine[1];
    TopMenuItem = pDefine[0];
    CurrentMenuItem = *Value;
    if (CurrentMenuItem > MenuCount - 1)
    {
        CurrentMenuItem=MenuCount - 1;
    }
    

    Key = INIT_KEY;
    while (Key != BT_APPLY)
    {
        if (Key != NO_KEY)
        {
            lcd_write_byte((0x80 | Pos), CMD);
            
            Caption = Menu + (CAPTION_LENGTH + 2) * (TopMenuItem + CurrentMenuItem - 1);
            
            if (CurrentMenuItem == 0)
            {   
                lcd_write_byte(3, DATA);
            }
            else if (CurrentMenuItem == MenuCount - 1)
            {
                lcd_write_byte(1, DATA);
            }
            else
            {
                lcd_write_byte(2, DATA);
            }
            
            //LCD_Write(MenuNo(CurrentMenuItem)); 
            lcd_write_byte(' ', DATA); 
            lcd_write_byte('=', DATA);            
            lcd_print_stringF(Caption);
        }
        
        Key = read_keycode();
        
        if (Key != NO_KEY)
        {
            if (Key == BT_UP)
            {
                if (CurrentMenuItem > 0)
                {
                    CurrentMenuItem --;
                } 
            }
            else if (Key == BT_DOWN)
            {   
                if (CurrentMenuItem < MenuCount - 1)
                {
                    CurrentMenuItem ++;
                }
            }
            else if (Key == BT_APPLY)
            {
                *Value = CurrentMenuItem;
            }
            else if (Key == BT_LEFT)
            {
                Key = BT_APPLY;
            }
            
            delay_ms(10)
        }
        
    }
} 
*/

/*******************************************************************************************************
** 函数名称: ShowMenu
** 功能描述: 菜单显示程序,每 100 mS 调用一次即可
** 输入参数: 无
** 输出参数: 无
********************************************************************************************************/
void ShowMenu(void)
{
    static flash unsigned char *pMenu;
    static flash unsigned char *pDefine;
    static flash unsigned char *Caption;  
    static unsigned int TopMenuItem = 0;
    static unsigned int CurrentMenuItem = 0;
    static unsigned char Stack[3][5] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; 
    static unsigned char StackIndex = 0;
    static unsigned char DrawMenuItem[6]={0x80,0xC0,1,0,0,1};
    static unsigned char MenuCount;
    static unsigned char FlagMenuInit = 1;   // 显示菜单框架
    static unsigned char Key = 0 ;     // 第一次显示菜单
    unsigned char i = 0;
    unsigned char j = 0; 

    if(FlagMenuInit)
    {
        FlagMenuInit = 0;  // 清第一次标志 
 
        lcd_cls();  //清屏    
        pMenu = Menu;  
        pDefine = SubMenuDefine;
        MenuCount = SubMenuDefine[1]; 
        
        //WriteCGRAM(0x80,0,0);     // 写入特殊字符 
        //WriteCGRAM(0x81,1,0);     // 写入特殊字符  
    }  
    
    if (Key != 63)
    {        
        for (j=0; j<2; j++)
        {
            lcd_write_byte(DrawMenuItem[0 + j], 0);
            
            if (DrawMenuItem[(unsigned char)(j + 4)] < MenuCount)
            {
                Caption = Menu + (16 + 2) * (TopMenuItem + DrawMenuItem[(unsigned char)(j + 4)]);
                
                if (DrawMenuItem[(unsigned char)(j + 2)])
                {                
                    lcd_write_byte(0, 1);
                    lcd_write_byte(MenuNo(DrawMenuItem[(unsigned char)(j + 4)] + 1), 1);
                    lcd_write_byte('.', 1);
                    lcd_print_stringF(Caption);
                }
                else
                {   
                    lcd_print_stringF(" ");
                    lcd_write_byte(MenuNo(DrawMenuItem[(unsigned char)(j + 4)] + 1), 1);
                    lcd_write_byte('.', 1);
                    lcd_print_stringF(Caption);
                }
            }
            else
            {
                for (i=0; i<16; i++) 
                {
                    lcd_write_byte(' ', 1);
                }
            }       
        }
    }
    
    Key = read_keycode(); 
    
    if (Key != 63)
    {
        if (Key == 62)
        {
            if (DrawMenuItem[3])
            {
                DrawMenuItem[2]=1;
                DrawMenuItem[3]=0;
            } 
            else if (DrawMenuItem[4]>0)
            {
                DrawMenuItem[4]--;
                DrawMenuItem[5]--;
            }
        }
        else if (Key == 61)
        {   
            if (DrawMenuItem[2])
            {
                DrawMenuItem[2]=0;
                DrawMenuItem[3]=1;
            }
            else if (DrawMenuItem[5]<MenuCount-1)
            {
                DrawMenuItem[4]++;
                DrawMenuItem[5]++;
            }
        }
        else if ((Key == 47) || (Key == 55))
        {
            
            if (DrawMenuItem[2])
            {
                CurrentMenuItem = TopMenuItem + DrawMenuItem[4];
            }
            else
            {
                CurrentMenuItem = TopMenuItem + DrawMenuItem[5];
            }
            
            if (CurrentMenuItem < 60)
            {
                pMenu = Menu + ((16 + 2) * CurrentMenuItem) + 16 + 1;
                if (*pMenu > 6)
                {
                    Stack[0][StackIndex] = pDefine-SubMenuDefine;
                    Stack[1][StackIndex] = DrawMenuItem[2];
                    Stack[2][StackIndex] = DrawMenuItem[4];
                    StackIndex ++;
                    
                    pDefine = SubMenuDefine + ((unsigned int)(*pMenu - 6) * 2);
                    TopMenuItem =* pDefine - 1;
                    MenuCount = pDefine[1];
                    DrawMenuItem[2] = 1;
                    DrawMenuItem[3] = 0;
                    DrawMenuItem[4] = 0;
                    DrawMenuItem[5] = 1;
                }
                else if (*pMenu <= 6)
                {
                    ExecuteMenu(CurrentMenuItem + 1);
                }
                
            }
        }
        else if ((Key == 31) || (Key == 59))
        {
            if (StackIndex > 0)
            {
                StackIndex --;
                pDefine=SubMenuDefine + (unsigned int)(Stack[0][StackIndex]);
                TopMenuItem=*pDefine - 1;
                MenuCount=pDefine[1];
                DrawMenuItem[2] = Stack[1][StackIndex];
                DrawMenuItem[3] = 1 - Stack[1][StackIndex];
                DrawMenuItem[4] = Stack[2][StackIndex];
                DrawMenuItem[5] = Stack[2][StackIndex] + 1;
            }
        }
    
    }              
    
}




/********************************************************************************************************
**                                 END OF FILE
********************************************************************************************************/

⌨️ 快捷键说明

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