一种新的嵌入式系统菜单设计.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种新的嵌入式系统菜单设计.doc

一种新的嵌入式系统菜单设计   【摘要】:在嵌入式系统中,常常会用到LCD来显示一些选项或菜单以帮助用户完成设备操作,复杂系统中会使用成熟的商业系统来完成这个功能(比如WINCE、Android等系统),而一些对显示要求不高或有成本控制需求的场合,则需要开发者直接操作LCD来实现图形界面的设计,在这里介绍一种低成本、易实现、易移植的简易嵌入式系统菜单设计。为了实现快速的菜单界面开发,文章给出了一种以“页面”为载体,以“表格”为导向的实现方式,避免了离散型编程方法导致的难维护,难移植的缺点。   【关键词】:嵌入式系统、菜单、GUI   1.设计详解   与大多数简易GUI的菜单一样,这种方法也是首先实现对LCD或OLED显示器的绘点操作,然后在此基础上使用绘点函数绘制其他图形和字符,这里重点对菜单的跳转实现原理进行详细分析。   1.定义页面   所有需要显示的内容均依托于一种数据类型――“页面”,修改其属性可让其呈现不同的显示内容。该类型中包含页面类型、页面大小、页面跳转表、选项跳转表以及其他必须的数据,程序中需要一个页面指针来指向当前页面,任何情况下改变显示内容实际上都是改变该指针的值。   按照用途分为4种页面,如下图所示:   若使用中发现有些内容不能用这四种“页面”表现出来,在“页面”数据类型基础上增加参数即可,这样不会影响到原有的其他内容。   2.定义跳转表   系统中每一个页面都有自己的唯一编号(该编号在新建页面变量时初始化),整个按键操作主要是依靠3个表格的查询来完成,第一个表格是页面对应表,该表格存储了页面编号与页面变量的一一对应关系,该表格示例如下:   //页面对应表   struct windowToNumber WinToNumTable[]= {   {1,window_main},   {2,window_main2},   {3,window_setup},   {4,window_option2},   {5,window_info1},   {6,window_input1},   };   第二个表格是页面跳转表,该表格确定所有页面的对应关系,这里以一个有6个输入按键(上、下、左、右、确认、返回)的系统为例说明该菜单系统的运行原理,比如第一组的意思就是当按下“上”之后,页面会跳转到“1”号页面,按下“左”会跳转到“”号页面,以此类推,这个表格建立好之后,只需在新建的页面结构体变量初始化时将其页面跳转表指向这个表格中的某一行即可。   unsigned char windowJumpTable[][6]= {   // 上 下 左 右 确认 返回   {1, 1, 2, 2, 3, 1}, //TOP1窗口   {2, 2, 1, 1, 4, 2}, //TOP2窗口   {3, 3, 3, 3, 3, 1}, //OPTION1窗口   {4, 4, 4, 4, 4, 2}, //OPTION2窗口   {21, 21, 21, 21, 21, 10}, //WIN_INFO1窗口   {22, 22, 22, 22, 22, 10}, //WIN_INFO2窗口   };   第三个表格是针对拥有多个选项的二级选项页面制定的,该表格确定所有选项与页面的对应关系,其原理与页面跳转表的使用方法类似,也是从表格中查询出每个选项对应的页面编号并跳转过去,这里最大支持一个页面拥有10个选项。   unsigned char optionJumpTable[][10]= {   {5,5,0,0,0,0,0,0,0,0}, //第一个OPTION   {6,6,0,0,0,0,0,0,0,0}, //第二个OPTION   };   3.运行原理   以一个拥有6个页面的系统为例,初始化以后各指针状态如下图:   一次按键操作的流程如下图:   2.总结   使用这种方法,在设计新产品的人机界面时,就只需要编辑两个跳转表以及一个对应表,并在初始化页面变量时将页面编号等参数初始化成需要的值即可,其他代码则无需修改,这样就能够快速完成界面设计开发,甚至可以编写上位机软件来辅助生成代码,做到可视化嵌入式系统菜单设计,将会大大加快开发速度,并降低出现BUG的概率。 4

文档评论(0)

yingzhiguo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档