引言
本文研究采用了MAX7219和BC7281控制芯片来实现对LED的显示和控制的不同。
1.MAX7219 显示方式应用
1.1 MAX7219 简介
MAX7219 是MAXIM公司生产的8 位7 段LED串行输入/ 输出共阴显示驱动芯片,目前针对它的应用介绍较多[1,2]。MAX7219 提供了诸多寄存器,允许使用者对译码显示、显示亮度、扫描限制等诸多方面进行控制。
1.2 系统硬件连接
MAX7219 与单片机有三根引线连接:DIN、CLK 和LOAD。DIN 是串行数据输入端,CLK 为时钟频率,LOAD 用来锁存信号。
单片机以16 位数据包的形式将二进制数逐位发送到DIN 端,在CLK 的每一个上升沿将一位数据移入MAX7219 的移位寄存器。在16 位数据传送过程中,LOAD 一定要维持低电平,当16 位数据移入完,LOAD必须在第16 个CLK 上升沿同时或之后, 但在下一个CLK 上升沿之前变高,将数据装入内部相应寄存器,否则数据将丢失。在多片MAX7219 级联使用时,还需要将上一片的DOUT 引脚连接到下一片的DIN,CLK 与LOAD 引脚公用。
16 位数据格式如下:
显示电路连接如下(仅画出主要引脚):
1.3 程序部分代码
显示部分代码如下:
2.BC7281 显示方式应用
2.1 BC7281 简介
BC7281 是16 位LED数码管显示及键盘接口专用芯片,其各位可独立按不同的译码或不译码显示,可独立控制闪烁属性及显示亮度,并可随时改变闪烁频率。
BC7281 内部包括16 个显示寄存器和15 个控制寄存器,地址范围从00H-1FH;其中显示寄存器的地址为00H-0FH, 而最为常用的控制寄存器是工作模式寄存器,地址12H,其各数据位意义如下:
MOD:移位寄存器模式控制。当MOD=0,适用于一般移位寄存器,如74HC164等;当MOD=1,适用于带有二级锁存的移位寄存器,如74HC595等。
INV:段驱动数据输出极性控制。当INV=0 时,各位显示寄存器的数据直接通过移位寄存器输出作为段驱动数据;当INV=1 时,显示寄存器的内容经过反相后才从移位寄存器输出。
KMS:键盘工作模式选择。
BMS:闪烁控制模式选择。当BMS=0 时,采用一个闪烁开关控制寄存器(10H) 控制各显示位的闪烁属性,第8-15 个显示位不能单独控制;当BMS=1 时,工作于扩展模式,由10H 控制0-7 位的闪烁属性,由扩展控制寄存器19H 控制8-15 位的闪烁属性。
ES:节能模式。该位置为1 时,有效驱动电流减小为正常状态的一半(显示亮度随之降低)。
KO:显示关闭模式。该位置为1 时,显示扫描关闭,但键盘仍保持工作。(显示寄存器内容不被删除,并可以更新)。
RP:寄存器保护模式。当RP=1 时,BC7281 内部的寄存器不能够直接改写。
SCN:扫描使能控制。当SCN=0 时,扫描被禁止,包括显示扫描和键盘扫描;当SCN=1 时,扫描被使能。
2.2 系统硬件连接
BC7281 在显示时采用高速二线接口与MCU 进行通讯,只占用很少的I/O 口资源和主机时间,两根线分别为数据线DAT 和同步时钟线CLK。DAT:与MCU 串行通讯数据端,为双向数据传输口,作为输出时为漏极开路输出,需要外接上拉电阻;CLK:与MCU 通讯时钟端,下降沿有效。
接口空闲时,BC7281 的DAT 引脚处于高阻输入状态,上拉电阻使得DAT 线上为高电平。开始传送数据时,MCU 必须先与BC7281 建立握手信号,MCU 先向BC7281 发送若干CLK 时钟脉冲, 同时检测DAT 线,而BC7281 收到握手脉冲后会在DAT 线上输出一低电平, 表示准备好接收MCU 数据,MCU 检测到DAT 低电平后,在规定时间内继续发送一个CLK 脉冲,提示BC7281 将DAT 引脚恢复高阻输入状态,使得DAT 线恢复成高电平,MCU 在检测该高电平后, 可以开始发送数据。在每个CLK 的下降沿,数据移入存储器。
串行接口数据宽度为8 位, 两个字节一组构成一条完整指令。指令格式如下:
显示电路连接如下(仅画出主要引脚):
2.3 程序部分代码
显示部分代码如下:
3.两种显示方式应用对比
系统最早采用的是MAX7219 的显示方式。
MAX7219 在硬件连接上要比BC7281 简单很多, 但是在使用中偶发不稳定现象, 特别是级联多片(>=3)MAX7219 使用的情况下, 发生死机状况; 后来换成BC7281 的显示方式,系统整体稳定性大幅提高。而且使用BC7281 芯片, 系统初始化比MAX7219 简单,其多数寄存器可以缺省值设置,占用的I/O 资源较少,且成本相对具备优势。