搜索
bottom↓
回复: 95

发一个原创的多级菜单例子

[复制链接]

出0入0汤圆

发表于 2007-9-6 23:25:15 | 显示全部楼层 |阅读模式
这是我自己原来用51写的一个例子, 使用的是128X64的点阵LCD. 驱动IC为T6963.
一个多级菜单框架共享出来大家一起交流交流.

点击此处下载armok01170107.rar
头像被屏蔽

出0入0汤圆

发表于 2007-9-7 08:05:42 | 显示全部楼层
谢谢共享!

出0入0汤圆

发表于 2007-9-7 08:09:05 | 显示全部楼层
好野

出0入0汤圆

发表于 2007-9-7 08:17:52 | 显示全部楼层
谢谢,好好看看

出0入0汤圆

发表于 2007-9-7 08:42:19 | 显示全部楼层
谢谢

出0入0汤圆

发表于 2007-9-7 11:12:49 | 显示全部楼层
楼主的菜单和字模工具做得都很不错。
感谢楼主的共享精神。
同时,楼主的字模工具应该是用C++ builder做的吧,不知我能不能学习一下它的代码。
谢谢了。

出0入0汤圆

 楼主| 发表于 2007-9-7 13:24:41 | 显示全部楼层
是BCB做的. 这只是专用来给这个程序取字模的. 代码很简单, 如果有需要的也可以共享给大家.

出0入0汤圆

发表于 2007-9-7 13:55:54 | 显示全部楼层
楼主的取模方式和我想的是一样的,而且我还测试了这种取模方式不同的定位方式(Keil下),楼主的定位方法我测出来是11个指令周期,最快的是8个周期的,如果大家有兴趣,我可以下周一把测试结果传上来。就是不太清楚怎样编写字模软件,今天打开楼主的字模软件,眼前一亮,这就是我想要的取模软件!

出0入0汤圆

 楼主| 发表于 2007-9-7 19:46:12 | 显示全部楼层
取模软件代码. 给需要的人.
点击此处下载armok01170220.rar

出0入0汤圆

发表于 2007-9-10 09:02:42 | 显示全部楼层
这是我对汉字点阵定位的测试程序,分别测试各种写法的速度,编译环境为Keil C。
//data 是把指针定义在data区也指向data区的,也就是下面的写法。
//后直接写数字的是去掉data关键字,用通用指针的情况
后面的数字表示运行的指令周期数,越小越好。
希望这个测试结果对大家有所帮助。
同时谢谢楼主提供的资料,很需要这些东西。
if(*((short*)a[0].head) == *((short*)p)) 这种判断的方法是最快的。


typedef struct
{
char head[2];
char array[45];
} HZK;
code HZK a[]=
{
  {"我",
  {0x11,0x34,}},
  {"们",
  {0}},

};

short data * data pHead,* data pZi;
char data * data p;
p = "我";
pZi = (short*)p;
pHead = (short*)a[0].head;
if(*pHead == *pZi)  //data 30    //84
   P2=0;

if(*((short*)a[0].head) == *((short*)"我"))//data 27   //24
   P1=0;

if(*((short*)a[0].head) == *((short*)p)) //data 8  //42
   P1=0;

if(strncmp(a[0].head,p,2)==0)   //data 103
     P3=0;; //103

if(memcmp(a[0].head,p,2)==0)          //data 70
      P3=0; //70

if(a[0].head[0]==p[0]&&a[0].head[1]==p[1]) //data 11   //62
  P2=0;

出0入0汤圆

发表于 2007-9-11 10:26:05 | 显示全部楼层
ganxie

出0入0汤圆

发表于 2007-9-12 00:49:51 | 显示全部楼层
谢谢,好好学学

出0入0汤圆

发表于 2007-9-12 11:05:46 | 显示全部楼层
顶!

出0入0汤圆

