OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » [原创] 基于LPC2292在LCD上实现数字编辑输入功能

共2条 1/1 1 跳转至

[原创] 基于LPC2292在LCD上实现数字编辑输入功能

菜鸟
2008-12-02 17:33:37    评分
1      MzLH06_LPC22XX_EditDemo基本功能描述

  本工程范例演示了MzLH06模块Edit控件的数字输入编辑功能,需要在用户的系统中配备至少4个按键,这样才能进行数字的输入编辑操作。用户在使用MzLH06模块的Edit 控件时,只需要对其进行创建、初始化,之后检测自己系统中的按键,有按键按下时,将定义的模块指定的键盘消息编码发送经模块,模块会自动进行控件中的数据调整并且实时的显示出来,而到最后确认数据后,需要调用读取函数将设置好的数据读出即可。

2   例程硬件连接简图
  本工程范例使用了MzLH06模块的Edit控件功能,而并没有控制模块的复位,所以模块的RST引脚是不连接的,但与前两个范例不一样的
是RD(Ready引脚)和MISO引脚需要连接。如下图所示:

  需要外接4个按键于Port1.22~25端口上,LPC2292的端口具备上拉,所以图中没有再加上外部的上拉电阻。
  本例程使用GPIO来模拟SPI时序,如用户使用硬件SPI端口,请参考MzLH06模块的端口进行连接和编程。上图的模块为3.3V的模块,有关
LPC2292的其它电路不在图中画出,请用户具体参考其它的开发板文档进行了解。

3   例程软件设置相关说明
  每一个Edit控件在使用前,均需要进行创建和初始化,如下代码:

  而控件在进行完成初始化之后,是不会进行重绘显示的,只是表明其已存在于模块内部的Edit控件管理模块之中,需要用户调用模块提供的设置控件Active状态的函数对其Active状态进行置1,使得这些控件得以显示,如下:

  而在键盘的按键消息分支处理程序当中,按不同的按键的定义将模块所规定的键盘消息发送给模块,以便模块获取键盘消息并对其进行响应处理,如下面的代码:

  Key_Dat变量保存有本例按键信息,当无按键按下时,该值为0,而分别对应于Key1、Key2、Key3和Key4,其值分别为1、2、3、4,而长按Key1键时将为5;如上图的处理,分别定义四个按键短按下时的意义为:

  • Key1:向上按键,可以对当前活动的Edit控件中所选择的编辑位进行加1的操作;
  • Key2:向下键,可以对当前活动着的Edit控件中所选择的编辑位进行减1的操作;
  • Key3:TAB键,又可称为切换键,可循环切换当前模块中处于活动状态的Edit控件;
  • Key4:向右键,可以移动Edit控件中的被选择的编辑位。

  而为了让用户能够观察到Edit控件中的数值,在此将Key1键长按下时,返回一个5的键值,程序会去读取模块中已经创建的三个控件的数值,用户可以在仿真调试时,通过变量来观察。

4   操作演示说明

  工程运行后,如连接无误,以及硬件工作都正常,将会出现如下图所示的显示:

  图中最下方的Edit控件是最后一个设置Active状态为1的,这里它将处于当前活动状态,用户程序中传递到模块中的键值编码(除TAB键之外)将会传到该控件进行响应。

  处于活动状态的控件将会有一个选择指示在闪动,以表明该控件处于活动状态,并指示当前选择编辑的数据位。当按下Key3键(TAB键),Edit控件管理器将会切换处于活动状态下的Edit控件,如下图,会将最上方一个控件置为活动状态:

  此时,按下Key1键,会对当前活动状态的Edit控件的处于选择状态下的编辑位进行加1操作,如下图所示:

  可以看到,当前活动状态的Edit控件的数值变为了3387;然后再连续按下三次Key4(向右键),则该Edit控件将会移动控件内处于选择状态下的编辑位,如下几个图像所示:

  该控件中处于被选择的编辑位已经指向了最低位了,如果此时再按下一次Key4,则如下图所示,该控件将会向低位扩展:

  再按下Key1(向上键),则会调整当前控件中的十进制位数,即使得该控件内的数据增加一个十进制位,数据变成了33870,如下图所示:

  前面的多个图像展示了Edit控件的数字输入编辑功能,因为用户操作还有可能会有很多种,所以在此不便一一详述,用户可以自行体会




关键词: 原创     基于     LPC2292     实现     数字     编辑     输入    

高工
2008-12-02 18:28:48    评分
2楼
挺不错,很实用。真希望有人可以把UI操作整理一下,做成一个通用的非基于操作系统的UI库,一定很受欢迎。

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]