搜索
bottom↓
回复: 51

发布菜单程序,可以进行参数选择,感谢傻孩子

[复制链接]

出0入0汤圆

发表于 2010-2-2 15:14:52 | 显示全部楼层 |阅读模式
原来的架构只能用于菜单的进退,不能提供参数选择,要单独编写程序,若功能复杂会使代码增加很多。

增加了录结构体MenuItem的unsigned char MenuType和unsigned char *ReturnParameter两项,用于定义菜单类型和返回参数。
菜单类型包括:正常菜单,选项型菜单(返回一数值),显示信息型菜单(显示一定信息)三种类型。返回参数功能用于对某参数进行设置(如波特率),返回的值为0~CurLevelMenuMaximum-1。

源码及工程文件如下,有Proteus仿真!!!
源代码及工程文件ourdev_531827.rar(文件大小:183K) (原文件名:LCD1602_MENU.rar)
有图有真相:

根目录 (原文件名:未命名001.JPG)


波特率选择 (原文件名:未命名002.JPG)


显示文本信息 (原文件名:未命名003.JPG)

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

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2010-2-2 15:22:19 | 显示全部楼层
不错

出0入0汤圆

 楼主| 发表于 2010-2-2 15:23:35 | 显示全部楼层


出0入0汤圆

发表于 2010-2-2 15:26:06 | 显示全部楼层
你可以扩展一个分支菜单,同时菜单里会显示变量(比如采样值、时间、其它一些变量),做一个树形的菜单多好啊。

出0入0汤圆

 楼主| 发表于 2010-2-2 15:32:03 | 显示全部楼层
回复【4楼】wgjwgj  
你可以扩展一个分支菜单,同时菜单里会显示变量(比如采样值、时间、其它一些变量),做一个树形的菜单多好啊。

-----------------------------------------------------------------------

没太明白,能说详细点吗?最好有例子或者图片,看看什么效果

出0入0汤圆

发表于 2010-2-2 15:52:07 | 显示全部楼层
顶。。。

出0入0汤圆

发表于 2010-2-2 16:46:51 | 显示全部楼层
回复【5楼】jackielau
-----------------------------------------------------------------------

不错

出0入0汤圆

发表于 2010-2-2 17:23:13 | 显示全部楼层
mark

出0入296汤圆

发表于 2010-2-2 17:26:53 | 显示全部楼层
顶~~~~~~~~
菜单的帖子可能是我扔出去的最好的石头……

出0入0汤圆

发表于 2010-2-2 18:17:13 | 显示全部楼层
顶~~~~~~~~

出0入0汤圆

发表于 2010-2-2 19:04:44 | 显示全部楼层
顶起。。。

出0入0汤圆

发表于 2010-2-2 19:12:36 | 显示全部楼层
ding~~~

出0入0汤圆

发表于 2010-2-2 19:14:48 | 显示全部楼层
做个记号,呵呵

出0入0汤圆

发表于 2010-2-2 20:43:17 | 显示全部楼层
顶一个

出0入0汤圆

发表于 2010-2-2 21:11:42 | 显示全部楼层
回复【9楼】Gorgon Meducer 傻孩子
顶~~~~~~~~
菜单的帖子可能是我扔出去的最好的石头……
-----------------------------------------------------------------------

专门顶9楼
顺便
MARK GUI

出0入0汤圆

 楼主| 发表于 2010-2-3 09:02:43 | 显示全部楼层
回复【9楼】Gorgon Meducer  傻孩子
-----------------------------------------------------------------------

应该还能增加功能的,以适应各种应用

出0入0汤圆

 楼主| 发表于 2010-2-4 09:30:08 | 显示全部楼层
沉得好快,自己等啦

出0入0汤圆

发表于 2010-2-4 10:23:16 | 显示全部楼层
回复【9楼】Gorgon Meducer 傻孩子
顶~~~~~~~~
菜单的帖子可能是我扔出去的最好的石头……
-----------------------------------------------------------------------


是哪个贴子呢??

出0入0汤圆

