基于51单片机的LED点阵显示屏系统Word文件下载.docx
《基于51单片机的LED点阵显示屏系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于51单片机的LED点阵显示屏系统Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
这种利用注入式点知发光原理制作的二极管叫发光二极管,简称LED。
由于电子显示屏制作简单,安装方便,被广泛应用于各种公共场合,如公交汽车的报站器、广告屏以及公告牌等等。
介绍的LED点阵电子显示屏,其功能有固定汉字、字母、数字的显示;
平行左移、右移;
固定信息的循环显示;
显示屏的亮度连续可调;
时间的显示和上位机对显示内容可修改的功能
随着LED显示屏在广告传媒领域逐渐崭露头角,其控制系统也如雨后春笋,层出不穷。
由于他的控制系统均是基于嵌入式处理器开发,所以单片机在其中也占有一席之地。
但是,由于LED显示屏控制较复杂,特别是对于显示特殊效果,如循环移动、覆盖霓虹灯效果,要求处理器运算速度快、执行效率高,
关键词:
AT89C5174HC154(行驱动器)74HC595(列驱动器)16*64点阵LED
1、系统设计总述
从LED材料的不断更新,灰度控制技术的发展,真彩色图像的展现:
到驱动电路的灵活、高效,控制系统技术的提高无不体现了LED行业技术的飞跃发展。
另外,随着计算机的网路技术的发展,LED显示屏在网路环境下的使用情况越来越多,在多媒体、多种显示设备组成的信息显示系统中,采用智能化网路控制,联网控制多屏技术也在实际中得到应用。
现存显示屏的控制系统包括了输入接口电路、信号的控制、转换和数字化处理线路、输出接口电路等,涉及的具体技术很多,其中为关注并研究开发和应用关键技术包括:
串行传输与并行传输、动态扫描与静态锁存、输入接口技术、自动检测、远程控制技术等。
文本以4个16*64点阵显示器为例,单片机AT89C51作为控制器,探讨简单的汉字、数字显示技术。
1.1方案分析
显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。
当列数很多时,并列传输的方案是不可取的。
采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。
但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都以传输到位之后,这一行的各列才能并行地进行显示。
这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两部分。
对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下留给行显示的时间就太少了,以致影响到LED的亮度。
解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。
即在显示本行各列数据的同时,传送下一列数据。
为了达到重叠处理的目的,列数据的显示就需要具有所存功能。
经过上述分析,就可以归纳出列驱动器电路应具有的功能。
对于列数据准备来说,它应能实现串入并处的移位功能;
对于列数据显示来说,应具有并行锁存的功能。
这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。
图为显示屏电路实现的结构框图。
显示屏电路框图
2、16*64点阵屏原理
点阵内部结构及外形如下,16*64点阵共由1024个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一行置1电平,某一列置0电平,则相应的二极管就亮;
如要将第一个点点亮,则9脚接高电平13脚接低电平,则第一个点就亮了;
如果要将第一行点亮,则第9脚要接高电平,而(13、3、4、10、6、11、15、16)这些引脚接低电平,那么第一行就会点亮;
如要将第一列点亮,则第13脚接低电平,而(9、14、8、12、1、7、2、5)接高电平,那么第一列就会点亮。
一般我们使用点阵显示汉字是用的16*16的点阵宋体字库,所谓16*16,是每一个汉字在纵、横各16点的区域内显示的。
也就是说得用四个8*8点阵组合成一个16*16的点阵。
如下图所示,要显示“你”则相应的点就要点亮,由于我们的点阵在列线上是低电平有效,而在行线上是高电平有效,所以要显示“你”字的话,它的位代码信息要取反,即所有列(13~16脚)送(111101*********1,0xF7,0x7F),而第一行(9脚)送1信号,然后第一行送0。
再送第二行要显示的数据(13~16脚)送(111101*********1,0xF7,0x7F),而第二行(14脚)送1信号。
依此类推,只要每行数据显示时间间隔够短,利用人眼的视觉暂停作用,这样送16次数据扫描完16行后就会看到一个“你”字;
第二种送数据的方法是字模信号送到行线上再扫描列线也是同样的道理。
同样以“你”字来说明,16行(9、14、8、12、1、7、2、5)上送(0000000000000000,0x00,0x00)而第一列(13脚)送、“0”。
同理扫描第二列。
当行线上送了16次数据而列线扫描了16次后一个“你”字也就显示出来了。
2.1系统的主要结构
图1、16*64LED点阵系统设计系统框图
3、系统硬件电路的设计
本系统采用AT89C51单片机作控制器。
整个电路主要由单片机控制及其接口电路、驱动显示电路、电源电路等部分组成。
为了简化显示屏电路,降低成本,本系统在单片机部分不加字库存储器,而在PC机上编辑汉字和字符显示信息,并将其转换为相应的点阵显示数据。
然后通过串口(采用RS一232通信标准)送给单片机存储并进行显示处理。
3.1单片机控制电路
(1)MCU的选择:
由于软件对空间的需求和硬件的简化,本系统MCU采用的是AT89C51,它具有8KB的ROM,128字节的RAM,不需再外扩存储器了。
图2、AT89C51的电路设计
图3、AT89C51引脚图
3.2、16*64点阵显示屏设计
图4是一种8x8的LED点阵单色行共阳模块的内部结构图,其单点工作电压矾为1.8V,正向电流露为8~10mA。
当某一行线为高电平而某一列线为低时,其行列交叉的点就被点亮;
而当其某一列线为高时,其行列交叉的点为暗;
当某一行线为低电平时。
无论列线如何。
对应这一行的点全部为暗。
用四个8x8点阵显示可构成16x16点阵显示器,其连接方法如图5所示。
图中,将(A)和(B)的8列、(C)和(D)的8列分别对应相连,同时将(A)和(C)的8行、(B)和(D)的8行分别对应相连。
即可形成一个16行(每一行有16个LED)、16列(每一列也有16个LED)的16x16点阵显示器,可将这256个点称为一页,这样,显示字符时。
只要对一页中对应的亮灭进行控制即可。
把4个16x16点阵显示器相连从而构成16x64的点阵显示器如图6。
图4、行共阳8*8点阵显示屏内部原理图
图5、16*16点阵连接图
图6、16*64点阵连接图
3.3LED点阵显示器的扫描驱动
LED显示屏驱动电路的设计应与所用控制系统相配合。
驱动通常分为动态扫描型及静态锁存型驱动二大类。
本文以动态扫描型驱动电路的设计为例来进行分析。
动态扫描型驱动方式是指显示屏上的16行发光二极管共用一组列驱动寄存器,然后通过行驱动管的分时工作.来使每行LED的点亮时间占总时间的1/16。
只要每行的刷新速率大于50Hz,利用人眼的视觉暂留效应。
人们就可以看到一幅完整的文字或画面。
AT89C51单片机有四个I/O口(P0、P1、P2、P3)。
每个I/OEl有8位,如果都采用并行输出,显然不能满足要求。
因此,本设计中的行扫描驱动采用并口输出。
而场扫描驱动采用串口输出。
3.3.1、行驱动电路
由于16x64点阵显示器有16行,为充分利用单片机的接口。
本电路中加入了一个4—16线译码器74HCl54,其输入是一个16进制码,解码输出为低态扫描信号.它们的管脚示意图如图7所示。
把74HCl54的E1和E2引脚接地。
然后以A、B、C、D四脚为输入端。
就会形成16种不同的输入状态,分别为0000~1111,然后使每种状态只控制一路输出。
即会有16路输出。
如果一行64点全部点亮。
图7、74HC154引脚图
3.3.2、列驱动电路
本系统列扫描驱动电路的设计可用串人并出的通用集成电路74HC595来作为数据锁存。
74HC595是一个八位串行输入三态并行输出的移位寄存器,其管脚见图8所示,其中SI是串行数据的输入端,RCK是存储寄存器的输入时钟,SCK是移位寄存器的输入时钟。
Q7H是串入数据的输出,G是对输入数据的输出使能控制,QA~QH为串人数据的并行输出。
从SI口输入的数据可在移位寄存器的SCK脚上升沿的作用下输入到74HC595中.并在RCK脚的上升沿作用下将输入的数据锁存在74HC595中,这样,当G为低电平时,数据便可并行输出。
为了避免与PC机串口输入的数据相互干扰,也可使用模拟串口P1.4~P1.7来分别输出串行数据、移位时钟SCK、存储信号RCK和并行输出的使能信号G。
为了消除电源电压的波动及行扫描管压降(第一行点亮的点数不同,将引起管压降的变化,从而影响通过LED管的电流1的变化对LED显示屏亮度的影响,设计时可采用列恒流驱动电路,可选用三极管8550和外围元件构成列恒流驱动电路,并通过调整100kQ可调电阻使三极管处于放大状态。
同时将集电极电流调整为10mA.从而使点亮对应点阵时通过LED的电流不变。
图8、74HC595引脚图
4、系统软件的设计
显示屏软件的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。
根据软件分层次设计的原理,可以把显示屏的软件系统分为两层;
第一层是底层的显示驱动程序,第二层是上层的系统应用程序。
显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和其他控制信号,配合完成LED显示屏的扫描显示工作。
显示驱动器程序由定时器T0中断程序实现。
系统应用程序完成系统环境设置(初始化)、显示效果处理等工作,由主程序来实现。
从有利于实现较复杂的算法(显示效果处理)和有利于程序结构化考虑,显示屏程序适宜采用C语言编写。
4.1显示驱动程序
显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率的稳定,1/16扫描显示屏的刷新率(帧频)计算公式如下:
刷频率(帧频)=
×
溢出率=
(4-1)
其中f位晶振频率,t为定时器T0初值(工作在16位定时器模式)。
然后显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。
为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据打入输出锁存器并锁存,然后再输出新的行号,重新打开显示。
4.2系统主程序
本文设计的系统软件能使系统在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。
图形或文字显示有静止、移入移出等显示方式。
系统主程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断和端口;
单元显示屏可以接收来自控制器(主控制电路板)或上一级显示单元模块传输下来的数据信息和命令信息,并可将这些数据信息和命令信息不经任何变化地再传送到下一级显示模块单元中,因此显示板可扩展至更多的显示单元,用于显示更多的显示内容。
程序流程图
5、调试及性能分析
5.1开发环境介绍
程序编写采用Keil51环境下调试,KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
用过汇编语言后再使用C来开发,体会更加深刻。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
5.2理论性能分析
LED显示屏硬件电路只要硬件质量可靠,引脚焊接正确,一般无需调试即可正常工作。
软件部分需要调试的主要有显示屏刷新频率及显示效果两部分。
显示屏刷新率由定时器T0的溢出率和单片机的晶振频率决定,表5-1给出了实验调试时采用的频率及其对应的定时器T0初值。
表5-1显示平刷新率与T0初值关系表(24MHz晶振)
刷新率
25
50
62.5
75
85
100
120
T0初值
0xec78
0xf63c
0xf830
0xf97e
0xfa42
0xfb1e
0xfbee
从理论上来说,24Hz以上的刷新频率就能看到稳定的连续的显示,刷新率越高,显示越稳定,同时刷新频率越高,显示驱动程序占用的CPU时间越多。
试验证明,在目测条件下刷新频率40Hz一下的画面看起来闪烁较严重,刷新频率50Hz以上的已基本察觉不出画面的闪烁,刷新频率达到85Hz以上时再增加画面闪烁没有明显的改善。
这个方案设计的16x16的点阵LED图文显示屏,电路简单,成本较低,且较容易扩展成更大的显示屏;
显示屏各点亮度均匀、充足;
显示图形或文字稳定、清晰无串扰;
可用静止、移入移出等多种显示方式显示图形或文字。
5.3系统调试
软件调试:
软件部分是先参考书上的例子,然后自己根据硬件电路写程序,由于以前所学是C语言,所以这个系统在编写程序过程中都采用C语言编写。
刚刚开始,编写不会一次性通过,经过仔细分析修改最后编译成功。
但是,在实际写如S51中,LED显示屏出现各种各样的乱码,通过再次认真仔细分析多次修改程序后,程序能够正常运行。
致谢
大学所学的知识在这次的设计及论文里得到了充分体现,在完成这个设计的过程中,也遇到了不少的问题,但在同学的帮助下,问题很快就得到了解决。
在此过程中,我也学到了不少的新的知识,自己的动手能力得到了大大的提高,分析问题和总结问题也积累了不少的经验,在此我衷心感谢我周边的同学,他们为我提供了很多的资料和帮助。
在此也感谢其他同学对我学业的支持与关心。
参考文献
[1]靳
达.单片机应用系统开发实例导航.北京:
人民邮电出版社,2003
[2]楼然苗,李光飞.51系列单片机设计实例.北京:
北京航空航天大学出版社,2003
[3]诸昌钤.LED显示屏系统原理及工程技术.成都:
电子科技大学出版社,2000
[4]余永权,汪明慧等.单片机在控制系统中的应用.北京:
电子工业出版社,2004
[5]李群芳,黄建.单片微型计算机与接口技术.北京:
电子工业出版社,2001