1、、毕业设计(论文)题目 基于MS51单片机的4个1616点阵LED电子显示屏的设计 、毕业设计(论文)工作内容 设计一个四位的16X16的点阵电子显示屏。利用单片机串口扩展为并口,实现数据的列扫描,利用单片机的P1口译码来实现行扫描。加深对单片机和数字电路的理解,熟悉单片机串口的工作方式以及串口的扩展。学会独立的查找资料,并给出完整的设计方案。为以后独立开展与专业相关的工作打下了基础。熟练使用protel,keil,C软件。学会论文的撰写及排版工作。 本方案设计一个电子显示屏,具体要求满足以下条件: (1)要求采用51单片机作为微控制器; (2)通过四个1616的点阵LED进行文字显示; (3
2、)在目测条件下LED显示屏各点亮度均匀、充足、稳定、清晰无串扰。 (4)文字显示具有每排字有滚动和逐排等显示方式。、进度安排: 第1-2周 收集资料并整理设计思想 第3-4周 开始硬件部分设计,学习AT89S52单片机的应用 第5周 列驱动电路设计 第6周 行驱动电路设计 第7周 绘制PROTELL原理图 第8周 软件设计 第9周 软件设计显示驱动程序 第10周 软件设计系统主程序 第11周 调试并进行性能分析 第12-14周 整理文档 、主要参考资料: 1诸昌钤 编著 :LED显示屏系统原理及工程技术成都:电子科技大学出版社,2000 2张志良 主编 :单片机原理及控制技术(第2版)北京:机
3、械工业出版社,2005 3李光飞 编著 :单片机课程设计实例指导(第2版) 北京:北京航空航天出版社, 4吴金戍,沈庆阳,郭庭吉编著8051单片机实践与应用北京:清华大学出版社 5吉 雷 主编 :Protel99从入门到精通西安:西安电子科技大学出版社,2004 6侯丽玲:基于AT89S52单片机的LEDD点阵显示屏控制系统的设计J,漳州职业技术学院学报。系负责人审核意见(从选题是否符合专业培养目标、是否结合科研或工程实际、综合训练程度、内容难度及工作量等方面加以审核): 摘 要LED点阵显示屏作为一种新兴的显示器件,是由多个独立的LED发光二极管封装而成. LED点阵显示屏可以显示数字或符号
4、, 通常用来显示时间、速度、系统状态等。本设计是4个1616点阵LED电子显示屏的设计。整机以美国ATMEL公司生产的40脚单片机AT89C51为核心,介绍了以它为控制系统的LED点阵电子显示屏的动态设计和开发过程。通过该芯片控制一个行驱动器74LS154和八个列驱动器74HC595来驱动显示屏显示。该电子显示屏可以显示各种文字或单色图像,全屏能显示4个汉字,采用16块8 x 8点阵LED显示模块来组成4个16x16点阵显示模式。显示采用动态显示,使得图形或文字能够实现静止、移入移出等多种显示方式。文中详细介绍了LED点阵显示的硬件设计思路、硬件电路各个部分的功能及原理、相应软件的程序设计,以
5、及使用说明等。关键词:AT89C51单片机 LED 点阵显示 动态显示Abstract As a popular display device component, LED dot-matrix display board consists of several independent LED (Light Emitting Diode). The LED dot-matrix display board can display the number or sign, and it is usually used to show time, speed, the state of system
6、 etc. This design is 4 16 16 lattice LED electron display monitor design.The whole equipment is with the 40-pin AT89C51 MCU (Micro Controller Unit) produced by the American ATMEL company at the core, introduced take it as the control system LED lattice electron display monitor dynamic design and the
7、 development process. Controls good driver 74LS154 andeight row driver 74HC595 through this chip actuates the display monitor demonstration. The electronic screen can show all kinds of written or monochrome images, one full screen display Chinese characters,sixteen pieces of 8 x 8 dot-matrix LED dis
8、play modules to form the 16x16 dot matrix display mode. Show dynamic show that makes static graphic or text can be achieved, shifted out of various formats. This paper describes the hardware design of the LED dot matrix display, and the principle function of the various parts of the circuit, the cor
9、responding software program design and the use of some such. Key words:AT89C51 Micro Controller Unit;LED;LatticeDisplay;DynamicDisplay 目 录摘 要2Abstract3第一章 绪论51.1问题提出51.2课题背景6第二章 功能要求及方案论证82.1功能要求82.2显示模块方案论证82.3数据传输方案论证9第三章 系统硬件电路的设计113.1单片机系统及外围电路113.2列驱动电路133.3行驱动器153.4元件清单18第四章 系统程序的设计204.1显示驱动程序
10、204.2系统主程序22第五章 调试及性能分析275.1开发环境介绍275.2 理论性能分析275.3 系统调试28第六章 总 结296.1 工作过程介绍296.2 系统功能的拓展方向29致谢32第一章 绪论1.1问题提出LED显示屏分为数码显示屏、图文显示屏和视频显示屏,均由LED矩阵块组成。LED数码显示屏的显示器件为7段码数码管,适于制作时钟屏、利率屏等,显示数字的电子显示屏。图文显示屏可与计算机同步显示汉字、英文文本和图形;视频显示屏采用微型计算机进行控制,图文、图像并茂,以实时、同步、清晰的信息传播方式播放各种信息,还可显示二维、三维动画、录像、电视、VCD节目以及现场实况。LED之
11、所以受到广泛重视而得到迅速发展,是与它本身所具有的优点分不开的。这些优点概括起来是:亮度高、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定。LED的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。近年来,单片机已经成为科技领域的有力工具,人类社会生活的得力助手。它的广泛应用,不仅仅体现在工业控制、机电应用、智能仪表、实时控制、航空航天、尖端武器等行业和领域的智能化、高精度化,而且在人类日常生活中也随处可见它的身影。单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片
12、机的发展自然形成了SoC化趋势。随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展。因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。目前,单片机正朝着高性能和多种方向发展,其趋势将进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展,其功能也将越来越丰富,速度也越来越快,甚至有些方面并不逊于ARM或DSP。随着LED显示屏在广告传媒领域逐渐崭露头角,其控制系统也如雨后春笋,层出不穷。由于它的控制系统均是基于嵌入式微处理器开发,所以单片机在其中也占有一席之地。但是,由于LED显示屏控制较复杂,特
13、别是对于显示特殊效果,如循环移动、覆盖霓虹灯效果,要求处理器运算速度快、执行效率高,所以很多控制卡生产厂家采用高端嵌入式系统进行设计。这样做虽然能在一定程度上提高数据处理速度,但是并不能完全满足所有显示效果要求,而且开发和产品成本也会随之成倍增加,甚至由于其设计不当可能在显示时出现抖动、闪烁、重影等现象。归根结底,LED显示屏控制卡的设计中硬件是一方面因素,同时还要考虑到显示数据组织方式,通过软硬件结合的方法才能设计出一款性价比较高的控制卡。本论文提出基于普通51系列单片机实现LED显示屏控制的原理及方法。1.2课题背景 LED显示屏的发展可分为以下几个阶段: 第一阶段为1990年到1995年
14、,主要是单色和16级双色图文屏。用于显示文字和简单图片,主要用在车站、金融证券、银行、邮局等公共场所,作为公共信息显示工具。 第二阶段是1995年到1999年,出现了64级、256级灰度的双基色视频屏。视频控制技术、图像处理技术、光纤通信技术等的应用将LED显示屏提升到了一个新的台阶。LED显示屏控制专用大规模集成电路芯片也在此时由国内企业开发出来并得以应用。 第三阶段从1999年开始,红、纯绿、纯蓝LED管大量涌入中国,同时国内企业进行了深入的研发工作,使用红、绿、蓝三原色LED生产的全彩色显示屏被广泛应用,大量进入体育场馆、会展中心、广场等公共场所,从而将国内的大屏幕带入全彩时代。 随着L
15、ED原材料市场的迅猛发展,表面贴装器件从2001年面世,主要用在室内全彩屏,并且以其亮度高、色彩鲜艳、温度低的特性,可随意调整的点间距,被不同价位需求者所接受,在短短两年多时间内,产品销售额已超过3亿元,表面贴装全彩色LED显示屏应用市场进入新世纪。为了适应2008年奥运会的“瘦身”计划,利亚德开发了表面贴装双基色显示屏,大量用于训练馆和比赛计时计分系统。在奥运场馆全彩屏方面,为紧缩投资,全彩屏大部分采用可拆卸方式,奥运期间可作为实况转播工具,赛事结束后可用于租赁,作为演出、国家政策发布等公共场合应用工具,通过这种方式可尽快收回成本。 单片机诞生于20世纪70年代末,经历了SCM、MCU、So
16、C三大阶段。1. SCM即单片微型计算机(Single Chip Microcomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。“创新模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路。在开创嵌入式系统独立发展道路上,Intel公司功不可没。2. MCU即微控制器(Micro Controller Unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家。从这一角度来看,Intel逐渐淡出MCU的发展也有其
17、客观因素。在发展MCU方面,最著名的厂家当数Philips公司。Philips公司以其在嵌入式应用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到微控制器。因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel和Philips的历史功绩。3. 单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoC化趋势。随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展。因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。 单片机可以从以下几个方面分类: 1
18、.按应用领域可分为:家电类、工控类、通信类和个人信息终端类等。 2.按通用性可分为:通用型和专用型。 3.按总线结构可分为总线型和非总线型。 4.按指令运行的振荡周期可分为标准型和改进型。第二章 功能要求及方案论证2.1功能要求 本方案设计一个电子显示屏,具体要求满足以下条件: 1.要求采用51单片机作为微控制器; 2.通过四个1616的点阵LED进行文字显示; 3.在目测条件下LED显示屏各点亮度均匀、充足、稳定、清晰无串扰。 4.文字显示具有每排字有滚动和逐排等显示方式。2.2显示模块方案论证四个88的点阵构成一个1616的点阵。行和列的交叉处有一个LED,共由256个LED构成,如果LE
19、D的阳极与行相连,而阴极与列相连,那么只要给该LED对应的行以高电平,列以低电平,那么对应的LED就发光。图2-1画出了室内直插式88点阵双基色LED模块实物图。这种模块由64个发光LED芯片以88的形式构成一个正方形模块,然后用2列8针引脚将内部电路接口引出,供驱动电路使用。图2-1 LED 点阵显示原理图 行对应的给LED的阳极,先给第一行以高电平,如果送给16列的代码为EFFF,则第一行的第4个LED被点亮,再给第二行以高电平,如果送给16列的代码为EF07,则第二行的第4、9、10、11、12、13个被点亮,接着给第三行以高电平,同时给列以驱动代码,这样不断地进行行行的扫描,只要速度够
20、快,由于人的视觉暂留作用,就不会感觉到明显的闪烁感。点阵上会看到一个清晰的“机”字。 LED数码管结构简单,价格便宜。本文所述的是LED的数据显示方式,这种方式通常使用8段LED或者16段LED。在实际应用中,点亮LED数码管的方式有静态和动态2种方法。本文以8段LED作为示例来论证方案1.静态显示方式静态显示方式,即8段LED数码管在显示某一个数码时,加在数码管上的段码保持不变,直至换显其他数码为止。这样数码管的每一段均应由一条输出线来控制,每显示以为数码需要8根输出线,当N位显示则需N8根输出控制线。占用较多I/O资源。2.动态显示方式为解决静态显示占用较多I/O资源的问题,在多位显示时通
21、常采用动态显示方式,动态显示是将所有数码管的段码线对应并联在一起,由一个8位的输出口控制,每位数码管的公共端分别出一位I/O线控制。显示不同数码时,由位线控制各位轮流显示。位线控制某位选通时,该位应显示数码的段码同时加在段码线上,即每一时刻仅仅有一位数码管是被点亮的,当轮流显示的速度较快(每秒24次以上),由于人眼的视觉暂留现象,看起来就像所有位同时显示一样,这时,我们就能看到稳定的图像了由于单片机的特性,我们将采用方案2:动态显示方式,采用动态显示方式进行显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。显示时要把一行
22、中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。从控制电路到列驱动器的数据传输可以采用并列方式或串行方式。2.3数据传输方案论证显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。当列数很多时,并列传输的方案是不可取的。 采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都以传输到位之后,这一行的各列才能并行地进行显示。这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两部分。对于串行传输方式来说,
23、列数据准备时间可能相当长,在行扫描周期确定的情况下留给行显示的时间就太少了,以致影响到LED的亮度。解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。即在显示本行各列数据的同时,传送下一列数据。为了达到重叠处理的目的,列数据的显示就需要具有所存功能。经过上述分析,就可以归纳出列驱动器电路应具有的功能。对于列数据准备来说,它应能实现串入并处的移位功能;对于列数据显示来说,应具有并行锁存的功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。图2-2为显示屏电路实现的结构框图。图2-2.显示屏电路框图第三章
24、系统硬件电路的设计硬件电路大致上可以分成单片机系统及外围电路、列驱动电路和行驱动电路三部分。1616点阵显示屏的硬件原理图如图3-6。 3.1单片机系统及外围电路单片机采用MSC-51或其兼容系列芯片,采用24MHZ或更高频率晶振,以获得较高的刷新频率,时期显示更稳定。单片机的串口与列驱动器相连,用来显示数据。P1口低4位与行驱动器相连,送出行选信号;P1.5P1.7口则用来发送控制信号。P0口和P2口空着,在有必要的时候可以扩展系统的ROM和RAM。 图3-1 MSC51单片机最小系统MSC51单片机管脚说明如下:VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O
25、口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电
26、流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL
27、)这是由于上拉的缘故。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效
28、。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。3.2列驱动电路列驱动电路由集成电路74HC595构成。它具有一个
29、8位串入并出的移位寄存器和一个8位输出锁存器的结构,而且移位寄存器和输出锁存器的控制是各自独立的,可以实现在显示本行列数据的同时,传送下一行的列数据,既达到重叠处理的目的。图3-2 74HC595结构图表 74HC595的外形及内部结构如图3-2所示。它的输入侧有8个串行移位寄存器,每个移位寄存器的输出都连接一个输出锁存器。引脚SI是串行数据的输入端。引脚SCK是移位寄存器的移位时钟脉冲,在其上升沿发生移位,并将SI的下一个数据打入最低位。74HC595引脚说明见表3-1。列驱动电路见图3-3。表3-1 74HC595引脚说明符号引脚描述OoO717并行数据输出GND8地Q79串行数据输出SR
30、CLR10主复位(低电平)SRCLK11移位寄存时钟输入RCLK12存储寄存时钟输入CE13输出有效(低电平)SER14串行数据输入VCC16电源移位后的各位信号出现在各移位寄存器的输出端,也就是输出锁存器的输入端。RCK是输出锁存器的打入信号,其上升沿将移位寄存器的输出打入输出锁存器。引脚G是输出三态门的开放信号,只有当其为低时锁存器的输出才开放,否则为高组态。SCLR信号是移位寄存器清零输入端,当其为低时移位寄存器的输出全部为零。由于SCK和RCK两个信号是互相独立的,所以能够做到输入串行移位与输出锁存互不干扰。芯片的输出端为QAQH,最高位QH可作为多片74HC595级联应用时,向上一级
31、的级联输出。但因为QH受输出锁存器的打入控制,所以还从输出锁存器前引出QH,作为与移位寄存器完全同步的级联输出。图3-3列驱动电路 将8片74HC595进行级连,可共用一个移位时钟SCK及数据锁存信号RCK。这样,当第一行需要显示的数据经过8x8=64个SCK时钟后便可将其全 部移入74HC595中,此时还将产生一个数据锁存信号RCK将数据锁存在74HC595中,并在使能信号G的作用下,使串入数据并行输出,从而使与各输 出位对应的场驱动管处于放大或截止状态;同时由行扫描控制电路产生信号使第一行扫描管导通,相当于第一行LED的正端都接高,显然,第一行LED管的亮灭 就取决于74HC595中的锁存
32、信号;此外,在第一行LED管点亮的同时,再在74HC595中移入第二行需要显示的数据,随后将其锁存,同时由行扫描控 制电路将第一行扫描管关闭而接通第二行,使第二行LED管点亮,以此类推,当第十六行扫描过后再回到第一行,这样,只要扫描速度足够高,就可形成一幅完整 的文字或图像。3.3行驱动器由于4点阵显示器有16行,为充分利用单片机的接口,本电路中加入了一个4-16线译码器74LS154,其输入是一个16进制码,解码输出为低态扫描信号,它的结构如图3-4所示。图3-4 74LS154结构图74LS154 引脚说明如表3-2表3-2 符号引脚描述,111 ,1317输出端GND12GND电源地18
33、19使能输出端A、B、C、D2023地址输出端Vcc24VCC电源正图3-5 行驱动电路 如图3-5所示的行驱动电路中,把74LS154的G1和G2引脚接地,然后以A、B、C、D四脚为输入端。就会形成16种不同的输入状态,分别为00001111,然后使每种状态只控制一路输出,即会有16路输出。如果一行64点全部点亮,则通过74LS154的电流将达640 mA,而实际上,74LS154译码器提供不了足够的吸收电流来同时驱动64个LED同时点亮,因此,应在74LS154每一路输出端与16x64点阵显 示器对应的每一行之间用一个三极管来将电流信号放大,本文选用的是三极管8550。这样,74LS154
34、某一输出脚为低电平时,对应的三极管发 射极为高电平从而使点阵显示器的对应行也为高电平。3.4元件清单 在本次设计中,用到的元件清单如下表3-3表3-3 元件名称数量(个)88LED显示屏16MSC51单片机174LS154线译码器174LS595集成电路874HC245驱动芯片174HC00与非门1图3-6 4个1616点阵显示屏硬件原理图 图3-6为4个点阵显示屏硬件原理图,因为市场上买不到1616的点阵显示屏,所以在现实中,硬件部分采用了4块88的点阵显示屏来构成1块1616 LED显示屏.第四章 系统程序的设计显示屏软件的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要
35、求显示。根据软件分层次设计的原理,可以把显示屏的软件系统分为两层;第一层是底层的显示驱动程序,第二层是上层的系统应用程序。显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和其他控制信号,配合完成LED显示屏的扫描显示工作。显示驱动器程序由定时器T0中断程序实现。系统应用程序完成系统环境设置(初始化)、显示效果处理等工作,由主程序来实现。从有利于实现较复杂的算法(显示效果处理)和有利于程序结构化考虑,显示屏程序适宜采用C语言编写。4.1显示驱动程序显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率的稳定,1/16扫描显示屏的刷新率(帧频)计算公式如下: 刷频率(帧频)
36、=溢出率= (4-1)其中f位晶振频率,t为定时器T0初值(工作在16位定时器模式)。然后显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据打入输出锁存器并锁存,然后再输出新的行号,重新打开显示。图4-1为显示驱动程序(显示屏扫描函数)流程图。图4-1.显示驱动程序流程图显示驱动程序:-多个16*16LED显示演示程序MCU AT89C51 XAL 24MHz -/以下程序能实现多个16*16LED屏的多个字符显示,显示方式有整行上移、帘入帘出、左移、右移/#inc
37、lude reg52.h#define BLKN 8 /列锁存器数(=LED显示字数*2)#define TOTAL 20 /待显示字个数,本例共20个#define CONIO P1 /显示控制口sbit G=CONIO7; /CONIO.7为154译码器显示允许控制信号端口,0时输出,1时输出全为高阻态.sbit CLK=CONIO6; /CONIO.6为595输出锁存器时钟信号端,1时输出数据,从1到0时锁存输出数据.sbit SCLR=CONIO5; /CONIO.5为595移位寄存器清零口,平时为1,为0时,输出全为0.unsigned char idata dispram(BLKN
38、/2)*32=0; /显示区缓存,四字共4*32单元/*显示屏扫描(定时器T0中断)函数*/void leddisplay(void) interrupt 1 using 1register unsigned char m, n=BLKN;TH0 = 0xFc; /设定显示屏刷新率每秒62.5帧(16毫秒每帧)TL0 = 0x18;m = CONIO; /读取当前显示的行号m = +m & 0x0f; /行号加1,屏蔽高4位do n-; SBUF = dispramm*2+(n/2)*30 + n; /送显示数据 while (!TI); TI = 0; while (n); /完成一行数据的
39、发送G = 1; /消隐(关闭显示)CONIO &= 0xf0; /行号端口清CLK=1; /显示数据打入输出锁存器CONIO |= m; /写入行号CLK=0; /锁存显示数据G = 0; /打开显示/4.2系统主程序本文设计的系统软件能使系统在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。图形或文字显示有静止、移入移出等显示方式。系统主程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断和端口;然后以“卷帘出”效果显示图形,停留约3s;接着向上滚动显示“我爱单片机”这5个汉字及一个图形,然后以“卷帘入”效果隐去图形。由于单片机没有
40、停机指令,所以可以设置系统程序不断的循环执行上述显示效果。单元显示屏可以接收来自控制器(主控制电路板)或上一级显示单元模块传输下来的数据信息和命令信息,并可将这些数据信息和命令信息不经任何变化地再传送到下一级显示模块单元中,因此显示板可扩展至更多的显示单元,用于显示更多的显示内容。图5是系统主程序流程图。图5.系统主程序流程图 系统主程序:/*主函数 */void main(void) register unsigned char i,j,k,l,q,w;/初始化SCON = 0x00; /串口工作模式0:移位寄存器方式TMOD = 0x01; /定时器T0工作方式1:16位方式TR0 = 1
41、; /启动定时器T0CONIO = 0x3f; /CONIO端口初值IE = 0x82; /允许定时器T0中断/while (1) delay(2000); /2秒/第一种显示效果:卷帘出显示笑脸图案 for (i=0;i32;i+) for(q=0;qBLKN/2;q+) disprami+q*32=Bmp15i; if (i%2) delay(120); delay(1000);/卷帘出显示文字,每次字数为BLKN/2,共显示TOTAL*2/BLKN次for (w=0;wTOTAL*2/BLKN;w+)for (i=0;i32;i+) for(q=0;qBLKN/2;q+) disprami+q*32=Bmpq+w*BLKN/2i; if (i%2) delay(120); delay(3000);/第一种显示效果:卷帘出显示笑脸图案 for (i=0;i32;i+) for(q=0;qBLKN/2;q+) disprami+q*32=Bmp15i; if (i%2) delay(120); delay(1000);/第二种显示效果:向上滚屏,每次BLKN/2个字 for (i=0; iTOTAL*2/BLKN; i+) for (j=0; j16; j+) for (k=0; k15; k+) for(q=0;qBLKN/2;q+)