搜索
bottom↓
回复: 593

分享一个按键液晶多级菜单设计方法,工控行业中沿用多年,屡试不爽,附带本人一个调试通过

  [复制链接]

出0入0汤圆

发表于 2010-4-27 17:03:56 | 显示全部楼层 |阅读模式
typedef struct
{
 uchar  KeyStateIndex ;   / / 当前状态索引号
 uchar  KeyDnState ;   / / 按下“向下”键时转向的状态索引号
 uchar  KeyUpState ;   / / 按下“向上”键时转向的状态索引号
 uchar  KeyCrState ;   / / 按下“回车”键时转向的状态索引号
 uchar  KeyBackState ;   / / 按下“退回”键时转向的状态索引号
 void   (*CurrentOperate)( ) ;   / / 当前状态应该执行的功能操作
}  KbdTabSt ruct ;
# define SIZE - OF KEYBD - MENU 55   / / 菜单总长度
KbdTabSt ruct code KeyTab[ SIZE - OF - KEYBD - MENU ] =
{
 {0 ,0 ,0 ,1 ,0 , MainJob1 } ,
 {1 ,7 ,2 ,8 ,0 , Dsp Point} ,   / / 第一层
 {2 ,1 ,3 ,8 ,0 , DspCurve},   / / 第一层
 {3 ,2 ,4 ,36 ,0 ,Dsp Kout} ,   / / 第一层
 {4 ,3 ,5 ,50 ,0 , DisCloseDown } ,   / / 第一层


 {5 ,4 ,6 ,8 ,0 ,  ModifyPoint} ,   / / 第一层
 {6 ,5 ,7 ,52 ,0 , SetCloseDown } ,   / / 第一层
 {7 ,6 ,1 ,0 ,0 , Cancel} ,   / / 第一层
 …
 …
 {52 ,53 ,53 ,0 ,1 ,  OkSetCloseDown1} ,
 {53 ,52 ,52 ,0 ,1 , OkSetCloseDown2} ,
 {54 ,0 ,0 ,0 ,0 , Disable} ,
  …
  …
} ;
 void Get Keylnput (void)
{
 switch ( status &0xf0)
  {
  case 0xe0 :/ / 回车键,找出新的菜单状态编号
   …
        KeyFuncIndex = KeyTab[ KeyFuncIndex ] . KeyCrState ;
   …
   break ;
  case 0xb0 :/ / 向下键,找出新的菜单状态编号
   …
    KeyFuncIndex = KeyTab [ KeyFuncIndex ] . KeyDn2State ;
   …
  break ;
   case 0xd0 :/ / 向上键,找出新的菜单状态编号


   …
    KeyFuncIndex = KeyTab [ KeyFuncIndex ] . KeyUp2State ;
   …
   break ;
  case 0x70 :/ / 回退键,找出新的菜单状态编号
   …
    KeyFuncIndex = KeyTab [ KeyFuncIndex ] . KeyBack2State ;
   …
   break ;
  case 0 ;
    return ;   / / 错误的处理
    break ;
   }
  KeyFuncPt r = KeyTab[ KeyFuncIndex ] . CurrentOperate ;
  ( * KeyFuncPt r) () ;   / / 执行当前按键的操作
}


以上是框架结构,下面是应用此方法的应用。
平台,AT91RM9200,LINUX2.6.13,arm-linux-gcc3.3.2


按键接线图 (原文件名:按键接线图.jpg)


液晶接线图 (原文件名:液晶接线图.jpg)

按键驱动程序ourdev_549702.rar(文件大小:10K) (原文件名:keyboard.rar)
320*240液晶驱动程序,RA8835控制器(完全兼容SED1335)ourdev_549703.rar(文件大小:10K) (原文件名:LCD320_240.rar)
液晶应用程序ourdev_549718.rar(文件大小:36K) (原文件名:ui.rar)


OURDEV让我成长了不少,所以,以后有好东西一定会和大家分享。

顺便借此机会向阿莫致歉,曾经发帖发了几句牢骚,没有恶意,都是年轻惹的祸,请见谅。

第一次在OURDEV上发技术性的帖子,不知道这样够不够详细,如有疑问,请指出,定补充

阿莫论坛20周年了!感谢大家的支持与爱护!!

阿莫论坛才是最爱国的,关心国家的经济、社会的发展、担心国家被别国牵连卷入战争、知道珍惜来之不易的和平发展,知道师夷之长,关注世界的先进文化与技术,也探讨中国文化的博大精深,也懂得警惕民粹主义的祸国殃民等等等等,无不是爱国忧民的表现。(坛友:tianxian)

出0入0汤圆

 楼主| 发表于 2010-4-27 17:24:47 | 显示全部楼层
沙发自己坐了

出0入0汤圆

发表于 2010-4-27 17:25:58 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-27 17:26:23 | 显示全部楼层
我也有几个这样的屏 有空去试试

出0入0汤圆

发表于 2010-4-27 17:30:42 | 显示全部楼层
好资料。顶。

