MAX7219在MC68HC908系统中的应用

时间:2023-07-24

  摘 要: MAX7219是一个采用3线串行接口的8位共阴极7段LED显示驱动器。本文分析了MAX7219各个寄存器的功能,并结合MAX7219的工作时序,给出了MAX7219在Motorola MC68HC908单片机系统中的一个应用实例。


  关键词: MCU;MAX7219;LED Motorola MC68HC908
  MAX7219工作时序及其寄存器

  MAX7219是一个高性能的多位LED显示驱动器,可同时驱动8位共阴极LED或64个独立的LED。其内部结构框图如主要包括移位寄存器、控制寄存器、译码器、数位与段驱动器以及亮度调节和多路扫描电路等。


  MAX7219采用串行接口方式,只需LOAD、DIN、CLK三个管脚便可实现数据传送。DIN管脚上的16位串行数据包不受LOAD状态的影响,在每个CLK的上升沿被移入到内部16位移位寄存器中。然后,在LOAD的上升沿数据被锁存到数字或控制寄存器中。LOAD必须在第16个时钟上降沿或之后,但在下一个时钟上升沿之前变高,否则数据将会丢失。DIN端的数据通过移位寄存器传送,并在16.5个时钟周期后出现在DOUT端,随CLK的下降沿输出。

  MAX7219的串行数据标记为D15~D0,其中低8位表示显示数据本身,的4位D15~D12未使用,寻址内部寄存器的地址位占用D11~D8,选择14个内部寄存器。


  MAX7219内部具有14个可寻址数字和控制寄存器。其中的8个数字寄存器由一个片内8×8双端口SRAM实现。它们可直接寻址,因此可对单个数进行更新并且通常只要V+超过2V数据就可保留下去。除8个数位寄存器之外,还有无操作、译码方式、亮度调整、扫描位数、睡眠模式和显示器测试6个控制寄存器。
  无操作寄存器用于多片MAX7219级联,在不改变显示或不影响任意控制寄存器条件下,它允许数据从DIN传送到DOUT。
  睡眠模式控制寄存器用于节省电源消耗,延长显示器的使用寿命。当睡眠模式控制寄存器控制字节中的位D0=0时,为睡眠模式;D0=1时,为正常操作模式。上电时所有的控制寄存器都复位,显示器都熄灭,芯片进入睡眠模式。睡眠模式下的各个寄存器保留原数据而不更新,消耗的电流少于250mA。

  显示器测试寄存器有正常与测试两种设定模式,数据字节的D0位置0为正常模式,D0置1为测试模式。测试时以31/32或15/16的占空比扫描全部数位段,使得所有显示器的所有段以的亮度点亮。


  译码方式控制寄存器可以设置每个数位工作于BCD译码方式,或者非译码方式,控制字节的8位正好对应8个数位,该位为1表示该数位工作于BCD码方式,为0表示该数位工作于非译码方式。当采用代码BCD译码方式时,对10个数字“0~9”和5个字符“-,E,H,L,P”,译码器仅针对数字寄存器中数据的低四位D3~D0,而不考虑D6~D4位。设置小数点(SEG DP)的D7与编码方式,点亮时,D7置"1",熄灭时,D7置“0”即可。表2是BCD码的字符编码。
  当选择不译码方式时,数据位D7~D0对应于LED的段线所示。

  显示器的亮度可以通过模拟与数字两种方式进行调整,模拟方式是在Vcc与ISET引脚之间外接一个电阻RSET,这时段驱动器提供的峰值电流约为ISET引脚电流的100倍,调整该电阻的大小即可改变显示器亮度,电阻的值为9.53KW,此时提供的段驱动电流典型值为40mA。


  亮度的数字化调整是使用亮度调整寄存器,此时芯片内启用一个脉宽调制器,它受亮度调整寄存器低半字节D3~D0的控制,产生16种占空比不同的输出脉冲,形成16级亮度调整,此时以RSET设定峰值电流。寄存器数据为×0H时,脉冲占空比为1/32,表示MAX7219驱动的段点亮时间仅为整周期的1/32,这是暗的情况。数据从×0H变化到×FH,表示脉冲占空比由1/32变化到31/32 (注意这里的分子只有奇数),此时扫描消隐期按比例递减,亮度线性递增。因此寄存器数据为×FH时亮,消隐期仅为1/32。


  MAX7219有驱动8个数码管的能力,但实际应用中不一定恰好是8个。扫描位数寄存器用于设置显示器数码管的实际扫描个数,由扫描位数寄存器的D2~D0设定,其数据为×0H时,表示仅扫描数位0,数据为01H时,扫描数位0与数位1,如此类推,直至数据为×7H,表示8个全扫描。8个全部扫描时,扫描速率为800Hz,只扫描N个时,扫描速率为8fOSC/N。应注意扫描的位数变化对亮度有明显影响。当扫描的数码管等于或少于3个时,单个数位驱动器将消耗较大的功率,因而必须依据使用的数码管实际数量调整电阻RSET的大小,限制消耗的电流。

  显示器测试寄存器有正常与测试两种设定模式,数据字节的D0位置0为正常模式,D0置1为测试模式。测试时,以31/32的占空比扫描MAX7219全部数位段,使得所有显示器的所有段以的亮度点亮。


  MAX7219与MC68HC908GP32接口应用

  MAX7219采用串行通信,只需通过CLK、LOAD、DIN三根线便可与多种MCU接口。M68HC908系列单片机是新一类 Motorola高性能的8位单片机,具有速度高、功能强和价格低等特点,其指令码与M68HC05完全兼容。Motorola自1999年推出该系列单片机以来,至今已推出了三十余种不同型号的MC68HC908单片机。本文以Motorola在中国大力推广的通用型芯片MC68HC908GP32为例,介绍MAX7219与MC68HC908系列单片机的接口电路。由于MC68HC908系列的单片机都具有一定数量的I/O管脚,所以该应用实例同样适用于其它型号的MC68HC908单片机,具有一定的代表性。


  MC68HC908GP32的PORTB口工作于输出方式,并结合MAX7219的工作时序,对MAX7219进行控制。WRI_INSTRU为MAX7219控制子程序,它在CLK管脚产生8个时钟脉冲,并将入口参数A中的8位值在CLK的上升沿串行输出到DIN。LED_WR为MAX7219控制主程序,它首先置LOAD为低电平,然后通过两次调用WRI_INSTRU完成向MAX7219写入16位串行数据,再置LOAD为高电平,产生一个上升沿脉冲以满足MAX7219的数据传送时序。


  结语
  MAX7219能够驱动8个LED,可方便地对每位LED进行单独控制、刷新,不需重写整个显示器寄存器,通信方式采用串行数据方式,可与任何一种单片机方便接口。Motorola MC68HC908系列单片机,多采用32.768KHz外部晶体,或内部集成了晶振电路,功能强大,抗干扰能力强。它们构成的显示系统可应用在条状图形显示器、7段数码管显示器、工业控制器显示模板、面板表与LED矩阵显示器等众多场合。
上一篇:真有效值转换器LTC1966的原理与应用
下一篇:直接序列扩频LD9002DX2的原理及应用

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料