!!!求无限级菜单算法!!!

[复制链接]
3006|12
 楼主| avocationA 发表于 2008-7-26 13:18 | 显示全部楼层 |阅读模式
dld2 发表于 2008-7-26 13:28 | 显示全部楼层

不明白哦

音乐乐乐 发表于 2008-7-26 13:36 | 显示全部楼层

楼主是说自己做LCD的菜单吧

 想无限级很容易啊,定义好一个菜单结构,比如包括返回页面指针、下一菜单、确认后页面指针等等,然后用链表连起来就可以了
nin124 发表于 2008-7-26 15:32 | 显示全部楼层

无限级无人能做.

yewuyi 发表于 2008-7-26 15:33 | 显示全部楼层

欲练神功,挥刀自宫。。。

 楼主| avocationA 发表于 2008-7-26 16:44 | 显示全部楼层

6位LED就可以了啊

 楼主| avocationA 发表于 2008-7-26 16:45 | 显示全部楼层

现在无从下手 需要3级菜单

 楼主| avocationA 发表于 2008-7-26 16:46 | 显示全部楼层

下面这个看不大懂啊!

C51编写菜单的例子

看看有没有借鉴意义。

/* Module :Kbdmenu.c
Date:------
Usage:P10~P12 use to DownKey,UpKey,CRKey
*/

#include 
#include 

#define SIZE_OF_KEYBD_MENU 20 //菜单长度


uchar KeyFuncIndex=0;
//uchar KeyFuncIndexNew=0;

void (*KeyFuncPtr)(); //按键功能指针

typedef struct
{
uchar KeyStateIndex; //当前状态索引号
uchar KeyDnState; //按下"向下"键时转向的状态索引号
uchar KeyUpState; //按下"向上"键时转向的状态索引号
uchar KeyCrState; //按下"回车"键时转向的状态索引号
void (*CurrentOperate)(); //当前状态应该执行的功能操作
} KbdTabStruct;

KbdTabStruct code KeyTab[SIZE_OF_KEYBD_MENU]=
{
{ 0, 0, 0, 1,(*DummyJob)},//顶层

{ 1, 2, 0, 3,(*DspUserInfo)},//第二层
{ 2, 1, 1, 9,(*DspServiceInfo)}, //第二层

{ 3, 0, 0, 1,(*DspVoltInfo)},//第三层>>DspUserInfo的展开
{ 4, 0, 0, 1,(*DspCurrInfo)},//第三层>>DspUserInfo的展开
{ 5, 0, 0, 1,(*DspFreqInfo)},//第三层>>DspUserInfo的展开
{ 6, 0, 0, 1,(*DspCableInfo)},//第三层>>DspUserInfo的展开
...........
{ 9, 0, 0, 1,(*DspSetVoltLevel)}//第三层>>DspServiceInfo的展

..........
};

void GetKeyInput(void)
{
uchar KeyValue;
KeyValue=P1&0x07; //去掉高5bit
delay(50000);
switch(KeyValue)
{
case 1: //回车键,找出新的菜单状态编号
{
KeyFuncIndex=KeyTab[KeyFuncIndex].KeyCrState;
break;
}
case 2: //向上键,找出新的菜单状态编号
{
KeyFuncIndex=KeyTab[KeyFuncIndex].KeyUpState;
break;
}
case 4: //向下键,找出新的菜单状态编号
{
KeyFuncIndex=KeyTab[KeyFuncIndex].KeyDnState;
break;
}
default: //按键错误的处理
......
break;
}
KeyFuncPtr=KeyTab[KeyFuncIndex].CurrentOperate;
(*KeyFuncPtr)();//执行当前按键的操作
}
//其中KeyTab的设计颇费尽心机
dld2 发表于 2008-7-26 16:56 | 显示全部楼层

呵呵

界面程序,本来就“与众不同”。
 楼主| avocationA 发表于 2008-7-26 17:25 | 显示全部楼层

这次想写好一点!不只怎么下手..啊!!

因为要给别人看的,,
zuoyou 发表于 2008-7-26 18:43 | 显示全部楼层

re

买一个现成的菜单驱动芯片,其与MCU的联接为UART,VERY SIMPLE
Swd21ic 发表于 2008-7-26 18:46 | 显示全部楼层

re

能实现2级菜单的程序..就相当于不限制级..

xwj 发表于 2008-7-26 19:03 | 显示全部楼层

去搜索我的旧贴,想多少级都行

您需要登录后才可以回帖 登录 | 注册

本版积分规则

123

主题

934

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部