资源描述:
《单片机C语言下LCD多级菜单的一种实现方法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、单片机C语言下LCD多级菜单的一种实现方法(转)2012-1-1000:45阅读(1)单片机菜单程序#include#include#defineSIZE_OF_KEYBD_MENU20//菜单长度ucharKeyFuncIndex=0;//ucharKeyFuncIndexNew=0;void(*KeyFuncPtr)();//按键功能指针typedefstruct{ucharKeyStateIndex;//当前状态索引号ucharKeyDnState;//按下"向下"键时转向的状态索引号ucharKeyUpState;//按下"向
2、上"键时转向的状态索引号ucharKeyCrState;//按下"回车"键时转向的状态索引号void(*CurrentOperate)();//当前状态应该执行的功能操作}KbdTabStruct;KbdTabStructcodeKeyTab[SIZE_OF_KEYBD_MENU]={{0,0,0,1,(*DummyJob)},//顶层{1,2,0,3,(*DspUserInfo)},//第二层{2,1,1,9,(*DspServiceInfo)},//第二层{3,0,0,1,(*DspVoltInfo)},//第三层>>DspUse
3、rInfo的展开{4,0,0,1,(*DspCurrInfo)},//第三层>>DspUserInfo的展开{5,0,0,1,(*DspFreqInfo)},//第三层>>DspUserInfo的展开{6,0,0,1,(*DspCableInfo)},//第三层>>DspUserInfo的展开...........{9,0,0,1,(*DspSetVoltLevel)}//第三层>>DspServiceInfo的展开..........};voidGetKeyInput(void){ucharKeyValue;KeyValue=P1&
4、0x07;//去掉高5bitdelay(50000);switch(KeyValue){case1://回车键,找出新的菜单状态编号{KeyFuncIndex=KeyTab[KeyFuncIndex].KeyCrState;break;}case2://向上键,找出新的菜单状态编号{KeyFuncIndex=KeyTab[KeyFuncIndex].KeyUpState;break;}case4://向下键,找出新的菜单状态编号{KeyFuncIndex=KeyTab[KeyFuncIndex].KeyDnState;break;}d
5、efault://按键错误的处理......break;}KeyFuncPtr=KeyTab[KeyFuncIndex].CurrentOperate;(*KeyFuncPtr)();//执行当前按键的操作}//其中KeyTab的设计颇费尽心机