598.基于单片机的1616LED点阵显示屏的设计【单片机毕业设计】.doc
基于单片机的16*16LED点阵显示屏的设计 摘要:随着单片机在各个领域的广泛应用,许多用单片机作控制驱动LED显示屏也应运产生。本系统设计使用单片机MCS-51控制扫描方法实现LED点阵显示器的字符的显示,介绍了用单片机进行显示系统开发的方法,单片机软件、硬件调试技术,还有点阵显示驱动扩展的一般方法。关键词: 单片机 MCS-51 LED显示 点阵1.引言1.1 研究的目的、意义LED因其体积小,耗电量低,亮度及环保等优点而被广泛应用于公共场所的大屏显示上,LED点阵大屏可应用于户外广告,交通导航,大厅公告,比赛的多媒体实时显示等领域。本设计作品的用途正是在于实现大屏显示的核心功能,即汉字的显示,可实际应用于简单的显示系统中,如简单的排队叫号显示屏,电梯显示屏等。通过此次设计将单片机软硬件结合起来对程序进行编辑,校验,锻炼实践能力和理论联系实际的能力。 1.2 本设计所要做的工作为了完成该设计实现,经过考虑论证,决定分为以下几个阶段进行:(1)对课题进行全面的分析,明确系统要实现的功能,大致了解要解决的问题,制定总的设计方案;(2)根据论证设计硬件系统并画出电路图,并根据电路图制电路板;(3)在硬件的基础上设计软件程序;(4)利用仿真器编译软件程序,进行调试仿真;(5)把调试成功的程序利用烧入器烧入到芯片中去;(6)把固化好程序的芯片插入到实际应用系统,投入到实际使用。2系统设计方案2.1系统构成框图 CPU晶振复位74HC15474LS37374LS373 16*16LED点阵显示屏 行列3 硬件电路设计3.1 主要器件介绍3.1.1 LED点阵LED点阵显示屏采用4个8*8共256个象素的点阵,通过万用表检测发光二极管的方法测试判断出该点阵的引脚分布,如图3.1所示。8*8的LED点阵为双色共阳模块,单点的工作电压为正向(Vf)=1.8v,正向电流(if)=8-10MA。静态点亮器件时(64点全亮)总电流为640mA。总电压为1.8v,总功率为1.15w.动态时取决于扫描频率(1/8或1/16秒),单点瞬间电流可达80-160mA。点阵16 15 14 13 12 11 10 91 2 3 4 5 6 7 8图3.1 点阵LED扫描法介绍点阵LED一般采用扫描式显示,实际运用分为三种方式:(1) 点扫描(2) 行扫描(3) 列扫描若使用第一种方式,其扫描频率必须大于16*64=1024HZ,周期小于1MS即可。若使用第二和第三种方式,则频率必须大于16*8=128HZ,周期小于7.8MS即可符合视觉暂留要求。此外一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。 我们把行列总线接在单片机的IO口,然后把上面分析到的扫描代码送人总线,就可以得到显示的汉字了。但是若将LED点阵的行列端口全部直接接入AT89S52单片机,则需要使用32条IO口,这样会造成IO资源的耗尽,系统也再无扩充的余地。因此,我们在实际应用中只是将LED点阵的16条行线直接接在P2口,至于列选扫描信号则是由4-16线译码器74HC154来选择控制,这样一来列选控制只使用了单片机的4个IO口,节约了很多IO资源,为单片机系统扩充使用功能提供了条件。汉字扫描显示的基本过程是这样的:通电后由于电阻R1,电容C1的作用,使单片机的RST复位脚电平先高后低,从而达到复位;之后,在C2,C3,X1以及单片机内部时钟电路的作用下,单片机AT89S52按照设定的程序在接口输出与内部汉字对应的代码电平送至LED点阵的行选线,同时在P1.0,P1.1,P1.2,P1.3接口输出列选扫描信号,从而选中相应的象素LED发光,并利用人眼的视觉暂留特性合成整个汉字的显示。3.1.2锁存器74LS37374ls373是常用的地址锁存器芯片,它实质是一个是带三态缓冲输出的8D触发器,在单片机系统中为了扩展外部存储器,通常需要一块74ls373芯片,其内部结构图如图3.2所示。 图3.2 74ls373内部结构图 (1).1脚是输出使能(OE),是低电平有效,当1脚是高电平时,不管输入3、4、7、8、13、14、17、18如何,也不管11脚(锁存控制端,G)如何,输出2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)15(Q5)、16(Q6)、19(Q7)全部呈现高阻状态(或者叫浮空状态);(2).当1脚是低电平时,只要11脚(锁存控制端,G)上出现一个下降沿,输出2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)立即呈现输入脚3、4、7、8、13、14、17、18的状态.锁存端LE 由高变低时,输出端8 位信息被锁存,直到LE 端再次有效。 当三态门使能信号OE为低电平时,三态门导通,允许Q0Q7输出,OE为高电平时,输出悬空。当74LS373用作地址锁存器时,应使OE为低电平,此时锁存使能端C为高电平时,输出Q0Q7 状态与输入端D1D7状态相同;当C发生负的跳变时,输入端D0D7 数据锁入Q0Q7。51单片机的ALE信号可以直接与74LS373的C连接。3.1.3 译码器74HC15474HC154为4线16线译码器,其管脚图如图3.3所示: 图3.3 74HC154管脚图其逻辑图如图3.4所示:图3.4 74HC154逻辑图其功能表如表3.1所示:说明: H高电平 L低电平 X任意 表3.1 74HC154功能表3.2硬件设计思想及电路图 3.2.1硬件设计思想由单片机进行处理,并将行列信号分别通过显示驱动输入点阵大屏,控制点阵的显示。 (1) 单片机: 采用AT89S52单片机芯片作为中控,控制LED点阵显示。 (2)显示:考虑到标准地显示一个汉字至少需要16*16LED点阵屏,而我们也只需要实现大屏显示的基本功能,并不需要太大的显示屏,因此决定采用16x16 LED点阵屏显示汉字。 (3)显示驱动:考虑到设计所需端口较多的问题,为减少资源占用,使用74HC154 416译码器作为列驱动芯片,采用74HC373串入并出8位锁存器作行驱动芯片。但由于两种芯片的最大输出电流均不够大(虽然74HC373输出电流已经较大了),为让LED显示亮度够强,采用PNP型三极管来进行电流的放大,同时为保护芯片,我们又采用1K电阻来进行限流。3.2.2硬件电路图 本设计16X16系统的制作主要在于扩展用户I/O口,最终系统实现的关键在于扫描电路的扩展及程序的编写。系统I/O口的扩展是采用了4-16译码器74HC154来实现的,74HC154作为16*16系统的列扫描脉冲产生电路,其地址线连接到AT89S52的P1口的低4位上。利用P2口为8个行数据端口传送数据。由于P口的驱动力不强,因此在P2的每个输出端都加上三极管,以加大驱动电流,提高点阵的显示亮度。设计原理图如图3.5所示: 图3.5 设计原理图其中芯片74HC154为4线-16线译码器,有四个地址输入(A0-A3)、两个选通输入(STs、STb)和十六个输出(Y0-Y15)。当STs和STb均为低电平时器件被选通,A0-A3可确定Y0-Y15中的一个以低电平呈现,当STs或STb为高电平时,Y0-Y15均为高电平。 AT89S52单片机P1口与74HC154的输入端(A,B,C,D)连接,74HC154的16个输出端与16×16LED的列线相连,P2口与行线相连。由于单片机端口输出的电流较小,不足以驱动LED。故在LED的每个列线上加上一个三极管,对电流进行放大,如图3.6。通过74HC154对16×16LED进行逐列扫描,选中一列时通过P2口选中列即点亮行上的LED,快速的逐列扫描即可实现文字信息显示。由上可知,可采用逐列扫描的方法实现LED的字符显示。 图3.6 LED驱动电路图系统各个部分的原理图:图3.7 单片机控制电路图图3.8列驱动电路与行驱动电路图 图3.9 点阵显示电路图4.软件设计4.1汉字的点阵显示原理及字库代码获取方法我们先以简单的汉字显示为例,每一个字由16行16列的点阵组成显示。即国标汉字库中的每一个字均由256点阵来表示。我们可以把每一个点理解为一个象素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字,也可以显示在256象素范围内的任何图形。如用8位的AT89S52单片机控制,由于单片机的总线为8位,一个字需要拆分为2个部分,如图4.1所示。 图4.1 汉字“龙”为了弄清楚汉字的点阵组成规律,首先通过列扫描方法获取汉字的代码。汉字可拆分为上部和下部,上部由8×16点阵组成,下部也由8×16点阵组成。通过列扫描方法首先显示左上角的第1列的上半部分,显示汉字“龙”时,P2.4点亮,由上往下排列,为:P2.0灭,P2.1灭,P2.2灭P2.3灭,P2.4亮,P2.5灭,P2.6灭,P2.7灭。即二进制00001000,转换为十六进制为08h。上半部一列完成后,继续扫描下半部的一列,为了方便,我们仍设计成由上往下扫描,从图4.1可以看到,这一列全部为不亮,即为00000000,十六进制则为00h。依照这个方法扫描16列,一共扫描32个8位,可以得出汉字“龙”的扫描代码为:00H,08H,08H,08H,08H,08H,0FFH,08H0FH,48H,28H,08H,08H,18H,08H,00H00H,00H,02H,06H,30H,0C4H,04H,08H0FCH,24H,44H,84H,04H,04H,3CH,00H由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出他的扫描代码从而显示在屏幕上。本系统是设计龙岩学院字体的显示,使用这个方法可以分析出龙岩学院这几个字的代码。4.2 程序流程图软件程序主要由开始、初始化、主程序、字库组成。其中主程序和子程序的流程图如图4-2和图4-3所示。 开始系统初始化R0=16,扫描16列R7=16,一个字扫描16次载入第1个字的地址调用显示子程序载入第2个字的地址调用显示子程序载入第3个字的地址调用显示子程序载入第4个字的地址调用显示子程序 图4-2 主程序流程图 P1=0,列扫描计数R1=0,查表指针查表,送数据到P2口显示一列上边8位R1R1+1查表,送数据到P2口显示一列下边8位R1R1+1P1P1+116位是否扫描完重置R016一个字是否扫描16次重置R716帧延时返回主程序开始NONOyesyes图4-3子程序流程图4.3程序清单:COLUMN EQU P1 ;列扫描信号输出端口ROW EQU P2 ;显示信号输出端口LATCH_H EQU P3.0 ;上锁存信号输出端口LATCH_L EQU P3.1 ;下锁存信号输出端口SCANCODE EQU 0 ;扫描信号SPEED EQU 10 ;0.5s延迟S_TIME_H EQU 0FDH ;2.5ms扫描时间S_TIME_L EQU 0D0H ;2.5ms扫描时间 ORG 00H ;程序从0地址开始 JMP START ;跳至START ORG 0BH ;TIMER0中断向量 JMP TIMER0 ;跳至TIMER0中断子程序;=START: MOV IE,#10000010B ;设定TIMER0中断 MOV TMOD,#1 ;设定TIMER0为MODE1 MOV SP,#60H ;移开堆栈指针 SETB RS0 ;切换到RB1 MOV R0,#20H ;上面部分开始存放地址 MOV R1,#30H ;下面部分开始存放地址 MOV R2,#16 ; 扫描16列 MOV R3,#SCANCODE ;载入扫描码 CLR RS0 ;切换回RS0 MOV TH0,#S_TIME_H ;设定每列扫描时间 MOV TL0,#S_TIME_L ;设定每列扫描时间 SETB TR0 ;启动TIMER0 MOV DPTR,#TABLE ;将常数指针指向TABLE地址 MOV 41H,#4 ;4次加载字型 MOV R0,#20H ; 上面部分开始存放地址 MOV R1,#30H ;下面部分开始存放地址;=LOOP: CALL LOADING ;加载字型 CALL DELAY ;稍等一下 CLR C MOV A,DPL ADD A,#32 MOV DPL,A MOV A,DPH ADDC A,#0 MOV DPH,A MOV R0,#20H ; 上面部分开始存放地址 MOV R1,#30H DJNZ 41H,LOOP ;跳至LOOP形成一个循环 JMP START ;跳至START形成一个循环;=LOADING: PUSH ACC ;存储ACC PUSH PSW ;存储PSWMOV R2,#16 ;加载各16笔数据 MOV R3,#0 ;间距 MOV R4,#10H ;间距LOAD_1: MOV A,R3 ;将间距放入ACC MOVC A,A+DPTR ;读入数据 MOV R0,A ;将上面部分数据存入存储器 INC R0 ;指向下一个地址 INC R3 ;指向下一个地址 MOV A,R4 ;将间距放入ACC MOVC A,A+DPTR ;读入数据 MOV R1,A ;将上面部分数据存入存储器 INC R1 ;指向下一个地址 INC R4 ;指向下一个地址 DJNZ R2,LOAD_1 ;跳至LOAD_1形成一个循环 POP PSW ;取回PSW POP ACC ;取回ACC资料 RET;=DELAY: MOV R7,#SPEEDD2: MOV R6,#200D1: MOV R5,#250 DJNZ R5,$ DJNZ R6,D1 DJNZ R7,D2 RET;=DELAY1: MOV R7,#1D22: MOV R6,#1D11: MOV R5,#100 DJNZ R5,$ DJNZ R6,D11 DJNZ R7,D22 RETTIMER0: CLR TR0 ;关闭TIMER0 PUSH ACC ;存储ACC SETB RS0 ;切换到RB1 MOV A,R3 ;载入扫描码 MOV COLUMN,A ;输出扫描码(显示一列) INC R3 ;下一个扫描码 MOV A,R0 ;取出显示信号;=;使用共阳极式LED阵列,则加入下一列指令; ;= CPL A MOV ROW,A ;输出显示信号 SETB LATCH_H ;打开锁存器 NOP CLR LATCH_H ;关闭锁存器 INC R0 MOV A,R1 ;取出显示信号;=;使用共阳极式LED阵列,则加入下一列指令;=CPL A MOV ROW,A ;输出显示信号 SETB LATCH_L ;打开锁存器 NOP CLR LATCH_L ;关闭锁存器 INC R1 CALL DELAY1 MOV A,#0FFH MOV P2,A DJNZ R2,NEXT_C ;未超过16行则跳至NEXT_C MOV R2,#16 ;从新开始扫描 MOV R0,#20H ;从第一列开始 MOV R1,#30H ;从第一列开始NEXT_C: MOV TH0,#S_TIME_H ;设定每列扫描时间 MOV TL0,#S_TIME_L ;设定每列扫描时间 SETB TR0 ;启动TIMER0 CLR RS0 ;切换回RB0 POP ACC ;取回ACC RETITABLE: DB 00H,10H,10H,10H,10H,10H,0FFH,10HDB 0F0H,12H,1CH,0D0H,10H,10H,10H,00HDB 00H,40H,20H,10H,0CH,03H,10H,08HDB 3FH,42H,41H,40H,40H,40H,70H,00HDB 00H,40H,5EH,50H,50H,0D0H,50H,5FHDB 50H,50H,50H,50H,5EH,40H,40H,00HDB 10H,08H,04H,02H,7FH,22H,22H,22HDB 22H,22H,22H,22H,7EH,00H,00H,00HDB 40H,30H,10H,12H,5CH,54H,50H,51HDB 5EH,0D4H,50H,18H,57H,32H,10H,00HDB 00H,02H,02H,02H,02H,02H,42H,82HDB 7FH,02H,02H,02H,02H,02H,02H,00HDB 0FEH,02H,32H,4AH,86H,0CH,24H,24HDB 25H,26H,24H,24H,24H,0CH,04H,00HDB 0FFH,00H,02H,04H,83H,41H,31H,0FHDB 01H,01H,7FH,81H,81H,81H,0F1H,00H END5.设计结果在实际应用中,16*16的点阵LED上,依次显示“龙”、“岩”、“学”、“院”四个字, 达到预期效果。虽然本设计只使用了16×16 LED点阵,电路简单,但是已经包涵了LED显示屏的电路基本原理,只要扩展单片机的IO接口,并增加一些LED点阵和相关芯片,就能设计出更大面积、更多花样的LED显示屏。因此本文对同类设计具有一定的理论和实践参考价值。6论文小结在本次设计中,电路连线很多,焊接有一定的难度。特别是译码器74HC154要焊接的线非常之多,还好焊接过程比较细心,这块芯片工作很正常。不过在调试的过程,也的确遇到了一个小问题。当我编简单的程序进行扫描时,发现有一列不亮。心想会不会是哪个芯片接错了,再认真观察了一下,发现其他的行和列都工作正常。由此,我初步估测是LED没接好。回头检查了一遍,发现问题的确出在LED的管脚上,有两个焊点忘了连起来。连好以后,重新调了一遍。还好,成功了,硬件部分圆满完成。看来焊接要认真、认真、再认真,来不得半点的含糊。否则,要花很多的时间来检查复杂的电路,得不偿失。另外一个问题是扫描的频率太快,以至让人看不清楚字。在增大了帧延时常数之后,情况得到改善。 致谢辞在论文完成之际,谨向关心我、支持我的师长、朋友和亲人表示最衷心的感谢。首先要感谢我尊敬的指导老师 老师,本论文的工作得到了 老师悉心的指导和启发,从论文的选题和具体实现都给予极大的帮助。 老师平易近人,我非常感谢 老师。本设计的完成,当然也少不了同学的帮助,感谢他们对我的帮助,没有他们的帮助,设计的任务是不可能这么快顺利完成的。再次向帮助我的老师和同学们致予最衷心的感谢!参考文献:1 何立民.MCS-51系列单片机应用系统设计.北京航空航天大学出版社,20002 王贺艳,王宗和.单片机(AT89C51)与PC机的串行通信J,大众科技,2005 年第 09 期3袁海林.基于FPGA的LED点阵显示系统的设计J.信息技术,2007年第11期4 黄智伟编著.全国大学生电子设计竞赛训练教程.北京:电子工业出版社,20055 祁伟,杨亭编著.单片机C51程序设计教程与实验.北京:北京航空航天大学出版社,20066 郁凯平.MCS-51单片机串口一口两用在LED显示屏的一例应用J,电子与电脑,2008 年第 1 期7 屈年鹤,林成武,宋同富.MCS-51单片机PO口扩展技术研究J,电子元器件应用,2007 年4月第9卷第 4 期8 罗凌.浅谈提高单片机系统运行的可靠性J,科技资讯,2007 年第 33 期9 谢自美.电子线路设计实验测试M, 华中科技大学出版社2002.7.10 桑胜举,王军,沈丁.单片机原理与应用课程教学改革探讨J,科技信息(科学·教研),2007 年第 30 期11 Meixian Yang.Monolithic integrated circuit's development and applicationJ,SCIENCE & TECHNOLOGY INFORMATION ,2007 / /35 12 Susan A.R. Gobort J.Borns.Digital LogicAnalysis.Application&DesignM.Hotel Rinehartand Winston. Inc.1991.8 16 * 16 dot-matrix display based on AT89S52 Abstract:With the MCU in the extensive application in various fields, many driven by SCM for control LED display should also have shipped. The system design MCS-51 microcontroller control scanning method lattice LED dot matrix display characters, using SCM display system development methodology, master SCM software, hardware debugging technology, understanding the Lattice graphics display capacity expansion drive the general approach.Key words: MCS-51 microcontroller LED display matrix.