Ammon_Zhang的博客

成长之路,慢慢探索,不放弃。

AD硬件电路模块设计——PS7219及单片机的SPI接口电路

 

1 PS7219简介
PS7219是一种新型的串行接口的8位数字静态显示芯片。它是由武汉力源公司新推出的24脚双列直插式芯片,采用流行的同步串行外设接口(SPI),可与任何一种单片机方便接口,并可同时驱动8位LED(或64只独立LED),其引脚图如图1所示。

                                                                                    引脚图
  PS7219内部具有15×8RAM功能控制寄存器,可方便选址,对每位数字可单独控制、刷新、不需重写整个显示器。显示数字亮度可由数字进行控制,每位具有闪烁使能控制位。当引脚CON(13脚)置高电平,可禁止所有显示,达到降低功耗的效果,但同时并不影响对控制寄存器的修改。PS7219还有一个掉电模式、一个允许用户从1位数显示到8位数显示选择的扫描界限寄存器和一个强迫所有LED接通的测试模式。另外,PS7219A型内置一个可靠的uP监控电路,可为外部提供一个脉宽140ms,触发门限典型值为4.63V的高电平复位信号。

  如果N个PS7219级联,可实现N×8位LED显示。

2 PS7219引脚功能
PS7219引脚功能如表1所示。

                                      ps7219引脚功能

3  PS7219工作过程
图2为PS7219工作时序图。由图2可行,DIN是串行数据输入端,在CLK的上升沿,一位数据被加载到内部16位移位寄存器中,CLK端最高输入频率可达500kHz,在输入时钟信号的每个上升沿,均有1位数据由DIN移入到内部寄存器中,LOAD用来装载数据,在LOAD的上升沿,16位串行输入数据被锁存到数字或控制寄存器中。LOAD必须在第16个时钟上升沿的同时或之后,在下一个时钟上升沿之前变高,否则数据将会丢失。

  规定一组数据为16位二进制数据包,其格式如下:

       ps7219工作时序图


  其中D15~D12位不用,D11~D8为内部5个控制寄存器和8个LED显示数据寄存器的地址,地址编码如表2。D7~D0为5个控制寄存器命令字或8个LED数码管待显示的数据。因为控制寄存器与显示数据寄存器均独立编址,所以可以通过程序单独对每个寄存器进行操作。一般情况下,程序先送控制命令,后向显示寄存器送数据,但必须注意,每16位为一组,从高位地址节最高位开始送起,直到低位数据字最后一位为止。

      地址编码

  PS7219按5个控制寄存器规定的方向对待显示的数字自动扫描显示,所以有必要对各控制寄存器的功能有所了解,现分述如下:

  (1)译码方式寄存器:对每个数字设置BCD码B(0~9、E、H、L、P和-)或非代码操作。寄存器中的每一位与一个数字对应。逻辑高电平选择代码BCD译码,而低电平选择旁路译码器。

  (2)显示亮度寄存器:其中D7~D4位可任意,而D3~D0可选择0000~1111。D3~D0的值越大,LED显示器越亮。

  (3)扫描范围寄存器:其扫描范围寄存器设置所显示数据的多少,可从1至8。它们一般以扫描速率1.5kHz、8位数据、多路复用方式显示。

  (4)掉电控制寄存器:其中D7~D1位可任意,D0=0,关闭所有显示器;D0=1,允许显示。

  (5)显示测试寄存器:其中D7~D1位可任意;D0=00,LED处于正常工作状态;D0=1,允许显示。LED处于显示测试状态。

  在送完控制字后,可根据实际需要调用显示子程序,改变1~8个数据寄存器的内容,完成显示功能。

4 SPI接口
SPI是同步串行外设接口,主要用于与各种外围器件以串行方式进行通讯、交换信息。这些外围器件可以是简单的TTL移位寄存器、或是复杂的LCD显示驱动器或A/D转换子系统。SPI接口很容易与许多厂家的各种外围器件直接相连。

  它使用4条线:串行时钟线(SCK)、主机输入/从机输出线(MISO)、主机输出/从机输入线(MOSI)、低电平有效的使能信号线(CS———)。如图3所示。这样,仅需3-4根数据线和控制线即可扩展具有SPI接口的各种I/O器件。其典型结构如图3。

spi接口

5 接口设计

5.1 硬件设计

PS7219的SPI接口是一个高速的同步串行I/O口,它允许1~8位的串行比特流以特定的传输速率移进移出芯片。但这要求微处理器带有SPI接口能力。对不带SPI或相同接口能力的微处理器,需用软件合成SPI操作来和PS7219接口,这里笔者以目前应用广泛的AT89C51为例,进行了电路设计,接口电路图见图4所示。

  这里,89C51的P1.6作串行数据输出,连接到PS7219的DIN脚,P1.7和P1.5通过程序分别模拟PS7219的时钟脉冲CLK及数据加载LOAD信号。PS7219的SA~SG、SDP端连接到各LED数码管对应的a~f及dp端,DIG0~DIG3分别接4位LED数码管的共阴极,以实现位选。另外,选用XICOR公司的X25045作为看门狗监控电路。

  实际上,数码管的位数可在1~8位之间任意选择,这可由写入的扫描界线寄存器的命令字决定。注意,为了使由峰值数字驱动器电流引起的纹波减到最小,需要在V+和GND之间尽可能靠近芯片的地方外接一个10μF的电解电容和一个0.1μF的瓷片电容。PS7219应放在紧靠LED显示器的地方,且连线尽可能短,两个GND引脚都必须连接到地线上。

  PS7219只需一组+5V电源和89C51的三个输出口,且无附加电路,可驱动1~8个LED显示器,显示亮度可调,工作可靠。

接口电路图

5.2 软件编程
在89C51的程序存储器区开辟一些存储单元,专门用来定义控制命令字,这些命令字的具体数值根据你要选择的工作方式、显示内容、显示位数等等来定义。

  由于PS7219的控制寄存器和显示寄存器均独立编址,显示程序实际上就是89C51在P1.7(CLK),P1.5(LOAD)时序的配合下不断通过P1.6(DIN)向PS7219的相应控制寄存器和数据显示寄存器写入16位二进制数据包的过程。所以问题的关键在于编写一个通用的写入子程序,将VWO的内容从高位到低位在P1.7(CLK)的作用下依次移入移位寄存器,最后由P1.5的上升沿(LOAD信号)锁存到相应的内部控制寄存器和数据显示寄存器中去。写入子程序的程序流程图如图5所示。

  无论初始化PS7219的控制寄存器,还是在相应的数码管显示数字,均可通过调用上述通用写入子程序完成。

           写入子程序


 

阅读更多
文章标签: 单片机 硬件 设计
个人分类: Circuit design summary
想对作者说点什么? 我来说一句

PS7219中文资料

2008年10月31日 314KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