• 1.38 MB
  • 2022-04-22 13:55:05 发布

LED显示系统设计毕业论文.doc

  • 41页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'LED显示系统设计毕业论文目录摘要IIIABSTRACTIV1绪论11.1LED显示屏的广泛应用11.2最新的LED显示屏技术11.3本课题的主要内容1第2章系统硬件方案论证与选择32.1上位机部分方案选择32.2通信部分方案选择32.3控制部分方案选择42.4显示部分方案选择42.5最终确定硬件设计方案6第3章系统硬件设计73.1硬件整体设计概述及功能分析73.2控制单元设计73.3行驱动模块设计93.4列驱动模块设计113.5单片机ISP下载编程器133.6USB电源接口143.7MAX232串口通信电路143.8系统总电路图15第4章系统软件设计174.1系统软件方案选择17 4.2系统软件程序设计17第5章系统调试215.1系统硬件部分调试215.2系统软件调试215.3系统联合调试及结果225.4调试结果分析23第6章结论24参考文献25附录1:硬件原理图26附录2:设计程序27附录3:系统仿真图33致谢34 第1章绪论1.1LED显示屏的广泛应用LED显示屏可以显示变化的数字、文字、图形图像;不仅可以用于室内环境还可以用于室外环境,具有投影仪、电视墙、液晶显示屏无法比拟的优点。LED点阵显示屏以亮度高、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定的优点迅速成长为平板显示的主流产品,在信息显示领域得到了广泛的应用。LED的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性、可靠性、全色化方向发展。LED显示屏的应用涉及社会经济的许多领域,主要包括:(1)证券交易、金融信息显示。(2)机场航班动态信息显示。(3)港口、车站旅客引导信息显示。(4)体育场馆信息显示。(5)道路交通信息显示。(6)调度指挥中心信息显示。(7)邮政、电信、商场购物中心等服务领域的业务宣传及信息显示。(8)广告媒体新产品等。1.2最新的LED显示屏技术随着液晶(LCD)产品价格的下降,LCD显示器也呈现出多样化的发展趋势:尺寸越来越大,宽屏逐渐成为消费热点,个性化产品层出不穷,多媒体应用需求已经显现,黑插入技术取得进展,计算机应用向多媒体应用靠拢,平板显示器与若干视听设备相连的技术需求增加,如高分辨多媒体接口HDMI等数字传输技术,已开始应用在LCD显示器上。高分辨多媒体接口HDMI(全称是High-DefinitionMultimediaInterface)是2006初年日立、松下、飞利浦、索尼、汤姆逊、东芝和SiliconImage等7家公司联合发布的接口规范,包括高清晰支持、高速传输以及与电脑的更简易的连接方法。HDMI只需一条线就可以传输数字音频和视频数据,使消费者能够方便地体验到高品质的家庭影院效果。HDMI接口技术引起了计算机行业的关注,因为HDMI定位于标准数字多媒体接口。在应用方面,HDMI与低电压交流电计算机的画面控制终端的连接更加简单和方便,有利于计算机与消费电子类产品实现真正意义上的融合。目前许多高清数字电视生产商都在产品中采用了HDMI接口,HDMI也已经被运用到计算机媒体播放器、DVD播放器、DVD录音设备、有线电视机顶盒、卫星电视机顶盒以及A/V接收器中,也被应用在游戏机和便携式摄像机中。1.3本课题的主要内容针对本课题的特点,对论文的内容和结构将做如下安排:(1)初步方案的论证和选择搜集题目的有关资料,并参照目前通用的设计思想和设计方法拟定几套设计方案进行分析比较。最终选定了以PC机为上位机,单片机为核心控制器件,外加译码电路和驱动电路的设计方案。 (2)方案实现以设计方案为指导思想选择合适的器件来实现这一思想,选择器件时要从功能和电气特性两方面来选择和论证。经过对比选择选定AT89S51单片机为核心控制器件,由串并转换器74HC138和锁存器74HC573为译码电路器件,74HC595为驱动电路器件。论文列出了详细的器件参数和在系统中的连接使用方法。(3)软件编写根据硬件特点和设计要求,软件选用C语言编写。程序按功能分为静态显示、动态显示、通信等几个功能上相对独立的模块。然后按照所划分的模块逐个编写和调试,最后将独立的模块整合起来。(4)验证与测试调试分为硬件调试、软件调试和系统联合调试几步来进行。在硬件调试中发现有单片机端口驱动能力不足、驱动电路工作不稳定等问题。在软件调试中出现程序整合工作不协调等问题。通过分析,查找找出了问题原因并设法将其解决。(5)结论设计完成后对设计中所遇到的问题、经验教训、以及自己的想法进行总结。 第2章系统硬件方案论证与选择大多数的LED显示屏都在户外,所以对硬件的质量要求非常的高。为方便检修和维护硬件电路设计时常常采用模块化的设计方法。硬件的设计采用模块化设计,既要满足模块本身功能又要能够和整个系统兼容。如图2-1所示,根据显示系统的功能特点确定系统硬件由显示屏部分,控制部分,通信系统及上位机四部分组成。上位机通过通信部分向控制部分发送控制指令和显示内容代码,控制部分执行显示指令并将显示代码处理后控制显示部分的显示内容和显示方式[3]。图2-1系统硬件组成框图2.1上位机部分方案选择其中系统采用现在已经非常普遍的PC机作为上位机,这样对该显示系统的硬件要求便降低了,增加了系统的通用性。上位机的作用是存储并处理显示内容,然后通过通信系统传送到控制系统驱动显示。LED显示上位机的内容一般有实时显示和存储显示两种方法。实时显示及上位机屏幕上的内容同时显示在LED显示屏上,上位机上内容变化LED显示屏也跟着变化。存储显示是将显示内容处理过后存储在上位机中通过通信系统传输到显示屏显示[9]。两种显示方法相比较:实时显示屏幕能及时反应上位机内容的变化,显示的效果和内容的实时性好多用于新闻播报、实况转播用,但实时显示硬件开销大,对通信系统要求高,工艺复杂,成本高;存储显示虽实时性不高但硬件开销小,成本低廉。课题设计题目对显示的实时性要求较低且所设计的显示屏尺寸不大同时显示的内容不多,所以实时显示就没有必要。所以上位机选择存储显示的方法,控制LED显示屏的显示内容。2.2通信部分方案选择通信部分要满足的设计要求就是稳定、快速、简单易实现。因为通常情况下显示屏和上位机的距离不会很远,所以通信距离的要求不是很高。ISP(In-SystemProgramming)在系统编程,通过下载电缆直接对安装在用户目标板上的器件编程,给电子产品的设计和生产带来许多革命性的变化。目前,比较成熟的ISP下载器大多是基于串口或者并口通信的,但是也存在着以下问题:(1)用户PC机的主频、硬件和操作系统不同,可能会造成控制信号错误;(2)不同的厂商提供不同的ISP下载器,互不兼容,给嵌入式开发带来不便;(3)限于串、并口的通信协议,ISP数据传输速率较低,影响嵌入式产品的开发。而USB ISP完美地解决了这些问题,它具有较强的易用性,可靠性和兼容性,数据传输速率也较快。基于以上原因,本设计选择了一种将单片机和USB总线相结合,进行ISP下载的方法。2.3控制部分方案选择控制部分是整个系统的核心部分,其功能为与上位机通信接收上位机发送的数据和控制指令处理过后控制显示部分显示内容。(1)单片机单片机是集成了CPU,ROM,RAM和I/O口的微型计算机。它有很强的接口性能,非常适合于工业控制,因此又叫微控制器(MCU)。单片机品种齐全,型号多样CPU从8,16,32到64位,多采用RISC技术,片上I/O非常丰富,有的单片机集成有A/D,“看门狗”,PWM,显示驱动,函数发生器,键盘控制等。它们的价格也高低不等,这样极大地满足了开发者的选择自由。除此之外单片机还具有低电压和低功耗的特点。随着超大规模集成电路的发展,NMOS工艺单片机被CMOS代替,并开始向HMOS过渡。供电电压由5V降到3V,2V甚至到1V,工作电流由mA降至μA,这在便携式产品中大有用武之地[4]。(2)DSP芯片DSP又叫数字信号处理器。顾名思义,DSP主要用于数字信号处理领域,非常适合高密度,重复运算及大数据容量的信号处理。现在已经广泛应用于通信、便携式计算机和便携式仪表、雷达、图像、航空、家用电器、医疗设备等领域,DSP具有修正的哈佛结构,多总线技术以及流水线结构。将程序与数据存储器分开,使用多总线,取指令和取数据同时进行,以及流水线技术,这使得速度有了较大的提高。DSP区别于一般微处理器的另一重要标志是硬件乘法器以及特殊指令,一般微处理器用软件实现乘法,逐条执行指令,速度慢。而DSP依靠硬件乘法器单周期完成乘法运算,而且还具有专门的信号处理指令,如TM320系列的FIRS,LMS,MACD指令等[5]。两种设计方式相比较各有优点且都能够实现控制功能,但单片机的技术门槛较低开发成本也较低非常适合初学者进行学习和锻炼使用。现在市场上常用的单片机主要有MCS-51、AVR、ARM、PIC等。其中应用最广泛的单片机首推Intel的51系列,由于产品硬件结构合理,指令系统规范,加之生产历史“悠久”,有先入为主的优势常作为单片机学习的教材。且51系列的I/O脚的设置和使用非常简单,当该脚作输入脚使用时,只须将该脚设置为高电平(复位时,各I/O口均置高电平)。当该脚作输出脚使用时,则为高电平或低电平均可。所以在控制部分方案的选择中选定51系列单片机作为控制部分的核心器件。2.4显示部分方案选择显示部分包括了一块至少可以显示一个汉字的显示屏,以及驱动该显示屏的驱动电路。由于单片机的I/O口有限要不能直接用I/O口来驱动LED显示屏,所以需要对单片机IO口进行扩展增加单片机并行输出的能力。 LED显示屏是由一个一个的发光二极管点阵构成的,要构成大屏幕的LED显示屏就需要多个发光二极管。构成LED屏幕的方法有两种,一是由单个的发光二极管逐点连接起来,如图2-2所示;二是选用一些由单个发光二极管构成的LED点阵子模块构成大的LED点阵模块。目前市场上普遍采用的点阵模块有8×8、16×16几种;这两种屏幕构成方法各有有缺点,单个发光二极管构成显示屏优点在于当单个的发光二极管出现问题时只需更换一个二极管即可,检修的成本较低,缺点在于连接线路复杂;而点阵模块构成的方法却正好与之相反,模块构成省约了大量的连线,不过当一个LED出现问题时同在一个模块的所有LED都必须被更换。这就加大了维修的成本。两种方法相比较,决定采取模块构成的方法来制作一个LED点阵显示屏。为了避免模块的缺点,选择点阵数较小的模块来减小出现这一问题的风险。所以构建一个16×16的LED点阵屏选用四块8×8点阵模块。图2-2LED点阵图一个16×16的LED显示屏行和列各有16支引脚,不能单靠51单片机的端口驱动所以必须要对单片机的端口个数进行扩展。经常采用的端口扩展方法是用串并转换芯片进行译码。常用的串并转换芯片有74LS154(4线-16线译码器)、74HC138(8位串并转换器)、74HC595等。51系列单片机端口低电平时,吸入电流可达20mA,具有一定的驱动能力;而为高电平时,输出电流仅数十μA甚至更小(电流实际上是由脚的上拉电流形成的),基本上没有驱动能力,所以单片机不能直接驱动LED显示屏显示。在单片机和显示屏之间还需要增加以功能放大位目的的驱动电路[7]。2.5最终确定硬件设计方案最终方案如图2- 3所示,以PC机作为上位机存储和处理显示内容用串行通信的方式将显示内容和控制指令传输到单片机系统,单片机根据上位机传输来的内容和指令通过端口译码扩展后驱动4块8×8LED点阵模块构成的16×16的LED点阵显示屏。题目将以此方案为指导思想展开具体的硬件电路设计。图2-3硬件设计方案 第3章系统硬件设计3.1硬件整体设计概述及功能分析显示系统具体设计主要由上位机、通信系统、单片机系统、译码电路、显示驱动电路和16×16的点阵屏组成。具体工作流程为:上位PC机通过通信系统向单片机发送控制指令和显示代码内容,单片机接收后执行控制指令处理显示代码将显示内容通过I/O口串行输出并且控制译码电路完成串并转换并行输出,最后由显示驱动电路进行电压和电流的处理以达到LED显示屏的显示电流,电压要求进而使显示屏显示内容[11]。根据硬件的功能结构图选取合适器件,器件不但要求能实现所要求的功能还要能兼容至整个系统之中。通过查阅资料和对比最终的硬件原理框图如图3-1所示:图3-1硬件原理框图该系统所要实现的功能和要求有以下几点:(1)LED显示屏的面积必须满足至少显示一个汉字的标准。并且显示要清晰。(2)驱动电路要能提供LED显示所需范围内的电压和电流要求。(3)译码电路的高低电平的区分能力以及译码的输入输出频率必须满足单片机以及驱动电路的要求。(4)单片机要能接收上位机的指令和显示内容且能够处理后控制LED显示屏的显示,并且端口驱动能力要足以驱动译码电路。执行频率要能达到扫描显示的最低要求。(5)单片机由ISP下载线下载程序和供电,可不设立专用供电电源。(6)由USB接口完成与上位机的通信速度和数据传的可靠性要达到显示要求。3.2控制单元设计3.2.1控制系统设计控制电路设计中采用的是单片机系统,该系统必须要是工作在一个最小系统(指单片机的可以的最小配置系统)。AT89S51的最小系统包括了外界时钟电路和复位电路,选定一定数量的IO口作为控制口控制外部的各种器件和数据的输出。根据功能选择一定的单片机端口添加外围的器件,具体电路如图3-2所示。在该系统中,P0各口主要用作LED显示数据的行控制输出。具体接法为:P0.4,P0.5,P0.6分别接74HC138的A端,B端,C 端向74HC138送入串行数据经过其转换后并行输出;P0.3,P0.7接138芯片的使能控制端,当为低电平使允许输出;P0.0,P0.1,P0.2接595的SH_CP端,ST_CP端,DS端控件系统的列输入,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。因为没有扩展外部程序存储器所以将EA置为高电平。P1.5,P1.6,P1.7分别接ISP的1,7,5引脚,用于向芯片烧写程序。具体电路如图3-2所示:图3-2控制部分电路图3.2.2AT89S51简介AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4kbytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域。AT989S51具有以下特点:·与MCS-51产品指令系统完全兼容·4k字节在系统编程(ISP)Flash闪速存储器·1000次擦写周期·4.0-5.5V的工作电压范围 ·全静态工作模式:0Hz-33MHz·三级程序加密锁·128×8字节内部RAM·32个可编程I/O口线·2个16位定时/计数器·6个中断源·全双工串行UART通道·低功耗空闲和掉电模式·中断可从空闲模唤醒系统·看门狗(WDT)及双数据指针·掉电标识和快速编程特性·灵活的在系统编程(ISP字节或页写模式)AT89S51提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,看门狗(WDT),两个数据指针,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。3.3行驱动模块设计3.3.1行驱动系统设计行驱动电路的功能是为了解决单片机I/O端口不足。行译码所用器件为串并转换器74HC138。两个138级联成4线-16线译码器,三级管Q1-Q16接显示屏H1-H8解决了显示屏供电不足的问题。具体电路如图3-3所示: 图3-3行驱动电路图3.3.2串并转换器74HC138行译码采用的是芯片74HC138。如果不采用译码电路完全依靠单片机的端口输出来控制16×16的LED点阵屏显示,需要32个端口。而采用了译码电路后仅仅需要7~9个端口便可实现控制显示。大大减少了I/O口的占用数目,为单片机扩展其他功能预留下来了空间。74HC138译码器可接受3位二进制加权地址输入(A0,A1和A2),并当使能时,提供8个互斥的低有效输出(Y0至Y7)。74HC138特有3个使能输入端:两个低有效(E1和E2)和一个高有效(E3)。除非E1和E2置低且E3置高,否则74HC138将保持所有输出为高。 表3-174HC138集成译码器功能表3.4列驱动模块设计列驱动电路由74HC595构成,它具有一个8位串入并出的移位寄存器和一个8位输出锁存器,而且移位寄存器和输出锁存器的控制是各自独立的,可以实现在显示本行各列数据的同时,传送下一行的列数据,达到重叠处理的目的。数据在SH_CP的上升沿输入,在ST_CP的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入(DS),和一个串行输出(Q7),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。工作顺序:单片机先送1个8位数据到第一个595的内部移位寄存器->然后数据会送到内部的输出寄存器->输出,当MR(10引脚)为高电平,OE(13引脚)为低电平时,数据在SHCP上升沿进入移位寄存器,在STCP上升沿输出到并行端口。具体电路如图3-4所示: 图3-4列驱动原理图3.5点阵显示模块设计如图3-5所示,本设计采用了4个8*8的点阵发光二级管模块,组成了16*16的LED点阵显示屏。LED驱动显示采用的动态驱动扫描方法,动态扫描方式是逐行轮流点亮,把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起,先送出对应第一行发光管亮灭的数据并锁存,然后选通第一行使其点亮一定的时间,然后熄灭;再送出第二行的数据并锁存,然后选通第二行使其点亮相同的时间,然后熄灭;…第十六行之后,又重新点亮第一行,反复轮回。当这样的轮回速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能看到显示屏上稳定的图形。该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源。 图3-5点阵显示电路3.5单片机ISP下载编程器单片机系统传统的编程方式是将单片机先从电路板上取下,放入专用的编程器进行编程,再放人电路板进行调试。其缺点是频繁的拔插器件容易损坏器件的引脚;如果频繁的调试程序,必须重复拔插,大大降低了开发效率。ISP技术是未来发展的方向,其优势是无需编程器就可进行单片机的实验和开发,单片机器件可直接焊接到电路板上,调试结束即为成品,免去调试时由于频繁插入取出对器件和电路板造成的损坏和带来的不便。ISP可降低研发成本;缩短从设计、制造到现场调试的时间,简化生产流程,大大提高工作效率;在试验新品或学生试验等常需用不同的程序调试器件的场合中,在线编程技术尤为重要。设计AT89S51单片机开发板,采用ISP下载线实现在KeilC软件开发环境下调试的汇编语言程序机器码能即时下载到AT89S51单片机片内Flash中,并可在线修改。在系统可编程ISP(In-SystemProgrammable),指电路板上的空白器件可编程写入最终用户代码,而无需从电路板取下器件,已编程的器件也可用ISP方式擦除或再编程。ISP的提出改变了传统硬件系统开发的流程,大大方便了开发者,加快了开发速度,将单片机和USB总线相结合,进行ISP下载。本设计中ISP电路如图3-6所示: 图3-6ISP下载电路3.6USB电源接口本设计除了可以用ISP接口供电,还可以采用USB电源接口供电,开关S1连接了一个发光二级管,用于指示电源的通断。具体电路如图3-7所示:图3-7USB电源接口电路3.7MAX232串口通信电路本课题中还设计了另一种通信方式,当所采用控制芯片不为AT系列,而是STC系列时,采用MAX232串口通信。具体电路如图3-8所示: 图3-8232串口通信电路MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的接口电路,使用+5v单电源供电。内部结构基本可分三个部分:第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。第三部分是供电。15脚GND、16脚VCC(+5v)。3.8系统总电路图 第4章系统软件设计第4章系统软件设计4.1系统软件方案选择软件的设计除了满足设计功能外还必须要满足易读写,方便下载和编译。软件的编写需要借助软件编辑器和编译软件,编译完成后还需要下载到单片机中执行。编写软件之前得首先选择一种合适的语言以及配套的编辑器和编译软件。最后还要选择一款与所选单片机的下载器或下载软件来把编写的程序下载到单片机中执行。4.1.1单片机编程语言选择现在主要运用的单片机编程语言为汇编语言和C语言。两种语言相比较各有优点。汇编语言(AssemblyLanguage)是面向机器的程序设计语言,是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。其具有执行速度快,占内存空间少等优点,但在编写复杂程序时具有明显的局限性,汇编语言依赖于具体的机型,不能通用,也不能在不同机型之间移植[8]。C语言是一种源于编写UNIX操作系统的语言,它是一种结构化语言,可产生压缩代码。C语言结构是以括号{}而不是子和特殊符号的语言。C可以进行许多机器级函数控制而不用汇编语言。与汇编相比,有如下优点:对单片机的指令系统不要求了解,仅要求对51的存储器结构有初步了解;寄存器分配、不同存储器的寻址及数据类型等细节可由编译器管理;程序有规范的结构,可分为不同的函数。这种方式可使程序结构化;将可变的选择与特殊操作组合在一起的能力,改善了程序的可读性;编程及程序调试时间显著缩短,从而提高效率;提供的库包含许多标准子程序,具有较强的数据处理能力;已编好程序可容易的植入新程序,因为它具有方便的模块化编程技术。C语言作为一种非常方便的语言而得到广泛的支持,C语言程序本身并不依赖于机器硬件系统,基本上不做修改就可根据单片机的不同较快地移植过来。基于以上理由决定采用C语言为该显示系统的编程语言。4.1.2系统软件编译工具选择C语言编写的程序并不能被单片机直接执行还需要编译为单片机可执行的机器语言。因此在系统软件设计中,编译器必不可少。支持MCS-51用C语言编程的编译器主要有两种:FranklinC51编译器和KEILC51编译器。目前在单片机开发中普遍都是使用KEILC51来进行编译。因此软件设计最终方案为采用C语言为程序语言,KELC为编译工具按照控制、通信、显示等几个功能模块来编写程序。4.2系统软件程序设计设计目标和硬件总体结构确定的情况下,软件可以分为主程序,显示程序两大部分。 第4章系统软件设计4.2.1主程序设计系统软件采用C语言编写,按照模块化的设计思路设计。首先分析程序所要实现的功能,程序要实现静态显示,动态显示两大功能。其通信程序接收上位机数据,交给主程序处理再通过控制程序选择不同的显示程序进行显示。主程序的工作流程如图4-1所示:系统初始化从显示数组读取数据到显示寄存器读取显示控制命令选择显示方式调用相应显示程序RI=1?起始位?接收显示数据及控制命令将显示数据移入显示数组将控制命令赋值给控制字符NNYY开始中断开始中断返回图4-1主程序流程图程序开始时首先必须对单片机进行初始化,其中初始化的内容包括:中断优先级的设定,中断初始化,通信方式的选择和波特率的设定,各IO口功能的设定等。初始化完成后程序进入待机状态等待中断的发生,该程序中主要用到了两个外部中断源和串行中断。外部中断源由按键的电平变化触发,外部中断主要功能是选择LED点阵显示屏的控制方式是由按键控制还是上位机控制和显示状态是静态显示还是动态显示。串行中断包括发送中断和接收中断都是由软件触发。中断产生后由预先初始化时设定跳转执行中断子程序。中断程序设定了LED点阵显示屏所要显示的内容和显示的方式,最后执行的是各种显示程序。按照设定的方式和内容显示出所需要的内容。 第4章系统软件设计4.2.2显示程序的设计显示程序分为静态显示程序、左移显示2种种显示方式。其中左移动程序调用了静态显示程序为子程序。对静态显示来说,每一个发光二极管都需要一套驱动电路,一帧画面输入以后便可一劳永逸地显示,除非我们改变了显示内容,需要重新输出新的点阵数据.这种方式系统原理相对简单一些,但所需的译码驱动装量很多,引线多而繁杂,不便于大屏幕的制造,成本高,其可靠性也较低.另一种动态扫描显示是把整个LED屏幕分成若干部分,每一幅画面的显示是显示完一部分后,又显示第二部分……直到显示完最后一部分又重新开始显示第一部分,重复循环进行.在重复扫描速度足够快的情况下,我们看到的就是一幅稳定的画面.也就是说采用动态扫描显示需要不断进行画面的刷新.在这种方式下其显示驱动电路可重复利用,引线也大大减少,从而使硬件成本降低,且屏幕上的发光二极管轮流发光,使用时的耗电量大大降低.大屏幕的制造、维护要容易许多,可靠性也增加了.两种显示方式的比较再结合51单片机IO口数量有限的原因决定采用动态扫描的方式进行显示。动态扫描分为行扫描和列扫描两种方式区别在于选通端和数据输入端分别是行还是列。在该显示系统中扫描显示的工作原理如图4-2所示,先选通列然后再从行送入对应列的数据,这样从第1列到第16列循环往复,只要切换的速度足够的快利用人眼的延时特性就可以看见一幅稳定的画面。 第4章系统软件设计图4-2扫描显示程序原理图显示采用的是列扫描的显示方式,选通一列后按照列与数据元素的对应关系第i列对应的行数据为数组中的第i和第i+16个元素。将对应元素的由低至高位依次从端口输出具体做法为将元素向右逻辑移位后再与0X01相与,所得结果通过单片机端口输出到串并转换器的A端,锁存在锁存器里完成一列数据移位后再将其输出。如此依次循环选通各列来显示所需画面[17]。开始读入显示数组显示显示数组元素逻辑左移一位移位次数是否为16NY图4-5左移程序流程图动态显示程序流程如图4-5所示,根据显示数据的存储原理通过改变实际LED列与数据逻辑列的方法来实现程序的左移。显示数据与列的对应关系为:第i列对应的数据为数组中i和第2×i个数据。显示数组中,第1至16个元素的第8至第1位LED显示屏中的第1至第8行。同理第17至32个元素的第8至第1位LED显示屏中的第9至第16行。所以将元素数据进行逻辑位移便能产生左移动的效果[18]。 第5章系统调试第5章系统调试软件硬件完成后开始进行调试。调试可分为硬件调试,软件调试和系统联合调试。5.1系统硬件部分调试硬件调试主要是调试各部分的焊接是否合格和各芯片的输出输入电压是否符合设计要求,最后测试各硬件部分能否完成设计功能。因此把硬件调试按照以下四部分分步来进行:(1)测试所有焊点是否有短路和虚焊的现象存在;(2)通电测试所有硬件芯片的输入输出电压是否在设计要求的范围内;(3)测试ISP下载线的功能是否能够实现;(4)测试串口系统的通信功能是否能够实现。由于最重要的显示系统功能的测试需要软件配合所以在硬件调试部分只测试单片机复位电平,功能部分测试放在系统联合调试部分来完成。5.1.1短路与虚焊检测检测工具为万用表,使用万用表的短路报警功能,逐个测试相临的两个焊点检测是否短路。按照电路图检测需要连接的两点是否短路来检测是否已经连接上,以此来检测虚焊的情况。检测和修改完成后为下一步通电检测排除了短路的危险和由于虚焊引起检测结果不真实的麻烦。5.1.2上电测试由于系统测试时是采用USB电源为系统电源,所以电源输入都为5V。显示系统中单片机、译码器,锁存器,驱动电路的电源电压均要求为5V所以可同时直接接入。上电后首先观察电路是否有过热,异味,冒烟的现象出现。经过观察,没有这些现象出现。然后测试各器件的电源,接地及一些电平应该固定的端口的电压。测试的结果为:各器件电源端在4.3V~4.8V之间满足器件的电源电压要求,单片机端口在未接负载时端口电压为4.5V。5.2系统软件调试由于已经进行了硬件调试,所以软件调试主要是软件编译和将各功能块程序分别写入以验证其功能的可实现性。在进行功能调试前必须用KEILC对所有程序进行编译,编译成功生产可执行的.hex后将程序烧入芯片中。如图5-1,5-2所示 第5章系统调试图5-1生成.hex图5-2将程序烧入芯片5.3系统联合调试及结果经过硬件调试和软件调试,排除了硬件的连接问题和验证了程序的可实现性。其余功能的软件便可以在此基础上调试验证其功能的正确性。联合调试的具体方法如下:(1)编写一个逐点扫描的显示程序,再结合硬件电路运行。这样做的目的在于检测各器件是否能够正常运行和显示屏的各个LED灯是否有损坏。结果显示显示屏中只有边角出有一个LED灯被烧坏,其他器件逻辑功能运行正常。 第5章系统调试(2)将静态显示子程序与动态显示程序结合硬件电路进行调试。显示存在两个问题。一是发光点的下方会出现一个很微弱的亮点,影响了整体的显示效果。二是同一列的LED灯被点亮的数量与其亮度出反比,即如果同一列的灯都被点亮则亮度比只点亮几个时要暗一点。(3)将USB通信,显示,硬件联合调试。按照设定的通信协议,先由PC机向单片机发送起始控制字,接着再发送显示数据,最后发送控制显示方式的显示控制字。再发送不同的显示数据和显示控制字,观察各种显示方式的运行情况和各种显示方式之间的切换情况。结果是显示屏执行显示控制指令,显示所发送的内容。5.4调试结果分析对调试中出现的问题进行了分析,得出以下原因和修改办法。(1)硬件的工作表现出不稳定,主要是表现在LED显示屏的驱动电路部分和单片机系统部分。具体表现为单片机接负载后电压被拉低值1.7V左右,无法满足译码电路的输入要求。显示时会有一些行驱动的输出不够设计指标,导致所驱动的那一行在显示屏上表现为选定的点不能够很好区分,图像出现模糊。分析造成这一现象的原因为,焊接时三极管遭到了高温损坏以致工作不稳定和焊接的电路不够牢靠,还有就是胡级管的e端所接电压过高。修改办法为将单片机输出端口外接5K的上拉电阻,替换损坏三极管。(2)虚点的产生与软件和三极管电压有关。修改办法是将软件中的延时时间调至恰当值。经过调试和修改,系统实现了题目所要求的汉字显示,左移显示及上位机通信与控制的要求。最终实物图如图5-3所示图5-3实物图 第6章结论第6章结论经过一段时间的工作,终于完成了基于51单片机的LED显示系统的设计,设计所要求的功能全部达到。通过这次设计收获颇多,不仅是所作题目涉及到的软硬件知识还有更为重要的实际经验和过程中所发现的问题。接手题目之后从互联网上对LED进行了详细的资料收集,从技术和产业的两方面对LED进行了了解。通过了解我认识到LED是一门当今应用非常广泛的技术,整个产业每年都会有巨大的产值而且技术还在不断发展和创新[20]。从设计之初就确定了参照大屏幕显示屏的实现方法和实际情况设计一款小屏幕的LED点阵显示屏。在查阅了大量的大屏幕显示屏资料后确定了题目的设计方案。整个设计采用AT89S51做核心控制器,74HC138做成译码电路,74HC595做成列驱动。在实现这一设计的过程中所遇到的问题和困难给我留下了宝贵的经验和深刻教训。这些经验和教训是:(1)设计之前应该进行大量的资料收集和分析,确定一个清晰的设计思路;(2)器件选择时要详细阅读器件使用手册,不但要考虑器件的功能实现还要考虑器件在整个系统中的兼容性;(3)硬件的系统的建立必须合理和稳定,实物建立之前最好进行仿真这样才能为软件提供一个可靠的试验平台;(4)软件的编写不但要实现功能还要不断的优化、简练、易读。随着课题的进行,对LED的了解也越来越深入。认为LED技术也会进一步发展,LED应用将会更加广泛。可以设想利用LED的高稳定性和低能耗,再与无线通信技术相结合在沙漠深处或者人迹罕至的雪山之颠树立一块依靠太阳能充电,通过无线传输方式更改显示内容的信息板为登山者提供指示和天气信息,为沙漠迷路的人指引方向。设计结束了,但学习还在继续。我相信通过此次设计所得到的知识、心得、经验乃至感受都会让我在以后的日子里受益匪浅。 参考文献参考文献[1]关积珍.LED.显示屏发展状况及趋势[J].世界电子元器件,2000,(02):277-301.[2]关积珍,陆家和.我国LED显示屏技术和产业发展及展望.现代显示,2004,(02):34-37.[3]JeyamkondanS,JayasDS,HollyRA.16x16dotmatrixLEDhas4mmprofile.ElectronicsWeekly,11/26/2003Issue2125,36-36,1/9p,1c;(AN11842012).[4]缪思恩.LED大屏幕显示电路设计[J].电子技术应用,1996,(08):56-77.[5]DaveJackson.关于DSP芯片的问与答.今日电子,1998,(12):1-7.[6]卢弥坚.主从分布式LED大屏幕显示系统[J].电脑与信息技术,1997,(04):6-13.[7]高胜东,梁采,张宏富.一种LED大屏幕显示系统[J].成都气象学院学报,1998,(03):108-120.[8]张全福.汇编语言程序设计实验教学改革与探索.教学研究,2005,(06):3-5.[9]文哲雄.用单片机控制LED显示屏[D].佛山:佛山科学技术学院,1995.[10]彭宁,只佩华.单片机对LED大屏幕显示的控制系统[J].河北大学学报(自然科学版),1993,13(3):86-89.[11]陈玉华,王铭霞.LED大屏幕显示电路的设计[J].大连海事大学学报,1997,(03):55-56.[12]郑刚,李宇成.LED大屏幕显示系统的设计[J].北方工业大学学报,2001,(03):43-47.[13]李元生.LED光柱专用驱动器[J].家庭电子,2005,(04):1-7.[14]王亭,李瑞涛,宋召清.在Windows下PC机和单片机的串行通信[J].微型机与应用,2000(1):25-27.[15]陈新忠.基于RS232总线的单片机多机通信软件设计[J].现代电子技术,2002,(03):56-78.[16]乔世杰.小波图像编码中的对称边界延拓法[J].中国图像图形学报,2000,5(9):725-729.[17]李桂平.LED屏幕显示器的设计[J].零陵师范学院学报,2002,(9):367-380.[18]DavidFRogers.Computergraphicsalgorithm[M].Beijing:ChinaMachinePress,2002:97-99.[19]Marston,R..Radio-Electronics,WorkingwithLEDdisplaydrivers[J]. 参考文献Mar1992,Vol.63Issue3,65,8p,3charts,23diagrams;(AN9206290756).[20]Regenold,Stephen.LEDsAreStillPopular(andImproving)afterAllTheseYears[Z].Sep2004,Vol.18Issue9,44-44,1/7p,1c;(AN14525210). 附录1附录1:系统仿真图 致谢附录2:设计程序//主程序主要为各功能子程序提供运行平台,子程序分为显示程序,特效显示程序,//按键输入中断子程序//#include//#include//#include#include//#include#defineCOUNT34#defineW0X01unsignedcharbuffer[COUNT];unsignedcharpoint;sbitA1=P1^0;//定义第一列对应端口sbitA2=P1^1;//第二列sbitA3=P1^4;//第一行sbitA4=P1^5;//第二行sbitCLK_L=P1^2;//列移位时钟上升沿触发sbitCLEAR_L=P1^3;//列清除控制位低电平有效sbitCLK_H=P1^6;//行移位时钟sbitCLEAR_H=P1^7;//行清除控制位低电平有效sbitEN=P2^0;sbitP21=P2^1;sbitOE=P2^2;//三态允许控制端低电平有效sbitLE=P2^3;//锁存允许端 致谢unsignedcharcodeH1[16]={1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},H2[16]={0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0};//分别暂存行(H)列(L)所要显示的数据unsignedcharL1,L2,i,command,k,j;charz,l,m,n,x;unsignedchardataziku[32];unsignedcharidatasort[32];unsignedintdatatemp;unsignedcharcodeBmp019[]=//静态显示内容{/*----------------------------------------------------------源文件/文字:寿宽×高(像素):16×16字模格式/大小:单色点阵液晶字模,纵向取模,字节正序/32字节数据转换日期:2007-5-3116:26:59----------------------------------------------------------*/0x00,0x22,0x22,0x2A,0x2A,0x2A,0x2F,0xFA,0x2A,0x2A,0x2A,0x2B,0x2A,0x2A,0x22,0x00,0x04,0x04,0x08,0x10,0x20,0xC0,0x20,0x5C,0x48,0x42,0x41,0xFE,0x40,0x40,0x40,0x00};//*************************************************************//串口中断程序//功能:从PC机接收数据,当接收满34位后将接收到的数据发送回PC机//************************************************************* 致谢com_interrupt(void)interrupt4using3{unsignedcharRECEIVR_buffer;if(RI==1){RECEIVR_buffer=SBUF;RI=0;TI=0;if(point==0){if(RECEIVR_buffer=="s")point++;elsepoint=0;}if(point>0&&point<35)buffer[point++]=RECEIVR_buffer;elsepoint=0;}//TI=0;if(point==35&&RI==0){command=buffer[34];point=0;x=0;for(k=2;k<34;k++){SBUF=buffer[k];sort[k-2]=buffer[k];while(TI==0); 致谢TI=0;}}}voiddelay(intk)//延时程序{while(k--);}//**********************************************************************//静态显示程序//功能:将显示数据处理后,控制串并转换器并行输出控制LED显示//**********************************************************************voiddisplay()//显示子程序{EN=1;P21=1;CLEAR_L=0;delay(5);CLEAR_L=1;for(i=0;i<16;i++){CLK_L=0;A1=H1[i];A2=H2[i]; 致谢CLK_L=1;L1=ziku[i+z];L2=ziku[i+16+z];if(i+z<0||i+z>15)continue;OE=1;LE=1;if(L1==0x00&&L2==0x00)continue;for(j=0;j<8;j++){CLK_H=0;if(L1&W==1)A3=0;elseA3=1;if(L2&W==1)A4=0;elseA4=1;CLK_H=1;L1>>=1;L2>>=1;}OE=0; 致谢LE=0;delay(110);CLEAR_H=0;delay(1);CLEAR_H=1;}}//右移显示//功能:使得LED产生画面右移得效果voidsdisplay_left(){if(m==0){z++;m=30;}if(z==15){l=0;z=0;}display();m--;}//**********************************************************************//右移显示 致谢//功能:使得LED产生画面右移得效果//**********************************************************************voidsdisplay_right(){if(m==1){z--;m=30;}if(z==-15){l=0;z=0;}display();m--;}//**********************************************************************//上移显示//功能:使得LED产生画面上移得效果//**********************************************************************voidsdisplay_up(){z=0;l=1;m=0;for(k=0;k<16;k++){ 致谢for(n=0;n<16;n++){temp=ziku[n];temp<<=8;temp=temp|ziku[n+16];temp<<=1;ziku[n+16]=temp;temp>>=8;ziku[n]=temp;}do{display();m++;if(m==50){l=0;m=0;}elsel=1;}while(l);}}//**********************************************************************//下移显示//功能:使得LED产生画面下移得效果//**********************************************************************voidsdisplay_down(){z=0; 致谢l=1;m=0;for(k=0;k<16;k++){for(n=0;n<16;n++){temp=ziku[n];temp<<=8;temp=temp|ziku[n+16];temp>>=1;ziku[n+16]=temp;temp>>=8;ziku[n]=temp;}do{display();m++;if(m==50){l=0;m=0;}elsel=1;}while(l);}}//主程序main(){EA=1;//允许启用外部中断 致谢EX0=1;EX1=1;IT0=0;//外部中断为电平触发方式(低电平有效)p3.2为IT1=0;//显示允许位p3.3为特效允许位ES=1;SCON=0X58;TMOD=0X21;TH1=0XFD;TR1=1;ET1=0;ES=1;PS=1;EA=1;x=1;while(1){if(x==1){for(l=0;l<32;l++)ziku[l]=Bmp019[l];}else{for(k=0;k<32;k++)ziku[k]=sort[k]; 致谢}x=1;switch(command){case"l":while(x){sdisplay_left();}case"r":while(x){sdisplay_right();}case"u":while(x){for(k=0;k<32;k++)ziku[k]=sort[k];sdisplay_up();}case"d":while(x){for(k=0;k<32;k++)ziku[k]=sort[k];sdisplay_down();}default:while(x){ 致谢display();}}}}'