基于at89c51的led点阵显示驱动程序设计内容摘要:

机 IO 口进行扩展增加单片机并行输出的能力。 LED 显示屏是由一个一个的发光二极管点阵构成的,要构成大屏幕的 LED 显示屏就基于 AT89C51的点阵 LED显示驱动程序 ( C语言)设计 4 需要多个发光二极管。 构成 LED 屏幕的方法有两种,一是由单个的发光二极管逐点连接起来, 二是选用一些由单个发光二极管构成的 LED 点阵子模块构成大的 LED 点阵模块。 目前 市场上普遍采用的点阵模块有 88 、 1616 几种;这两种屏幕构成方法各有有缺点,单个发光二极管构成显示屏优点在于当单个的发光二极管出现问题时只需更换一个二极管即可,检修的成本较低,缺点在于连接线路复杂;而点阵模块构成的方法却正好与之相反,模块构成省约了大量的连线,不过当一个 LED 出现问题时同在一个模块的所有 LED 都必须被更换。 这就加大了维修的成本 [8]。 两种方法相比较,决定采取模块构成的方法来制作一个 LED 点阵显示屏。 为了避免模块的缺点,选择点阵数较小的模块来减小出现这一问题的风险。 所以构建一个 1616的 LED 点阵屏选用四块 88 点阵模块 ,如图 2 所示。 图 2 8X8LED 点阵 一 个 1616 的 LED 显示屏行和列各有 16 支引脚,不能单靠 51 单片机的端口驱动所以必须要对单片机的端口个数进行扩展。 经常采用的端口扩展方法是用串并转换芯片进行 译码。 常用的串并转换芯片有 74LS154( 4 线 16 线译码器)、 74LS164( 8 位串并转换器)、 74HC595 等 [9]。 51 系列单片机端口低电平时,吸入电流可达20mA,具有一定的驱动能力;而为高电平时,输出电流仅数十 μ A甚至更小(电流实际上是由脚的上拉电流形成的),基本上没有驱动能力,所以单片机不能直接驱动 LED 显示屏显示 [10]。 在基于 AT89C51的点阵 LED显示驱动程序 ( C语言)设计 5 单片机和显示屏之间还需要增加以功能放大位目的的驱动电路。 LED 显示原理 人眼的亮度感觉不会因光源的消失而立即消失,要有一个延迟时间,这就是视觉的惰性。 视觉惰性 可以理解为光线对人眼视觉的作用、传输、处理等过程都需要时间,因而使视觉具有一定的低通性。 实验表明,当外界光源突然消失时,人眼的亮度感觉是按指数规律逐渐减小的。 这样当一个光源反复通断,在通断频率较低时,人眼可以发现亮度的变化;而通断频率增高时,视觉就逐渐不能发现相应的亮度变化了。 不致于引起闪烁感觉的最低反复通断频率称为临界闪烁频率。 通 [11]过实验证明临界闪烁频率大约为24Hz。 因此采用每秒 24 幅画面的电影,在人看起来就是连续活动的图象了。 同样的原理,日光灯每秒通断 50 次,而人看起来却是一直亮的。 由于视觉具有 惰性,人们在观察高于临界闪烁频率的反复通断的光线时,所得到的主观亮度感受实际上是客观亮度的平均值 [12]。 视觉惰性可以说是 LED 显示屏得以广泛应用的生理基础。 首先,在 LED 显示屏中可以利用视觉惰性,改善驱动电路的设计,形成了目前广为采用的扫描驱动方式。 扫描驱动方式的优点在于 LED 显示屏不必对每个发光灯提供单独的驱动电路,而是若干个发光灯为一组共用一个驱动电路,通过扫描的方法,使各组发光灯依次点燃,只要扫描频率高于临界闪烁频率,人眼看起来各组灯都在发光。 由于 LED 显示屏所使用的发光灯数量很大,一般在几千只到 几十万只的范围,所以节约驱动电路的效益是十分可观的 [13]。 串行传输与并行传输技 术 LED 显示屏的数据传输方式主要有串行和并行两种。 日前普遍采用串行控制技术,显示屏每个单元内部的不同驱动电路和各级联单元之间,每个时钟仅传送一位数据。 采用这种方式的驱动 IC 种类较多,不同显示单元之间的联线较少,可减少显示单元的数据传输驱动元件,从而提高整个系统的可靠性和性价比,具体工程实现也较为容易。 自动检测及远程控制技术 LED 显示屏的构成复杂,特别是室外显示屏,供电、环境亮度、环境温度条件等都直 接影响显示屏的正常运行。 在 LED 显示屏的控制系统中,因根据需要对温度、亮度、电源等进行自动检测控制,也可根据需要,远程实现对显示屏的亮度、色度调节、图像水平和垂直位置的调节以及工作方式的转换等。 动态扫描与静态锁存技术 LED 显示屏控制系统实现显示信息的刷新技术有动态扫描和静态锁存两种方式。 一般室内显示屏多采用动态扫描技术,即一行发光二极管共用一行驱动寄存器,根据共用一行驱动寄存器的发光二极管像素数目,分为 1/4,1/16 扫描等。 室外显示屏基本上采基于 AT89C51的点阵 LED显示驱动程序 ( C语言)设计 6 用静态锁存技术,即每一个发光一极管都对应有一个驱 动寄存器,无需时分工作,从而保证了每一个发光一极管的亮度占空比为 100%。 动态扫描法可以大大减少控制器的 I/O口,因此应用较广 [14]。 系统总体 电路图 如图 3 所示,拟采用以 AT89C51 单片机为核心芯片的电路来实现,主要由 AT89C51芯片、电源、 74HC15 16 16 LED 点阵 5 部分组成。 从理论上说,不论显示图形还是文字,只要控制与组成这些图形或文字的各个点所在的位置相对应的 LED 器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。 16x 16 的点阵共有 256 个发光二极管,显然单片机没有这么多的端口,这个数字很庞大,因为我们仅仅是 16x 16 的点阵,在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。 因此在实际应用中的显示屏几乎都不采用这种设计,而采用另外一种称为动态扫描的显示方法。 动态扫描的意思简单地说就是逐行轮流点亮,这样 扫描驱动电路就可以实现多行(比如 16 行)的同名列共用一套驱动器。 具体就 16x 16 的点阵来说,把所有同 1 行的发光管的阳极连在一起,把所有同 1 列的发光管的阴极连在一起(共阳极的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第 1 行使其燃亮一定时间,然后熄灭;再送出第二行的数据并锁存,然后选通第 2 行使其燃亮相同的时间,然后熄灭;以此类推,第 16 行之后,又重新燃亮第 1 行,反复轮回。 当这样轮回的速度足够快(每秒 24 次以上),由于人眼的视觉暂留现象,就能够看到显示屏上稳定的图形了。 图 3 显示屏电路框图 基于 AT89C51的点阵 LED显示驱动程序 ( C语言)设计 7 LED 驱动显示采用动态扫描方法,动态扫描方式是逐行轮流点亮,这样扫描驱动电路就可以实现多行的同名列共用一套列驱动器。 显示驱动程序在进入中断后首先要对定时器 T0 重新赋初值,以保证显示屏刷新率的稳定 , 然后显示驱动程序查询当前燃亮的行号,从显 示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。 主程序电路图如图 4 所示。 基于 AT89C51的点阵 LED显示驱动程序 ( C语言)设计 8 图 4 主程序电路 图 3 基于 AT89C51 的点阵 LED 显示驱动程序 设计 系统 主 程序设计 LED 点阵显示系统中各模块的显示方式有静态和动态显示两种。 静态显示原理简单、控制方便,但硬件接线复杂,在实际应用中一般采用动态显示方式,动态显示采用扫描的方式工作,由峰值较大的窄脉冲驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示文字信息的脉冲信号,反复 循环以上操作,就可显示文字信息。 本系统中下位机(单片机 89C51)的主要功能就是实现 LED 显示屏上字样的移位、显示、数据的读取等功能。 其显示程序流程如图 5 所示。 程序见附录 A 图 5 主程序流程图 开始 系统初始化 读取 ROM 数据 转换对应点阵数据 缓冲处理 显示效果处理 显示结束 送入显示缓冲区 结束 N Y 基于 AT89C51的点阵 L。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。