□ 梁 刚 胡 燕
对于现代仪器设备而言,便捷可靠的人机交互方式是必不可少的,其中最常见的就是由键盘和数码管组合提供的交互方式。在研制某型训练器材的过程中,为了实现对其中一个人机交互界面的模拟,必须要同时完成对多达13个七段数码管、6个LED灯以及16个按键的组合控制。要解决这个问题,在常见的由分立元件实现的电路中,要涉及译码、循环扫描、键盘消抖等诸多环节,型号繁多的外围器件混合使用,一方面增加了主控芯片I/O口线的占用,同时也容易使系统整体可靠性下降。面对这些问题,最好的解决办法就是采用显示、键盘功能兼备的芯片,而由Maxim公司出品的MAX6954就是这样一种芯片。
MAX6954是一种采用四线串行接口的LED驱动器,可以控制七段数码管、14段数码管、16段数码管以及多达16×8位的LED点阵显示器(或相同数量的分立LED灯),并可通过串行端口进行级联,此外,该芯片针对数码管及LED的显示特点,提供了设置方便的亮度设置及闪烁控制等功能。在键盘控制方面,该芯片包括了5个I/O扩展端口(GPIO)以及可对这些端口进行设置以便对32个按键进行自动扫描和消抖操作的控制逻辑电路。
(一)芯片的基本硬件特性。MAX6954的工作电源电压涵盖了2.7V到5.5V。因此,可以直接用于典型的3.3V电源电压控制系统和5V电源电压控制系统,具有良好的电源适用性。该芯片的外部引脚按照功能可划分为五大类:分别是电源引脚、SPI四线通信引脚、段/位驱动引脚、GPIO引脚、以及其他辅助引脚。
作为一种键盘显示扩展芯片,MAX6954与系统主控芯片之间的通信是通过兼容SPI的四线串行接口实现的,包括三个输入口:时钟引脚CLK,片选引脚和数据输入脚DIN,以及一个数据输出脚DOUT。
(二)兼容SPI的四线端口的使用。在应用该键盘显示扩展芯片时,用户最需要注意的就是这个SPI口的特性,在掌握了其工作时序和数据格式之后,再对芯片内部寄存器的功用加以熟悉,也就基本掌握了这种芯片的使用方法。
这四个引脚有以下一些地方需要注意:第一,在数据及时钟输入或输出该器件的时候,¯C¯S必须保持低电平,也就是主控芯片必须为¯C¯S引脚提供最高不超过0.6V的电平。第二,当器件在CLK时钟上升沿对DIN采样的时候,DIN信号必须保持稳定。第三,虽然SPI协议规定当MAX6954不可读写时(也就是¯C¯S为高电平时),DOUT引脚应该处于高阻态,但是MAX6954的DOUT引脚却不会如此,因此,如果将多个MAX6954的DOUT引脚并联使用,会出现意想不到的情况。
(一)硬件部分方案。在某型训练器材当中,有关人机交互的部分要求实现对13个七段数码管、6个LED灯以及16个按键的控制,我们采用了两片MAX6954分别控制显示部分和按键部分的方案,这样,虽然增加了一个芯片,但是芯片属于同一种型号,并未增加系统的复杂性,而且,将显示输出与键盘输入分开,更有利于主控程序流程的清晰、明了。本方案中,有关MAX6954显示部分的电路如图1、图2所示:
图2 显示部分图2
在该电路中,所有的七段数码管均采用共阴型。与其他常见的驱动器不同,MAX6954的驱动引脚数量较少,它是通过利用一种将部分端口交替作为阳极和阴极驱动器的多路开关技术来实现这一点的。
在上面的电路图中,引脚O0到O7作为共阴数码管的位驱动,用于确定是否显示某一位,O0到O18则用于确定数码管的某个段是否点亮。在上面的电路中,每两位数码管共用一个位驱动,这两位数码管的每一个段则由MAX6954的不同驱动脚驱动,因此,不会出现共用一个位驱动的两位数码管显示完全一样的情况。对于单独的六个LED管,也采用了与七段数码管相同的办法,将其中的每一个LED看作是数码管中的一个段,这样,就同时实现了对数码管和单独的LED的有效驱动。图3、图4是本方案中的键盘驱动部分硬件(键盘为普通行列键盘)连接图。
图3 键盘部分图1
图4 键盘部分图2
从对MAX6954的功能描述中可以知道,该芯片通过P0到P3引脚以及O0到O7引脚的组合来实现对按键的扫描,其中P0到P3负责列扫描,O0到O7负责行扫描。由于本方案中用到的按键共有16个,因此,只需要P0和P1两个列扫描引脚即可实现,另外,为了防止多个按键被同时按下时,引起行扫描引脚短路(O0到O7引脚都是输出引脚,短路容易引起引脚损坏),因此,需要在按键上串联二极管。另外,GPIO引脚中的P4引脚作为中断输出引脚,当有按键被按下时,该引脚会向主控制器发出中断信号,以便主控制器及时读取相应的键值。另外,在硬件设计方面还有以下几点需要注意:一是MAX6954要想正常工作必须有时钟源,在本方案中,采用了内部时钟;二是为了避免信号反射,在SPI通信口的四根口线引脚上必须加上电容,在本方案中,电容值确定为33pF,实验证明,通信稳定可靠。
(二)软件部分方案。软件部分包括初始化、数码管数据显示、闪烁显示、键盘处理程序等,下面对该模拟训练器材方案中的初始化部分和键盘处理部分加以介绍。
1.芯片初始化。在本系统的软件部分,首先根据系统的实际需求,对MAX6954的相应寄存器进行了设置。设置流程如下所示:
Spi_6954(0x06,0x80);//设置32键扫描模式,P4设置为中断输出,P0至P3为输出。
Spi_6954(0x08,0xff);//设置P0口连接的所有按键按下后均可引起MAX6954的中断输出
Spi_6954(0x09,0xff);//设置P1口连接的所有按键按下后均可引起MAX6954的中断输出
Spi_6954(0x0a,0x00);//设置P2口连接的所有按键按下后不能引起中断输出
Spi_6954(0x0b,0x00);//设置P3口连接的所有按键按下后不能引起中断输出
Spi_6954(0x04,0x01);//正常工作模式
Spi_6954(0x02,0x1f);//设置最大亮度
Spi_6954(0x01,0x00);//单一点亮模式
Spi_6954(0x03,0x07);//设置为8对七段数码管显示模式。
具体初始化设置过程可根据实际情况加以增减。
2.键盘处理程序。在本系统中,当有按键按下时,MAX6954会通过P4引脚向主芯片发出中断信号,当主芯片响应中断后,会在中断程序里设置相应的标志变量并退出。在主程序中,检测到标志变量发生改变后,会向MAX6954发出读回键值的命令。以处理P0连接的按键为例,读回键值的流程图如5所示。
图5 读回键值流程图
该技术方案应用于某型侦察模拟训练器材的人机界面部分,实现了良好的显示和键盘控制。实践证明,利用MAX6954设计的显示和键盘控制电路结构简单、功能可靠,有非常广阔的应用前景。
[1]温德尔;谢运祥、王晓刚译.LED驱动电路设计[M].北京:人民邮电出版社,2009
[2]冯先成.单片机应用系统设计[M].北京:北京航空航天大学出版社,2009