3.3 驱动及扫描电路 LED点阵选用8x8模块,每 4块排列成一个16x16的点阵,用于显示一个汉字。点阵每一行的所有LED共阴极,每一列的所有LED共阳极。
因为单片机I/O口的驱动能力有限,所以每一行LED阴极通过一个三极管8550与电源相连,I/O口仅需要提供几个毫安的灌入电流即可控制其通断。考虑到本系统可以同时显示六个汉字,故每一列 LED的阳极都通过一个限流电阻和一个三极管8550与电源相连,当六个汉字的同一行汉字字模(即12个字节)通过锁存器74HC377并行送出后,由移位寄存器 74HC595输出行选通信号,来点亮该行的LED,接着再送下一行数据,再选中下一行有效,直到16行全被扫描过一遍。至此,一幅完整的文字信息就显现出来,然后按这种方式反复扫描,借助于程序的控制,即可实现信息从右至左的动态显示了。具体电路图如图3所示。
该系统的软件主要实现的功能包括:上位机信息(或命令)的发送和下位机点阵显示内容及方式的控制两部分。
4.1上位机软件
上位机信息(或命令)的发送使用普通的字模提取软件和串口调试软件即可,在与下位机进行通信时,须保证双方具有相同的数据格式和波特率,本设计采用 RS232通信,波特率为9600bit/s。同时,制定了上下位机之间的通信协议,信息包格式如图4所示。
4.2下位机软件
LED点阵的显示内容及方式主要由单片机的程序进行控制。程序采用模块化结构,主要包括有主程序、串口中断服务子程序以及扫描显示子程序等。
(1)主程序为顺序结构,主要完成系统对 I/O口和一些变量的初始化,定时器初始值、串行通信工作方式、以及波特率的设置[2],然后循环调用扫描显示子程序,显示原来Data Flash区中已存在的汉字信息。
(2)串口中断服务子程序采用接收中断启动[3],主要负责接收来自上位机 PC发送的信息,包括欲显示的内容以及命令字节,并根据命令完成相应的信息写入、擦除等操作,最后开中断返回主程序。其流程图入图5所示。
其中信息的写入、擦除等操作主要由单片机的IAP功能来完成。 IAP,即在应用可编程,是指在程序运行时程序存储器可由程序自身进行擦写。通过IAP功能的相关指令,既可以将 欲显示的数据写入到程序存储器指定的扇区中,也可以根据需要擦除相应扇区中的数据。这样,数据就如同烧入的程序一样,掉电不会丢失。当然写入数据的区域与程序存储区是分开的,以使程序不会遭到破坏。