方案实现
从理论上说,不论显示图形还是文字,只要控制与组成这些图形或文字的各个点所在的位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。16x16的点阵共有256个发光二极管,显然单片机没有这么多的端口,如果我采用锁存器来扩展端口,按8位的锁存器来计算,16x16的点阵需要256/8=32个锁存器。这个数字很庞大,因为我们仅仅是16x16的点阵,在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。因此在实际应用中的显示屏几乎都不采用这种设计,而采用另外一种称为动态扫描的显示方法。动态扫描的意思简单地说就是逐列轮流点亮,这样扫描驱动电路就可以实现多列(比如16列)的同名行共用一套驱动器。具体就16x16的点阵来说,把所有同1列的发光管的阳极连在一起,把所有同1行的发光管的阴极连在一起(共阳极的接法),先送出对应第一列发光管亮灭的数据,然后选通第1列使其燃亮一定时间,然后熄灭;再送出第二列的数据,然后选通第2列使其燃亮相同的时间,然后熄灭;以此类推,第16列之后,又重新燃亮第1列,反复轮回。当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能够看到显示屏上稳定的字符了。采用扫描方式进行显示时,每一列有一个列驱动器,各列的同名行共用一根数据线。显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。显示时要把一列中各行的数据都传送到相应的行数据线上去。这种方式就是并行方式。
系统硬件电路的设计
硬件电路大致上可以分成单片机系统及外围电路、列驱动电路几部分。单片机采用MSC-51或其兼容系列芯片,采用12MHZ频率晶振,使其显示稳定。单片机的P0口与行数据线相连,用来传输显示数据。P2口低3位与列驱动器相连,送出列选信号;P2.3~P2.6口则用来发送控制信号。P1口和P3口空着,在有必要的时候可以扩展系统的ROM和RAM。列驱动电路有集成电路74HC237构成。它是一个38译码器,只是与74HC138的输出电平相反。74HC237的外形及内部结构如图3所示。它的输入侧有3根数据线A0~A2,经译码后由Y0~Y7数据线输出。引脚 LE 锁存端的输入使能。 引脚E1和E2分别为数据输入使能端,分别为低电平和高电平有效。我们选择E2作为芯片使能端。LE 及 E1 均接地。
一条列线上要带动16列的LED进行显示,按每一LED器件20MA电流计算,16个LED同时发光时,需要320MA电流,根据74HC237 PDF资料能够满足要求。
单片机P0口直接输出要显示的字数据段码送往点阵屏的行数据线上。而4块8×8的选择由74HC237 的使能端控制。系统程序的设计显示屏软件的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。根据软件分层次设计的原理,可以把显示屏的软件系统分为两层;第一层是底层的显示驱动程序,第二层是上层的系统应用程序。显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和其他控制信号,配合完成LED显示屏的扫描显示工作。系统应用程序完成系统环境设置(初始化)、显示效果处理等工作,由主程序来实现。从有利于实现较复杂的算法(显示效果处理)和有利于程序结构化考虑,显示屏程序适宜采用C语言编写。显示驱动程序显示驱动程序在进入循环后,首先将行数据送往P0口,再选择驱动芯片使能及对应列选信号至列驱动芯片,左半屏幕扫描完成后扫描右半屏幕,送数据延时较短,以保证显示屏刷新率的稳定。然后显示驱动程序选择下一列列号,从显示缓存区内读取下一列的显示数据。为消除在切换列显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据,然后再输出新的列号,重新打开显示。
系统主程序
本文设计的系统软件能使系统在目测条件下LED显示屏各点亮度均匀、充足,可显示文字,显示文字应稳定、清晰无串扰。文字显示采用动态显示方式。
系统主程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断和端口;然后以“从右移入滚动”效果显示文字。由于单片机没有停机指令,所以可以设置系统程序不断的循环执行上述显示效果。单元显示屏可以接收来自控制器(主控制电路板)或上一级显示单元模块传输下来的数据信息和命令信息,并可将这些数据信息和命令信息不经任何变化地再传送到下一级显示模块单元中,因此显示板可扩展至更多的显示单元,用于显示更多的显示内容。
以上就是小编为大家分享的一个多字符led动态显示的实例的全部介绍。
安防之家专注于各种家居的安防,监控,防盗,安防监控,安防器材,安防设备的新闻资讯和O2O电商导购服务,敬请登陆安防之家:http://anfang.jc68.com/