基于单片机的索引菜单查询方式的软件设计应用.docVIP

基于单片机的索引菜单查询方式的软件设计应用.doc

  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文档。上传文档
查看更多
基于单片机的索引菜单查询方式的软件设计应用摘 要:本文介绍一种在单片机设计软件中基于索引的多层次,多级别的菜单查询的软件设计方法。关键词:单片机;索引;菜单0 引言在单片机系统设计中,按键控制.屏幕显示.数据采集等系统都是较为常用的硬件系统,在其软件的设计过程中,基本都是基于C语言的过程设计,在设计中往往对于按键控制,屏幕显示控制等变成较为繁琐,标志位,信号量等参数多而且复杂,既占用过多的RAM,又使得整体程序可读性差.可移植性差.本文介绍的设计方法具有易读,方便维护,可移植性高和可靠性高的特点.本方法已经成功运用到多款产品中。1 硬件环境设计随着电子技术的发展,单片机应用已经非常成熟,但是随着应用的广泛,单片机本身的RAM,ROM已经不能够满足设计需求,而过多的外部存储器也同样会带来设计体积增大,硬件成本增加等问题,这样,为了即能够不增加外设,也能够充分利用单片机本身资源的设计方式,也需要提高软件设计的高效性.一个基本的单片机硬件环境一般有单片机,显示部分,按键操作,信号采集等部分,本文介绍的是一个带有6个功能按键。2个四位显示数码管.以及其他的信号采集设备系统。其功能如下:(1)6种按键功能:1)“向上”键:查询本层菜单的向上操作索引值,本程序执行对显示值的递增函数;2)“向下”键:查询本层菜单的向下操作索引值,本程序执行对显示值的递减函数;3)“向左”键:查询本层菜单的向左操作索引值,本程序执行对显示值的左移闪烁函数;4)“向右”键:查询本层菜单的向右操作索引值,本程序执行对显示值的右移闪烁函数;5)“菜单”键:查询本层菜单的菜单操作索引值,本程序执行对显示值的参数调整函数;6)“确认”键:查询本层菜单的确认操作索引值,本程序执行对显示值的返回函数;(2)2个四位显示数码管;程序执行按键后查询索引值对应的函数,并在四位数码管中显示功能。包括数值的闪烁左移.闪烁右移.字母显示等操作。(3)数据采集:AD采样转换等操作。本系统按键操作以及数码管显示使用芯片ZLG7290,使用 总线通信。芯片具有设计简单,寄存器功能强大,使用方便等特点。在此不多做介绍。2 软件程序设计软件设计初始需要定义一个结构,并声明一个结构体变量KeylistStruct,在结构体设计中的结构变量包括当前状态的索引值KeyStateIndex,还有所需按键控制的索引值,以及一个基于函数的指针结构变量,用于对应其指针指向的函数。函数指针指向的函数也需要在索引中使用函数名指针变量。函数名如下所示:Void caiyang(void); //采样函数;Void zuoyi(void); //左移函数;Void youyi(void); //右移函数;Void jiafa(void); //加法函数;Void jianfa(void); //减法函数;Void caidan(void); //菜单函数;Void fanhui(void); //返回函数;结构体定义根据需要对数据类型进行定义,本文使用无符号整形变量。结构体所示如下:Typedefstruct{Uint8 keystateindex;Uint8 keyleftstate;Uint8 keyrightstate;Uint8 keyupstate;Uint8 keydnstate;Uint8 keycrstate;Uint8 keybackstate;Void (*currentoperate)();}keyliststruct;Keyliststruct结构体需要构成一个结构数组,在结构数组里每一个菜单项编辑一个独立的函数,并根据菜单的所对应的多层次菜单项的索引号,本级菜单项的上,下卷动的索引号和左,右卷动的索引号,以及菜单索引和返回索引值,使当前状态索引替换成指向的索引值,并根据索引值对应的*currentoperate()函数的操作号,找到其所需操作的函数,执行currentoperate()函数,多层次菜单数组值size_of_menu需要根据菜单单层数来定义。结构体数组定义如下所示:Keyliststruct code keytab[size_of_menu]={{0,0,1,2,3,4,5(*zuoyi)},{1,0,1,2,3,4,5(*youyi)},{2,0,1,2,3,4,5(*jiafa)},{3,0,1,2,3,4,5(*jianfa)},{4,0,1,2,3,4,5(*caidan)},{5,0,1,2,3,4,5(*fanhui)},….….};主程序或中断函数中可对按键值响应,查询索引菜单所对应的索引值,并执行功能函数。综上所述为单片机使用索引的菜单查询方式实现按键功能软件设计,从上述的介绍可知每个功能函数在编写的时候是不是有相关性的,修改其中一个函数功能并不影响其他函数功

文档评论(0)

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

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

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档