欢迎来到天天文库
浏览记录
ID:31359164
大小:111.50 KB
页数:8页
时间:2019-01-09
《基于c51结构体的目录式菜单程序设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于C51结构体的目录式菜单程序设计 摘要:针对矿用产品智能化程度提高,人机界面丰富,程序设计工作量大,修改难等问题,本文提出了基于C51的结构体的目录式菜单程序框架,通过目录查询和函数指针调用,实现各种菜单操作功能。通过多项目应用,验证了该方法实现的菜单结构紧凑、运行稳定、修改方便和通用性强等特点,具有很好的实用价值。 关键词:目录式菜单;C51;结构体;函数指针 中图分类号:TP368.12 随着矿用产品智能化越来越高,人机界面越来越丰富,而在目前矿用产品中,人机界面多基于单片机及按键方式实现,对于复杂的人机界面程序设计
2、工作量很大,且存在经常需要修改的问题。因此设计了运行可靠、修改方便的菜单程序框架可以降低工作量,提高产品开发效率,且为以后程序设计建立模板。多级菜单程序的设计方法很多,最典型的方法是根据按键动作及显示界面建立索引关系表,具体实现方法见文献[1]。该方法基于这个关系表,增加或调整界面时,对结构表修改较大,特别是在界面很多时不方便,在修改及通用性方面差。作者通过总结已往的各种菜单设计方法,根据设计菜单经验,设计了一种基于C51结构体的目录式菜单,通过目录查询和函数指针调用,实现菜单各种操作功能。 1目录式菜单程序设计8 通过对菜单的
3、共性分析,提炼出菜单结构特点,形成菜单条结构体。一般每个菜单项有菜单标签和子菜单列表;可以通过上下选择键对子菜单项上下选择;在选择后进行确认操作,调用功能函数执行,且可进入下一级子菜单或进入当前菜单的参数修改;在参数修改时通过上下选择键修改;取消或返回可通过取消键操作。为实现以上功能首先建立菜单条结构体,并根据菜单功能项目,分级建立菜单结构体,确立菜单的显示内容、菜单条之间关系及执行的功能等,然后再设计各功能函数。因此本设计的关键是要定义好菜单的目录结构体以及菜单的操作及显示函数。 2结构体定义 2.1菜单条结构体定义 菜单条
4、结构体确立本菜单的显示内容、附加数据、结构关系、执行功能等属性,包含内容有当前菜单条数、菜单标签、菜单条名称、菜单条数据指针、父菜单指针、子菜单指针、执行功能函数等关系,结构体如下定义。 structMenuItem {ucharMenuCount;//当前菜单条数 char*MenuCaption;//菜单标签 char*DisplayString;//菜单条名称 structMenuData*DisplayData;//菜单条数据指针 structMenuItem*ParentMenus;//父菜单指针 struc
5、tMenuItem*ChildrenMenus;//子菜单指针 void(*Subs)();};//执行功能函数 2.2菜单条数据结构体定义8 为了减少程序量和操作方便,在有些最底层菜单后附带数据,而这些数据的属性不同,操作显示都有区别,因此根据他们的共性将数据的属性和操作、显示等封装成结构体,包含内容有当前数据个数、数据名称、数据属性、修改操作、显示操作等,结构体如下定义。 structMenuData {ucharCount;//数据条数 char*Name;//数据名称 ucharAttribute;//数据属性
6、, void(*Set)();//设置函数 void(*Show)();};//显示函数 2.3菜单目录结构体定义 在菜单条结构体基础上,根据每个界面菜单的内容填写菜单目录结构体,再根据具体功能写各功能函数。菜单目录结构体示例如下。 structMenuItemcodeMenu[]= {{3,"-菜单-","1菜单1",&MenuData1,ParentMenu,Menu1,Subs1}, {3,"-菜单-","2菜单2",&MenuData2,ParentMenu,Menu2,Subs2}, {3,"-菜单-","
7、3菜单3",&MenuData3,ParentMenu,Menu3,Subs3},}; 3菜单目录操作函数设计8 定义好菜单目录结构体后,关键还要实现菜单目录检索和显示,具体由以下两个功能函数实现。 3.1菜单目录检索函数设计 通过菜单检索函数建立按键操作和菜单目录的关系,可以在菜单目录中检索出当前需要的菜单及其相关的功能。voidSearchMenu(void)函数根据按键状态,实现菜单上选、下选、返回、执行菜单功能函数等操作功能。 3.2菜单显示函数设计 菜单显示函数根据当前操作状态显示菜单条及相关数据,以及实现反白
8、显示等功能。 voidShowMenu(void)函数实现菜单标签、子菜单条显示,并实现多条子菜单条行循环显示操作,对选中的菜单条反白显示等。 3.3菜单函数设计 为了使程序结构一体化,将读键、菜单检索、菜单显示等函数封装到一起
此文档下载收益归作者所有