标题: 关于51单片机多级菜单的一点点心得 [打印本页]

作者: 二十出头    时间: 2015-6-9 21:53
标题: 关于51单片机多级菜单的一点点心得
    用了4天做了个简单的电子钟。MCU:STC89C52RC,自带字库的12864液晶显示,没用画图功能。前三天都在痛苦的折腾二级菜单,从网上找了大量的资料,大部分都说用数据结构里的树来实现。无奈水平有限,看不懂,也不可能短时间内搞明白什么链表,树。终于在昨天下午想出来怎么用简单的switch case分支实现。
    简单来说就是先确定你有几个界面,比如我的开机后显示时间,是界面0,按菜单键后出来菜单界面,是界面2,3个选项,分别对应界面3,4,5。然后用个大的switch()case语句。我用cur_level定义界面编号,switch(cur_level){}判断在不同界面下执行不同的函数。比如我在显示时间的界面时,cur_level=0;
switch(cur_level){
    case 0:
        key=0;
        key=key_scan();
        if(key==1)//按下菜单键
        {
            main_menu();//执行菜单显示函数,只执行一次
            cur_level=1;//跳到菜单界面
        }
        break;
    case 1:
        key=0;
        key=key_scan();//在菜单界面扫描按键
        switch(key){
            case 1://1为确定键,跳入菜单界面选项一
                chang_time();//执行修改时间的函数
                cur_level=2;//跳到界面2,主要执行修改时间的函数
                break;//12864液晶跳转页面需要清屏,使用时需注意
                         //还有其他细节东西,需要自己根据实际情况进行调节
               ... ...
               ... ...
        }
        break;
}
//简单的举了个例子,不同界面之间就像这样跳转,比什么链表的容易理解多了。当然如果以后学会高端的会不屑这样,但我觉得对新手来说,
能用这种方法解决实际问题也是很大的收获。
这算是技术贴吧,第一次发,写的不好请见谅。

作者: 二十出头    时间: 2015-6-10 09:48
昨天图没传上来,今天补上~
作者: xuwei    时间: 2015-6-12 01:17
二十出头 发表于 2015-6-10 09:48
昨天图没传上来,今天补上~

楼主大师你的经验很值得我学习 期待您的图片,,编辑原来的帖子  或者在回帖框的右侧 点击“高级模式” 可以上图呢。。
作者: 血一    时间: 2015-10-1 22:31
最近也在为多级菜单如何实现而烦恼,求指教啊
作者: lalafly    时间: 2016-3-10 13:11
二十出头 发表于 2015-6-10 09:48
昨天图没传上来,今天补上~

求完整的程序
作者: xiaoquan888    时间: 2017-7-16 01:27
恩。感觉可以用。
作者: yekai_yh    时间: 2018-8-31 12:18
有没有具体项目发上来学习学习
作者: 644490612    时间: 2018-11-1 19:55
有完整程序吗?
作者: starry999    时间: 2018-11-27 11:40
大概能懂,再详细点就更好了
作者: hedongdony    时间: 2018-12-6 14:07
求完整程序 谢谢楼主
作者: yuyi.709    时间: 2020-5-24 13:13
求程序谢谢





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1