发表于 2007-9-12 11:23:04 | 显示全部楼层
框架还不错.但是菜单结构存在问题,液晶的坐标不要绑定在内部,这个需要要动态确定的.
比如:192X64 或128X64 显示16X16汉字最大4行.标题栏占了1行,因此只有3行.
当1个父亲有8个儿子(任意)
第一页    第二页    第三页 ......................
1.大儿子  1.2儿子  1.3儿子
2.2儿子   2.3儿子  2.4儿子
3.3儿子   3.4儿子  3.4儿子
UP/DOWN键,只能在当页中循环实在可惜,应该 0-7,8个儿子都能访问到.0-7中反复循环.不过楼主的框架不错,改一下就OK了.这个是标准操作习惯,我看过多个工控表,60%是这样的,楼主的这种我看见过2款是手工换页方法的.
还有1个问题,想讨论下,看见论坛中的另一个"占内存...菜单" 也存在
菜单的深度和返回问题.
功能
     --- 手动
         ---- 参数设置(参数表)
         ---- 其它
     ----自动
         ---- 参数设置(参数表)
         ---- 其它
参数表都是同一个,楼主的代码可以可以返回上一层,也就是从参数返回设置中可以正确返回到手动/自动页面.
但是再返回的话,就是做死了,肯定是返回到 "功能" 一层的菜单群组中了.
也就是传统的父-子-孙.
(为什么不 手动/自动/参数 这么排,有特殊原因的,比如使用触摸屏,类文本,实现快速切换,一级一级的退出一级一级进入太罗嗦了)

但是要不要考虑有两个父亲的情况呢?有点惊讶,就比如: 工厂/用户.
工厂会多一些主设置项.我的方法类似子程序的调用,建立一个菜单栈,谈到这里想大家都明白了吧.
这个问题是面向通用结构才讨论的.
如果简单化,楼主的菜单方法不错,"占内存...菜单"它用类似表格化建立(父 兄 妹,子)方向,
楼主的用程序来实现切换 ,我觉得楼主的代码在维护上更为方便(还要添些代码),因为添加和删除子条项,只要管理结构变量即可.
而修改表格的方法显示太"笨"了点(虽然也结构变量中改),当然程序编写好了,也许一辈子也不会去动弹它,所以基于这个考虑两个方法都是可以的.

出0入0汤圆

 楼主| 发表于 2007-9-13 01:32:46 | 显示全部楼层
谢谢 【13楼】 Qhjh  !

我这个工程也只是一个简单的实现框架, 当时工程是帮别人建立一个大概的框架的, 具体很多细节是没有考虑太多.
对于多级深度返回我有另外工程实现过, 其实多根结点也很容易实现.
如果在PC机上写我是使用另外的算法, 因为PC上可能内存大(堆栈深度可以做得很深) , 但在单片机上面为了节省RAM用量,
只能折衷,用CODE空间换RAM空间. 所以不能做到动态实现添加,删除等过于复杂的操作, 至于液晶的坐标动态确定以兼容不内
点阵尺寸,这个问题在代码中稍微修改就可以实现.

出10入95汤圆

发表于 2007-9-20 14:52:11 | 显示全部楼层
好料!看了一阵,看懂了一些,还没有透,感觉很好!从来没有玩过菜单,谢谢搂主的共享!

出0入0汤圆

发表于 2007-11-26 23:07:59 | 显示全部楼层
谢谢,值得研究

出0入0汤圆

发表于 2007-11-27 21:16:35 | 显示全部楼层
好东西!!

出0入0汤圆

发表于 2007-11-27 21:39:00 | 显示全部楼层
学习楼主的共享精神

出0入0汤圆

发表于 2007-12-28 15:17:48 | 显示全部楼层
太感谢楼主了,我正在研究

出0入0汤圆

发表于 2007-12-28 16:31:10 | 显示全部楼层
放个书签

出0入0汤圆

发表于 2007-12-28 17:58:58 | 显示全部楼层
大家觉不觉得8*16的字模太大了?很多时候为了在一界面显示所有的测试参数,字模不能取这么大.
不知有没有哪位高手就T6963写过任意位置,任意规格字模的显示函数.当然,这个函数不能太慢了.
单个打点太慢了.

出0入0汤圆

发表于 2007-12-29 09:48:59 | 显示全部楼层
楼主你这个是用什么软件编译的,我想移植到PIC好移植吗?

出0入0汤圆

发表于 2008-2-20 00:33:02 | 显示全部楼层
很好!

出0入0汤圆

