1、LED点阵屏的显示林元桂 指导老师:郭海燕(漳州师范学院物理系 9905219)摘 要 介绍一种 LED显示屏单片机控制系统设计方法,给出了有关的硬件电路框图和软件程序流程图.关键词 单片机 LED 显示屏LED电子显示屏作为一个城市、一个地区的商业发达程度的标志之一,已广泛地出现于车站、码头、大型商场等公共场所,是一个理想的新闻、广告和信息媒体。其中小型的 LED文字显示屏由于价格便宜、功能比较专一、工作稳定可靠等诸多的优点,因此,在银行、宾馆、机场、车站等场所广泛应用。这种小型的 LED文字显示屏通常是一屏能显示 8个汉字或 16个汉字,因此显示内容有限,信息传递比较慢,局限性比较大。本文
2、介绍一种利用 89C51单片机实现能显示 4行汉字,每行 8个汉字的 LED显示屏设计方法,给出有关的硬件电路框图和软件流程图。1. 系统总体结构控制系统主要有一片 AT89C51-24单片机(它是一种与 8031系列完全兼容的单片机,主要区别是它内部有 4kbitd的 ROM) ;一片 27C040(512K)EPROM,作为字库;一片 6264(8K)RAM,作为数据存储器和显示数据缓冲区等组成(如图一所示) 。显示驱动电路主要由 128片 74HC595串并转换集成电路,8 片74HC138译码器等组成(如图二所示) ;利用串行口接收微机送来的汉字代码,串行口采用 RS-485通信。用
3、AT89C51单片机接收到的汉字代码后,查找对应的点阵字库,经过字库转换之后经过数据总线直接送往显示驱动电路,其电路如图三所示,时序图如图所示。2电路设计2.1存储器扩展的设计由于 16*16 的国标汉字点阵的容量大约为 500K,而以 AT89C51-24 为核心的微控制器不够存储,所以我们利用 I/O 口扩展了一片 27C040(512K)EPROM用以存储 16*16 的国标点阵汉字,以二进制格式存储;另外,我们利用数据存储器只使用 、 控制线而不用 ,所以数据存储器与程序存储器地址WRDPSEN可以重叠,因此,我们扩展了一片 6262(8K)RAM,作为屏幕的显示缓冲存储器。这样,我们
4、就可以从显示缓冲区 RAM中驱除相应的显示数据或图形信息,进行动态显示,保证了单片机控制系统运行的可靠性。如图一所示。A012 A111 A210 A39 A48A57 A66 A75 A827 A926A1023 A1125 A124 A1328 A1429A153 A162 A1730 A1831E22 G24DQ1 13DQ2 14DQ3 15DQ4 17DQ5 18DQ6 19DQ7 20DQ8 21U?27C040A010 A19 A28 A37 A46A55 A64 A73 A825 A924A1021 A1123 A122CS120 CS226 WE27OE22D0 11D1 1
5、2D213D3 15D4 16D5 17D6 18D719U?6264D03 Q0 2D14 Q1 5D27 Q2 6D38 Q3 9D413 Q4 12D514 Q5 15D617 Q6 16D718 Q7 19OE1 LE11U?74HC373D03 Q0 2D14 Q1 5D27 Q2 6D38 Q3 9D413 Q4 12D514 Q5 15D617 Q6 16D718 Q7 19OE1 LE11U?74HC373EA/VP31 X119X218RESET9INT012 INT113 T014T115P1.0 1P1.1 2P1.2 3P1.34 P1.45 P1.56 P1.67P1
6、.78P0.0 39P0.1 38P0.2 37P0.3 36P0.4 35P0.5 34P0.6 33P0.7 32P2.0 21P2.1 22P2.2 23P2.3 24P2.4 25P2.5 26P2.6 27P2.7 28RD17 WR16 PSEN 29ALE/P 30TXD 11RXD10U1AT89C51-24+5X124MHZC1C2+10uFD0D1D2D3D4D5D6D7A8A9A10A11A12A13A14A15A16A17A18PSENA0A18A17A16A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1D0D1D2D3D4D5D6D7A13P2
7、.5RDWRA12A11A10A9A8A7A6A5A4A3A2A1A0D7D6D5D4D3D2D1D0 ALED7D6D5D4D3D2D1D0 A0A1A2A3A4A5A6A7ABCP1.3P1.4P1.5 一一 一一一一一一一一一D8D1D2D3D4D5D6D7U?A74LS04U?A74LS08SRCLP3.3WRALE2.2 显示驱动电路我们以 8*8 个 LED 象素(见图二 a)简化为一片模块 A1(见图二 b)。所以我们要显示一个 16*16 的点阵汉字需要 4 片的模块 A1。行地址译码电路如图二(c)所示,其基本工作方法,将 3-8 线译码器 74HC138 产生的 8 个行选
8、信号输入模块 A1。这里要强调的是:32 个 16*16 的点阵汉字显示屏分为 4 行字,每一行字占 8 个字,一行字占用 16 个行选信号。我们将每行字(2 个 8*8LED象素)的对应行由一个行信号来进行控制。这样的话,整个显示屏尽管有 4 行汉字,但逻辑上只需要 4 片 3-8 线译码器 74HC138 控制行地址译码电路。如图二所示。ABCDEa b c d e f g h+5 +5A B+5 +5C D+5 +5E F+5 +5G HA1 B2C3E14 E25E36Y0 15Y1 14Y2 13Y3 12Y4 11Y5 10Y6 9Y7 7U174HC138P1.3P1.4P1.5
9、+5FGHabc一一 一一一一一一一一一一一一A1ABCDEFGHabcdefgh2.3 字库数据输出电路由于显示屏是按每行 8 个字,共计 4 大行的方式来组织 LED 象素的。因此能够显示 32 个 16*16 点阵汉字的显示屏有 64 行,256 列。按照逐行扫描的方式,当某一行的全部列信号锁存器输出,就相应的点亮该行的 LED。又因为一片 74LS595 锁存移位寄存器只连接一片的模块 A1,所以我们要显示一行 8 个汉字需要 32 片的 74LS595 组成。由图三可见,16 块 74LS595 八位锁存移位寄存器首尾相接组成 128 位的串行数据链。每一片 74LS595 经驱动电
10、路控制 8 个LED 象素,最后在行驱动信号的作用下点亮一行的 LED 象素。其中 P3.2 作为移位寄存器数据存入锁存器的控制信号,P3.3 作为锁存器输出允许信号(并且它是通过 、非门、与门共同构成,如图一所示) ,P3.4 作为移位寄存器清除WR信号,TXD 作为移位脉冲信号。但是,我们为了提高扫描速度,利用 74LS373驱动 74LS595 达到同时控制列信号,带动 74LS138 的驱动,大大提高扫描的速度,使我们的显示屏不会出现频闪。这里,LED 阵列行驱动信号接阳极,列驱动信号接阴极。用 AT89C51-24 单片机接收到汉字代码后,查找对应的点阵字库,经过数据总线直接送往显示
11、驱动电路,其电路见图三所示,时序图见图四。SRCLA1ABCDEFGHabcdefghSER14SRCLK11SRCLR10RCLK12E13O015O11O22O33O44O55O66O77Q79U?74LS595SER14SRCLK11SRCLR10RCLK12E13O015O11O22O33O44O55O66O77Q79U?74LS595SER14SRCLK11SRCLR10RCLK12E13O015O11O22O33O44O55O66O77Q79U?74LS595SER14SRCLK11SRCLR10RCLK12E13O015O11O22O33O44O55O66O77Q79U?74LS
12、595A1ABCDEFGHabcdefghA1ABCDEFGHabcdefghA1ABCDEFGHabcdefghA1ABCDEFGHabcdefghSER14SRCLK11SRCLR10RCLK12E13O015O11O22O33O44O55O66O77Q79U?74LS595SER14SRCLK11SRCLR10RCLK12E13O015O11O22O33O44O55O66O77Q79U?74LS595SER14SRCLK11SRCLR10RCLK12E13O015O11O22O33O44O55O66O77Q79U?74LS595SER14SRCLK11SRCLR10RCLK12E13O0
13、15O11O22O33O44O55O66O77Q79U?74LS595A1ABCDEFGHabcdefghA1ABCDEFGHabcdefghA1ABCDEFGHabcdefghP3.2P3.4D2TXDD1一一 一一一一一一ABCDGEFHSRCLP3.2P3.4D2TXDD1一一一一一一一WRP3.3SRCL一一 一一一一一一一一3 汉字显示原理及软件系统设计我们利用通常的显示技术,一般是将所需要显示的字符、符号以及汉字等以点阵的形式存放在系统的程序存储器中,需要时再调用。UCDOS 软件中的文件 HZK16 为 16*16 的国标汉字点阵文件,以二进制格式存储。在文件 HZK16 中按汉
14、字区位码从小到大依次存有国标区位码中的所有汉字。每个汉字占用 32 个字节,每个区为 94 个汉字。在 PC 机的文本文件中,汉字是以机内码的形式存储的,每个汉字占用两个字节:第一个字节为区码,范围从十六进制的 0A1H 开始,对应区位码中区码的第一区;第二个字节为位码,范围也是从 0A1H 开始,对应某区中的第一个位码。这样,将汉字机内码减去 0A0AH 就得到该汉字的区位码。例如,汉字“房”的机内码为十六进制的“B7BF” ,其中“B7”表示区码,“BF”表示位码。所以“ 房”的区位码为 0B7BFH-0A0A0H=171FH。将区码和位码分别转换为十六进制得汉字“房”的区位码为“2331
15、” ,即“房”的点阵位于第 23 区的第 31 个字的位置,相当于在文件 HZK16 中的位置为第 32*(23-1)*94+ (31-1)=67136B 以后的 32 个字节为“房 ”显示点阵。LED 显示屏的整个控制程序主要有主程序、置数子程序、行译码子程序、串行中断服务子程序等。下面将就上述程序的设计思想做一简单的介绍。主程序负责对各功能子程序模块进行有效的组织管理。要强调的一点是,为了区分电脑控制系统是首次上电工作还是已经和上位机进行过有效的数据通讯,主程序中特设一个上电标志,以确保显示屏脱离上位机或停电后下一次能够正常工作。主程序流程图如图 5(a)所示。串行中断服务子程序采用接收中
16、断启动,然后查询接收所有数据的工作方式。由于下位机未给上位机应有的应答信号,因此,要求上位机先发送 10 个数据,其顺序是 55H, AAH,55H,AAH ,55H, AAH, 55H,AAH,55H,AAH,将其做为通讯口令,再发送要显示的汉字点阵数据信息。下位机先判断口令是否正确,若不正确,则直接从中断服务子程序中跳出,不修改显示缓冲区内容;反之,则修改显示缓冲区内容,显示新的汉字信息。串行中断服务子程序如图 5(b)所示。3-8译码器 74LS138主要完成将数据送至列驱动板。由于整个显示屏分为4大行,每行是 4个 16*16点阵的汉字,因此,一行汉字占用 32*4个字节。这就是说上下
17、相邻的两行汉字的同一行之间相隔 128个字节,比如第一行汉字的第一个字节和第二行汉字的第一个字节之间刚好相差 128个字节。割据这个基本规律来设计置数子程序,如图 6(a)所示。行译码子程序的主要作用是行选控制以及当列信号全部到位时,将列驱动板上的所有 74LS595锁存器打开,释放象素的对应“亮”或“暗”数据信息,达到显示的目的。行译码子程序如图 6(b)所示。一一一一一?一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一?一一一一一YNY一一一一一一一一一一一一一一?一一一?一一一?一一一一一一一一一一一一一一一一 1一一一一一一一一一一一NYYNYN(a)
18、(b)N 138(1)一一一一一一一128138(2)一一一一一一一128138(3)一一一一一一一128138(4)一一一一一一一128一一一一一(a)一一 595 一一一一一一一一P1一一一一一一 1一一一一一一一一 595 一一一一一 0.5ms一一一一一(b)图 5 程序流程框图 图 6 子程序框图(a) 主程序流程; (a)置数子程序;(b) 串行中断服务子程序流程 (b)行译码子程序4.结论本文介绍了一种实用的 LED点阵屏汉字显示的硬件电路和软件功能。所设计显示屏单片机控制系统可控制 32个 16*16点阵的汉字显示,不仅可以增加显示内容,而且可以实时改变显示内容,并且保证图问的美观、清晰、工作稳定、可靠,不会出现频闪,对于其它的 LED显示屏控制系统设计有一定的借鉴作用。