1、单片机课程设计 - 16 16 点阵 LED 电子显示屏的设计 第一章 系统总体方案设计 LED 驱动显示采用动态扫描方法,动态扫描方式是逐行轮流点亮,这样扫描驱动电路就可以实现多行的同名列共用一套列驱动器。以 16 16 点阵为例,把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送出对应第 1 行发光管亮灭的数据并锁存,然后选通第 1行使其燃亮一定的时间,然后熄灭;再送出第 2 行的数据并锁存,然后选通第 2行使其燃亮相同的时间,然后熄灭; 第 16 行之后,又重新燃亮第 1 行,反复轮回。当这 样轮回的速度足够快(每秒 24 次以上),由于人眼的视觉
2、暂留现象,就能看到显示屏上稳定的图形。该方法能驱动较多的 LED,控制方式较灵活,而且节省单片机的资源。 显示数据传输采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都已传输到位之后,这一行的各列才能并行地进行显示。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下,留给行显示的时间就太少了,以致影响到 LED 的亮度。 采用串行传输中列数据准备和列数据显示的时间矛盾,可以采用重叠处理的方法。即在显示本行各列数据的同时,传送下一行的列数据。
3、为了达到重叠处理的目的,列数据的显示就需要有锁存功能。对于列数据准备来说,它应能实现串入并出的移位功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串行移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。 系统框图如图一 图一 点阵显示器硬件系统框图 第二章 系统硬件电路的设计 硬件电路大致上可以分为单片机 系统及外围电路、列驱动电路和行驱动电路三部分。 一 单片机系统及外围电路 单片机采用 89C51 或更高频率的晶振,以获得较高的刷新频率,使得显示更稳定。单片机的串口与列驱动相连,用来显示数据。 P1口和 P2口空着,在有必要是可以扩展系统的 ROM和 RAM。 16*16点阵
4、显示屏的硬件原理图如下所示。 图 2 硬件原理图 二 列驱动电路 列驱动电路有集成电路 74HC595构成。它具有有个 8位串入并出的移位寄存器和一个 8为输出锁存器结构,而且移位寄存器 和输出锁存器的东芝是各自独立的,可以显现在显示本行各列数据的同时,传输下一行的列数据,即达到重叠处理的目的。 74HC595的外形及引脚如下图所示 图 3 74HC595 的外形及引脚 它的输入侧有 8个串行移位寄存器,每个移位寄存器的输出都连接一个输出锁存器。引脚 SI 是串行数据的输入端。引脚 SCK是移位寄存器的移位时钟脉冲,在其上升沿将发生移位,并将 SI的下一个数据打入最低位。移位后的各位信号出现在
5、各移位寄存器的输出端,也就是输出寄存器的输入端。 RCK 是输出锁存器的打入信号,器上升沿将移位寄存器的 输出打入输出锁存器。引脚 G是输出三态门的开放信号,只有当其为低时锁存器的输出才开放,否则为高阻态。 SCLR信号是移位寄存器的清 0输入端,当其为低时移位寄存器的输出全为 O。由于 SCK和 RCK两个信号是相互独立的,所以能够做到输入串行移位与输出锁存器互不干扰。芯片的输出端为 QA-QH,最高位 QH可作为多片 74HC595级联应用时,向上一级的级联输出。但因 QH受输出锁存器打入控制,所以还从输出锁存器前引出了 QH ,作为与移位寄存器完全同步的级联输出。 三行驱动电路 单片机
6、P1口低 4位输出的行号经 4/16 线译码器 74LS154译码后生成 16条行选通信号线,再经过驱动器驱动对应的行线。一条行线上要带动 16列的 LED进行显示,按每一 LED器件 20MA电流计算, 16个 LED同时发光时,需要 320MA电流,选通三极管 8550作为驱动管可满足要求。 第三章 系统程序的设计 显示屏软件的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。根据软件分层次设计的原理,可以把显示屏的软件系统分为两层;第一层是底层的显示驱动程序,第二层是上层的系统应用程序。显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和 其他控制信号,配合完
7、成 LED显示屏的扫描显示工作。显示驱动器程序由定时器 T0中断程序实现。系统应用程序完成系统环境设置(初始化)、显示效果处理等工作,由主程序来实现。 一显示驱动程序 显示驱动程序在进入中断后首先要对定时器 T0重新赋初值,以保证显示屏刷新率的稳定, 1/16 扫描显示屏的刷新率(帧频)计算公式如下: 刷频率(帧频) =1/16T0 溢出率 =1/16f/12 ( 65536-t) 其中 f位晶振频率, t为定时器 T0初 值(工作在 16位定时器模式)。 然后显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据打入输出锁存器并锁存,然后再输出新的行号,重新打开显示。图 4 为显示驱动程序(显示屏扫描函数)流程图。