发表于 2008-2-20 09:10:12 | 显示全部楼层
楼主:我有一个疑问.我看了你用BCB写的取模软件,目前里面有三种字体大小可供选择,一般我们显示数字或字母时可能不会用16*16或12*12点陈,因为这个要对来说有点大,一般会选择8*8或者8*16,那么我想问的问题是:
1,如果我想做8*16的字库,那么我是不是也应该有一个像HZK12一样的文件?
2,你文件里的HZK12,HZK16,HZK24是从哪里来的?我怎么才能得到?
谢谢楼主共享上面的资料

出0入50汤圆

发表于 2008-9-2 18:08:56 | 显示全部楼层
谢谢楼主共享!顶

出0入0汤圆

发表于 2008-9-5 08:43:38 | 显示全部楼层
mark

出0入0汤圆

发表于 2008-9-9 10:43:06 | 显示全部楼层
不错,记号,

出1070入962汤圆

发表于 2009-3-10 10:13:23 | 显示全部楼层
发广告,嘿嘿!

我现在需要一个射频激励电路,来驱动末级线性功放,要求输入0dbm,输出17dbm,工作频率300~450Mhz,信号带宽8Mhz。

出0入0汤圆

发表于 2009-3-10 17:37:22 | 显示全部楼层
学习!

出0入0汤圆

发表于 2009-3-30 17:39:11 | 显示全部楼层
学习,谢谢

出0入0汤圆

发表于 2009-4-8 11:39:08 | 显示全部楼层
不错,记号,

出0入18汤圆

发表于 2009-4-22 16:23:50 | 显示全部楼层
拿来学习学习!!!!!!!!!!!!1

出0入0汤圆

发表于 2009-12-12 09:56:17 | 显示全部楼层
好东西,谢谢

出0入0汤圆

发表于 2009-12-12 12:01:26 | 显示全部楼层
谢谢

出0入0汤圆

发表于 2009-12-12 19:07:32 | 显示全部楼层
好东西!!!

出0入0汤圆

发表于 2010-1-27 16:33:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-27 20:17:46 | 显示全部楼层
不错,标记一下

出0入0汤圆

发表于 2010-1-28 16:12:42 | 显示全部楼层
http://www.ourdev.cn/bbs/bbs_content_all.jsp?bbs_sn=1054447
这个菜单写得好,也易管理

出0入0汤圆

发表于 2010-2-17 11:30:14 | 显示全部楼层
好菜单

出0入0汤圆

发表于 2010-3-5 22:46:59 | 显示全部楼层
不错,标记一下

出0入0汤圆

发表于 2010-3-18 14:31:26 | 显示全部楼层
谢谢了

出0入0汤圆

发表于 2010-3-18 16:15:27 | 显示全部楼层
不错

出0入0汤圆

发表于 2010-3-20 12:14:22 | 显示全部楼层
有意义!顶

出0入0汤圆

发表于 2010-3-20 13:55:13 | 显示全部楼层
MARK,, DING...

出0入0汤圆

发表于 2010-3-20 14:10:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-23 08:50:18 | 显示全部楼层
强~~~~~~

出0入0汤圆

发表于 2010-3-23 09:26:21 | 显示全部楼层
回复【楼主位】cicnx
-----------------------------------------------------------------------

dddddddddddddddddddd

出0入0汤圆

发表于 2010-3-23 09:52:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-24 21:03:39 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-24 21:42:10 | 显示全部楼层
回复【楼主位】cicnx
-----------------------------------------------------------------------

dddddddddd

出0入0汤圆

发表于 2010-3-24 22:15:22 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-27 15:23:24 | 显示全部楼层
不错!!!!!!!

出0入0汤圆

发表于 2010-4-23 11:13:01 | 显示全部楼层
有没有简单些的菜单程序

出0入0汤圆

发表于 2010-4-23 12:34:53 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-17 20:28:44 | 显示全部楼层
请问楼主 我按照你给的工程自己写了一个,但是为什么在ICCAVR编译器下编译就会提示结构体声明无效呢 ,请楼主帮忙解决,最近做比赛急需一个菜单,谢谢

出0入0汤圆

