首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于MSP430F149单片机的人机界面设计
来源:本站整理  作者:佚名  2010-01-11 15:15:33




菜单一般由西文字符和中文汉字组合而成,每一条菜单项定义一个数组Menu_string,格式如下:{菜单项字符数,第一个字符在字库中的序号,第二个字符,....}。需要注意的是, 在自建西文字库NUM_TAB 和小汉字库HZ_TAB 时,每个中西文字符都是各自编号的。由于中西文显示调用同一个函数,为区别中西文字符,在菜单数组编号时可以在汉字在HZ_TAB库中的编码前加128(0X80)作为标识, LCD在显示内容时,需要判断编号的值, 确定当前位内容是汉字还是西文,然后做调用相应的处理。菜单项的反亮显示采取的办法是将显示内容的所有字模数据按字节取反后再进行常规显示即可。图3为某一项中西文菜单混合显示流程,其中m=1表示该位为汉字, m=0表示该位为ASCII字符. 
 


2.2.3数据结构
本系统采用8个按钮来接受用户输入,8个按钮为上、下、左、右、回车、退回、加、减。为方便数据显示和处理。需要首先建立一个菜单窗口结构体并定义一个结构变量WinStruct,该结构中共有11个结构元素,分别是10个字符型和1个指针变量,指针变量指向需执行函数。 Typedef struct{ uchar Menulndex;//当前菜单索引号 uchar BackWinlndex;//当前窗口的上一窗口索引号 uchar NextDnlndex;//下一个菜单索引号,按下“上,下”键时当前菜单项上下移动 uchar NextUplndex;//或可修改参数数值向上下循环变化 uchar NextLIndex; //下一个菜单索引号,按下“左,右”键时当前菜单项左右移动 uchar NextRtlndex;//或在可修改参数位置上左右移动 uchar Key CrState; //按下“回车”键时用户选择确认或参数输入确定 uchar KeyBackState; //按下“退回”键时用户退出当前窗口,返回上一窗口 uchar KeyPlus;    / / 按下“加”键,可修改参数加1;uchar KeyMinus;    / / 按下“减”键,可修改参数减1;void( CurrentOperate)();//当前状态应该执行的功能操作 }WinStruct; 菜单项在LCD上显示,通过建立菜单项结构体,定义一个结构变量 MenuStruct。如下: Typedef struct{ uchar Menulndex; //当前菜单索引号 uchar NextWinlndex;//下一窗口索引号 uchar cursor_page ://菜单项起始页位置 uchar cursor_col;  / / 菜单项起始行位置 uchar type ; / / 菜单项显示的数据类型,16x16或16x8点阵等 uchar *data; / / 指向显示数据区 uchar dataNum;/ / 需要显示的数据的个数 uchar black; / / 是否反显菜单项 uchar modify ; / / 数据是否需要修改 } MenuStruct;
2.3 人机界面设计
人机交互设计的重点在于界面的显示、滚屏、光标的管理及参数的显示、修改和保存。系统在内存中特定区域开辟了1个LCD显示缓冲区,将要显示的整个窗口的点阵数据存放在此区间。LCD的显示程序从此区间中读取数据到LCD点阵数据存储区,借此,LCD显示程序可管理用户交互界面。用户可以用8个按键(向上、向下、向左、向右、确定、返回、加、减)在菜单方式下实现人机交互。
参数的输入、输出显示和保存是人机交互界面设计的重要环节。
下面以第二级菜单中的参数设置为例,进行详细介绍。在主菜单下,将光标移到“参数设置”,按下“确定”键,进入“参数设置”菜单。显示的内容有:设备参数,投切条件,保护定值,电容参数,时钟校准,通讯参数,等等。
装置出厂前已经对各参数进行初始化,存储在二维数组Array[19][5]中,每个参数一行,参数每一位的值都对应存储在数组中的相应位置。定义一个指针P指向Array,表示光标的位置,当然,进入“参数设置”菜单时P=Array[0][0],光标在首行的第一个X的位置,表示选中该参数位。按下“向上”、“向下”、“向左”、“向右”四个方向键来移动光标到待修改的那一位数字上时,P=Array[i][j]则根据按下的键不同而作相应的修改,一般如下:向上,i-1;向下,i +1;向左,j-1;向右,j+1。当然,首先要对原来的i,进行判断。遇到特殊情况要特殊处理。如光标原在某行的第一个参数位上,j= 0,按下向左的键则不改变光标。
选定待修改的那一位参数后,按“修改”键进行参数值的修改。过程如下:读取光标所在的那一位数字的值,每按一次加键,该值加1(在0—9之间循环),每按一次减键,该值减1(在0—9之间循环)。修改完一位后,把改值写入Array[i][j],移动光标继续修改其他的参数。一行参数修改完,经核对无误后按“确定”键(每按一次“确定”确认一行),新的参数值被修改存入机内对应的EEPROM 地址中。参数全部修改完后需要重新开机,否则修改无效。3 结束语
本文构建了基于MSP430F149、OCM12864图形点阵液晶模块和键盘的中文人机交互界面,实现了中文菜单显示及参数的输入、显示、修改和保存等功能,完成了系统所要求的显示任务。此方法也同样适应用于ARM7与DSP其他微控制器LCD液晶人机界面上。
本文创新点:充分利用了OCM12864的硬件资源,实现了友好的人机界面,并且文中介绍的方法具有非常好的灵活性和良好的可维护性,程序员可以在需要的时候很方便地修改菜单和增加子菜单,而不至于影响系统软件原有的结构,而且在此菜单编程方法基础上进行改进,还可增加滚屏,自动翻页等功能。

上一页  [1] [2] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:29,457.03000 毫秒