发表于 2010-2-4 20:15:23 | 显示全部楼层
记号一下

出0入0汤圆

发表于 2010-2-4 20:19:31 | 显示全部楼层
先记号下

出0入0汤圆

发表于 2010-2-6 11:31:09 | 显示全部楼层
顶起

出0入0汤圆

发表于 2010-2-17 11:25:26 | 显示全部楼层

出0入0汤圆

发表于 2010-3-4 10:12:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-4 13:10:03 | 显示全部楼层
DING

出0入0汤圆

发表于 2010-3-4 15:32:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-4 17:01:57 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-18 14:39:31 | 显示全部楼层
傻孩子的菜单确实经典

出0入0汤圆

发表于 2010-4-7 13:30:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-23 11:09:51 | 显示全部楼层
不错,学习中!!!!!!!!!

出0入0汤圆

发表于 2010-5-3 11:20:16 | 显示全部楼层
今天去试了一下!有点像会事!在学习!
希望LZ能更新出来(在TEST下按UP/DOWN会死机.在1runstate.按两次UP.会出现异常现象)

出0入0汤圆

发表于 2010-6-25 17:36:19 | 显示全部楼层
正在学习菜单,不错,收下

出0入0汤圆

 楼主| 发表于 2010-6-28 12:38:03 | 显示全部楼层
回复【30楼】ATmega_16  
今天去试了一下!有点像会事!在学习!
希望lz能更新出来(在test下按up/down会死机.在1runstate.按两次up.会出现异常现象)
-----------------------------------------------------------------------

是的,偶尔会出现“左箭头”

重新上传
点击此处下载 ourdev_564446E1MY1E.rar(文件大小:183K) (原文件名:LCD1602_MENU.rar)


至于“在TEST下按UP/DOWN会死机”  在我这没有出现!

出0入0汤圆

发表于 2010-6-28 14:03:40 | 显示全部楼层
你老人家的
struct MenuItem RootMenu[4]=        //根目录菜单
{
        {
                4,RootMenu_RunState,NullOperator ,RunState,&Null,MENUTYPE_NORMAL,&NullParameter},
        {4,RootMenu_SetTime,NullOperator  ,SetTime,&Null,MENUTYPE_NORMAL,&NullParameter},//SetDateTime
        {4,RootMenu_DataOper,NullOperator ,&Null ,&Null,MENUTYPE_NORMAL,&NullParameter},//
        {4,RootMenu_SysInfo,NullOperator  ,&Null ,&Null,MENUTYPE_NORMAL,&NullParameter},
};

struct MenuItem RunState[5]=        //1级目录菜单A
{
        {5,RunState0,NullOperator,&Null,RootMenu,MENUTYPE_OPTION,&Para},
        {5,RunState1,NullOperator,&Null,RootMenu,MENUTYPE_OPTION,&Para},
        {5,RunState2,NullOperator,&Null,RootMenu,MENUTYPE_OPTION,&Para},
        {5,RunState3,NullOperator,&Null,RootMenu,MENUTYPE_OPTION,&Para},
        {5,RunState4,NullOperator,&Null,RootMenu,MENUTYPE_OPTION,&Para},
};
struct MenuItem SetTime[1]=        //2级目录菜单A
{
        {
                1,SetTime0,NullOperator,&Null,RootMenu,MENUTYPE_DISP,&NullParameter},
};
是不是放在 SRAM区的?

出0入0汤圆

 楼主| 发表于 2010-6-28 14:05:49 | 显示全部楼层
回复【33楼】xcodes  
-----------------------------------------------------------------------

是的,在SRAM区

菜单的内容在FLASH中

出0入0汤圆

发表于 2010-6-28 14:17:30 | 显示全部楼层
回复【34楼】jackielau 九天

回复【33楼】xcodes   
-----------------------------------------------------------------------
是的,在sram区
菜单的内容在flash中
-----------------------------------------------------------------------

这样你能放几个结构呢?放不了几个结构SRAM就会满地
最好把 菜单内容以及 结构表格 都放在Flash区
其他感觉你的延时函数 也有点问题
可能不会按照你的意思延时

