高分!单片机系统菜单开发的问题。

YoziDream 2003-04-27 06:18:36
小弟正在为一单片机系统开发一个菜单,在狭窄的LCD上显示菜单,只有6个按键,要实现一个象手机菜单风格的菜单。我的困难在于用这有限的按键,实现数字输入等系统设置。盼望各位老大指点迷津!
...全文
155 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
YoziDream 2003-04-30
  • 打赏
  • 举报
回复
谢谢了
lambo 2003-04-29
  • 打赏
  • 举报
回复
更正:在MenuSelected中判断MenuID的级别。
lambo 2003-04-29
  • 打赏
  • 举报
回复
给每级菜单分配一定范围的MenuID值,如一级菜单的MenuID: 0 <= MenuID <= 254,二级菜单: 255 <= MenuID <= 9000等,然后在OnMenuXYSelected中先判断MenuID的级别即可。
FlashMenu(int MenuID)
{
char MenuString;
MenuString = GetMenuString(MenuID);
WriteLCD(MenuString)
}
YoziDream 2003-04-28
  • 打赏
  • 举报
回复
lambo不好意思!刚才写的时候没有看到你的回复。
按照你的思路,菜单如何分级表示呢?
还有,
FlashMenu(MenuID);时,我是不是还要根据当前的MenuID刷新显示,这意味着我又要为每一个菜单再写一个刷新显示的程序?
好像键盘解释是不能放在一个程序里?

非常感谢!
fun_ner 2003-04-28
  • 打赏
  • 举报
回复
一个相当于menu的键
一个cancel键(返回上级菜单的)
一个确认键(ok键)
一个“+”键;一个“-”键;用于数据操作,即对当前值加减操作。操作方法要看你的数据的情况了
(可以按照你的系统当前状态,把数据载如屏幕,供用户“+”“-”操作)
还有个键自己看哪实现起来困难就决定用哪吧
YoziDream 2003-04-28
  • 打赏
  • 举报
回复
我想我的问题表述得还不够清楚:
目标:在单片机控制的20×2的LCD上显示一个字符型的菜单
键盘设计:ENTER(进入菜单功能)、RETURN(返回上一级菜单)、COM_UP(同级中上一个菜单)、
COM_DOWN(同级中下个菜单)、DATA_UP(命令参数+)、DATA_DOWN(命令参数-)
关于菜单:
1、有需要数据作为系统参数的菜单
2、按菜单上下键时只需要刷新lcd表示当前所在的菜单,按enter键调用菜单功能
疑问:
1、能用一个程序统一处理键盘命令解释吗?(不同的菜单需要对不同的参数加减)
2、如果用一个数据结构表示一个菜单项,菜单函数怎么分别处理刷新显示和菜单功能。(因为有时只是刷新,有时是执行他的功能)

实在是麻烦各位了
lambo 2003-04-28
  • 打赏
  • 举报
回复
思路:
while((Key = Wait4NextKey())!= CANCEL_KEY)
{
//Key = Wait4NextKey(); 等待下一按键
switch(Key)
{
case: UP_KEY
MenuID = MenuID + 1;
FlashMenu(MenuID);break;
case: DOWN_KEY
MenuID = MenuID - 1;
FlashMenu(MenuID);break;
case: OK_KEY
MenuSelected(MenuID);
}
....
}
return 0;


MenuSelected()
{
switch(MenuID)
{
case: 0
OnMenuXXSelected();break;
case: 1
OnMenuYYSelected();break;
...
}
return 0
}
OnMenuXXSelected()
{

while((Key = Wait4NextKey()) != CANCEL_KEY)
{ //等待下一个按键
switch(Key)
{
case: UP_KEY
IncreaseValue(v_R);
case: DOWN_KEY
DecreaseValue(v_R);
...
}
}
return 0
}
YoziDream 2003-04-28
  • 打赏
  • 举报
回复
to fun_ner:
"+","-"在不同的状态下应该有不同的行为,
1、菜单的选择
2、参数值的改变
我该怎么做呢?
YoziDream 2003-04-28
  • 打赏
  • 举报
回复
to lambo:
可以简述一下Windows菜单事件驱动是怎样的吗?不好意思,太菜了!
lambo 2003-04-28
  • 打赏
  • 举报
回复
用一个变量:MenuID 来跟踪 菜单,当用户选择菜单时,可根据MenuID 值来决定将采取的动作。可仿照Windows的菜单事件驱动处理。
YoziDream 2003-04-28
  • 打赏
  • 举报
回复
其实也就是——手机也就那么几个键,它是怎么把这么复杂的功能设置、操作做出来的,而且看起来还那么简洁!
YoziDream 2003-04-28
  • 打赏
  • 举报
回复
感谢各位大哥,
键盘大致就像fun_ner说的那样,我的问题就是上下键有时用来菜单选择,有时用来调整参数,这样我在实现起来感觉不容易!
能不能给一个代码编写的思路呢?
yuanfang 2003-04-28
  • 打赏
  • 举报
回复
支持,参照手机就OK
tms320dsp 2003-04-28
  • 打赏
  • 举报
回复
参照NOKIA手机的EASY-KEY功能。
wuyisq 2003-04-28
  • 打赏
  • 举报
回复
如果需要设置的功能实在是太多,你也可能使用组合键。一般情况下, 按上面那位老兄说的就可以了。
YoziDream 2003-04-27
  • 打赏
  • 举报
回复
好急呀!

27,372

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