基于SST89E516单片机IAP技术的LED显示屏控制系统
LED 显示屏由于其具有耗电少、使用寿命长、成本低、亮度高、故障少、视角大、可视距离远等特点,已经成为新一代的信息传播媒体工具。 LED 与 LCD 相比较最突出的特点是,亮度高、成本低且屏幕尺寸可根据现场情况用标准 LED 单元板拼制。按安装位置可分为室外、半室外和室内;按颜色可分为单色、双基色和彩色;按发光二极管点距可分为φ5.0、φ3.75 及φ3.0 等。本文以市场上常见的室内双色 LED 单元板为控制对象,说明基于单片机 IAP 技术的 LED 显示屏控制系统工作原理以及数据组织方法。
1 双色 LED 单元板硬件组成及工作原理常见的室内双色 LED 单元板电路框图如图 1(a)所示。其中行扫描电路由 2 片 74HC138(3-8 译码器)构成的 4-16 译码器加上多个 4953(MOS 管)组成的,扫描方式为 1/16。上下半屏分别由 2 组用 74HC595 串行移位寄存器实现红色、绿色显示数据的列输入,在图 1(a)所示的 64×32 标准 LED 单元板中,每组串行移位寄存器中有 8 个 74HC595 级联,4 组共用了 32 个 74HC595。
74HC595 内部电路框图如图 1(b)所示。 所有 4 组 74HC595 的控制信号 RCK、SCK、EN 全部接在一起。74HC595 的控制信号和 4 组串行移位寄存器的输入以及行扫描控制信号 A、B、C、D 构成整个 LED 单元板的输入;74HC595 的控制信号经驱动后和 4 组串行移位寄存器的输出以及行经过驱动的扫描控制信号 A、B、c、D 构成整个 LED 单元板的输出,用于级联下一个 LED 单元板的输入。
双色 LED 单元板等效电路框图如图 1(c)所示。 2 LED 显示控制系统的硬件组成及工作原理 LED 显示控制系统的硬件组成如图 2 所示。从表面上看是一个普通的单片机简单应用,实际上在设计此系统时已经考虑了很多硬件、软件及硬软件配合的因素。首先在使用 51 单片机的前提下,用其串行口方式 0 似乎可以利用单片机发出的移位脉冲将 8 位数据送入 74HC595 中,但要实现图 2 中 8 位数据的同时输入必须加其他的辅助芯片,而且在缩短数据传输时间上没有什么好处。
其次,采用 FPGA、CPLD 等可编程芯片设计成专用硬件电路与单片机接口可大幅度提高数据传输的速度,但成本也将同步大幅度提高。 在图 2 所示的系统中采用了以下的设计理念:①由 P0 口同步输出 8 位字型点阵数据。②用 P3.6 产生 SCK 信号,软件中相应使用“MOVX@R0,A”指令,在形成 SCK 信号的同时减少指令的字节数。③由 P2.0 至 P2.3 输出行扫描信号,软件中将 A、B、C、D 存放在 DPH 的低 4 位中。
④RCK 和 EN 分别由 P3.4、P3.5 控制。⑤SST89E516 单片机的串行口与 PC 机通信。利用该单片机的 IAP 功能下载显示所需的字型数据和控制程序。 3 LED 显示控制系统的数据组织及软件优化 LED 显示控制系统的数据组织如图 3 所示。从图 2 可以得到图 3(a)所示的从正面看过去显示行与显示数据位以及颜色的对应关系。为了提高数据的读取速度,将显示数据按扫描行进行连续排列,可得到图 3(b)所示的存储单元与扫描行、存储单元数据位及颜色的关系。
具体编程时可按下列步骤进行:①将准备扫描的行地址送 P2 口的低 4 位中。②将 DPTR 指向待显示行相应存储单元的首地址。③以 DPTR 为指针,使用“MOXCA,@A+DPTR”读显示数据,并将显示数据送 P0 口。④通过 P3.6 产生 SCK,同时 DPTR 加 1。⑤重复②、③、④直到一行数据显示完毕,通过 P3.4 产生 RCK 将通过移位寄存器移入的一行数据显示。⑥重复②、③、④、⑤直到 15 行数据全部显示完毕。
⑦重复①~⑥刷新显示。 根据上述编程步骤,可以很容易编出显示第 i 行的子程序 1。子程序 1 的第 3 行至第 9 行为循环体,送 1 字节的显示数据共需 10 个机器周期,机器码的字节数为 11。通过分析 74HC595 的 SCK 为上升沿有效,可用单片机的写信号(WR)来代替,故子程序 1 中的第 5、6、7 行 3 条指令可用“MOVX@R0,A”一条指令来替换,实验表明这样的替换是可靠的。显示第 i 行的子程序 2 为替换后的程序,送 1 字节的显示数据所需机器周期减为 9,机器码的字节数减为 6。
再对显示第 i 行的子程序 2 仔细分析后发现,在仅使用 SST89E516 内部 64 KB 的 Flash 存储器作为显示数据存储且不增加辅助电路的前提下,只有子程序 2 第 7 行“DJNZ R0,DP1”这条 2 个机器周期 2 字节指令,可以利用 SST89E516 内部 64 KB 的 Flash 存储器大的特点,直接简单的重复 256 次子程序 2 中第 3、4、5、6 行 4 条单字节指令,从而可以缩短 2 个机器周期的时间。 这样送 1 字节的机器周期可以减少为 7,但程序需要增加 1 KB。
对 64 KB 的 Flash 存储器来说,程序增加 1KB 减少不了多少显示数据。与子程序 1 相比,子程序 3 速度提高了 30%。在图 2 所示 12 MHz 晶振并利用 SST89E516 的倍速功能,其 1 个机器周期为 0.5μs,在忽略其他数据处理时间的前提下,显示 1 屏完整数据所需时间近似为:(7×0.5 μs×256 列×16 行)=14.336 ms(每秒近 70 帧)。实验表明:人眼对 LED 显示屏开始感觉到闪烁大约为每秒 55 帧,即每帧时间 18 mS。
从图 2、图 1(c)和 3 个子程序可以看出,一帧显示数据在内存中的排列有以下几个特点:①按扫描行扫描的先后顺序依次排列;②在每一行按数据输出的先后顺序依次排列;③通过硬件和软件的优化使每个显示数据输出的时间最短。