出0入0汤圆

发表于 2010-6-28 14:26:04 | 显示全部楼层
还有
void DisplayString(uchar X, uchar Y, uchar *DData)
中的DData也是在SRAM区的,每写一句DisplayString 都会占用相应的SRAM
DisplayString(4,0,"Welcome!"); //7 byteSRAM
DisplayString(3,1,"LCDTest1.0");//10 byteSRAM
DisplayString(0,0,"Initializing...");//15 byteSRAM
DisplayString(0, n, "                ");//显示一个空行16 byteSRAM
统统都要弄到Flash区

出0入0汤圆

 楼主| 发表于 2010-6-28 15:25:11 | 显示全部楼层
回复【35楼】xcodes  
回复【34楼】jackielau 九天

回复【33楼】xcodes   
----------------------------------------------------------------------- 
是的,在sram区 
菜单的内容在flash中
-----------------------------------------------------------------------

这样你能放几个结构呢?放不了几个结构sram就会满地
最好把 菜单内容以及 结构表格 都放在flash区
其他感觉你的延时函数 也有点问题
可能不会按照你的意思延时
-----------------------------------------------------------------------
1、“最好把 菜单内容以及 结构表格 都放在flash区”
我一开始想把所有内容都放在Flash中,但是没有成功(对GCC不太了解),无奈之下,只是把菜单显示内容放在Flash
如果你知道如何改,请指点!!!


2、一般编译要优化,所以就会使用编译器带的精确延时函数

出0入0汤圆

 楼主| 发表于 2010-6-28 15:26:22 | 显示全部楼层
回复【36楼】xcodes  
还有
void displaystring(uchar x, uchar y, uchar *ddata)
中的ddata也是在sram区的,每写一句displaystring 都会占用相应的sram
displaystring(4,0,"welcome!"); //7 bytesram
displaystring(3,1,"lcdtest1.0");//10 bytesram
displaystring(0,0,"initializing...");//15 bytesram
displaystring(0, n, "                ");//显示一个空行16 bytesram
统统都要弄到flash区

-----------------------------------------------------------------------

这只是个例子,我没有都放到Flash中,可以用Sram做缓冲,把这些放入Flash中

出0入0汤圆

发表于 2010-6-28 21:15:58 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-28 23:10:29 | 显示全部楼层
马克下,学习

出0入0汤圆

发表于 2010-6-28 23:58:48 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-6-29 13:35:44 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-6-29 14:58:01 | 显示全部楼层
非常支持你,我也实现你的功能了,傻孩子的菜单也被我改的一塌糊涂,灵感主要来源于“一个占用很小内存的菜单”我主要增加了:
1、显示的信息可以停留在液晶上
2、显示的信息可以再液晶上实时更新

现在快要毕业没时间整理代码,以后再传上来交流

出0入0汤圆

发表于 2010-6-29 15:01:26 | 显示全部楼层
我主要是增加了一个字节的标志,在要刷新屏的时候判断一下这个标志,根据这个标志的数值来决定要不要清屏、重新调用子函数

出0入0汤圆

 楼主| 发表于 2010-6-29 17:10:59 | 显示全部楼层
回复【44楼】cyr_hongfeng  
我主要是增加了一个字节的标志,在要刷新屏的时候判断一下这个标志,根据这个标志的数值来决定要不要清屏、重新调用子函数
-----------------------------------------------------------------------

我当时主要想法是可以进行参数选择,之前我是用专门的函数写的,不通用

出0入0汤圆

发表于 2010-11-8 12:20:50 | 显示全部楼层
记号

出0入9汤圆

发表于 2010-11-8 12:23:24 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-8 20:50:04 | 显示全部楼层
看来可以玩玩菜单了

出0入0汤圆

发表于 2011-3-21 22:57:26 | 显示全部楼层
正在学习。

出0入0汤圆

发表于 2011-3-22 00:17:55 | 显示全部楼层
mark,以后可能会有用的

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-6-2 22:15

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

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