随着科学技术日益的发展,广播电视设备的国产化程度也越来越高。在一个性能优良的广播电视系统中,友好的中文人机交互界面也尤为重要。本文设计了一种广播电视系统人机交互界面系统,以满足“数字立体声调频调制器”显控要求为前提,采用MSP430F149单片机作为系统的MCU ;液晶屏为满足汉字4行11列、字母4行22列显示要求的LCM168651显示模块;并满足用户通过键盘输入的方式进行工作参数设置和工作状态查询的人机交互要求。
1.系统组成
本系统主要由三个模块组成,即以MSP430F149单片机为核心的MCU;以LCM168651为主要部件的菜单显示模块;以及以ZLG7289B为主的键盘扫描管理模块。
1.1 单片机控制模块
本系统中单片机控制模块主要完成显示、控制信息的采集、处理以及与“数字立体声调频调制器”其他分系统之间的通信。选型要求主要考虑以下几个方面:
·低功耗; ·具有丰富的I/O端口及定时、中断功能;
·3v左右的工作电压; ·至少一个串行通信接口;
·大于8KB的存储空间;·基本时钟模块在4MHz以上; ·具有加密保护功能。
根据以上的要求,我们选用TI公司推出的超低功耗Flash型16位RISC指令集单片机MSP430F149。根据其主要性能特点,完全可以满足设计要求。
1.2 菜单显示模块
菜单显示模块主要完成系统信息的时时显示功能,并能在键盘控制下滚动显示不同的信息。“数字立体声调频调制器”在显示模块主要有以下要求:
·同时显示信息满足至少汉字3行10列;·可卷动显示系统信息;
·并串行接口,电路简单;·5v以内工作电压;·显示清晰无光斑,抗干扰能力强
我们设计选用北京青云公司的图形点阵液晶模块LCM168651,该模块属于被动显示,受外界光线干扰小,不产生电磁干扰,显示内容清晰,分辨率高。
1.3 键盘控制模块
键盘控制模块是人机交互界面的重要组成模块,满足用户通过键盘输入的方式进行工作参数的设置和工作状态的查询。“数字立体声调频调制器”对该模块的主要要求是:
·控制键盘的数量最少6个;·易于与微控制系统连接;·可靠性高。
我们设计选用广州周立功单片机发展有限公司自行设计的数码管显示驱动及键盘扫描管理芯片ZLG7289B,可直接驱动8位共阴式数码管,还可以扫描管理多达64只按键。该芯片与微控制系统的工作电压都可以控制在3v左右,避免了与微控制系统之间电平不匹配问题。
2 系统硬件设计
2.1 系统原理框图
为了便于对系统工作原理的理解,这里首先给出系统的原理框图,如图1所示。
图1 系统原理框图
系统中MSP430F149单片机为微控制器,由其分配系统资源与液晶显示模块使用并行总线进行通信、与键盘控制模块使用SPI串行总线进行通信。微控制器的程序写入及调试采用在线编程模式进行,系统使用5v电源供电,系统时钟为4MHz。
系统的工作原理可以概述为两个方面:一方面微控制器通过扩展接口时时接收来自“数字立体声调频调制器”系统的状态信息,这些状态信息微控制器在微控制器内部以不同的变量形式予以体现,微控制器再将这些变量通过并行总线提供给液晶显示模块修改相应的显示参数,以完成系统信息的显示及更新工作;另一方面,微控制器以查询的方式检测键盘控制模块是否有控制请求,当有控制请求时,微控制器根据键值的不同对液晶显示模块发出不同的指令,以更换显示内容或修改系统参数,更换显示内容即工作状态的查询,当修改系统参数时,微控制器还负责将修改过的系统参数传递给“数字立体声调频调制器”系统。
2.2 液晶显示原理
LCM168651是一种图形点阵液晶,该模块将液晶芯片与控制芯片集成在一起,与外界的联系是以一系列接口的形式出现的。下面着重介绍一下该模块的具体使用方法。
液晶屏幕被划分为168*65个点阵,每个汉字需要占据16*16个点阵,字符或数字占据8*16个点阵,可见满屏显示时最多可以显示汉字4行11列或字符、数字4行22列。
汉字或字符、数字的字库可以从国标字库中查阅,也可以利用专门的软件分别生成所需要的汉字或字符,本设计使用的方法就是后者。所使用的软件是ZIMO21.EXE,该软件可以根据使用者的需要一次获取一个或多个汉字或字符的字库,基本操作如下:
l 汉字 图像上下颠倒 C51取膜 前后16个字节交换
l 字母或者数字 图像上下颠倒 C51取膜 前后8个字节交换。
例如:显示汉字——广播电视(宋体12号字,ZIMO21.EXE的默认设置),使用者可以直接在ZIMO21.EXE软件中键入“广播电视”,设置“图像上下颠倒”,选择“C51取膜”,则汉字“广播电视”的字库便生成了。如下所示:
/*-- 文字: 广 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x40,0x30,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xFC,0x04,0x04,0x04,0x04,0x05,0x06,0x04,0x04,0x04,0x04,0x04,0x04,0x00
/*-- 文字: 播 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x42,0x81,0x7F,0x00,0x01,0x01,0xFF,0x49,0x49,0x7F,0x49,0x49,0xFF,0x01,0x00,0x00,
0x08,0x08,0xFF,0x88,0x48,0x12,0x96,0x5A,0x32,0xFE,0x31,0x59,0x95,0x91,0x90,0x00
/*-- 文字: 电 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00,
0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,
/*-- 文字: 视 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x02,0x01,0x00,0xFF,0x00,0x87,0x42,0x21,0x18,0x06,0x01,0x3E,0x40,0x43,0x70,0x00,
0x08,0x08,0x89,0x4E,0xAA,0x18,0x00,0xFE,0x02,0x02,0xFA,0x02,0x02,0xFE,0x00,0x00,
将各个汉字的字库“前后16个字节交换”之后按一定顺序存储到特定的数组chinese[]中,每个汉字字库第一个字节在数组中的位置就是该汉字的序号。此时字库就建立完毕。下面的工作就是将汉字显示到液晶屏幕的指定位置上,步骤:1)初始化液晶模块;2)设置汉字在屏幕的位置坐标(X、Y);3)将汉字字库信息通过并口逐个传递给液晶模块进行显示。
上述过程1)是以向液晶模块写入一系列命令字的形式完成的;2)、3)步骤一般则是以自命名函数的形式完成的,比如本方案中使用disp_Chinese[X,Y,Number]来完成,其中X,Y代表屏幕坐标,Number代表汉字在数组中的位置。设计过程中可以根据需要设置汉字的字体、大小等参数,以达到美观的艺术效果。
2.3 键盘控制原理
本设计中在键盘控制模块主要使用了ZLG7289B ,该芯片可直接驱动8 位共阴式数码管(或64 只独立LED),同时还可以扫描管理多达64 只按键。
ZLG7289B外围电路简单,与微控制器系统之间只需要三根线CS、CLK、DIO,即所谓的SPI串行总线的模式即可进行通信,扩展使用非常方便,在扫描键盘时,已经采取了消抖动措施,因此在程序中不必另外编写消抖动,非常适合于本方案设计的需要。
其基本原理如下:某个按键按下时,ZLG7289B 的INT 引脚会出现低电平,向微控制器发出中断请求。微控制器既可以采用中断方式处理,也可以采用查询/INT 引脚电平状态的方法处理。在/INT 引脚出现低电平时及时地读取键值。读取键值后,/INT引脚并不会自动恢复为高电平,一定要等到按键抬起为止。如果没有及时读取按键值,则按键抬起后INT 引脚也将恢复到高电平,而在INT 引脚处于高电平期间,试图去读取键值将可能得不到有意义的数据。按键K0~K5分别对应键值0~5,微控制器即可根据键值的不同作出不同的处理。