基于MSP430F149单片机的人机界面设计———基于MSP430F149单片机的人机界面设计
扫描二维码
随时随地手机看文章
0引言
近年来,随着电子技术和集成电路制造工艺的飞速发展,越来越多的领域应用到以单片机为控制核心的现代智能仪器设备,如果在这些以单片机为核心的控制系统中配上人机交互界面,通过液晶显示器和按键配合操作可更方便有效地完成各种功能选择、参数设置和分析结果显示,采用汉字显示菜单,界面友好且直观。随着液晶显示技术的进步,高质量的点阵液晶显示模块由于具有显示信息丰富、功耗低、体积小、质量小、无辐射以及使用寿命长等优点被日趋广泛地应用于各种嵌入式系统中,同时低功耗特性也贯穿于中文人机界面的设计始终。现以电力系统配电变压器监测终端(TTU)的人机交互部分为例,介绍一种使用OCM12864-3型图形点阵液晶显示模块实现中文窗口菜单界面的方法。 1 系统的硬件结构
1.1 MSP430F14X微控制器简介
MSP430F14X微控制器是德州仪器公司新开发的一类具16位总线的单片机,它基于真正的正交16位RISCCPU内核,具有16个可单周期全寻址的16位寄存器,仅27条的精简指令以及7种均采用双重取数据技术(DDFT)的一致性寻址方式。DDFT技术利用每个时钟脉冲对存储器进行两次数据存取操作,从而不再需要复杂的时钟乘法和指令流水线方案。MSP430F14X系列MCU具有丰富的片上外围模块,片内包括有精密硬件乘法器、多达60KB的FLASH,2KB的RAM、1个看门狗、6个P口(P1和P2还具有中断功能)、12位A/D转换器、2个16位定时器、高精度比较器、高速的USART通信端口,1个DCO内部振荡器和2个外部时钟等常用资源,可实现对液晶显示器的检测、解调和显示。与现代程序设计技术以及高级语言(如C语言)结合使用,使得MSP430的体系结构更加高效,从而在工程技术,特别是PDA产品开发中得以广泛应用 [1]。
1.2 OCM12864-3型液晶显示模块简介
OCM12864是一种128×64点阵(EL背光)的液晶显示器。它由两片带控制器的列驱动电路KS0108和一片行驱动电路KS0107组成主要硬件电路,KS0108将控制显示屏分为左右半屏,通过CS1,CS2选择。整个屏从上到下64行分为8页,每列8行页地址范围为B8H-BFH,列地址范围为40H-7FH,数据为纵向读写,即每页的第一行对应D0,第八行对应D7。每个驱动芯片带有64×64位(512 B)的RAM缓冲区,其中存储的数据即为被显示内容的点阵信息。通过选择对应的RAM 页地址和列地址,微控制器可以访问全部RAM 字节。显示RAM 的每一位对应显示屏上的一个点。显示的实现,就是显示RAM 内容中相应位为1,该点阵亮,相应位为0,该点阵无显示。对存储器的读取是从头至尾的,但在屏幕上显示的位置是可以设置的,通过对显示起始行的设定来设定显示位置[2]。
1.3 硬件接口电路
由于该款液晶显示屏将接口电路直接引出,因此对于用户而言,整体设计大大简化,只需考虑单片机与接口电路间的连接即可。MSP430F149与OCM12864 的线路连接如图1所示。该款液晶显示模块有13条信号线:(1)DB0一DB7:数据总线。(2)CS:片选信号,低电平有效。当单片机访问OCM-12864时,将其置低。(3)RS:数据/指令选择信号,高电平:数据 D0-D7将送入显示RAM;低电平:数据 D0-D7将送入指令寄存器执行。(4)R/W:读 写选择信号,高电平:读数据;低电平:写数据。 (5)E:读写使能信号,高电平有效,下降沿锁定数据。(6)RET:复位信号,低电平有效[3]。
由于MSP430的I/O口都是复用端口,因此必须将用到的引脚设为输入/输出口。此外,MSP430是3.3供电,而LCD是5V驱动的,我们可以在MSP430的输出口对地接3.6V的嵌位二极管,在保证MSP的端口电压不超过极限值的前提下,实现MSP430到LCD的电平转换. 2 系统的软件设计
2.1基本驱动函数编写首先使用C语言在头文件中对OCM12864控制线进行定义,然后编写LCD驱动函数,这些函数包括模块初始化、写指令代码、写显示数据、读显示数据、写菜单项、清屏、清页等函数。
2.2 LCD显示菜单设计
2.2.1菜单界面设计 本系统应用于无功补偿控制器,要求显示电网三相电压、电流值,无功功率、有功功率、无功因数,20次的电压谐波含量,无功补偿控制方式自动/手动选择,参数设置等。针对显示要求把整个系统设计成多级屏幕(窗口),又设计成多级主菜单,类似的功能放在一个主菜单菜单项下构成子菜单目录。如果菜单目录项过多,多屏显示此菜单目录。通过分级,使操作人员能很直观快速找到自己当前需要的菜单项,液晶屏菜单界面设置如图2所示。
2.2.2建表
字符或数字在点阵液晶中的显示是通过写相应的内码(1点亮,0灭)实现的,结合整个菜单设计,需要显示的文字并不多,可以先做好码表,把用到的汉字对应的内码保存在一个名为HZ_TAB的表中,每个16xl6点阵的字符需要32个byte表示;把要用到的数字0~9和字母对应的16x8点阵内码保存在一个名NUM_JAB的表中,每个需要16个byte表示;把图片保存在PIC_TAB表中,需要byte数根据大小而定。16x16点阵汉字和16x8点阵数字、字母和任意大小黑白图片字模数据库可由专门的字模提取软件提取字模建立。