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

📄 menu.c

📁 Atmega64单片机程序(完整工程)
💻 C
字号:
#include "SYS_Config.h"
#include "Menu.H"

#include "PIC.h"
//图标
/*
----------------------------------------------------------------------------
菜单相关变量
----------------------------------------------------------------------------
*/
INT8U LessCPUUseage=TRUE;

INT8U Flash = 0;                 //跳转进入子菜单 刷新标志  >1刷新
INT8U language = EN;             //语言标志
INT8U KeyFuncIndex = 0;          //索引
//3个备份数组
INT8U FatherIndex[MenuSize+1];   //父菜单备份数组
INT8U Layer = 0;                 //菜单层数

INT8U ItemBackup[MenuSize];      //当前菜单项备份
INT8U ItemBackup_i = 0;          //

INT8U WhereBackup[MenuSize];     //反显位置备份
INT8U WhereBackup_i = 0;         //


INT8U KeyPressCount = 0;         //用于版本显示

INT8U Item;              //当前Bar项  范围:[0,ItemNum-1]  包括0 包括ItemNum-1  共包括ItemNum个取值
INT8U ItemNum;           //Bar项数
INT8U Where;             //当前反显位置,[0,DispMax-1]  反映反显的Bar在屏幕上的位置
//INT8U DispMax = 3;     //单屏可以显示的最大项 通常这是个固定值--因为你的液晶的大小决定了你一次可以显示的多少,你也可以在程序中修改,但记得维护它--因为所有的Bar型菜单都是要用到它的
#define DispMax  3

INT8U DispMin;         //ItemNum和DispMax中的小者
//当前Bar显示内容指针

INT8U **DispItem; //项显示内容指针

#ifdef DynamicBar
   INT8U BarDataMode = FixedData;
   INT8U ** DynamicBarDispItem; //动态项显示内容指针
#endif

//菜单资源指针
const struct Menu * BarMenu;
//Tip指针
const struct Menu * TipBar;

/*
----------------------------------------------------------------------------
      |---->指针对象存放地址,也就是{"Function"},{"Parameter"},{"Measure"},等等这些文本存放在哪里
      |         |---->指针存放的位置,是这些字符的首地址应当存放在哪里  因为这是个指针数组存放的内容就是每个字符串的开始地址
      |         |
INT8U const * const TopItemEN[]=
{
{"Function"},
{"Parameter"},
{"Measure"},
{"Language"},
{"Test"},
};
我们均把这些存放在代码区,以减少对RAM的占用

----------------------------------------------------------------------------
*/


//---------------------------------------------------
//各个菜单的资源
//命名方式是:
//---------------------------------------------------
//顶层菜单

//INT8U const * const TopItemCN[]=
INT8U * TopItemCN[]=
{
{"功能"},
{"参数"},
{"测量"},
{"语言"},
{"设置"},
};


//INT8U const * const TopItemEN[]=
INT8U * TopItemEN[]=
{
{"Function"},
{"Parameter"},
{"Measure"},
{"Language"},
{"Settings"},
};


//"功能"菜单项的内容和长度

//INT8U const * const FuncItemCN[]=
INT8U * FuncItemCN[]=
{
{"读出数据"},
{"背光控制"},
{"出厂设置"},
{"修改密码"},
};

//INT8U const * const FuncItemEN[]=
INT8U * FuncItemEN[]=
{
{"Read Data"},
{"BackLight"},
{"Factory Set"},
{"Change CODE"}
};
//"参数"菜单项的内容和长度

//INT8U const * const ParaItemCN[]=
INT8U * ParaItemCN[]=
{
{"阈值"},
{"时间T"},
{"灵敏度K"},
{"测量时间"}
};

//INT8U const * const ParaItemEN[]=
INT8U * ParaItemEN[]=
{
{"Menu0"},
{"Menu1"},
{"Menu2"},
{"Menu3"},
{"Menu4"},
{"Menu5"},
{"Menu6"},
{"Menu7"},
};
//"语言"菜单项的内容和长度

//INT8U const * const LanguageItemCN[]=
INT8U * LanguageItemCN[]=
{
{"中文"},
{"English"},
};

//INT8U const * const LanguageItemEN[]=
//INT8U * LanguageItemEN[]=
//{
//{"中文"},
//{"English"},
//};

//测量
//INT8U const * const MeasureItemCN[]=
INT8U * MeasureItemCN[]=
{
{"测试1"},
{"测试2"},
{"测试3"},
{"测试4"},
{"测试5"},
{"测试6"},
{"测试7"},
};

//INT8U const * const MeasureItemEN[]=
INT8U * MeasureItemEN[]=
{
{"PushUp Res"},
{"ClearErrCount"},
{"OnlineCMD"},
{"SysInputTest"},
{"SVC TEST"},
{"AXis TEST"},
{"Relay TEST"},
};

//设置
//INT8U const * const MeasureItemCN[]=
INT8U * SetupItemCN[]=
{
{"时钟设置"},
{"设置2"},
{"设置3"},
{"设置4"},
{"设置5"},
{"设置6"},
};

//INT8U const * const MeasureItemEN[]=
INT8U * SetupItemEN[]=
{
{"Time settings"},
{"setup 2"},
{"setup 3"},
{"setup 4"},
{"setup 5"},
{"setup 6"},
};


//提示键的文本
//INT8U const * const TipCN[]=
INT8U * TipCN[]=
{
{"功能表"},
{"选择"},
{"确认"},
{"取消"},
{"退出"},
{"捷径"},
};



//INT8U const * const TipEN[]=
INT8U * TipEN[]=
{
{"Menu"},
{"Select"},
{"OK"},
{"Cancel"},
{"Exit"},
{"Goto"},
};

//----------------------------------------
//宏定义:
#define MenuWhat(n) {(INT8U **)n,(sizeof(n)/sizeof(INT8U *)),0}

//图标层
const struct Menu IcoMenu[] =
{
MenuWhat(TopItemCN),
MenuWhat(TopItemEN),
};

//功能菜单
const struct Menu MenuFunc[] =
{
MenuWhat(FuncItemCN),
MenuWhat(FuncItemEN),
};

//参数菜单
const struct Menu MenuPara[] =
{
MenuWhat(ParaItemCN),
MenuWhat(ParaItemEN),
};

//测量菜单
const struct Menu MenuMeasure[] =
{
MenuWhat(MeasureItemCN),
MenuWhat(MeasureItemEN),
};

//语言菜单
const struct Menu MenuLanguage[] =
{
MenuWhat(LanguageItemCN),
MenuWhat(LanguageItemCN),
};

//设置菜单
const struct Menu MenuSetup[] =
{
MenuWhat(SetupItemCN),
MenuWhat(SetupItemEN),
};

//Tip
const struct Menu Tip[] =
{
MenuWhat(TipCN),
MenuWhat(TipEN),
//{(INT8U **)TipCN,5,0},
//{(INT8U **)TipEN,5,0}
};


//更改密码时询问的图标索引号
#define WarningICO  5
#define PassICO     0
//图标索引
const INT8U  * const icos[]=
{
   function,   //功能
   para,       //参数
   action,     //测量
   menu,       //语言
   time,       //时钟
   question,   //询问
   warning,
   sound,
};

void Jump2Menu(INT8U Index,INT8U FlashMode)
{
    KeyFuncIndex = Index;             //jump to Menu index
    if(FlashMode)
	{
        Flash = FlashMode;
    }
}

⌨️ 快捷键说明

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