最新版基于AT89c51的LED广告显示电路的设计本科毕业设计.docx
《最新版基于AT89c51的LED广告显示电路的设计本科毕业设计.docx》由会员分享,可在线阅读,更多相关《最新版基于AT89c51的LED广告显示电路的设计本科毕业设计.docx(25页珍藏版)》请在冰豆网上搜索。
最新版基于AT89c51的LED广告显示电路的设计本科毕业设计
南宁学院
毕业论文
论文题目:
基于AT89c51的LED广告显示电路的设计
院系:
机电学院
专业:
电气自动化技术
班级:
电气2班
学号:
姓 名:
指导教师:
2013年10月10日
基于AT89c51的LED广告显示电路的设计
摘要
LED点阵显示屏作为一种新兴的显示器件,是由多个独立的LED发光二极管封装而成。
LED点阵显示屏可以显示数字或符号,通常用来显示时间、速度、系统状态等。
由于单片机技术的不断发展和高亮度LED发光管的出现使得大屏幕高亮度LED电子广告屏成为可能,与传统的霓虹灯广告在显示效果以及可修改性上都有着无法比拟的优势,而且单片机的日益平民化以及LED技术的不断创新,使得高亮度高清晰的LED点阵广告牌与传统霓虹灯广告牌的成本日益接近。
为了能简单的实现基于单片机的LED显示系统控制,本文设计了基于AT89C51单片机64×16LED汉字滚动显示屏电路并运用Proteus软件仿真实现其显示功能。
本系统的设计具有体积小、硬件少、电路结构简单及容易实现等优点。
关键词:
LED,单片机,Proteus仿真
目录
1绪论1
1.1课题背景1
1.2课题研究现状1
1.3课题设计任务2
2系统总体设计方案2
2.1总体设计方案的论证2
2.2总体设计方案的确定3
3系统硬件电路设计4
3.1单片机系统电路4
3.2时钟电路6
3.3复位电路7
3.4电源电路7
3.5点阵显示电路7
3.6驱动电路9
4系统的软件程序设计9
4.1软件系统分析9
4.1.1模块细分10
4.1.2确定算法10
4.1.3编写程序10
4.3显示驱动程序12
5整体电路的设计13
6字模的提取14
7软件仿真调试15
7.1Proteus软件介绍15
7.2进入ProteusISIS15
7.3工作界面16
7.4创建源代码仿真文件17
结论19
谢辞20
参考文献21
附录22
外文资料24
第一章绪论
1.1课题背景
LED显示屏是用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。
它的优点是亮度高、工作电压低、功耗小、微型化、易与集成电路匹配、驱动简单、寿命长、耐冲击、性能稳定。
图文显示屏可与计算机同步显示汉字、英文文本和图形。
视频显示屏采用微型计算机进行控制,图文、图像并茂,以实时、同步、清晰的信息传播方式播放各种信息,还可显示二维、三维动画、录像、电视、VCD节目以及现场实况[1]。
LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。
伴随世界技术的飞速发展,以前,需要花大量的时间和精力来搭建一个模拟电路,繁多的元器件不仅给电路构成增加了成本,也使电路复杂化,而现在只需要一块几平方厘米的单片机,在写入相应的功能程序,便可以代替以前的电路模式了。
运用单片机技术,达到标识显示的目的,也将舍去原来的画图描写以及霓红灯标识显示方式了,而单片机有可重复编写的功能,只需要将程序稍稍改动,就能达到相应显示效果。
同时利用嵌入式系统软硬件设计仿真平台,能够在线、实时仿真多种类型的单片机,诸如MCS-51系列单片机、PIC单片机、AVR单片机等,能够像硬件仿真器一样进行软硬件调试,而没必要花钱去购买和维护价格不菲的仿真器,对于初学单片机的人来说,既减少了学习成本,又达到了良好的学习效果。
1.2课题研究现状
LED点阵显示屏的构成型式有多种,其中典型的有两种。
一种把所需展示的广告信息烧写固化到EPROM芯片内,能进行固定内容的多幅汉字显示,称为单显示型;另一种在机内设置了字库、程序库,具有程序编制能力,能进行内容可变的多幅汉字显示,称可编程序型[2]。
目前,我发现LED点阵显示屏大部分是单显示型,其显示的内容相对较少,显示花样较单一。
一般在产品出厂时,显示内容就已写入显示屏控制系统中的EPROM芯片内,当需要更换显示内容时就非常困难,这样使该类型的显示屏使用范围受到了限制。
国内的另一种LED显示屏——可编程序型LED显示屏,虽然增加了显示屏系统的编程能力,显示内容和显示花样都有所增加,但也存在着更换显示内容不便的缺点。
随着社会经济的迅速发展,如今的广告牌都存在着显示内容丰富、信息量大、信息更换速度快等特点。
因此传统的LED显示屏控制系统已经越来越不能满足现代广告宣传业的需要。
而利用PC机通信技术控制LED显示屏,则具有显示内容丰富,信息更换灵活等优点。
随着社会发展,人民生活水平的不断提高,信息化、智能化技术渗透于人们生活的各个领域。
近年来,由于电子技术的迅速发展,电子元器件的成本大幅度下降,技术的完善,性能的提高,使得LED显示屏的制造成本大大降低,LED显示屏也开始普及起来,将LED显示技术应用于日常生活和节能领域已经日渐被国内很多科研机构及厂家所重视。
1.3课题设计任务
本设计一个用64x16的点阵LED图文显示屏,通过Proteus仿真软件并对电路进行仿真,并实现滚动汉字显示要求在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰,图形或文字滚动显示,并在Proteus嵌入式系统设计仿真平台上完成点阵式LED滚动汉字显示调试。
本课题研究的内容就是以单片机为主要控制元件,驱动LED点阵显示所想要现实的汉字,以后需要显示更大的也可以用本课题设计来实现。
第二章系统总体设计方案
本章主要内容是论述64×16点阵汉字滚动显示装置的总体设计以及方案的论证。
本系统由单片机电路、阴极、阳极驱动电路和64×16点阵显示电路三大部分组成,功能模块具体实现的器件的不同,将直接影响整个系统的性能及成本,为了达到高效、实用的目的,在系统设计之前的方案论证是十分重要的。
2.1总体设计方案的论证
从理论上说,不论显示图形还是文字,只要控制与组成这些图形或文字的各个点所在的位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。
64×16的点阵共有1024个发光二极管,显然单片机没有这么多的端口,我们仅仅是64×16的点阵,在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。
因此在实际应用中的显示屏几乎都不采用这种设计,而采用另外一种称为动态扫描的显示方法。
动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套驱动器。
具体就16×16的点阵来说,把所有同1行的发光管的阳极连在一起,把所有同1列的发光管的阴极连在一起(共阳极的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定时间,然后熄灭;再送出第二行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;以此类推,第16行之后,又重新燃亮第1行,反复轮回。
当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能够看到显示屏上稳定的图形了。
2.2总体设计方案的确定
点阵式LED滚动汉字显示屏硬件电路设计框图如图2.1所示。
电路包括单片机、电源电路、时钟电路、复位电路、驱动电路和64×16LED点阵电路等。
本设计的核心是利用单片机读取显示字型码,通过驱动电路对64×16LED点阵进行动态列扫描,以实现汉字的滚动显示。
本设计选用的AT89C51单片机,为显示屏采用64×16LED点阵。
电源电路通过变压整流元件为单片机和其他电路提供稳定的+5V工作电压。
时钟电路是单片机的驱动电路,复位电路可在需要时,手动使单片机程序计数器复位清零。
通过阳极驱动电路向64×16点阵送字型码,通过阴极驱动电路对64×16点阵进行列扫描,本课题采用的驱动芯片为74HC154。
图2.1硬件电路设计框图
第三章系统硬件电路设计
硬件电路大致上可以分成单片机系统电路、阴极和阳极驱动电路、时钟电路、复位电路、电源电路及LED点阵电路几部分。
3.1单片机系统电路
本设计的核心是利用单片机读取显示字型码,通过驱动电路对64×16LED点阵进行动态列扫描,以实现汉字的滚动显示。
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机[3]。
AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
三级程序存储器锁定、128×8位内部RAM、32可编程IO线、两个16位定时器计数器、5个中断源、可编程串行通道、低功耗的闲置和掉电模式、片内振荡器和时钟电路;外部引脚如图3.1所示:
图3.1AT89C51单片机外部引脚图
1.AT89C51主要特性:
·与MCS.51兼容
·4K字节可编程闪烁存储器
·寿命:
1000写擦循环
·数据保留时间:
10年
·全静态工作:
0Hz至24Hz
·三级程序存储器锁定
·128*8位内部RAM
·32可编程IO线
·两个16位定时器计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
2.管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向IO口,每脚可吸收8T1'L门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据地址的第八位。
在FIASH编程时,PO口作为原码输入口,当FLASH进行校验时,PO输出原码,此时P0外部必须被拉高[4]。
P1口:
P1口是一个内部提供上拉电阻的8位双向IO口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向IO口,P2口缓冲器可接收,输出4个1vrL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号[5]。
P3口:
P3口管脚是8个带内部上拉电阻的双向IO口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,同时为闪烁编程和编程校验接收一些控制信号。
RST-复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALEPROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的116。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN外部程序存储器的选通信号:
在由外部程序存储器取指期间,每个机器周期两次PSEN有效。
但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。
EAVPP:
当EA保持低电平时,则在此期间外部程序存储器(0000H.FFFFH),不管是否有内部程序存储器。
注意加密方式l时,EA将内部锁定为RESET;当EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTALl:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
3.2时钟电路
AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端[6]。
这个放大器与作为负反馈的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图3.2;外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈电路中构成并联振荡电路。
对外接电容C1、C2虽然没有十分的严格要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,本设计使用石英晶体,其电容容量使用30PF±10PF。
图3.2时钟电路
3.3复位电路
在这个系统中的复位电路是采用上电加按钮来实现的。
因为MCS-51单片机的复位是靠外部电路实现的。
MCS-51单片机工作之后,只要在他的RST引线上加载10ms以上的高点平,单片机就能有地进行复位。
我们采用的是上电加按键复位方式,这样做的优点是上电后可以直接进入复位状态,当程序出现错误时,可以随时使电路复位。
单片机在启动或断电后,程序需要从头开始执行,机器内全部积存器,IO接口等都必须重新复位。
图3.3是一个简单的上电复位和按钮复位电路,图中上电时接通电源,电容C1相当于瞬间短路,+5V电源直接加到了RSTVPD端,该高电平使89C51全机复位,若运行过程中需要程序从头执行,只需要按钮S即可,按下S则直接把+5V加到RSTVPD端从而复位。
图3.3复位电路图
3.4电源电路
电源电路是单片机系统最基本的部分,所以我们应该高度重视电源部分,不能因为电源部分电路比较简单而有所忽略,电源部分做好才能保证电路的正常工作。
对电源电路来说,最重要的就是稳压,我们采用的是+5V电源供的直流电[7]。
3.5点阵显示电路
本设计用4片LED16×16点阵组成一个64×16点阵显示电路[8]。
LED数码管是本设计中的显示器件下面对它作一简单介绍。
此处选用的是八段数码管,它是由8个发光二极管组合而成的,它有共阴极和共阳极两种形式(如图3.4a、b、c)。
共阴极的内部接法为将8个发光二极管的阴极结在一起,工作时公共极接地,在8个阳极上通以不同的电平是将显示不同的字符;共阳极接法与共阴极相反,它是将8个发光二极管的阳极接在一起,工作时公共极接+5V,在8个阴极上通以不同的电平来显示相应的字符。
本设计选用LED8×8点阵作为显示器件,从显示亮度来说要求越高,其效果越好,从节能的角度上看,LED器件较为节能,工作电压不高,功耗又小,且性能一定要稳定,维修方便,LED电子显示屏以基色彩鲜亮夺目,大的显示信息量、寿命长、耗电量小,重量轻,空间尺寸小,稳定性高,易于操作、安装和维护等特点将在本设计中扮演着重要的角色。
等效电路看起来简单,1脚加高电平,再在abcdefgh段加低电平,第一行的发光二极管就会亮,但是实际的器件而实际引脚通常是乱序的,不过我们可以自己测试引脚的分布情况。
其电路排列如图3.5图(a)和图(b)所示:
图3.4LED数码管结构图
图3.5(a)8×8LED平面图
3.6驱动电路
单片机P1口低4位输出的行号经416线译码器74HC154(如图3.6)译码后生成16条行选通信号线,再经过驱动器驱动对应的行线。
动态扫描显示时,74HC154用来确定某一时刻显示的行号,保证某一时刻只有一行选中。
一条行线上要带动16列的LED进行显示,按每一LED器件10mA电流计算,16个LED同时发光时,需要160mA电流(即16个LED点阵同时亮的情况),74HC154为一行16个LED点阵提供足够大的驱动电流。
74HC154来做列选控制只使用了单片机的4个IO口,节约了很多IO资源,为单片机系统扩充使用功能提供了条件。
图3.674HC154外形及引脚
第四章系统的软件程序设计
软件设计是一件细致而复杂的工作,应按照合理的顺序有条不絮的进行。
本次毕业设计中我们在软件设计部分依然采用模块化的设计思想题,将整个系统划分为若干个模块,设计时将各个模块非开来设计,最后将整个模块连接起来,这样易于调试,有助于发现问题并及时改正。
4.1软件系统分析
根据毕业设计的要求及该系统应该满足的功能要求,决定该系统应该具有的部分及所需的各种元器件及其分别的型号,所起到的作用。
按信息的流行向分析说明信息的性质,来源或去向,有多少数据信息、多少状态信息,是模拟量还是数字量,是串行还是并行,数据输入输出端口地址,与外设联络控制的方法以及输入中断源的类别和优先级的安排。
每一个输入输出还应注意是否与其他输入输出有关。
4.1.1模块细分
按照所分析的结果将整个系统,按不同的功能划分为几个相对独立的模块,并分析出各个模块之间的关系几由他两端出现的信号的形式。
可以将整个系统化分为:
前端模块,主机模块,显示模块,输入模块,这样就可以对各个模块同时进行设计,只要保证相连模块间满足相应的数据流通关系就行。
在此次设计中显示屏软件的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。
根据软件分层次设计的原理,可以把显示屏的软件系统分为两层;第一层是底层的显示驱动程序,第二层是上层的系统应用程序。
显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和其它控制信号,配合完成LED显示屏的扫描显示工作。
显示驱动器程序由定时器T0中断程序实现。
系统应用程序完成系统环境设置(初始化)、显示效果处理等工作,由主程序来实现。
4.1.2确定算法
算法设计是软件设计很重要的阶段,合理和可靠的算法将导致优化程序设计。
不同功能块有不同的算法,同一个问题也可以有很多算法,要根据具体的情况选择合适的算法。
算法设计的总目标是,在达到要求功能的基础上,保证程序流程结构简单,运行可靠。
4.1.3编写程序
在手编写各部分的程序之前,还需做两件事:
分配系统资源和设计流程图。
提高软件设计总体效率的有效方法是先设计流程图,在开始编程。
程序流程图4.1的设计过程就是程序逻辑设计的过程。
流程图直观明了,有利于查错和修改。
图4.1显示驱动程序流程图
4.2系统主程序
系统主程序开始以后,首先是对系统环境初始化,然后向左滚动显示“单片机仿真”这5个汉字,然后以“卷帘入”效果隐去。
由于单片机没有停机指令,所以可以设置系统程序不断的循环执行上述显示效果。
图4.2主程序流程图。
详细主程序见附录A
图4.2系统主程序流程图
4.3显示驱动程序
由LED点阵显示器的内部结构可知,器件宜采用动态扫描驱动方式工作,由于LED管芯大多为高亮度型,因此某行或某列的单体LED驱动电流可选用窄脉冲,但其平均电流应限制在20mA内.多数点阵显示器的单体LED的正向压降约在2V左右。
动态显示采用扫描的方式工作,由峰值较大的窄脉冲驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示图形或文字信息的脉冲信号,反复循环以上操作,就可显示各种图形或文字信息。
图4.3驱动程序(显示屏扫描函数)流程图。
显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率的稳定,116扫描显示屏的刷新率(帧频)计算如公式4.1所示:
(4.1)
在公式4.1中f为晶振频率,t为定时器T0初值(工作在16位定时器模式)。
然后显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。
为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据打入输出锁存器锁存,然后再输出新的行号,重新打开显示。
图4.3显示驱动程序流程图
第五章整体电路的设计
用PROTEUS绘制原理图:
运行Proteus的ISIS程序后,进入该仿真软件的主界面[9]。
通过元件选择按钮P(从库中选择元件命令)命令,在弹出的PickDevices窗口中选择电路所需的元件,放置元件并调整其相对位置,对元件参数设置及元器件间连线,完成单片机系统的硬件原理图绘制。
本文把行列控制总线接在单片机的IO口,然后把通过软件编译的扫描代码送入总线,就可以得到显示的汉字了。
考虑到P0口必需设置上拉电阻,本文采用1k排电阻作为上拉电阻。
在进行显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。
显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。
显示时要把一行中各列的数据都传送到相应的列驱动器上去。
汉字扫描显示的基本过程是这样的:
通电后由于电阻R1,电容C4的作用,使单片机的RST复位脚电平先高后低,从而达到复位;之后,在C2,C3,X1以及单片机内部时钟电路的作用下,单片机89C51按照设定的程序在P0和P2口输出与内部汉字对应的代码电平送至LED点阵的行选线(高电平驱动),同时在P1.1,P1.2,P1.3,P1.4口输出列选扫描信号(低电平驱动),从而选中相应的象素LED发光,并利用人眼的视觉暂留特性合成整个汉字的显示,再改变取表地址实现汉字的滚动显示[10]。
第六章字模的提取
在UCDOS中文宋体字库中,每一个字由16行16列的点阵组成显示。
如果用8位我们以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。
即国标汉字库中的每一个字均由256点阵来表示[11]。
我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。
事实上这个汉字屏不仅可以显示汉字,也可以显示在256像素范围内的任何图形。
我们以显示汉字的89S51单片机为例,由于单片机的总线为8位一个字需要拆分为2个部分。
一般我们把它拆分为上部和下部,上部由8×16点阵组成,下部也由8×16点阵组成。
在本例中单片机首先显示的是左上角的第一列的上半部分,即第一列的P0.0---P0.7口。
方向为P0.0到P0.7,显示汉字“大”时,P0.5点亮,由上往下排列,为P0.0灭,P0.1灭,P0.2灭P0.3灭,P0.4灭,列完成后,继续扫描下半部的第一列,为了接线的方便,我们仍设计成由上往下扫02H.依照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字“大”。
图6.1点阵原理
它的扫描代码为:
{04H,00H,04H,02H,04H,02H,04H,04H
04H,08H,04H,30H,05H,0C0H,0FEH,00H
05H,80H,04H,60H,04H,10H,04H,08H
04H,04H,0CH,06H,04H,04H,00H,00H}
如果通过描点来造字的话,任务量太大。
现在有很多现成的汉字字模生成软件,我们就不必自己去画表格算代码了。
软件打开后输入汉字,点“检取”,十六进制数据的汉字代码即可自动生成,但是我们要根据自己硬件的连接方式来在选项中选择取码方式,然后把我们所需要的数据复制到我们的程序中即可。
我们把行列总线接在单片机的I0口,然后把上面分析到的扫描代码送入总线,就可以得到显示的汉字了。
通过软件提取“单片机仿真”的单片机编程打下基础。
字模提取软件是完成本设计的一个重要的辅助软件,它能够很容易的将需要的汉字翻译成64×16的汉字字模。
第七章软件仿真调试
7.1Prot