1 设计原理与设计方案
1.1 设计原理
对于点阵型LED显示可以采用共阴极或共阳极,本系统采用共阳极,其硬件电路如图1所示。当行上有一正选通信号时,列选端四位数据为0的发光二极管便导通点亮。这样只需要将图形或文字的显示编码作为列信号跟对应的行信号进行逐次扫描,就可以逐行点亮点阵。只要扫描速度大于24 Hz,由于扫描时间很快,人眼的视觉有暂留效应,就可以看到显示的是完整的图形或文字。
图1 硬件电路
本次设计要完成基于单片机的LED点阵显示控制的设计,总体方案是以单片机为控制核心,通过行列驱动电路,在LED点阵屏上以静止、左移、右移等方式显示文字。在设计过程中驱动电路运用动态扫描显示,动态扫描简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套列驱动器。由于动态扫描显示(并行传输)的局限性,故采用动态扫描显示(串行传输),显示模式用LED点阵屏模块作显示屏。
1.2 总体方案
本次设计单片机采用AT89C51,行电路使用逐行扫描的方式,列电路使用串入并出的数据传输方式,显示屏使用由16x16的点阵LED组成的点阵模块。使用到的芯片有传入并出移位寄存器74LS595、4线-16线译码器74LS154和三极管8550。总体设计框图如图2所示。
图2 总体设计框图
2 系统硬件设计
硬件电路大致上可以分成单片机系统及外围电路、列驱动电路和行驱动电路以及LED点阵阵列3部分,用到的芯片有单片机AT89C51,4线-16线译码器74LS154,带锁存功能的串入并出移位寄存器74LS595。
2.1 单片机系统及外围电路
单片机采用AT89C51。系统采用12 MHz或更高频率的晶振,以获得较高的刷新频率,使显示更稳定。单片价的串口与列驱动器相连,用来送显示数据。P1口低4位与行驱动器相连,送出行选信号,P1.5~P1.7口则用来发送控制信号。P0和P2口空闲,在必要时可以扩展系统的ROM和RAM。
2.2 时钟脉冲电路
AT89C51的最高时钟脉冲频率已经达到24 MHz,它内部已经具备了振荡电路,只要在AT89C51的两个引脚(即19、18脚)连接到简单的石英振荡晶体的2个管脚即可,同时晶体的2个管脚也要用30 pF的电容耦合到地,如图3所示。
图3 时钟脉冲电路
2.3 复位电路
AT89C51的复位引脚(RESET)是第9脚,当此引脚连接高电平超过2个机器周期时,即可产生复位的动作。以24 MHz的时钟脉冲为例,每个时钟脉冲为05μs,两个机器周期为1 μs,因此,在第9脚上连接1个2μs的高电平脉冲,即可产生复位动作。最简单的就是只有1个电阻跟1个电容就可构成可靠复位的电路,电阻一般选择10 kΩ,电容一般选择10μF,如图4所示。
图4 复位电路
2.4点阵显示驱动电路设计
由于题目要求不允许使用集成驱动电路,但不采取驱动电路,显示屏不稳定、亮度不高,故采取分立元件三极管作驱动电路,驱动电路如图5所示。
图5 点阵显示驱动电路
3 系统软件设计
显示屏软件的主要功能是向显示屏提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。
根据软件分层次设计的原理,可把显示屏的软件系统分成两大层:第一层是底层的显示驱动程序,第二层是上层的系统应用程序。显示驱动程序负责向点阵屏传送特定组合的显示数据,并负责产生行扫描信号和其他控制信号,配合完成LED显示屏的扫描显示工作。显示驱动程序由显示子程序实现;系统环境设置(初始化)由系统初始化程序完成;显示效果处理等工作,则由主程序通过调用子程序来实现。
3.1 显示驱动程序
显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率的稳定。16行扫描格式的显示屏刷新率(帧频)的计算公式如下:
其中:F为晶振频率;T为定时器T0初值(工作在16位定时器模式)。
其次,显示驱动程序查询当前点亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。
为消除在切换行显示数据时产生的拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据输入输出锁存器后,再输出新的行号,重新打开显示。图6所示为显示驱动程序(显示屏扫描函数)流程图。
图6 显示驱动程序流程图
3.2 系统主程序
系统主程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断、端口。然后以“卷帘出”效果显示文字或图案,停留几秒钟,接着向上滚动显示汉字或图形,停留几秒后,再左移显示汉字或图形、右移显示等。最后以“卷帘入”效果隐去文字。图7所示为系统主程序的流程图。
图7 系统主程序的流程图
4软件仿真与硬件实现
4.1 软件仿真
本设计的核心单元是单片机AT89C51,所以选用单片机仿真软件Proteus 7.O和Keil对整体设计进行软件仿真。
运行Proteus中的ISIS模块对设计好的原理图进行布图,仿真电路如图8所示。
图8 仿真电路
将完整的源程序Copy到Keil仿真开发环境里,运行调试。把编译好的源程序加载到仿真电路图中,运行程序,在点阵显示屏上按设计的显示效果依次以“卷帘入”、“左卷帘”、“右卷帘”、“卷帘出”显示结果正确。
4.2 硬件实现
软件仿真通过后,充分证明了方案的正确性与可行性。按照设计方案进行硬件电路的搭建并进行调试。结果正确如下图9所示。
图9 硬件实物图
5 结束语
本文通过设计基于单片机的LED点阵显示控制的设计,对LED显示模块单元如何进行行列信号控制及信号传输中的驱动问题进行了研究。给出了硬件的原理以及连接的方法,软件的设计流程以及部分代码,并给出了完整的电路图,结果可以正常显示汉字、图片信息,并且可动态显示。