LCD 菜单程序的思路跟源码

来源:本站
导读:目前正在解读《LCD 菜单程序的思路跟源码》的相关信息,《LCD 菜单程序的思路跟源码》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《LCD 菜单程序的思路跟源码》的详细说明。
简介:本文给出LCD 菜单程序的思路跟源码,感兴趣的朋友可以参考下。

LCD 菜单程序的思路:定义一个变量,记录菜单的级别序号,另一个变量记录某一级别下的菜单项序号。这样你可以用一个数组保存你的菜单结构,比如叫 menu_table[NUMS_LEVEL][NUMS_ITEM_PER_LEVEL];然后你在按键处理里面根据按键记录菜单级别及其相应的菜单项序号,进行相应的处理就行了。

unsigned char tempin,tempout,temprun;

unsigned char Key_Value();

unsigned char Change_Value(unsigned char);

void Delay_1(unsigned int m);

void Run_Satus();

char * MainMenuTitle = "主菜单";

const char * MainMenuItems[] = {

"1.室内温度调整",

"2.室外温度调整",

"3.运行时间调整",

"4.ESC 退出",

};

TMenu MainMenu;

void OnSelectMainMenu(int index)

{

if (index < 0 || index >= sizeof(MainMenuItems) / sizeof(char *)) return;

ClearScreen();

switch (index) {

case 0:

TextOut(0, 1, "室内调整开始 ");

tempin=Change_Value(tempin);

TextOut(0, 1, "室内调整完毕");

Delay_1(300000);

break;

case 1:

TextOut(0, 1, "室外调整开始 ");

tempout=Change_Value(tempout);

TextOut(0, 1, "室外调整完毕");

Delay_1(300000);

break;

case 2:

TextOut(0, 1, "运行时间调整开始");

tempout=Change_Value(temprun);

TextOut(0, 1, "运行时间完毕");

Delay_1(300000);

break;

case 3:

break;

}

ClearScreen();

}

UINT OnMainMenuOk(void * arg)

{

TMenu * pMenu = (TMenu *)arg;

if (pMenu) OnSelectMainMenu(pMenu->Current);

return 0;

}

UINT OnMainMenuCancel(void * arg)

{

TMenu * pMenu = (TMenu *)arg;

if (pMenu) {

CloseMenu(pMenu);

}

return 0;

}

UINT OnMainMenuOtherKey(void * arg)

{

TMenu * pMenu = (TMenu *)arg;

char key;

if (pMenu) {

key = pMenu->EventArg;

OnSelectMainMenu(key - '1');

DrawMenu(pMenu);

}

return 0;

}

void InitMenu()

{

InitializeMenu(&MainMenu, MainMenuTitle, MainMenuItems, sizeof

(MainMenuItems) / sizeof(char *));

MainMenu.OnOk = OnMainMenuOk;

MainMenu.OnOtherKey = OnMainMenuOtherKey;

MainMenu.OnCancel = OnMainMenuCancel;

}

unsigned char Key_Value()

{

unsigned char KeyTemp;

KeyTemp=GetKey();

switch(KeyTemp)

{ case(VK_ESCAPE):

return(0);

break;

case(VK_ENTER):

return(1);

break;

case(VK_UP):

return(2);

break;

case(VK_DOWN):

return(3);

break;

}

}

unsigned char Change_Value(unsigned char temp2)

{ unsigned char temp3;

temp3=temp2;

while((Key_Value()!=0)&&(Key_Value()!=1))

{

if(Key_Value()==2)temp3++;

else if(Key_Value()==3)temp3--;

ClearLine(1);

TextOut(0, 1, "调整状态%d", temp3);

}

if(Key_Value()==1)return(temp3);

else if(Key_Value()==0) return(temp2);

}

void Delay_1(unsigned int m)

{while(m--);

}

void Run_Satus()

{

ClearScreen();

TextOut(0, 0, "室内温度 %d",tempin);

TextOut(0, 1, "室外温度 %d",tempout);

TextOut(0, 2, "运行时间 %d",temprun);

TextOut(0, 3, "ENTER 进入调整");

}

void tmain()

{

tempin=30;

tempout=30;

temprun=30;

unsigned char key;

InitMenu();

while(1)

{

Run_Satus();

key=GetKey();

if(key==VK_ENTER)ShowMenu(&MainMenu);

}

}

提醒:《LCD 菜单程序的思路跟源码》最后刷新时间 2024-03-14 01:01:53,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《LCD 菜单程序的思路跟源码》该内容的真实性请自行鉴别。