




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
独立按键与菜单显示系统的设计引言:通过按键和LCD液晶显示组成的人机界面是电子产品设计的常用的人机交互方式,如果能够将复杂且耗时的按键驱动、液晶驱动、菜单维护等工作从系统中分离出来并提供完备的功能,对于减少资源占用提高系统实时性、简化系统设计具有重要的意义。本文以设计一套包含按键置数、菜单滚动、动态显示变量、系统状态发送等功能的最小化的单片机系统,并且以此为契机探讨按键和显示程序设计中应当注意的种种问题和程序的优化设计。一、 独立设计按键和显示系统的意义人机交互界面就是是人与计算机之间传递、交换信息的媒介和对话接口,是计算机系统的重要组成部分。按键驱动和液晶显示部分是很多电子设计采取的交互手段,它的好处是接口简便、成本低。实际上多数的设计中按键和液晶的响应控制不需要有很高的实时性,按键程序通常都包含100ms左右的消抖延时,液晶显示时只要刷屏速度大于150ms(60HZ)肉眼是看不出分别的,但这段时间相对于实时系统来说是一个很长的,如果和系统混合在一起编译运行将占用很大的存储和运行开销。能够将按键和显示部分从应用系统中剥离出来对于提高开发效率完备程序设计都有很高的价值,特别的对于电子竞赛短时间内需要完成完整的功能设计的情况都有重要的意义。从系统应用的角度看不同的系统对于按键的处理和显示的功能都是很类似的,比如按键输入一个数据、屏幕的特定位置显示一个变量、菜单上下滚动选中其中的某一行等等。一个只有三个按键的系统输入一个变量时需要很多的中间变量,还要配合按键扫描、变量数据上下限判断、液晶屏显示当前值、标记显示当前正在输入的位等一系列的功能函数调用步骤才能完成,然而最后系统所关心的只是输入变量的值是多少。不难看出将按键与显示部分分离出来不仅简化应用系统的设计而且可以大幅提高系统实时处理能力。设计一个完整的按键菜单液晶模块对于初学者来说也并不是一件容易的事,通常在很熟悉编译环境和语言的前提下要完整编写这些代码也需要几个星期甚至更长的时间,重复编写这些功能不仅耗时而且没有必要。本设计中带有一个简单的单片机系统完全实现按键和显示的全部功能独立于系统外运行,可以简单快速的开发需要的人机界面系统,同时通过通讯总线系统通知发生的事件(比如:按键状态变化、用户通过菜单选中某行、用户输入了完整的变量数据等)发送到上位机,上位机接收后可以有选择的进行处理以减少系统开销。本设计可将菜单字符和结构信息存储在片上eeprom中通过指令改写,这样系统就具有了很强的移植的特性。二、 按键驱动设计按键驱动程序看似简单,但是要编写功能完备、响应灵敏、资源占用少的按键程序需要一些技巧才能实现的。按键一般由开关构成,少量的按键可直接io控制,数量较多时一般构成阵列形式,以下论述也适合于AD器件扩展的按键形式。按键驱动程序一般由扫描部分、按键获取、按键处理部分组成,逻辑功能见下图:获取键码按键扫描有待取按键?按键状态变化?YN置待取按键YN按键处理后清除返回返回将扫描和获取分开设计是有必要的。按键扫描程序负责检查按键状态,如果按键状态变化并且执行消抖延时后仍然保持就将按键状态存入全局量待取,实时性好的按键扫描应该定时触发的形式调用。按键获取程序返回待取按键状态处理完后清除按键状态。首先分开设计符合按键程序的基本思想,即扫描产生事件、处理与事件一一对应、不同的事件对应多种处理方式;另外分开设计有利于扩展按键功能,例如组合按键、长按键、按键对应字符等复杂功能的设计上如果没有清晰的程序逻辑结构很容易造成混乱产生不易察觉的错误。下面的示例程序以100200HZ定时调用扫描程序即可驱动按键并且以调用计数消除了去抖延时。uint8 Press_Key_ID=0;/按键扫描码int8 Press_Key_Time=-KEY_DEJITTER_TIME;/键盘扫描 void Key_Scan(void)uint8 tmp=0;/非消抖时间键盘扫描,置键值 if (Press_Key_Time=-KEY_DEJITTER_TIME | Press_Key_Time=0) tmp = KEY_PORTX & KEY_CODE;if (tmp=0)/无键按下Press_Key_ID=0;Press_Key_Time=-KEY_DEJITTER_TIME;else/有键按下 if (Press_Key_ID != tmp) /按键状态有改变Press_Key_ID = tmp; Press_Key_Time=-KEY_DEJITTER_TIME+1;/进入消抖期/常有状态保持不变Press_Key_Time=0待取/ 消抖期键码不变 keytime+elsePress_Key_Time+;/获取键值,如果有返回键码或长按返回-1uint8 Key_Get(void)uint8 ret=0;if (Press_Key_ID & Press_Key_Time=0)if (Press_Key_Time=0)/有待取按键ret=Press_Key_ID;Press_Key_Time+;return ret;三、 显示部分的菜单设计菜单应用程序的特点在于分支重多,因此要特别设计好程序的逻辑结构和菜单存储的组织形式,否则当菜单项比较多或涉及的功能比较复杂时就很难实现了。为了不影响菜单处理时其他功能应该将菜单处理函数以外的实时控制部分单独编写到一个函数中,菜单处理函数中调用此函数完成实时任务。下面以ST7920控制器的汉字库液晶字符菜单为例,非字符菜单其逻辑结构上也是一样的。菜单系统可以看作由若干个菜单项组成的树状结构,每一个菜单项包括显示字符和处理函数两部分组成,即每进入一个菜单项先显示若干字符然后进入处理函数。由此我们可以定义基本的菜单项结构如下:typedef void (*MENU_FUNCTION)(void);typedef struct /菜单项结构uint8 * MenuString;/字符数组指针uint8 StringSize;/大小MENU_FUNCTION Dispose_Fun;/处理函数指针MENU_ITEM_STRUCT;通过结构中的函数指针可以把一个菜单项完整的描述出来,程序中每一个菜单项的切换就可以用同一个函数来处理了。函数指针的调用形式如:(* (Menu_CurrentMenuChoice.Dispose_Fun)();/处理调用为清晰程序设计的逻辑,建议菜单项的命名方式以菜单系统的树状结构自然命名(例如第一层第一个菜单项字符为MenuString_1_1同时其对应的处理函数命名为MenuDispose_1_1等等),然后定义一个菜单结构数组完全描述整个菜单系统,同时附加若干条件编译来简化程序的编写,例如编译条件如果定义了某个菜单字符或处理函数就添加此菜单项的定义等,具体实现不再赘述。四、 独立的系统设计本次设计以ST7920串行模式为显示器件,其串行时序与SPI总线一致,主控MCU完全控制SPI总线,同时主机负责完成以下部分功能:1:按键扫描和液晶驱动;2:中文菜单状态显示、滚屏维护、按键置数等;3:作为主控端与上位机通讯,传送按键、菜单选中、置数结束等消息,并接收上位机传来的指令(如:数据更新、显示切换、开关显示等)。系统设计目标为带有按键与菜单维护的独立模块,为支持菜单动态显示变量的功能,需要上位机与主控系统通讯。此部分功能借助与LCD统一的SPI总线来实现,通讯时主控机为主机,上位机为从机。另外主控机需要向上位机发送按键状态变化、菜单选中事件通知、按键输入变量值等实时信息,因此SPI总线需要设计成双向通讯的收发模式。当有上述事件发生时由主控机通知上位机事件类型和变量值等信息。SPI总线时序逻辑和通讯协议参考相关手册。对于SPI总线的控制主要考虑是否需要专门的SPI硬件的支持,通过分析硬件SPI总线可以提高主控机与上位机的通信的实时性,可以减少对液晶驱动控制的开销。但液晶控制器每次发送的控制指令执行需要一段时间来完成(大概100us),由于串行模式无法实现判忙条件,因此硬件SPI总线的支持对于提高LCD驱动部分能够发挥得作用也要打折扣。结合IO口需求和性价比因素的分析,单片机采用了STC15F100系列8脚封装的单片机,这个型号的单片机内置R
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年宁夏回族自治区农业农村厅自主公开招聘事业单位急需紧缺高层次人才模拟试卷及参考答案详解
- 2025家居装修合同范本适用于贷款装修
- 2025绿化工作人员劳动合同范本
- 2025阿勒泰市消防救援大队招聘编制外政府专职消防员(21人)考前自测高频考点模拟试题及答案详解(易错题)
- 2025年强化未成年人就业合同权益保障
- 2025年中共昆明市委党校引进高层次人才(5人)模拟试卷及答案详解(名校卷)
- 2025广西农垦集团第一批公开招聘381人模拟试卷及答案详解(网校专用)
- 2025江苏常州市钟楼金隆控股集团有限公司招聘第一批人员考前自测高频考点模拟试题及答案详解(夺冠)
- 2025北京建筑大学第二批招聘24人考前自测高频考点模拟试题及一套参考答案详解
- 个人购车用低月息借款合同8篇
- 学校安全风险辨识管控清单
- 植物生理学植物的抗逆境生理
- 渔业资源与渔场学PPT完整全套教学课件
- 质量效率辩证关系
- 二手车鉴定评估报告表
- 设计思维方法与表达(高职艺术设计)PPT完整全套教学课件
- 金融随机分析2课后答案
- 中医病证诊断疗效标准
- 海姆立克评分标准
- RB/T 040-2020病原微生物实验室生物安全风险管理指南
- GB/T 1871.1-1995磷矿石和磷精矿中五氧化二磷含量的测定磷钼酸喹啉重量法和容量法
评论
0/150
提交评论