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

📄 menu.h

📁 Atmega64单片机程序(完整工程)
💻 H
字号:
/******************************************************************************* Menu.H - 菜单相关宏开关 函数声明等
 ******************************************************************************/
/*
LessCPUUseage:
高亮显示当前项的做法是
1.反显整个Bar项文字 提示当前项
2.通过一个'>'来提示当前位置
第1种方法在低速CPU和LCD上比较费时
因此这个情况下用第2种方法,毕竟反显一个'>'比反显整行要省事的多
但没有解决根本问题,如果依然会出现要全部刷新的情况
*/

//动态生成条项菜单  需要回滚方式的支持
//#define DynamicBar
//是否回滚方式
#define RockBack

//数字键快捷方式
//需要预定义数字键的键值Key_1---Key_9
//并提供一个函数能把键值转化成实际对应数字 Key = chang_code(Key);
//#define DigiKeyLink

//检查如果需要动态条项菜单,就需要回滚方式,这里做检查
#ifdef DynamicBar
    #ifndef RockBack
        #error  "DynamicBar need RockBack!"
        #error  "#define RockBack pls"
    #endif
#endif

//--------------
//显示位置的宏定义
//父Bar项的显示位置

//#define FatherXOffset    10     
//Father的X偏置
//#define FatherYOffset    16      
//Father的Y偏置

//Bar项的显示XY偏置
#define BarXOffset    0     
//Bar的X偏置
#define BarYOffset    0     
//Bar的Y偏置

//Bar项的XY尺寸
#define BarXSize      (5*13)    
//Bar的长度
#define BarYSize      16         
//Bar的间隔

//语言代码
#define CH    0
#define EN    1

//不初始化Flash
#define FlashMode_NoAction     0
//系统负责初始化
#define FlashMode_AutoInit     1
//手动初始化
#define FlashMode_ManualInit   2
//重绘画面
#define FlashMode_ReFlash      3

//也就是连续使用Push的个数
#define MenuSize        5          
//菜单深度最大值

#ifdef  DynamicBar
#define FixedData       0
#define DynamicData     1
//条项内容的来源是固定的还是动态生成的,通常是固定的,
#endif

//INT8U DispMax = 3;     //单屏可以显示的最大项 通常这是个固定值--因为你的液晶的大小决定了你一次可以显示的多少,你也可以在程序中修改,但记得维护它--因为所有的Bar型菜单都是要用到它的
#define DispMax  3

//-----------------------------------------------------
//Bar型菜单的数据结构
struct Menu
{
//    INT8U const **Text;  
    INT8U **Text;          //指向显示内容数组的指针
    INT8U TextNum;         //项个数
    void* (*Action)();     //对应的执行函数
};

//----------------------------------------------------
extern INT8U LessCPUUseage ;

//对外声明定义于Menu.C的内容
extern INT8U ReFlash ;             //子项菜单返回 刷新标志
extern INT8U Flash ;               //跳转进入子菜单 刷新标志
extern INT8U language;             //语言标志
extern INT8U KeyFuncIndex ;        //索引

extern INT8U FatherIndex[MenuSize+1]; //父菜单备份数组
extern INT8U Layer;                   //菜单层数

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

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

extern INT8U KeyPressCount;           //统计连续按键时间,长时间按键则 版本显示

#ifdef DynamicBar
extern INT8U BarDataMode;
#endif
extern INT8U Item;            //当前Bar项  范围:[0,ItemNum-1]  包括0 包括ItemNum-1  共包括ItemNum个取值
extern INT8U ItemNum;         //Bar项数
extern INT8U Where;           //当前反显位置,[0,DispMax-1]  反映反显的Bar在屏幕上的位置

extern INT8U DispMin;         //ItemNum和DispMax中的小者

//当前Bar显示内容指针
//extern INT8U const **DispItem; //项显示内容指针
extern INT8U **DispItem;         //项显示内容指针

#ifdef DynamicBar
extern INT8U ** DynamicBarDispItem; //动态项显示内容指针
#endif
//---------------------------------------------------
//返回当前菜单
#define SelfMenuIndex  FatherIndex[Layer-1]

//----------------------------------------------------
extern void Jump2Menu(INT8U Index,INT8U FlashMode);

//图标层
extern const struct Menu IcoMenu[];
//功能菜单
extern const struct Menu MenuFunc[];
//参数菜单
extern const struct Menu MenuPara[];
//测量菜单
extern const struct Menu MenuMeasure[];
//语言菜单
extern const struct Menu MenuLanguage[];
//设置菜单
extern const struct Menu MenuSetup[];

//Tip,一些提示
extern const struct Menu Tip[];

//图标
extern INT8U const * const icos[];

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

//Tip指针
extern const struct Menu * TipBar;

//--------------------------------------------------------------------
//"进入"显示的位置
#define Enter_PosX   30      
#define Enter_PosY   52

//图标显示的位置
#define ICO_PosX     32      
#define ICO_PosY     16

//图标的尺寸
//#define ICO_XSize    32      
//#define ICO_YSize    32

#define MenuBarPosX     94
#define MenuBarNumPosX  88


//-----------------------
//如下定义从KeyTab中得到
//调整KeyTab时必须更新如下的定义
//否则菜单链接出错!
#define MenuTopIndex        0
#define MenuIndex           5
#define MenuFuncIndex       10
#define MenuParaIndex       15
#define MenuLanguageIndex   20
#define MenuMeasureIndex    25
#define MenuSetupIndex      30

#define MenuDataIndex       35

void BarMenuInit(void);
void BarMenuLeft(void);
void BarMenuRight(void);
void PUSH(void);
void POP(void);

void DispMenuTop(void);
INT8U CheckKey(void);

⌨️ 快捷键说明

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