出0入0汤圆

发表于 2010-4-27 17:54:36 | 显示全部楼层
多谢。

出0入0汤圆

发表于 2010-4-27 18:08:10 | 显示全部楼层
mark,thanks.

出0入0汤圆

发表于 2010-4-27 18:10:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-27 18:17:04 | 显示全部楼层
学习了

出0入0汤圆

发表于 2010-4-27 18:29:33 | 显示全部楼层
支持,顶楼主。

出0入0汤圆

发表于 2010-4-27 19:06:37 | 显示全部楼层
支持

出0入0汤圆

发表于 2010-4-27 19:08:25 | 显示全部楼层
哈哈,这种方法,早就有人在这里发过了!

出0入264汤圆

发表于 2010-4-27 19:20:58 | 显示全部楼层
谢谢。

出0入0汤圆

发表于 2010-4-27 19:42:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-27 19:47:59 | 显示全部楼层
mark

出0入4汤圆

发表于 2010-4-27 20:13:28 | 显示全部楼层
make

出0入0汤圆

发表于 2010-4-27 20:15:08 | 显示全部楼层
先mark, 再谢楼主

出0入0汤圆

发表于 2010-4-27 20:20:22 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-27 20:32:57 | 显示全部楼层
Good

出0入0汤圆

发表于 2010-4-27 20:50:53 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-27 20:51:41 | 显示全部楼层
好人

出0入0汤圆

发表于 2010-4-27 22:53:25 | 显示全部楼层
记号

出0入0汤圆

发表于 2010-4-27 23:16:42 | 显示全部楼层
收藏了,肯定能用到!

出0入0汤圆

发表于 2010-4-27 23:24:09 | 显示全部楼层
谢谢LZ

出0入0汤圆

发表于 2010-4-27 23:29:30 | 显示全部楼层
mark

出0入0汤圆

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

出0入0汤圆

发表于 2010-4-28 00:43:49 | 显示全部楼层
谢楼主分享

出0入0汤圆

 楼主| 发表于 2010-4-28 10:33:09 | 显示全部楼层
刚刚看到有人问液晶菜单的设计方法,怎么没有参考我这个呢,挺好用,自己顶一个

出0入0汤圆

发表于 2010-4-28 10:46:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-28 14:36:01 | 显示全部楼层
E早就用过了,还可以。。就是有变化的话,改动比较大啊。。

出0入0汤圆

发表于 2010-4-28 18:49:00 | 显示全部楼层
收下了,谢谢~~

出0入20汤圆

发表于 2010-4-28 19:35:39 | 显示全部楼层
支持一下

出0入0汤圆

发表于 2010-4-28 21:40:09 | 显示全部楼层
支持一下

出0入0汤圆

发表于 2010-4-29 01:00:14 | 显示全部楼层
能解释一下自动对比度调节的原理吗?

出0入0汤圆

发表于 2010-4-29 08:10:16 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-29 08:26:42 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-29 08:27:45 | 显示全部楼层
Mark

出0入0汤圆

发表于 2010-4-29 08:59:12 | 显示全部楼层
hao

出0入0汤圆

发表于 2010-4-29 08:59:35 | 显示全部楼层
Mark

出0入0汤圆

发表于 2010-4-29 10:25:44 | 显示全部楼层
支持下

出0入0汤圆

发表于 2010-5-1 00:39:24 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-5-1 00:50:56 | 显示全部楼层
好野。收藏咯。

出0入0汤圆

发表于 2010-5-1 00:57:43 | 显示全部楼层
做个记号收藏

出0入0汤圆

发表于 2010-5-1 11:01:35 | 显示全部楼层
顶一下,原来楼主也是做电表的

出0入0汤圆

发表于 2010-5-1 14:31:30 | 显示全部楼层
先mark, 再谢楼主

出0入0汤圆

发表于 2010-5-1 14:58:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-1 17:57:03 | 显示全部楼层
标记

出0入0汤圆

发表于 2010-5-1 18:11:30 | 显示全部楼层
up~~

欢迎此类行业技术贴,很多行业,即使是很简单的问题,也有不少在闭门造车

出0入0汤圆

发表于 2010-5-1 18:59:26 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-5-1 19:26:24 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-5-1 21:58:22 | 显示全部楼层
大家一起讨论一下啊

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


这样的话,改动一个状态那么全部状态索引号都要改动了

出0入0汤圆

发表于 2010-5-1 22:11:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-1 22:57:51 | 显示全部楼层
先mark, 再谢楼主

出0入0汤圆

发表于 2010-5-1 23:53:01 | 显示全部楼层
谢谢

出0入0汤圆

 楼主| 发表于 2010-5-4 09:20:56 | 显示全部楼层
回复【51楼】cyr_hongfeng
-----------------------------------------------------------------------

并不是所有索引号都要改,只要添加索引页,并修改此索引号的上级索引号,当需删除某索引页的时候,只需将上级索引页对应按键索引号指向自身即可。

详情可以参照我的附件应用。

出0入0汤圆