发表于 2010-5-17 21:08:21 | 显示全部楼层
D:\Program Files\icc\bin\imakew -f Menu.mak
    iccavr -c -ID:\PROGRA~1\icc\include\ -e -DATMEGA -DATMega16  -l -g -Mavr_enhanced  E:\校内赛\菜单测试\智能家居菜单测试\main.c
!E E:\校内赛\菜单测试\智能家居菜单测试/Menu.c(7): invalid struct field declarations
!E E:\校内赛\菜单测试\智能家居菜单测试/Menu.c(7): syntax error; found `uchar' expecting `}'
!E E:\校内赛\菜单测试\智能家居菜单测试/Menu.c(7): skipping `uchar' `strChinese' `[' `20' `]'
!E E:\校内赛\菜单测试\智能家居菜单测试/Menu.c(7): empty declaration
!E E:\校内赛\菜单测试\智能家居菜单测试/Menu.c(8): syntax error; found `Mode' expecting `;'
!E E:\校内赛\菜单测试\智能家居菜单测试/Menu.c(9): syntax error; found `Address' expecting `;'
!E E:\校内赛\菜单测试\智能家居菜单测试/Menu.c(10): syntax error; found `bIsFocus' expecting `;'
!E E:\校内赛\菜单测试\智能家居菜单测试/Menu.c(11): syntax error; found `subMenuNum' expecting `;'

出0入0汤圆

发表于 2010-5-17 23:06:56 | 显示全部楼层
好贴,mark

出0入0汤圆

发表于 2010-5-17 23:53:24 | 显示全部楼层
太感谢楼主了,mark,ding一下.

出0入0汤圆

发表于 2011-2-8 12:27:22 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-8 16:10:37 | 显示全部楼层
感谢分享 研究一下

出0入0汤圆

发表于 2011-2-8 17:15:43 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-8 12:21:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-8 20:21:23 | 显示全部楼层
mark yixia

出0入0汤圆

发表于 2011-3-24 02:02:37 | 显示全部楼层
看看!

出0入0汤圆

发表于 2011-4-29 13:36:20 | 显示全部楼层
太感谢了~~!!!

出0入0汤圆

发表于 2011-6-24 19:30:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-24 21:43:20 | 显示全部楼层
标记!!!!!

出0入0汤圆

发表于 2011-6-26 17:39:15 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-27 17:56:14 | 显示全部楼层
多级菜单 标记了!谢谢

出0入0汤圆

发表于 2011-6-27 20:13:50 | 显示全部楼层
差点忘记标记了

出0入0汤圆

发表于 2011-7-6 16:04:53 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-14 13:07:43 | 显示全部楼层
目前正好有在产品上加上液晶和多级菜单功能的想法。谢谢楼主的例程,研究一下。

出0入0汤圆

发表于 2011-8-6 15:48:41 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2011-8-7 00:03:26 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-8-7 09:54:27 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-7 20:07:16 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-16 14:33:24 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-8-16 16:04:15 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-16 17:17:10 | 显示全部楼层
好贴,mark

出0入0汤圆

发表于 2011-11-11 15:56:43 | 显示全部楼层
jihao

出0入0汤圆

发表于 2011-12-7 10:31:11 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-7 11:34:43 | 显示全部楼层
3q  分享,好东西。。。顶

出0入0汤圆

发表于 2011-12-9 16:29:47 | 显示全部楼层
谢谢共享!

出0入0汤圆

发表于 2011-12-9 17:34:30 | 显示全部楼层
不错!~

出0入0汤圆

发表于 2011-12-10 17:08:40 | 显示全部楼层
谢谢共享

出0入0汤圆

发表于 2011-12-11 20:36:38 | 显示全部楼层
谢谢共享!

出0入0汤圆

发表于 2012-5-12 08:29:04 | 显示全部楼层
认真学习

出0入0汤圆

发表于 2012-5-20 09:01:02 | 显示全部楼层
值得学习,mark一下。

出0入0汤圆

发表于 2012-5-20 09:32:13 | 显示全部楼层
学习 MARK

出0入0汤圆

发表于 2012-5-20 13:00:30 | 显示全部楼层
markmarkmark

出0入0汤圆

发表于 2012-5-26 16:18:59 | 显示全部楼层
还没看到啊                       
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-7 17:44

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表