单片机构成多处理器在LED矩阵显示中的应用
内容导读:
单片机构成多处理器在LED矩阵显示中的应用 山东大学辛阳陈曙李庆利 摘要利用多个51LPC系列单片机的级连为LED大屏幕的显示问题提供一种新的设计方法。文中通过一个应用例子说明这一方法的软硬件实现方法。 关键词多处理器P87LPC762LED矩阵图1引言 目前LED大屏幕显示器的应用较为广泛,在车站、码头、金融机构里随处可见。一般的做法是利用一个单片机作为控制CPU,将其串口TXD、RXD工作在模式0,利用移位寄存器的输出,经驱动电路的驱动对显示矩阵进行列扫描。由于目前很多CPU的I/O口具有了15mA以上的驱动能力且价格较低,我们设计了另一种应用方案:利用单片机处理器的智能性、灵活性和某些单片机较强的I/O驱动能力,将多个CPU构成一个显示组。此组中的CPU协调工作,共同完成本组中LED矩阵的行列扫描与驱动。 一、 系统总体概述 本应用方案中,系统的基本特点是:一个显示组中有多个处理器。这多个处理器中一般包含一个主CPU和多个子CPU。它们协调工作,共同负责显示一组信息。主CPU的任务是通过数据采集或与外界通信等,获得本组中的显示信息,然后传输给本组中的子CPU。另外,主CPU的重要作用还有负责行扫描和发送显示同步信息等。子CPU的作用是接收主CPU发送的同步信息和字样信息,并将信息存放在内部RAM中,然后,根据同步信息选择适当的列送输出口进行列扫描。系统原理图如图1所示。假设每个子单片机去掉留作他用的引脚外,可用作输出口驱动的最多引脚数为m,而每块LED矩阵的列数为n,则每块芯片所能驱动的LED块最大数为m/n。当然,实际运用中考虑到模块化以及编程方便,通常将数目取整。这样,每个单片机负责一块或几块LED显示矩阵,灵活性强,便于扩展,同时减轻了主CPU负担。 为了容易说明问题,举一个电视台台标显示系统的应用例子:电视台控制中心里的每台监视器的上方都放有一块LED显示板,用于鲜明地指示本显示器所放频道,以便远处技术人员察看。比如,某台监视器播放的节目是中央1台,那么,其上的LED显示板应显示CCTV1。系统要求在显示器关闭时,为红色显示;在显示器打开时,为绿色显示。并且该显示板的显示字样可以被上位机在线地更改,以适应监视器的频道更换。 根据这一要求,我们依据上面所说的设计思路搭建了该下位机系统(下面讲的系统均指下位机系统)。下面分硬、软两部分介绍该系统。 二、 系统硬件 图2下位机系统原理图如图2所示。此系统中,用到5块8×8双基色LED矩阵。每块LED显示矩阵由8行16列组成,其中8列红像素,8列绿像素。每个显示点由一个红像素和一个列像素封装而成。选用的CPU是PHILIPS公司最新推向市场的51LPC系列中的P87LPC762,其引脚分布如图3所示。PHILIPS P87LPC76X系列单片机都是20脚封装的单片机,适合高集成度、低成本的场合。P87LPC762的基本特点是:128字节的内部RAM;2KB ROM;片内振荡器可选;串口和I2C总线;低电压复位,可设置成上电复位方式;最多可以有图318个I/O口,其中输出口最多可以有17个;32字节的用户代码区,用于存放序列码和设置参数;80C51加速处理器结构,指令执行速度是标准80C51 MCU的两倍。另外这种芯片与我们应用方案密切相关的一个重要特点是,LED驱动输出,它所有的口线均具有20mA的驱动能力,轻松驱动LED矩阵的列。 根据需要并考虑到节省成本,用每个芯片驱动1块LED矩阵的列,这样,每个处理器需提供16个输出口。依据此芯片的自身特点,把主CPU和子CPU设置成:片内振荡方式,以空出P2.0、P2.1;上电复位方式,将P1.5接地,省去外部复位电路,同时便于级连;将主CPU的P2.0用作与子CPU进行单工通信的发送口,子CPU的P1.1口用作单工通信的接收口。主CPU P0口的8个引脚用作输出I/O口,服务于显示矩阵行扫描。所有子CPU的其他口(除去电源、地和复位端)全部设置成I/O口的输出模式,这样,每个子CPU正好有16个输出I/O口,负责1块双色LED矩阵的列扫描工作。主CPU的RXD(P1.1)用作接收上位机传来的实时编程字样信息,然后通过TXD(P1.0)口送给子CPU,并同时将字样信息通过I2C总线存到EEPROM中,以便在以后使用过程中只有在监视器所监视的频道更换后,才需要由上位机对显示字样进行重新传送。另外,主CPU的P0.0口用于读取监视器电源开关状态,以决定显示字样的颜色。 三、 软件部分设计 本设计方案中软件设计的一般做法是:将主CPU用作监听上位机发来的在线编程字样信息和其他一些类别的信息。主CPU与子CPU通信通常有两种方式,即全广播方式和混合方式。在全广播方式中,主CPU把字样信息、同步信息以及其他类别的信息全部利用广播的方式传给子CPU,各子CPU将收到的字样信息放到内部RAM中。子CPU通过信息帧中的标识符来判别信息类别;通过放在用户代码区中的身份码来确定自己该负责的字样信息。身份码的编排一般与CPU所负责的字符顺序对应。在混合广播方式中,各个子CPU有自己的相应编址信息,而无身份码。主CPU有针对性地将各个字样信息和控制信息送给对应的子CPU,而同步信息需要广播传送。实际应用中,为了编程简单统,一般选用广播方式。其数据格式如表1所列。数据格式由标识符、数据区字节数和数据区组成。标识符代表数据区的性质,如字样信息、同步信息等。 图5表1 标识符[]数据区字节数〖〗数据区上述台标显示系统中的软件运作过程如下:上电时,主CPU将存放在EEROM中的字样信息广播给子CPU。然后,读取目前显示器的开关状态并转化为对应的颜色信息,同时加上显示行信息,最终形成同步信息后广播给子CPU。子CPU的身份码放在用户代码区中。子CPU将字样信息和同步信息存放在内部RAM中,根据同步信息中的行信息和存放在用户代码区的身份码,确定合适的偏移量并读取字样信息,然后根据同步信息中的颜色信息将所读取的信息送到合适的输出口。该软件的数据格式如表2所列。 图4主CPU主程序的流程图如图4所示。 子CPU串行中断服务程序如图5所示。注意:初始时接收状态字节、接收计数器字节的值都被初始化为0,F0、F1栈分别为以字节F0和F1打头的一块数据缓冲区,在存取数据时可以利用指令PUSH和POP。 表2 F0(字样信息标识符)〖〗40〖〗40个字节的显示信息F1(同步信息标识符)〖〗2〖〗列数信息字节 (0~7)〖〗颜色信息字节 (00H或FFH)总结 本文所介绍的设计方法中,每个单片机负责整块显示屏扫描列的一部分,灵活性强,便于扩展,同时减轻了主CPU负担。另外,由于芯片之间用串口互连,这样在干扰大或距离远的情况下,可以将CPU的通信方式改为双工方式,以避免传输差错。同时,这一设计方法也降低了成本:因为像51LPC系列的单片机都有20个引脚,可以直接驱动16列,而若用8位移位寄存器,则需要2块,且很多移位寄存器作为列驱动时,需外加驱动电路,这样会使芯片成本和电路板成本同时上升。在本设计方法中,尽管增加了对子CPU的编程工作,但由于所有子CPU的内部程序是一样的(只有身份码的不同),所以,子CPU的编程工作量是一定的。 实践证明此台标系统显示效果较好。本文的设计方法可以作为供设计者选用的一种新的LED显示屏设计思路。MES 参考文献 87LPC762 DATA SHEET. Philips Semiconductors
标签:
来源:单片机与嵌入式系统应用 作者:山东大学 辛阳 陈曙 李庆利 时间:2006/2/12 0:00:00