LED显示屏的基本工作原理是动态扫描。显示控制的过程是先从数据存储器读得字模数据,再通过单片机的串行口或并行口将数据写给LED点阵片,然后再行扫描。
动态扫描方案和静态显示方案相比节省驱动元件,但要求刷新频率高于50 Hz,以避免显示的图像或文字出现闪烁。由于刷新频率的限制,一片单片机能控制显示元件的片数是较少的。
现在LED大屏幕显示屏的应用已越来越广泛。为了对成百、上千片的LED点阵片实现有序的、快速的显示控制,人们动了许多脑筋,双CPU、双RAM的方案,FPGA的方案等都获得了成功的应用;但是这些方案的显示控制过程还是先读后写。
本方案另开思路:用一条读指令,将读和写合在一步完成,可大大地提高显示控制的效率,且电路简单。
1 LED显示屏的工作原理
LED显示屏的基本工作原理是动态扫描。动态扫描又分为行扫描和列扫描两种方式,常用的方式是行扫描。行扫描方式又分为8行扫描和16行扫描两种。
LED显示屏厂家称在行扫描工作方式下,每一片LED点阵片都有一组列驱动电路,列驱动电路中一定有一片锁存器或移位寄存器,用来锁存待显示内容的字模数据。在行扫描工作方式下,同一排LED点阵片的同名行控制引脚是并接在一条线上的,共8条线,最后连接在一个行驱动电路上;行驱动电路中也一定有一片锁存器或移位寄存器,用来锁存行扫描信号。
LED显示屏的列驱动电路和行驱动电路一般都采用单片机进行控制,常用的单片机是MCS51系列。LED显示屏显示的内容一般按字模的形式存放在单片机的外部数据存储器中,字模是8位二进制数。
单片机对LED显示屏的控制过程是先读后写。按LED点阵片在屏幕上的排列顺序,单片机先对第1排的第1片LED点阵片的列驱动锁存器,写入从外部数据存储器读得的字模数据,接着对第2片、第3片……直到这一排的最后一片都写完字模数据后,单片机再对这一排的行驱动锁存器写行扫描信号,于是第1排第1行与字模数据相关的发光二极管点亮。接着第2排第1行、第3排第1行……直到最后一排第1行的点亮。各排第1行都点亮后,延时一段时间,然后黑屏,这样就算完成了单片机对LED显示屏的一行扫描控制。
单片机对LED显示屏第2行的扫描控制、第3行的扫描控制……直到第8行的扫描控制,其过程与第1行的扫描控制过程相同。对全部8行的控制过程都完成后,LED显示屏也就完成了1帧图像的完整显示。
虽然按这种工作方式,LED显示屏是一行一行点亮的,每次都只有一行亮,但只要保证每行每秒钟能点亮50次以上,即刷新频率高于50 Hz,那么由于人的视觉惰性,所看到的LED显示屏显示的图像还是全屏稳定的图像。
2 LED显示屏的传统控制方法
参考文献[1]对LED显示屏的控制电路作了归纳和比较。其中,显示控制电路是按行扫描方式工作的,列控制电路分为两大类。列控制电路中,一类是用74LS377之类的芯片作为列驱动电路的锁存器,CPU通过并行总线给列驱动电路的锁存器写字模数据;另一类是用移位寄存器74LS595之类的芯片作为列驱动电路的锁存器,CPU通过串行总线给列驱动电路的锁存器写字模数据。
无论是并行总线的控制方式还是串行总线的控制方式,其工作过程都是先给数据指针DPTR赋值,接着累加器A按数据指针DPTR的指向,从外部数据存储器RAM中读得字模数据。然后,并行总线时,再给数据指针DPTR赋值,接着CPU将累加器A中的字模数据,按数据指针DPTR的指向,写给LED点阵片列驱动电路的锁存器;串行总线时,CPU将累加器A中的字模数据,通过串行口写给LED点阵片列驱动电路的锁存器。
一般显示控制中,使用较多的单片机是MCS51系列。假设单片机系统的晶振频率是12 MHz,机器周期是1 μs,上述两种控制方式完成1片LED点阵片的显示控制都得十几μs。
本文提出的高速控制方案,完成1片LED点阵片的显示控制大约只要4 μs。按此推算,1片MCS51系列的单片机,差不多可以对600多片LED点阵片进行显示控制。与传统的控制方法相比,显示控制的效率成倍提高。
3 LED显示屏的高速控制方案
图1是高速控制方案LED显示屏电路原理。采用MCS51系列单片机对LED显示屏进行控制;随机存储器62512用作LED显示屏的数据存储器,存储待显示内容的字模数据;采用8行扫描方式,多片LED点阵片共用1组行驱动电路;每片LED点阵片都有一组列驱动电路,用74LS377作为列驱动的锁存器,CPU通过并行总线给列驱动电路的锁存器写字模数据;地址译码电路,用于产生LED点阵片行驱动电路和列驱动电路的片选地址。
本方案的特点有两个: 第一,虽然CPU还是通过并行总线给列驱动电路的锁存器写字模数据,但是锁存器的锁存信号改用了CPU的控制信号RD,而不是常规用法的WR;第二,地址译码电路保证了LED点阵片列驱动电路的片选地址和数据存储器的某一段的逻辑地址是重叠的,而不是常规用法,这两组地址必须分开。
LED显示屏厂家称由于上述电路的一些简单更改,单片机对LED显示屏的显示控制效率将发生明显的变化。具体工作过程如下: 假定数据指针DPTR中已经装入了数据存储器的地址,执行指令“MOVXA,@DPTR”。这条指令的功能是CPU按DPTR的指向从外部数据存储器中读字模数据,读到累加器A中;但是在本电路中,由于LED点阵片列驱动电路的片选地址和数据存储器的某一段的逻辑地址是重叠的,也就是说,在执行指令“MOVXA,@DPTR”时,DPTR除了指向外部数据存储器的某个地址外,还选中了某一个LED点阵片列驱动电路的锁存器。如果此时被选中的这个锁存器的锁存引脚正好有打入脉冲来到,那么锁存器也就将从外部数据存储器送出的字模数据锁住了。这个打入脉冲用的就是RD。RD是CPU在执行指令“MOVXA,@DPTR”时向外部数据存储器发出的读控制信号。由于MCS51系列单片机的读控制信号RD和写控制信号WR的时序完全相同[2],RD代替WR实现锁存功能,当然也就没有什么悬念了。这条指令在执行时,在完成对数据存储器读的同时,又完成了对LED点阵片的写,因此加快了显示控制的过程。
前面讲过,并行总线时CPU完成1次向LED点阵片的列驱动电路的锁存器写字模数据的程序过程,大约需要十几μs;而现在只要4 μs,快多了,因为现在完成1次向LED点阵片的列驱动电路的锁存器写字模数据的程序过程只要两步,首先给数据指针DPTR赋有效地址,接着CPU按DPTR的指向从外部数据存储器中读字模数据,与此同时也将字模数据传给了LED点阵片列驱动电路的锁存器。2条指令,4个机器周期,4 μs。这里要补充说明一点,在编制全部LED点阵片列驱动电路的锁存器写字模数据的程序时,不要用循环指令,因为那样每次过程又得增加2 μs;要采用对LED点阵片逐片编程的方法,这样编出来的程序虽然占空间,但节省了时间。用空间换时间的设计方法,有时也是设计人员值得尝试的一种方法。
本电路的行驱动锁存器的锁存控制,还是用CPU的写控制信号WR,不作更改。行驱动锁存器的片选信号也来自地址译码电路。为了避免数据存储器和LED点阵片之间的相互干扰,与这组地址对应的数据存储器的这部分存储空间就不用它了。
地址译码电路的设计,应保证LED点阵片列驱动电路的片选地址和数据存储器的某一段的逻辑地址是重叠的。具体设计举例如下:
假定某一块LED显示屏用了240片LED点阵片,可显示16×16的汉字60个,用1片MCS51系列单片机进行高速控制。这240片LED点阵片列驱动电路的片选地址就应有240个,地址译码电路必须保证译码后的有效地址大于这个数量。图1中的地址译码电路,输入的地址信号是A0~A7和A11~A15,没有接入A8、A9、A10。用74LS138译码器,三级译码后可得到256根有效地址线,第1根有效地址线对应外部数据存储器的8个地址:0000H、0100H、0200H、0300H、0400H、0500H、0600H、0700H。第2根有效地址线对应外部数据存储器的8个地址:0001H、0101H、0201H、0301H、0401H、0501H、0601H、0701H。……第256根有效地址线对应外部数据存储器的8个地址:00FFH、01FFH、02FFH、03FFH、04FFH、05FFH、06FFH、07FFH。这256根有效地址线,240根给列驱动电路的片选地址,余下的给行驱动电路的片选地址;如果不够用,行驱动电路可考虑改为串行总线的方式进行控制。上述分析结果表明,1片LED点阵片的I/O接口地址和数据存储器的8个字节的地址建立了重叠关系。这是因为每片LED点阵片都有8行,每行都对应1个字节的字模数据。
上述分析结果还表明,全部LED点阵片的I/O接口地址和数据存储器的0000H~07FFH地址段建立了映射关系。数据存储器0000H~07FFH中存放的正好是一帧图像的全部字模数据。
4 高速控制方案在LED显示屏中的应用
现在商业上用的大屏幕LED显示屏,用到的LED点阵片成百、上千甚至几千片。单片机对LED显示屏的控制,包括单片机与PC机的通信、字模数据的数据处理以及显示控制三个部分。1片单片机要与PC机通信,又要进行数据处理,还要进行显示控制,肯定是忙不过来的。
为了解决大屏幕LED显示屏的控制问题,许多文献都对控制方案作了成功的设计。不少方案[36]的基本思路是数据处理由一片单片机完成,显示控制由另一片单片机或一个专门设计的电路完成。这些方案的控制效率虽然很高,但是电路比较复杂。
本方案的基本思路是,单片机与PC机的通信、数据处理及显示控制都由1片单片机完成。显示控制采用本文提出的高速控制方案,电路简单,而且显示控制的效率很高。例如,LED点阵片采用常用的6 cm×6 cm外廓尺寸的LED点阵片时,屏幕面积小于2 m2时,1片MCS51系列单片机就可以完成。但是,高速控制方案用于大屏幕LED显示屏,还有一些问题要解决:
① 单片机与PC机的通信问题。大屏幕LED显示屏与PC机连接时,PC机用来编辑待显示的内容,并将内容传给大屏幕LED显示屏中的单片机。PC机与单片机通信时,不会干扰显示屏的工作。因为显示屏工作时,是一场一场显示的,场与场之间有黑屏的时间,利用黑屏的时间进行通信完全没有问题。
② 增加显示场次的问题。大部分显示屏的工作方式是,显示的内容一场、一场、又一场,如此循环。前面的设计只考虑了显示一帧图像时,LED点阵片的I/O接口地址和数据存储器的一段建立映射关系的问题,因此只能显示一场定格的图像。在图1的基础上增加图2,可以使LED点阵片的I/O接口地址和数据存储器的多段建立映射关系。工作时,由P1口控制多路开关,切换数据存储器的不同段和LED点阵片的I/O接口地址映射,于是显示屏就可以一场一场地循环显示了。如果扩充外部数据存储器的片数,并由P1口使能其中的一片有效,那么将可以扩充更多的段和LED点阵片的I/O接口地址建立映射关系,这样的话,像拉幕、流水等一些显示效果,也就可以实现了。
③ 字模数据的数据处理问题。显示的方式比较多,比如有定格、拉幕、流水,流水方式中又有向左流水、向右流水等。在转换显示方式时,就必须进行一次字模数据的数据处理,用1片单片机,这也不会成为问题。因为转换显示方式时,本来要黑屏1 s至几s,这段时间也就正好用来进行数据处理了。
结语
本LED显示屏的高速控制方案,经应用证明工作稳定、可靠,且电路简单,特别适合银行汇率显示屏、利率显示屏使用。另外本文提出的灵活运用读指令的思路,也可以提供给人们作为借鉴。