(整理)怎样在点阵屏上绘图 - 基于LCD12864三 下载本文

精品文档

} else {

for (n = 0;n

LOCATE(n+1,1);

PRINT(MenuPoint[DisplayPoint].DisplayString);

if ((DisplayPoint) == UserChoose) {

BOX(1,n*16+1,126,(n+1)*16-2,1,1); }

DisplayPoint +=1;

if ((DisplayPoint) == (MaxItems)) {

DisplayPoint = 0; } } }

//BOX(0,0,127,63,2,2); }

精品文档

精品文档

/************************************************************** * 函数说明:获得键值函数 * **************************************************************/ short GetKeyNum(void) {

short TempKeyNum = 0;

TempKeyNum = F_Key_Scan(); //获取按键值 *P_IOA_Dir = 0x01ff; *P_IOA_Attrib = 0x01ff; *P_IOA_Data = 0x01ff;

return TempKeyNum; }

/************************************************************** * 函数说明:主函数 * **************************************************************/ int main() {

short KeyNum = 0xff;

SystemInitialation(); //系统初始化

ShowMenu(); while(1)

精品文档

精品文档

{

ClearWatchDog(); //喂狗

KeyNum = GetKeyNum(); //获取按键值 /*******************目录操作*********************/

/*************************************** * [ * ----------------------------------- * * [K1] UP( * [K5] Down( * [K2] Esc( * [K6] Enter( * [K3] ***************************************/ if (KeyNum != 0xff) { ShowMenu(); switch(KeyNum) { case UP: UserChoose --; if (UserChoose < 0) { UserChoose = MaxItems-1; 精品文档

按键说明] * 向上) * 向下) * 后退) * 确定) * 返回根目录 *

精品文档

} break; case Esc:

if (MenuPoint[0].ParentMenus != &Null) {

MenuPoint = MenuPoint[0].ParentMenus; UserChoose = 0; DisplayStart = 0; } break; case Down: UserChoose ++; if (UserChoose == MaxItems) { UserChoose = 0; } break; case Enter: if (MenuPoint[UserChoose].Subs != NullSubs) { (*MenuPoint[UserChoose].Subs)(); } else if (MenuPoint[UserChoose].ChildrenMenus != &Null) 精品文档

精品文档

{

MenuPoint = MenuPoint[UserChoose].ChildrenMenus; UserChoose = 0; DisplayStart = 0; } break; case Reset: MenuPoint = MainMenu; UserChoose = 0; DisplayStart = 0; break; } if ((UserChoose < DisplayStart) || (UserChoose > (DisplayStart+3))) { DisplayStart = UserChoose; } CLS ShowMenu();

}

精品文档

精品文档

/*******************目录操作*********************/ } }

过多的废话我就不多说了,大家看了就清楚了哈。

顺便提示下,其实用在串口中的指令系统也是一种菜单,用的好的话,可以用菜单的结构来描述很复杂的指令系统哦。

精品文档