1、摘要本设计是一1632点阵LED电子显示屏的设计。整机以单片机AT89C51为核心,介绍了以它为控制系统的LED点阵电子显示屏的动态设计和开发过程。全屏能显示2个汉字,采用8块88点阵LED显示模块来组成1632点阵显示模式。显示采用动态显示,使得图形或文字能够实现静止、移入移出等多种显示方式。文中介绍了LED点阵显示的硬件设计思路、硬件电路各个部分的功能及原理、相应软件的程序设计,以及使用说明等。单片机控制系统程序采用单片机C语言进行编辑,通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。所显示字符的点阵数据可以自行编写,也可从标准字库中提取。LED显示以其组
2、构方式灵活、显示稳定、功耗低、寿命长、技术成熟、成本低廉等特点在车站、证券所、运动场馆、交通干道及各种室内/外显示场合的信息发布,公益宣传,环境参数实时,重大活动倒计时等等得到广泛的应用。关键词:AT89C51单片机; LED; 点阵显示; C语言。AbstractThe paper deals with a 16 32 dot matrix LED electronic display design.Complete machine 40 foot monolithic integrated circuit AT89C51 which produces by American ATMEL C
3、orporation is a core, introduced take it as the control system LED lattice electron display monitor dynamic design and the performance history.Controls good driver 74HC154 and four row driver 74HC595 through this chip actuates the display monitor demonstration.This electronic display monitor may dem
4、onstrate each kind of language or the monochrome picture, the entire screen can demonstrate 2 Chinese characters, use 8 88 lattice LED demonstration module to compose 1632 the lattice demonstration pattern.The demonstration uses the dynamic demonstration, causes the graph or the writing can realize
5、static, moves in the emigration and so on many kinds of display mode.In the article in detail introduced the LED lattice demonstration hardware design mentality, hardware electric circuit each part of function and the principle, the corresponding software programming, as well as operating instructio
6、ns and so on.SCM control system using microcontroller C language program for editing, the corresponding LED anode and cathode terminal programmed to control the level of each display point, you can effectively control each display point of light off. The dot matrix display data characters can prepar
7、e themselves (ie direct dot drawing), can also be extracted from the standard font.LED display with its flexible fabric, show stable, low power consumption, long service life, mature technology, low cost, etc in the station, securities, sports venues, the traffic trunk road, and various kinds of ind
8、oor/outdoor display of information release, public welfare propaganda, environmental parameters in real-time, major events countdown, etc widely used.The practice has proved that the system displays error is small, stable performance, reasonable structure, strong expansion capability.Keywords: AT89C
9、51 monolithic integrated circuit; LED; Lattice demonstration; Dynamic demonstration; C language.目录第1章 绪 论11.1设计课题背景及意义11.2设计的主要内容2第2章 设计框图及介绍3第3章 硬件设计43.1电源电路43.2复位电路43.3单片机应用系统53.4 LED点阵屏的设计53.4.1 LED点阵显示模块的扫描53.4.2列驱动电路83.4.2行驱动电路9第4章 软件设计9第5章 仿真与调试11第6章 总结与展望12谢辞13参考文献14附 录15程序代码1518Error! No boo
10、kmark name given.第1章 绪 论1.1设计课题背景及意义现代LED的发展很快,很多研究领域得到广泛的应用,很多相关的知识已经远远超出我们在校学生的能力范围,所以在此只是简单的研究一下用单片机驱动的LED显示移动的汉字。汉字显示方式是先根据所需要的汉字提取汉字点阵,将点阵文件存入ROM,形成新的汉字编码;而在使用时则需要先根据新的汉字编码组成语句,再由MCU根据新编码提取相应的点阵进行汉字显示。不论显示图形还是文字,都是控制与组成这些图形或文字的各个点所在位置相对应的LED器件发光。通常事先把需要显示的图形文字转换成点阵图形,在按照显示控制的要求以一定的格式形成显示数据。文字的点
11、阵格式比较规范,可以采用现行计算机通用的字库字模。这样依照所需显示的图形文字,按显示屏的各行各列逐点填写显示数据,就可以构成一个显示数据文件。显示图形的数据文件,其格式相对自由,只要能够满足显示控制的要求即可。文字的点阵格式比较规范,可以采用现行计算机通用的字库字模。用点阵方式构成图形或文字,是非常灵活的,可以根据需要任意组合和变化,只要设计好合适的数据文件,就可以得到满意的显示效果。因而采用点阵式图文显示屏显示经常需要变化的信息,是非常有效的。最简单的显示模式是静态显示。与静态显示模式相对应,就有各种动态显示模式,它们所显示的图文都是能够动的。LED之所以受到广泛重视而得到迅速发展,是与它本
12、身所具有的优点分不开的。这些优点概括起来是:亮度高、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定。LED的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。LED显示屏可以显示变化的数字、文字、图形图像;不仅可以用于室内环境还可以用于室外环境,具有投影仪、电视墙、液晶显示屏无法比拟的优点。1.2 设计的主要内容本设计是一1632点阵LED电子显示屏的设计。整机以单片机AT89C51为核心,介绍了以它为控制系统的LED点阵电子显示屏的动态设计和开发过程。通过该芯片控制一个行驱动器 74HC154和四个列驱动器74HC595来驱动
13、显示屏显示。该电子显示屏可以显示各种文字或单色图像,全屏能显示2个汉字,采用8块88点阵LED显示模块来组成1632点阵显示模式。显示采用动态显示,使得图形或文字能够实现静止、移入移出等多种显示方式。文中详细介绍了LED点阵显示的硬件设计思路、硬件电路各个部分的功能及原理、相应软件的程序设计,以及使用说明等。单片机控制系统程序采用单片机C语言进行编辑,通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。所显示字符的点阵数据可以自行编写(即直接点阵画图),也可从标准字库中提取。LED显示以其组构方式灵活、显示稳定、功耗低、寿命长、技术成熟、成本低廉等特点在车站、证券
14、所、运动场馆、交通干道及各种室内/外显示场合的信息发布,公益宣传,环境参数实时,重大活动倒计时等等得到广泛的应用。第2章 设计框图及介绍点阵电路大体上可以分成微机本身的硬件、显示驱动电路、控制信号电路三部分。控制电路部分包括一个51CUP和一些外围电路。在整个电路当中此控制电路部分相当于一个上位机,它负责控制整个电路以及相应的程序的运行、与PC机的串行通讯、以及给屏体电路部分发送命令。点阵显示屏体、以及它的行和列的各个驱动电路。由于两部分的电路在制板时可以放到一起,所以可以将其字库放到控制电路部分使用串行通讯方式来与屏体电路部分进行数据和命令的传送。LED点阵总体框图如图2-1所示 单片机行驱
15、动电路LED显示点阵列驱动电路电源图2-1 点阵显示的总体框图此显示电路采用扫描方式进行显示时,每行有一个行驱动器,各行的同名列共用一个列驱动器。由行译码器给出的行选通信号,从第一行开始,按顺序依次对各行进行扫描(把该行与电源的一端接通)。另一方而,根据各列锁存的数据,确定相应的列驱动器是否将该列与电源的另一端接通。接通的列,就在该行该列点燃相应的LED;未接通的列所对应的LED熄灭。可通过扫描输出口的控制实现颜色的转换。第3章 硬件设计3.1 电源电路单向半波整流电路输出电压:单向桥式整流电路输出电压:单向桥式整流滤波电路输出电压:本设计采用单相桥式整流滤波电路,电源利用率最高,C4, C5
16、, C6, C7在电路中起滤波作用当变压器输出电压大于5V时电源电路正常工作。每种类型由于内部电流的限制,以及过热保护和安全工作区的保护,使它基本上不会损坏。如果能够提供足够的散热片,它们就能够提供大于1.5A输出电流。当接入适当的外部器件后,就能获得各种不同的电压和电流。特点:1.最大输出电流为1.5A;输出电压为5v;热过载保护;短路保护;输出晶体管安全工作区保护。AT89S52工作电压VCC=5V,其EA引脚需接高电平,5V电源电路如图3-1所示。图3-1 单片机电源原理图注: 该电源电路主要模块为IC7805,它能输出稳定的 5V电源,图中整流桥是将市电转变为直流电,电容起到虑波作用,
17、当7805输入端电压大于5V时,由7805的OUT引脚输出5V电压。3.2 复位电路复位的实现通常用2种方式: 开机上电复位和外部手动复位,本设计用的是外部手动复位。上电复位工作原理:当内部电路的是RST引脚保存两个机器周期(24个时钟周期)以上的高电平时,单片机自动进入复位状态电路图3-2所示: 图3-2 单片机复位图注: 该最小系统由按键复位RESET电路、晶体振荡电路以及I/O接口电路组成。3.3单片机应用系统图2.2 单片机应用系统注: 该最小系统由按键复位RESET电路、晶体振荡电路以及I/O接口电路组成。3.4 LED点阵屏的设计设计方案设计一个室内用1632点阵LED图文显示屏,
18、要求在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形或文字应稳定、清晰无串扰。图形或文字显示有静止、移入移出等显示方式。88单色点阵共需要64个发光二极管组成,且每个二极管是放置在行线与列线的叉点上。本设计是一种实用的汉字显示屏的制作,制作的是单色点阵。88点阵LED结构如图3-4所示。 图3-4 88点阵内部图图 简单的汉字显示屏的制作,由单片机控制汉字的显示内容。使用了八块88的LED点阵发光管的模块,组成了一个1632的LED点阵显示屏,在这里仅做了四个汉字的显示,在实际的使用中可以根据这个原理自行的扩展显示的汉字,如图3-5所示。 图3-5四块88的LED点阵组成
19、1616的LED点阵LED驱动显示采用动态扫描方法,动态扫描方式是逐行轮流点亮,这样扫描驱动电路就可以实现多行的同名列共用一套列驱动器。以1616点阵为例,把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送出对应第1行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定的时间,然后熄灭;再送出第2行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;.第16行之后,又重新燃亮第1行,反复轮回。当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能看到显示屏上稳定的图形。该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源。显
20、示数据传输采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都已传输到位之后,这一行的各列才能并行地进行显示。对于列数据准备来说,它应能实现串入并出的移位功能3.41 LED点阵显示模块的扫描本设计应用的是第二种的扫描方法,即竖直方向(X方向)扫描。每一个字由16行32列的点阵形成显示,我们可以把每一个点理解为一个像素。一般我们使用的1632的点阵宋体字库,即所谓的1632,是每一个汉字在纵横各16点的区域内显示的。汉字库从该位置起的32字节信息记录了该字的字模信
21、息。采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,对于串行传输方式来说,列数据准备时间可能相当长在行扫描周期确定的情况下,留给行显示的时间就太少了,以致影响到LED的亮度。解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。即在显示本行各列数据的同时,传送下一行的列数据。为了达到重叠处理的目的,列数据的显示就需要具有锁存功能。经过上述分析,可以归纳出列驱动器电路应具备的主要功能。对于列数据准备来说,它应能实现串人并出的移位功能;对于列数据显示来说,应具有并行锁存的功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以
22、准备下一行的列数据,而不会影响本行的显示。3.4.2列驱动电路LED点阵显示模块进行的方法有两种:1. 水平方向(X方向)扫描,即逐列扫描的方式(简称列扫描方式):此时用一个P口输出列码决定哪一列能亮(相当于位码),用另一个P口输出行码(列数据),决定该行上那哪个LED亮(相当于段码)。能亮的列从左到右扫描完16列(相当于位码循环移动16次)即显示出一个完整的图像。2. 竖直方向(Y方向)扫描,即逐行扫描方式(简称行扫描方式):此时用一个P口输出决定哪一行能亮(相当于位码),另一个P口输出列码(行数据,行数据为将列数据的点阵旋转90度的数据)决定该行上哪些LED灯亮(相当于段码)。能亮的行从上
23、向下扫描完16行(相当于位码循环移位16次)即显示一帧完整的图像。列驱动电路由集成电路74HC595构成。它的输入侧有8个串行移位寄存器,每个移位寄存器的输出都连接一个输出锁存器。74HC595的外形及内部结构如图3-6所示。图3-6列驱动电路3.4.3行驱动电路74LSl54译码后生成4-1 6条行选通信号线,再经过驱动器驱动对应的行线。一条行线上要带动32列的LED进行显示,按每一LED器件20 mA电流计算,32个LED同时发光时,需要640 mA电流,选用三极管8550作为驱动管可满足要求。1-11脚 13-17脚:输出端。12脚:Gnd电源地。18-19脚:使能输入端、低电平有效。2
24、0-23脚:地址输入端。 24脚:VCC电源(正)。 H = 高电平。L = 低电平。X = 任意电平。只要控制端G1、G2任意一个为高电平,A、B、C、D任意电平输入都无效。G1、G2必须都为低电平才能操作芯片。74HC154如图3-7所示图3-7行驱动电路第4章 软件设计点阵显示的流程图及分析流程图(图4-1所示)和程序的简要说明:1. 在程序开始时应先定义芯片使用的端口(先定义后使用)2. 初始化:芯片初始化并附初值3. 装载数据:装载列数据(装载3个汉字的第列数据,并把第三个汉字的第列数据锁存,存入74HC595中。)/*装载一线点阵数据*/void loadline()uchar s
25、;for(s=0;s3;s+)/s为要显示的字数+1(显示2字+1=3)BUFF2*s=dispword+32*s+2*line;BUFF2*s+1=dispword+1+32*s+2*line;4. 延时:void delay()uchar i;for(i=0;i50;i+);延时后循环装载后几行数据,延时时间小于人体视觉暂停周期,这样在人眼看到的就是连续的,不同形式的点组成的汉字或图形。5. 左移:左移16列,左移16列后重新装载下面汉字或图形的行数据,并记录装载汉字的个数。6. 计数:设置程序中汉字的个数,使计数程序与汉字个数相匹配。当所记个数与汉字个数相同时,结束计数并将计数清0,重新
26、开始第一次加载数据程序依次循环运行。开始初始化定义端口装载一线点阵数据发送一线移动数据显示第1行延时显示16行循环16次显示下一汉字循环16次左移16位左移一位汉字显示完毕一次装载3个汉字的行装载后3个汉字的行循环第一次装载汉字一线同时记显示汉字的个数图4-1点阵左移显示的流程图第5章 仿真与调试Proteus仿真时,单片机需要加载程序,加载程序为.HEX文件。本设计利用Keil Vision2, 在新建Keil项目时选择AT89C52单片机作为CPU,将源程序导入,在“Options For Target”对话窗口中,选中“Output”选项中的“Create HEX File”,编译链接后
27、就可以生成.HEX文件。在Proteus ISIS中,选中AT89C51并单击鼠标左键,对AT89C51进行设置,设置单片机时钟频率为12MHz,按照正确的文件路径加载.HEX文件。对单片机设置完毕后就可以开始仿真了。仿真过程中如有硬件问题可在Proteus ISIS中直接修改,如有软件问题可在Keil Vision2中直接修改,通过Keil与Proteus的联合调试就可以得到满意的结果。利用Proteus实现了对点阵式LED汉字显示屏的仿真,说明程序和电路图都没有问题。仿真图如图5-1所示图5-1 仿真图第5章 总结与展望本次毕业设计到现在有两个多月,回顾着些天我感到学到了很多东西,在写这个
28、心得的时候,我想就这些天的收获,说一说自己内心的想法。本设计的是一个室内用16x32的点阵LED图文显示屏,能够在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。图形或文字显示有静止、移入移出等显示方式。本系统具有硬件少,结构简单,容易实现,性能稳定可靠,成本低等特点。总结本文的研究工作,主要做了下面几点工作:一、通过查阅大量的相关资料,详细了解了LED的发光原理和LED显示屏的原理,了解了LED的现状,清楚地了解了LED显示屏与其它显示屏相比较有那些优点,明确了研究目标。并且通过对单片机资料的查阅和应用,更进一步增加了对单片机知识的理解和运用能力
29、。并证实了自己的思路:“查资料思考总结运用找出差错,再查资料和向别人询问再次运用”的正确性。二、本文设计的LED显示屏能够实现在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。图形或文字显示有静止、移入移出等显示方式。三、本文列出了系统具体的硬件设计方案,硬件结构电路图,软件流程图和具体C语言程序设计与调试等方面。四、在这次毕业设计的过程中学会了单片机的基本使用,感到单片机对电子信息专业的同学来说是一门很有用的课程。五、通过这次毕业设计,重新复习并进一步增强了思考的能力,学以致用,把只是运用到实际生活中才是根本目的。六、存在问题:没有考虑仿真软件是
30、一个理想的仿真环境,而实际的问题导致在仿真软件中不能良好运行的程序,出现显示问题,经过排查和分析问题得到解决。总体来说这次的毕业设计很成功,达到了预想的目的:学到了知识,提高了能力,完成了任务。有点缺憾是时间有限,不能进一步深入和扩散学习和研究。希望有时间可以对程序和电路图作更进一步的改进,譬如实现点阵的上下移动,对角线移动,三色显示等。谢辞通过这两个月来的忙碌和学习,本次毕业论文设计已接近尾声,作为一个本科生的毕业设计,由于经验的匮乏,难免有许多考虑不周全的地方,在这里衷心感谢指导老师的督促指导,以及一起学习的同学们的支持,让我按时完成了这次毕业设计。在毕业论文设计过程中,我遇到了许许多多的
31、困难。在此我要感谢我的指导老师施艳艳老师给我悉心的帮助和对我耐心而细致的指导,我的毕业论文较为复杂烦琐,但是施老师仍然细心地纠正图中的错误。除了敬佩施艳艳老师的专业水平以外,她的治学严谨和科学研究的精神也是我永远学习的榜样,并将积极影响我今后的学习和工作,我才得以解决毕业设计中遇到的种种问题。同时感谢我院、系领导对我们的教导和关注;感谢大学四年传授我们专业知识的所有老师。还有谢谢我周围的同窗朋友,他们给了我无数的关心和鼓励,也让我的大学生活充满了温暖和欢乐。如果没有他们的帮助,此次毕业论文的完成将变得困难。他们在我设计中给了我许多宝贵的意见和建议。同时也要感谢自己遇到困难的时候没有一蹶不振,取
32、而代之的是找到了最好的方法来解决问题。最后,感谢我的父母。谢谢他们给了我无私的爱,为我求学所付出的巨大牺牲和努力。参考文献1 张义,陈敌北编著例说8051人民邮电出版社2006年.2 周越主编单片机技术实验实训教程中国水利水电出版社2007年.3 周越主编单片机应用技术中国水利水电出版社2009年.4 李全利编单片机原理及应用技术高等教育出版社2004年 . 5 李忠国,陈刚编著单片机应用技能实训人民邮电出版社2006年.6 赵建领编著Protel电路设计与制版宝典电子工业出版社2007年.7 郭振民,丁红主编电子设计自动化EDA中国水利水电出版社2009年.8 周润景等编著Proteus在M
33、CS-51&ARM7系统中的应用百例电子工业出版社2006年.附 录程序代码#include#define uchar unsigned char#define uint unsigned int#define SCAN P2/行驱动接到P2sbit DS=P30;/595 DATASsbit SHCP=P31;/595 CLKsbit STCP=P32;/595 STRsbit OE=P36;/595 OE/Gsbit G1=P37;/154 G1uint word;/字模计数器uchar move;/列指针uchar line;/行指针uchar speed=10;/设定移动速度uchar
34、 BUFF10;/缓存数组uchar code disp;/字模数组void delay()uchar i;for(i=0;i50;i+);void out_rxd(uchar x) /从串口发送数据SBUF=x;while(TI=0); /等待发送完毕TI=0;/*装载一线点阵数据*/void loadline()uchar s;for(s=0;s3;s+)/s为要显示的字数+1(显示2字+1=3)BUFF2*s=dispword+32*s+2*line;BUFF2*s+1=dispword+1+32*s+2*line;/*发送一线移动数据*/void sendline()char s;uc
35、har inc,temp,tempcol;if(move=0+inc;s-)if(move8) tempcol=move;else tempcol=move-8;temp=(BUFFs(8-tempcol);/字模左边字节左移tempcol位,/右边字节右移8-tempcol位,2者相或temp=255-temp;/字模反相SBUF=temp;/把BUFF中的字节从右到左移位、相或 后发送输出while(TI=0);/等待发送完毕 while(!TI);TI=0;void main()uchar sp;move=0;word=0;OE=0;G1=0;SCON=0;/设置串口为工作方式0(同步通
36、信方式,TxD输出同步脉冲)while(1)while(word512)/16*32=512 while(move16)/数据移位for(sp=0;spspeed;sp+)/移动速度for(line=0;line16;line+)/行扫描loadline();/装载一线点阵数据sendline();/发送一线移动数据SCAN=line;/显示第line行STCP=1;/锁存为高,595锁存信号STCP=0;delay();/延时,等待一段时间,产生视觉暂留move+;/移动一步(一位)move=0;word=word+32;/下一个字word=0;uchar code disp=0xff,0x
37、ff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x
38、ff,0xff,0xff,/* 0 冯(16x32,V) suki software*/unsigned char 0=0xC0,0x40,0x00,0x01, 0x70,0x40,0x00,0x06, 0x3C,0x7E,0x00,0x18, 0x03,0x80,0x00,0x60, 0x06,0xC0,0x01,0x80, 0x40,0x30,0x06,0x00, 0x4F,0x1C,0x18,0x00, 0x41,0x13,0x60,0x00, 0x41,0x11,0xC0,0x00, 0x41,0x16,0x30,0x00, 0x41,0x1A,0x0C,0x00, 0x7F,0x71
39、,0x03,0x00, 0x01,0x82,0x00,0xC0, 0x07,0xFC,0x00,0x30, 0x18,0x00,0x00,0x0C, 0x60,0x00,0x00,0x03/* 0 彦(16x32,V) suki software*/unsigned char 0=0xC0,0x01,0x00,0x01, 0x30,0x06,0x00,0x06, 0x2F,0xF8,0x00,0x18, 0x27,0x01,0x00,0x60, 0x34,0xC9,0x01,0x80, 0x2C,0x79,0x06,0x00, 0xA4,0x4E,0x18,0x00, 0x64,0x93,0x60,0x00, 0x24,0x93,0xC0,0x00, 0x2C,0xA6,0x30,0x00, 0x35,0x3C,0x0C,0x00, 0x24,0x68,0x03,0x00, 0x25,0x90,0x00,0xC0, 0x06,0x00,0x00,0x30, 0x18,0x00,0x00,0x0C, 0x60,0x00,0x00,0x03;