在单片机系统的人机界面设计中,通常需要采用菜单的方式来与用户交互信息,而对于某些应用系统它的菜单结构比较特殊,它每个菜单项的子项长度不一致,级数不一致,而且有些子项的操作具备一定的特殊性;因此不能采用一种通用的菜单结构模板来进行菜单的设计,结合作者多次菜单程序设计的工作经验,本文描述了一种任意菜单结构的设计方法,首先将菜单的结构目录树用图形描述出来,再给每个不同的级和同级不同的项设定一个唯一的标志,这样我们就能通过级标志位与项标志位的逻辑组合来得到一个唯一的位置,那么在代码的编写中只要对这些标志位按照图形的流程进行切换、读和写便可。
具体方法如下:
首先我们将菜单结构的图形描绘出来,再根据菜单的级数来定义一个结构体,比如菜单最大有5级,则这样定义
typedef struct
{
unsigned char f; //菜单所在级数
unsigned char s1; //菜单第1级下的子项号
unsigned char s2; //菜单第2级下的子项号
unsigned char s3; //菜单第3级下的子项号
unsigned char s4; //菜单第4级下的子项号
unsigned char s5; //菜单第5级下的子项号
}Menu_TypeDef;
Menu_TypeDef menu;
再将这些变量的值标定在绘制的菜单图形中,如下图所示:
即menu.f=1并且menu.s1=0表示第一级第一项;
即menu.f=2并且menu.s1=3表示第二级第四项;
依此类推;
于是,菜单的每一个位置都会有一个唯一的值与之对应,当菜单的选项由用户切换时,我们只需要根据菜单结构图形的流程来修改这些变量,而当需要查询当前菜单指针选中哪一项时,则只要查询这些变量的值即可。
由于各级菜单的变量都是独立的,因此对菜单的结构没有限制,适用于设计任意结构的菜单,如果当菜单级数较多,定义的菜单变量较多时,也不要紧,因为我们的菜单设计是先绘制菜单结构图形,再根据图形来编写代码,实际上就是根据图形的描述往代码里填值罢了。
经实践证明,采用以上方法能完全适用于所有任意结构菜单设计,而且该方法的优点在于,有了图形的描述,不仅减化了代码编写的难度,而且还有利于代码维护,提高代码的可读性。
符件里是一个不规则结构的菜单测试程序,基于AVR单片机,通过按键来选择,菜单的图形界面在PC机的超级终端上显示,欢迎广大网友测试,并讨论。
关键字:单片机 任意菜单 结构设计
引用地址:
基于单片机的任意菜单结构设计
推荐阅读最新更新时间:2024-03-16 15:13
东芝基于Arm CortexM内核的微控制器支持Mbed OS
作为Mbed(由Arm Ltd开发的用于物联网平台的设备管理解决方案)的硅芯片合作伙伴,东芝电子元件及存储装置株式会社(“东芝”)的微控制器获得了Mbed OS的认证。两款集成了东芝微控制器的评估板已在Arm Mbed网站发布。 Mbed为开发人员提供了一个免费易用的开发环境。Arm提供的在线编译器可与支持Mbed OS的评估板一起使用,可在通过USB连接到电路板的主机PC上通过简单拖放操作进行器件编程。开发人员还可访问经Mbed社区验证的丰富的组件库,从而实现嵌入式设备应用的快速高效开发。 Arm Mbed设备连接器(Device Connector)服务可与Mbed Cloud连接,有助于轻松配置Web服务。 东芝集团旗下子
[嵌入式]
智能照明系统室内环境光采集电路图
系统采用单片机为控制器,用热释人体红外传感器和光照强度传感系统来检测室内有无人员及室内光强,提出了一个智能照明控制系统的原理框图,并在此基础上设计了智能照明控制系统的部分硬件电路,该系统采用模块化结构设计,条理清晰,便于改进和扩充。同时还具有体积小,控制方便,可靠性高等优点,可以满足办公场所智能照明控制的要求,以达到节能目的。 室内环境光采集电路 室内环境光采集电路如图2所示。工作原理为当办公场所室内自然光光照强度高于一定程度时(即设定参数),则光敏三极管D5呈现低阻状态即小于1 k ,三极管Q1的基极电压将增大,使三极管Q1饱和导通,就会使三极管Q1集电极输出低电平,不参与其工作。当办公场所室内自然光光照强度小于一定
[单片机]
PIC单片机驱动步进电机先正转后反转
//************************************************** //实验目的: //熟悉PIC单片机驱动步进电机,先正转后反转 //************************************************** //************************************************** //硬件设置: //1、把步进电机接在J10位置上 //2、5脚是5V电源脚,1-4接步进电机线圈 //************************************************** //*********************
[单片机]
关于单片机的输入与输出
1.关于输入 单片机输入为高输入阻抗.如果你输入的是电压信号,可将高电平控制在3.6--5V,低电平控制在0--2V左右.当然,侭可能接近5V与0V. 如为电流输入信号,可在输入端接一电阻,使电流信号转换成电压信号.如电流为4--20mA,可接0.25K电阻.这样,当电流接近20mA时,作为高电平输入.当电流接近4mA时,为低电平输入. 2.关于输出 a)拉电流接法:将LED的正极直接接输出口,使输出口为高电平时,点亮LED,这种方式称为拉电流接法.这时,需要输出口提供足够的电流.实际上由于单片机输出级的线路结构所限制,输出电流是微安级的.不足以点亮LED(或很暗).从这点来说,你的老师说的也没错. b)灌电流接法:如楼上所说,将
[单片机]
proteus与keil Cx51的单片机仿真(定时器方式2应用)
用定时器1方式二计数,每计满100次,将P1.0取反。 电路图: c源程序: #include reg51.h sbit P1_0=P1^0; void main() { TMOD=0X61; TL1=0X9C; TH1=0X9C; TR1=1; for( ; ; ) { do {}while(!TF1); P1_0=!P1_0;TF1=0; } }
[单片机]
基于单片机的的智能晾衣系统设计论文
1 引言 随着社会经济水平的发展,现在人们的生活追求个性化、自动化,追求快节奏,追求充满乐趣的生活方式,家装要求的档次越来越高,生活家居人性化、智能化的要求使智能控制技术在智能家居电子产品中得到了广泛应用,它不仅优化人们的生活方式和居住环境,而且方便人们有效地安排时间和节约各种能源,实现了家电、照明、窗帘控制和防盗报警、定时控制及电话远程控制等。伴随着智能家居的快速发展,晾衣工具的智能化发展明显落后与其他家用器具智能化发展之后,现在己经引起社会的很大关注。本论文为了把握市场动态,顺应时代主题,设计并实现了智能晾衣架系统。 1.1 课题研究背景与意义 基于现在晾衣架发展现状,本设计开发了一种能帮助人们摆脱原始操作的智能晾衣架。本新
[单片机]
基于单片机的现场可编程门阵列的配置
1 引言 在大规模可编程逻辑器件出现以前,把器件焊接在电路板上是设计数字系统的最后一步。当设计存在问题并解决后,设计者往往不得不重新设计印制电路板。设计周期长,设计效率低。CPLD 、FPGA出现后,利用其在系统可编程或可重配置功能,设计者可以在进行逻辑设计而未进行电路设计时就把CPLD、FPGA焊接在电路板上,然后在设计调试时可一次次随心所欲的改变电路的硬件逻辑关系,而不用改变电路板的结构。 2基于SRAM的FPGA的结构和原理 可编程逻辑器件从结构上可分为: ⑴ 乘积项结构器件。其基本结构是〝与-或阵列〞的器件,大部分简单PLD和CPLD多是这种器件。 ⑵ 查找表结构器件。由简单的查找表组成可编程门,再
[单片机]
MCU 面临 800V 电动汽车牵引逆变器的 3 种挑战
电动汽车 (EV) 牵引逆变器是电动汽车的核心。它将高压电池的直流电转换为多相(通常是三相)交流电来驱动牵引电机并控制制动能量的再生。电动汽车电子设备正在从 400V 架构转向 800V 架构,这正在逐步现实、普及,更高的电压会带来至少三个好处: - 快速充电 - 在相同电流下提供双倍的电量。 - 通过使用碳化硅 (SiC) 提高效率和功率密度。 - 通过使用更细的电缆来减轻重量,从而减少 800V 相同额定功率所需的电流。 在牵引逆变器中,微控制器(MCU)是系统的大脑,通过模数转换器(ADC)执行电机控制、电压和电流采样,使用磁芯计算磁场定向控制(FOC)算法,使用脉宽调制 (PWM) 信号驱动功率场效应晶体管
[嵌入式]