赵涟漪
(安徽水利水电职业技术学院,安徽 合肥 231603)
LED大屏幕点阵显示器一般应用于广告宣传、新闻传播等场合,不仅能显示文字、图形、动画等,还可以单色和彩色显示。LED 点阵显示器是把LED 按矩阵方式排列在一起,为了完成字符、文字或图形等的显示,可以通过控制不同位置的LED的亮灭来实现[1]。本文根据点阵显示器的原理,结合Protues 仿真软件,实现了16×16点阵系统的字符显示功能。
此系统主要由以下部分构成:+5V 电源、16×16LED 点阵显示器、74LS138 和74HC595 行列驱动电路、单片机最小系统单元。通过STC89C52 单片机控制驱动电路实现LED点阵显示,由此可以得到系统设计结构图如图1所示。
图1 LED点阵系统结构设计图
在电子市场有专门的8×8LED点阵显示器模块产品,如图2(a) 所示,它有64个像素,可以显示一些比较简单的字符或图形。其内部电路结构分为8条行线和8 条列线,行和列的交叉处有一个LED,所以每一片8×8的点阵点64个LED构成,内部结构如图2(b)所示。
图2 8×8 LED点阵显示器
对于LED的显示方法通常有两种:一是点亮若干个LED 灯,使得亮的LED 灯构成要显示的字符;二是与其相反,点亮其他的LED 灯,使不亮的LED 灯组合成字符,通常情况下,人们选择第一种方式。例如显示数字“1”,显示效果如图3所示。
图3 显示形状“1”与对应的列引脚信号示意图
4 块8×8点阵可通过将上面2片LED点阵模块的行并联在一起组成ROW0-ROW7,下面2片点阵模块的行并联在一起组成ROW8-ROW15,由此组成16 根行扫描线;将左边上、下2片点阵模块的列并联在一起组成COL0-COL7,右边上、下2 片点阵模块的列并联在一起组成COL8-COL15,由此组成16根列选线。这样的连接方法即可构成16×16 的点阵显示屏,如图4所示。
图4 16×16LED点阵显示屏
图5 74LS138级联原理图
图6 单片机最小系统
图7 主程序点阵显示流程图
点阵的显示原理是在每一时刻仅显示一行数据,然后通过每行轮流显示,以很快的速度不断地刷新,因此需要采用一定的驱动电路来实现对当前该显示的行进行驱动。
1) 行驱动电路设计
设计中行驱动电路的驱动可以采用 74LS138 译码器,74LS138 译码器的控制输入端有。当( 即S1= 1和均为0)时,译码器能实现其功能,否则所有输出端口处于高电位,译码器停止译码工作[2]。可以将多片74LS138 连接起来,以扩展译码器的输出功能。这16×16点阵需要的引脚线有16 根,而74LS138 仅有8 位输出引脚,一片74LS138 显然是不够用的,本设计可利于两片74LS138实现4线-16线的译码器功能,片1的八个输出端作为低位的输出,片2的八个输出端作为高位的输出。两片的A2、A1、A0分别并联作为4线-16线译码器地址输入的A2、A1、A0,而将片1 的和片2 的S1并联作为4-16 线译码器地址输入的高位A3。当A3=0时,片1工作,片2禁止。当A3=1时,片1禁止,片2工作,从而实现4线-16线译码器的逻辑功能。
2) 列驱动电路
74HC595 是硅结构的CMOS 器件,具有8 位移位寄存器和1个存储器,具备三态输出功能,而且价格低廉、驱动能力强、操作简单、有存储寄存器,因此74HC595 芯片用来扩展51 单片机的I/O 口也比较合适。因为如果采用I/O 端口直接驱动列,那么将仅仅是驱动就需要占用16 个I/0 端口,不利于其他外设的扩展,如果将两片74HC595 芯片实现级联,即将其中一片74HC595 的SQH 引脚与另一片的SI 引脚相连,高、低八位分开控制[3],也可实现对16×16点阵的列的控制,使用锁存器实现的列驱动电路硬件连接相对简单,软件编程也方便,但所要占用的I/0 端口较多,对于大分辨率的点阵显示屏来说,I/0端口资源有限,所以该方式不适合大系统的点阵显示屏的设计。在本设计中,由于采用16×16 点阵模拟点阵显示屏,所占的I/0端口资源较少,因此,可以采用锁存器来实现列驱动电路。
一般情况下,能使单片机正常工作的最低要求,需要包括给单片机供电的电源、时钟电路和复位电位,这些基本的外部电路可以构成一个简单的系统,称为单片机的最小系统[4]。
1) 时钟电路
一个由高增益反相放大器构成的振荡电路称为晶振电路,分别以19 号引脚XTAL1 和18 号引脚XTAL2作为电路的输入和输出端子,电路中包含2个电容C1 和C2,一般取值大小为30pF 左右,起稳定频率和快速起振的作用[5]。通常情况下,单片机中晶振的取值不大于12MHZ,取6MHZ 或12MHZ,串口通信时,选用11.0592MHZ。
2) 时序的概念
单片机内的各种操作,都是在一系列脉冲控制下进行的,而各脉冲在时间上是有先后顺序的,这种顺序就称为时序,由以下几个概念进行分析。
①振荡周期,又称振荡频率fosc 的倒数,是振荡信号的周期,由晶体振荡器直接产生。用Tosc 表示,也称为节拍。振荡周期Tosc=1/fosc,如:为6MHz 时Tosc=1/6μs,为12MHz时Tosc=1/12μs。
②状态周期,又定义为状态,用S表示。是振荡频率fosc经过二分频后构成的,第一节拍时完成算术或逻辑运算,第二节拍时完成数据传递。
③机器周期是机器的基本操作周期。一个机器周期含6个状态周期,分别用S1~S6表示,或用S1P1、S1P2...S6P2表示。
④指令周期,是指单片机执行一条指令需要的全部时间,是单片机中最大的时序定时单位。不同的指令占用的指令周期数不同,单周期指令只包含一个机器周期,双周期指令包含2个机器周期,依次类推。
3) 复位电路
在单片机的9号引脚RST上加2个机器周期以上的高电位,在上电的瞬间,RST 与VCC 相通,电路RC电路充电电流不断减少,但RST 只要保持10ms 以上高电平就能使单片机有效复位。将单片机的CPU 和系统中其他功能部分都恢复到初始状态,例如复位后PC=0000H,单片机的指令从第1个单元执行。
主程序点阵刷新显示模块主要任务是不断循环地显示数字、文字或图形。显示的方式采用循环右移,即数据循环向右移动显示,主要由单片机驱动点阵的行驱动和列驱动电路来实现数据的显示。在绘制流程图时,需要根据相关的模块分别进行绘制,这样有利于进行模块化编程。
Proteus 仿真软件是由英国Labcenter Electronics公司研发的一款EDA软件[7],Proteus 仿真软件自备丰富的元器件库,设计者可以从库中调用所需元器件,在编辑窗口中摆放好,通过简单地连线就可完成整个电路的设计。除此之外,Proteus 仿真软件界面清晰、窗口分布清楚、色彩多样化,因此在Proteus 仿真软件问世的短短20年时间里,已经在全世界得到广泛的应用和肯定。
LED 点阵显示系统的仿真器件清单如表1 所示。Proteus 仿真软件在“原理图设计”环境下绘制完成的电路图,双击 STC89c52 打开“Edit Component”对话窗口,在“Program File”栏中选择用keil生成的“.HEX”文件,最后单击Protues仿真软件界面左下角的三角形开始按钮,程序开始运行。根据系统设计图完成电路器件的搭建,即可实现LED 点阵系统的软硬件联调,完成16×16点阵显示的设计与制作。
表1 点阵显示器仿真系统清单
本文以STC89C52 单片机为控制中心,充分利用74LS138和74HC595芯片扩展单片机I/O口功能,通过8×8点阵构成的16×16点阵显示单元完成系统的设计与制作。结合Keil 编程软件以C语言为编程语言,具有实现成本低、电路简单和系统稳定的特点,在当前提倡节能环保高效的大背景下,具有更广阔的市场前景。