发表于 2010-5-5 12:01:25 | 显示全部楼层
楼主还能把实现的 LCD图片 放上来看看啊?


      楼主还能把实现的 LCD图片 放上来看看啊?


            楼主还能把实现的 LCD图片 放上来看看啊?

出0入0汤圆

 楼主| 发表于 2010-5-7 11:50:36 | 显示全部楼层
回复【56楼】ljt8015
-----------------------------------------------------------------------

等等,我吃过饭用手机拍几张,让大家看看~~~~

出0入0汤圆

 楼主| 发表于 2010-5-7 12:22:21 | 显示全部楼层
上几张效果图,手机拍的,不是很清楚,而且液晶隔着产品外壳。


(原文件名:照片-0001.jpg)


(原文件名:照片-0002.jpg)


(原文件名:照片-0004.jpg)


(原文件名:照片-0005.jpg)

出0入0汤圆

发表于 2010-5-7 13:28:18 | 显示全部楼层
谢谢楼主共享。

出0入0汤圆

发表于 2010-5-7 14:09:52 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-5-7 14:23:40 | 显示全部楼层
这个要mark之。。。。。

出0入0汤圆

发表于 2010-5-7 15:37:19 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-7 15:51:03 | 显示全部楼层
赞一个!好样的.LZ!

出0入0汤圆

 楼主| 发表于 2010-5-9 11:07:35 | 显示全部楼层
顶一下

出0入50汤圆

发表于 2010-5-21 10:42:09 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-21 10:44:52 | 显示全部楼层
mark

出5入8汤圆

发表于 2010-5-21 16:16:01 | 显示全部楼层
好贴啊,这个我肯定要学学

出0入0汤圆

发表于 2010-5-21 21:59:51 | 显示全部楼层
谢谢,有时间学习下

出0入0汤圆

发表于 2010-5-22 00:29:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-12 12:31:43 | 显示全部楼层
强烈MARK

出0入0汤圆

发表于 2010-6-12 12:41:58 | 显示全部楼层
收藏

出0入31汤圆

发表于 2010-6-12 12:55:55 | 显示全部楼层
搜藏

出0入31汤圆

发表于 2010-6-12 12:56:05 | 显示全部楼层
搜藏

出0入0汤圆

发表于 2010-6-12 14:07:02 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-7-12 10:46:38 | 显示全部楼层
收藏////

出20入0汤圆

发表于 2010-7-12 10:59:49 | 显示全部楼层
又一个电力行业的

出0入17汤圆

发表于 2010-7-12 14:12:57 | 显示全部楼层
收藏了,谢谢!

出0入0汤圆

发表于 2010-7-15 12:01:34 | 显示全部楼层
楼主伟大啊

出0入0汤圆

发表于 2010-7-15 14:52:41 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-7-16 13:25:17 | 显示全部楼层
收藏

出0入0汤圆

发表于 2010-8-11 15:55:29 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-12 15:42:31 | 显示全部楼层
我看了,这个是个论文,原文如下:


(原文件名:单片机C语言下LCD多级菜单的一种实现方法_页面_1.jpg)

(原文件名:单片机C语言下LCD多级菜单的一种实现方法_页面_2.jpg)


(原文件名:单片机C语言下LCD多级菜单的一种实现方法_页面_3.jpg)

出0入0汤圆

发表于 2010-8-12 15:44:08 | 显示全部楼层
这个是论文源文件

单片机C语言下LCD多级菜单的一种实现方法.pdf

点击此处下载 ourdev_574579.pdf(文件大小:149K) (原文件名:单片机C语言下LCD多级菜单的一种实现方法.pdf)

出0入0汤圆

发表于 2010-8-12 16:12:41 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-26 16:43:55 | 显示全部楼层
mark,以后可以借鉴。谢谢楼主!

出0入0汤圆

发表于 2010-8-31 10:33:19 | 显示全部楼层
对于这样的菜单程序,我一直都没有搞懂那些数值时怎么来取值的!????望高手指点!!!!!!!!!

出0入0汤圆

发表于 2010-8-31 10:36:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-31 10:36:52 | 显示全部楼层
mark 好东西

出0入0汤圆

发表于 2010-8-31 11:23:08 | 显示全部楼层
tks,mark!

出0入0汤圆

发表于 2010-8-31 13:07:52 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-1 19:50:30 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-1 23:35:33 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-2 08:37:50 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-2 08:51:45 | 显示全部楼层
mark、

出0入0汤圆

发表于 2010-9-2 14:38:43 | 显示全部楼层
马克思

出0入0汤圆

发表于 2010-11-13 12:46:21 | 显示全部楼层
标记一下,过段时间参考哈

出0入0汤圆

发表于 2010-11-13 13:06:48 | 显示全部楼层
MARK一下!

出0入0汤圆

发表于 2010-11-13 14:41:56 | 显示全部楼层
好样的

出0入0汤圆

发表于 2010-11-13 15:16:34 | 显示全部楼层
mark

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-4-16 16:09

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

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