0 引言
在智能仪表中,经常会用到键盘、数码管等外设。因此,一个稳定、占用系统资源少的人机对话通道设计非常重要。传统的键盘与数码管解决方案,由于键盘与数码管是分离的,因而电路连接比较复杂,不管是独立式键盘还是矩阵式键盘,都会浪费微控制器的端口资源,而且都需要人为进行去抖动处理,且抗干扰性差。而数码管部分,不管是静态显示方式还是动态显示方式,在不进行锁存器扩展的前提下。仍然要占用8根I/O端口线,这将严重浪费系统的端口资源。
ZLG7290可完全克服上述弊端。它采用I2C总线接口,与微控制器的连接仅需两根信号线,硬件电路比较简单。而且可以管理多达64只独立的数码管、64只独立按键,并可提供自动消除抖动、连击键计数等功能。这对于传统的键盘与数码管解决方案,无疑是不可想象的。强大的功能,丰富的资源,良好的接口,使得ZLG7290比传统的键盘与数码管解决方案且有更大的优越性。因此,在现代智能仪表的设计中,通过ZLG7290可为系统设计工程师设计出良好的人机对话通道,从而提供了一种理想的解决方案。
1 ZLG7290的工作原理
ZLG7290的核心是一块ZLG7290B芯片,它采用I2C接口,能直接驱动8位共阴式数码管,同时可扫描管理多达64只按键,实现人机对话的功能资源十分丰富。除具有自动消除抖动功能外,它还具有段闪烁、段点亮、段熄灭、功能键、连击键计数等强大功能,并可提供10种数字和21种字母的译码显示功能,用户可以直接向显示缓存写入显示数据,而且无需外接元件即可直接驱动数码管,还可扩展驱动电压和电流。此外,ZLG7290B的电路简单,使用也很方便。
用户按下某个键时,ZLG7290的INT引脚会产生一个低电平的中断请求信号,读取键值后,中断信号就会自动撤销。正常情况下,微控制器只需要判断INT引脚就可以得到键盘输入的信息。微控制器可通过两种方式得到用户的键盘输入信息。其一是中断方式,该方式的优点是抗干扰能力强,缺点是要占用微控制器的一个外部中断源。其二是查询方式,即通过不断查询INT引脚来判断是否有键按下,该方式可以节省微控制器的一根I/O口线,但是代价是I2C总线处于频繁的活动状态,消耗电流多并且不利于抗干扰。
2基于ZLG7290的无功补偿控制器设计
由于采用了I2C总线接口,因而用ZLG7290与微控制器设计电力仪表的硬件电路连接非常简单。它只需要两根信号线(一根数据线SDA,一根时钟信号线SCL)。但应注意进行I2C通信的双方要共地,并应用,INT传递键盘中断信号。微控制器通过RST可以将ZLG7290复位。图1是以电力系统中广泛使用的低压无功补偿控制器的设计为实例,给出的ZLG7290的硬件连接电路图。
本系统用ZLG7290与微控制器来构成I2C总线通信系统,SCT89C55本身虽没有I2C总线控制器,但采用模拟I2C总线仍可进行I2C总线通信。
低压无功补偿控制器的人机对话通道输出中需要显示的参数有电压、电流、功率、功率因数、上限、下限、电容值、回路数、ABC三相等等,设计时可以分别用U、I、P、PF、-、-、C、LOOP、ABC等表示。ZLG7290可以显示的值有0~9、0.、A、b、C、d、E、F、H、I、J、L、g、O、P、U、t、y、c、r、o,只要合理编码,就可以满足设备的显示需求。本低压无功补偿控制器中的键盘有三种状态:一是菜单设置状态,可用变量menu_set表征,用户可以观察以前设置的一些参数;二是手动电容投切状态,可用变量cap_set表征,用户可以直接手动控制电容的投或切;三是参数设置状态,可用变量pra_set表征,用户可以对参数进行设置,且加减的步长可由用户设定。这三个变量的组合几乎可以涵盖低压无功补偿控制器中键盘和数码管的所有可能情况。程序流程图中。这三个变量分别简记为:m_set、c_set、p_set。图2是其软件程序流程图。
限于篇幅,本文仅给出模拟I2C总线引脚、部分初始化和键盘处理等三部分程序:
在人机对话通道的设计中。如果用户还要完成更多、更复杂的功能(如分更多级单,进行更多级的参数设置,显示更多级参数,菜单循环显示,更多按键功能等),只需要再定义几个状态变量即可按照本文程序设计的思想来实现。简言之,ZLG7290几乎涵盖了所有键盘与数码管的解决方案,系统设计工程师可以随心所欲地设计出符合各种要求的人机对话通道。
3结束语
实验结果表明,ZLG7290具有响应速度快、功能强大、电路简单、抗干扰能力强等优点。相比传统的键盘与数码管解决方案,ZLG7290无疑具有巨大的优越性。
按照本文的软件设计思想,也可将程序方便地移植到其它系统中(如ARM,DSP系统中),且通用性强,可移植性好。因此,本设计可进一步推广到电能表、出租车计价器、用电管理终端,以及工业测控、汽车电子等领域。 |