PLC不仅具有传统继电器控制系统的控制功能,而且能扩展输入输出模块,特别是可以扩展一些智能控制模块,构成不同的控制系统,将模拟量输入输出控制和现代控制方法融为一体,实现智能控制、闭环控制、多控制功能一体的综合控制。现代PLC以集成度高、功能强、抗干扰能力强、组态灵活、工作稳定受到普遍欢迎,在传统工业的现代化改造中发挥越来越重要的作用。但PLC设计的控制系统显示界面比较单调,一般通过观察控制柜上设置的指示灯或PLC本身的LED灯来了解控制仪的状态,对于像液位采集与控制之类的仪器仪表,这种显示界面远远不够。为了弥补PLC显示界面的不足,可以采用LED光柱显示器或PC机显示。本文提出了一种基于MAX7219的LED光柱显示器与PLC的接口技术。
1 LED光柱显示器简介
LED光柱显示器是由若干LED管芯按规定长度等距排列组成,因具有显示醒目、直观,亮度均匀,可靠性高以及成本低、抗振、耐冲击、体积小、重量轻且具有连续显示工业参数变化趋势等特点已用于各种显示调节仪表,作为过程量或控制量以及阀位的模拟指示。LED光柱显示器具有红、绿、橙、黄等不同颜色,有共阴和共阳两种类型。按所含发光二极管数有101线(或100线)、64线、51线等规格,其中一个LED(对101线、51线等产品)一般用于电源指示,也可以作其他用途或不用,而另外的LED一般组成×8或×10结构,采用行列扫描方式以节省资源。如100线有10×10结构和8×13结构,64线有8×8结构。本文选用64线的共阴接法的LED光柱显示器。
2 MAX7219管脚和功能说明
MAX7219是MAXIM公司生产的串行输入/输出共阴极数码管显示驱动芯片,一片MAX7219可驱动8个7段(包括小数点共8段)数字LED或64线LED光柱显示器。该芯片具有10 MHz传输率的三线串行接口可与任何微处理器相连,只需一个外接电阻即可设置所有LED的段电流。它的操作很简单,PLC只需通过三个输出端口就可以将相关的指令写入MAX7219的内部指令和数据寄存器,同时它还允许用户选择多种译码方式和译码位。此外它还支持多片MAX7219串联方式,这样PLC就可以通过3根线(即串行数据线、串行时钟线和芯片选通线)控制更多的LED显示。
MAX7219引脚排列参见图1。其中,SEG A~SEG G和SEG DP分别为LED数码管七段驱动器线和小数点驱动器,供给显示器电流,用于驱动LED光柱显示器时则为每段中的8只发光二极管提供驱动电流;DIG0~DIG7为8位数字位或光柱显示器的8段驱动线输入,它从共阴极显示器吸收电流。ISET为电流调节端,通过一只电阻与电源相连来调节最大段电流,以改变LED显示亮度。DIN是串行数据输入端,DOUT为串行数据输出端,输入到DIN的数据在16.5个时钟周期后送到DOUT端,以便在级联时传送到下一片MAX7219。CLK最高频率可达10 MHz,在输入时钟的每个上升沿均有一位数据由DIN端移入到内部寄存器中;选通端LOAD用来装载数据,在LOAD的上升沿,16位串行数据被锁存到数据或控制寄存器中,LOAD必须在第16个时钟上升沿的同时或之后、在下一个时钟上升沿之前变高,否则数据将被丢失。每组数据为16位二进制数据包,其格式如表1所示。
其中D15~D12位不用,可为任意值,通常全取1。D11~D8位为内部5个控制寄存器和8个LED显示数据寄存器的地址,D7~D0位为控制寄存器的命令字或8个LED数码管待显示的数据,因为控制寄存器与显示数据寄存器独立编址,所以可以通过程序对每个寄存器进行操作。一般情况下,程序先送控制命令,后向显示寄存器送数据,每16位为一组,从高位地址字节最高位开始送,直到低位数据字节最后一位。MAX7219内部有14个可寻址的控制寄存器和数据寄存器,各寄存器的功能及地址如表2所示。
其中,地址F0H为空操作寄存器,允许数据从输入到输出直接通过,可用于设备串接。 地址F1H~F8H为显示RAM区,分别对应DIG0~DIG7引脚的8段LED显示数据。
地址F9H为译码控制寄存器,译码方式寄存器可以对每个数据位进行设置,使其为B码译码方式或不译码方式。寄存器中的每一位和一个数据位相对应。为“1”时,选择B译码方式,为“0”选择不译码方式。当用于驱动LED光柱显示器时,应设置为不译码方式,此时,数据D7~D0分别对应每段光柱显示器VD8~VD1发光二极管。
地址FAH为显示亮度寄存器,通过对该寄存器的D3~D0位写入不同的数值可实现对LED显示亮度的控制(D7~D4不用,可为任意值),从×0H到×FH共16级可调。D3~D0的值越大,LED显示越亮。在模拟控制方式时,调节V+与ISET端之间的外接电阻Rset的阻值可控制LED段电流的大小,达到硬件调节亮度的目的。
地址FBH为扫描段数寄存器,其D3~D0位数值设定为00H~07H(D7~D4不用,可为任意值),表
示显示器动态扫描段数为1~8。
地址FCH为待机模式控制寄存器,当其D0位为0时(D7~D1不用,可为任意值),MAX7219处于停机状态,扫描振荡器停振,所有显示器消隐,寄存器数据保持不变;当D0为1时,正常工作。地址FFH为显示测试寄存器,当其D0位为0时(D7~D1不用,可为任意值),正常工作;当D0为1时处于测试状态,全部LED显示器的所有字段都以最大亮度接通显示。
3 硬件组成
现以三菱公司小型PLC系列继电器输出型为例,LED光柱显示器与PLC的接口电路如图1所示。64线光柱显示器构成8×8结构,由一片MAX7219驱动。因PLC输出模块已具有隔离PLC内部电路与外部执行元件的作用,因此将PLC的Y0,Y1,Y2输出点经电平转换后分别作为MAX7219的时钟脉冲、装载数据、串行数据的输入端,连接到MAX7219的CLK,LOAD,DIN脚;MAX7219的SEG A~SEG F、SEGDP端分别连接到每段LED光柱显示器对应的VD1~VD8发光二极管的阳极,DIG0~7分别接各段光柱显示器的共阴极,以实现段选。电阻Rset值用于调节LED的亮度,Rset的最小值为9.53 kΩ。
4 驱动程序的设计
4.1 初始化
MAX7219按5个控制寄存器规定的方式对显示的LED线数自动扫描显示,所以在显示程序之前,必须初始化5个控制寄存器。其参考设置见表3所示。
4.2 软件设计
在PLC中,可以用16位的数据寄存器来存放16位的二进制数据包,其中高位字节存放地址字节,低位字节存放低位命令或显示的数字。例如,我们可以在PLC的数据存储区中建立一个LED显示缓冲区,显示缓冲区首地址为D0,末地址为D7,分别对应各显示段的段码和位地址,用程序控制数据以16位数据包的形式串行送入。假设PLC通过输入模块将工业现场的状态信息读入,通过用户程序的运算与操作,欲使LED光柱显示器有46线亮时,其显示区的数据格式如表4所示。
MAX7219的控制寄存器和显示寄存器均独立编址,显示程序实际上就是PLC在Y0(CLK),Y1(LOAD)时序的配合下不断通过Y2(DIN)向MAX7219的相应控制寄存器和数据显示寄存器写入16位二进制数据包的过程。所以问题的关键在于编写一个通用写入子程序,将D0等的内容从高位到低位在Y0(CLK)的作用下依次移入移位寄存器,最后由Y1(LOAD)的上升沿锁存到相应的内部控制寄存器和数据显示寄存器中去。写入子程序的梯形图程序如图2所示,PLC与MAX7219间串行通信工作流程图如图3所示。
5 结 语
基于MAX7219的LED光柱显示器与PLC的接口电路,数码显示器驱动芯片MAX7219只占用可编程控制器的3个输出点,通过芯片级联可成倍增加扩展显示LED的数量。应用时可利用PLC强大的编程能力,根据实际情况灵活编程,实现多线LED的显示和功能控制,利用光柱显示器色彩变化,还可达到显示与警示相结合的目的。