已阅读5页,还剩51页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学校代码:10904 学 士 学 位 论 文基于STC89C52的LED点阵设计与实现姓 名:学 号:指导教师:学 院:信息科学与工程学院专 业:计算机科学与技术完成日期:2012年05月25日 学 士 学 位 论 文基于STC89C52的LED点阵设计与实现姓 名:学 号:指导教师:学 院:信息科学与工程学院专 业:计算机科学与技术完成日期:2012年05月25日摘 要LED点阵显示屏是近年来在全球迅速发展起来的新型信息显示媒体,它凭借可靠性高、使用寿命长、环境适应能力强、价格性价比高、应用成本低等特色,在短短的十来年中,迅速成长为户外显示的主流媒介。LED显示屏广泛应用于人民生活的各个方面。例如银行、交通枢纽、体育馆等公共场合的信息显示,以及各种商场、广场的广告显示屏等。尤其是对于广告信息量有限的中小型商户,LED点阵无疑是最佳的选择。一款优秀的LED点阵显示系统不仅需要能够显示各种图文,还要在功耗、性价比、使用性、可扩展性等方面符合用户的要求。针对这些需求,系统采用国内应用广泛、性价比高的STC89C52单片机为核心,并使用动态显示方式,实现LED点阵显示,并且结合上位机软件,通过串口通讯方式,可以方便地对显示内容及显示效果进行修改。系统的硬件电路原理图采用Altium Designer 10设计;下位机程序设计使用基于STC89C52的 Keil Vision 3 IDE集成开发环境,下位机程序能够完成各种显示算法,以及与上位机的串口通讯;上位机程序设计采用Delphi开发,界面友好,能够快捷方便地将用户设置的显示内容下载到单片机中。整个系统可以方便快捷地控制LED点阵系统显示不同效果的信息,有效地宣传用户录入的内容,提供了一个行之有效的LED点阵解决方案。论文中详细描述了系统的设计思路、各个模块的具体实现过程等。【关键词】LED点阵;动态显示;STC89C52;串口通讯 AbstractLED dot matrix display screen is a new information media which was developed rapidly in recent years in the global.Because it has virtue of the high reliability, long life, adaptation to the environment, cost-effective price, and application and low cost characteristics, LED dot matrix display screen grows rapidly to a mainstream product for outdoor flat panel display screen in a short period of ten years.LED displays are widely used in various aspects of peoples lives.Such as bank, transportation hubs, stadiums and other public places, a variety of shopping malls, squares advertising medium.In particular, LED dot matrix is undoubtedly the best choice for medium and small businesses with limited advertising information.A good LED dot matrix disply system requires not only capable of displaying a variety of graphics, but also can meet the requirements of the users in power consumption, cost, usability, scalability etc.According to these needs, the system uses a cost-effective STC89C52 microcontroller as the core, dynamic display way and combined with PC softwares it can easily be modified to display the content and display through the serial communication.The hardware circuit diagram of the system adopts Altium Designer10.Microcontroller programming is based STC89C52 of Keil Vision3 integration development environment.The microcontroller program can do a variety of display algorithms, and serial communication with the host computer.The host computer programming uses Delphi to developer,its UI is friendly, and the contents which are set quickly and easily by users can be downloaded to the microcontroller.The system can quickly and easily control the LED dot matrix system displays information of different effects,and it provides an effective LED dot matrix solution.The paper will detailedly describe the design thoughts, realization process of each module of the system.【Key words】LED Matrix;Dynamic display;STCpegF89C52;Serial communicationvi目 录第1章 绪 论11.1 研究背景11.2 目的与意义11.3 设计思想及主要内容2第2章 LED点阵显示原理32.1 LED点阵模块结构32.2 LED点阵静态显示原理42.3 LED点阵动态显示原理42.4 LED点阵常见控制方式5第3章 总体设计方案73.1 芯片的选型73.2 点阵LED组合设计73.3 滚动显示的实现73.4 显示数据的存储83.5 单片机与上位机通讯设计83.6 总体设计方案8第4章 硬件电路设计104.1 显示电路设计思想104.2 行驱动电路设计104.3 列驱动电路设计124.4 单片机系统电路设计154.4.1 STC89C52微控制器简介154.4.2 STC89C52最小系统设计154.4.3 PL2303电路设计16第5章 软件设计185.1 下位机程序设计185.1.1 开发环境185.1.2 软件流程185.1.3 显示程序设计195.1.4 单片机与PC机通讯设计225.1.5 下位机完整程序235.2 上位机程序设计235.2.1 开发环境235.2.2 软件流程235.2.3 串口控件简介245.2.4 上位机软件界面设计255.2.5 上位机软件关键代码255.2.6 运行界面及功能简介26第6章 系统测试286.1 测试方式286.2 测试用例及结果286.3 测试结果分析31第7章 总 结32参考文献33附 录35电路原理图35下位机程序代码35上位机程序代码44致 谢47II基于STC89C52的LED点阵设计与实现第1章 绪 论1.1 研究背景近年来,LED点阵显示屏迅速发展,成为应用最广泛的信息显示媒体,它采用发光二极管组成的点阵模块显示内容,它依靠可靠性高、使用寿命长、性价比高、环境适应能力强等特色,在短短的十来年中,迅速成长为户外显示的主流产品。我国的LED显示屏产业发展初具规模,在国内市场上,国产LED显示屏的市场占有率近100%,LED显示屏的应用存在于人民生活的各个方面,例如银行、交通枢纽、体育馆、广告媒介,各大商场、超市的广告屏等,现在LED显示屏在中小商店的应用也日益普及。随着信息化社会的发展,LED显示屏的应用远景更为辽阔。LED点阵显示屏的种类会更加丰富,在大型或超大型LED点阵显示屏应用更加广泛的同时,适合于中小型商户使用的小型LED点阵会发展迅速,中小型LED点阵会成为LED点阵产品最主要的潜在市场之一1。1.2 目的与意义按照该系统的设计思想,分别建立硬件系统以及基于硬件电路基础上的软件系统,并且使两者有机地结合在一起。LED点阵显示系统,首先要求能够正确地显示操作者所需要的效果,其次完成点阵模拟显示,PC联机控制等附加功能,并且保证控制系统的低功耗、廉价、高效能。基于STC89C52为核心的点阵控制系统,能够完全满足LED点阵显示的要求,上位机软件完善的功能帮助操作者快速录入显示信息。使用者只要将操作数据输入上位机软件,便能方面快捷地控制LED点阵系统。由于STC89C52是一款低功耗、高性能、廉价的8051单片机。使得整个控制系统在实现高效地执行显示命令基础上,还大大地降低了系统功耗与系统整体价格,降低了嵌入式系统的编程难度,为实际应用打下了坚实基础。 另外STC89C52作为国内深圳宏晶科技公司的产品,在国内流行度高,有着广泛的应用团体,而且开发工具齐备,有利于该系统的普及与升级改造。1.3 设计思想及主要内容设计的任务是完成一个单色的动态LED点阵显示屏。要求显示屏能够显示操作者录入的信息,并且能够完成滚动显示等显示效果,显示系统还可以方便地拓展显示单元。基于以上的设计任务要求,设计如下的基本思想:由上位机软件负责接收使用者录入的信息,并将信息处理成一定数据结构,通过串口输出,交给单片机;单片机接收上位机的数据,并根据数据产生相应的信号来控制LED驱动电路,实现我们所要的效果。由此,整个系统设计基本分为如下的模块:LED驱动电路、单片机控制系统、上位机端软件。LED驱动电路要完成对LED点阵模块的驱动,在设计中,还必须考虑显示屏较长的方向上的数据暂存。单片机控制系统是设计的核心,单片机负责显示算法的计算、显示数据的存储、与上位机的通讯等。上位机端软件为用户提供LED显示系统的的接口,上位机软件要能够接收用户录入的显示信息,这包含显示内容与显示效果等信息,并且要采用一个有效的通讯方式,将数据传输给单片机2。根据设计思想,考虑应用LED点阵动态显示、单片机I/O控制、单片机串口通信、单片机C语言编程、计算机串口通讯编程、电路设计等技术。第2章 LED点阵显示原理2.1 LED点阵模块结构LED即Light Emitting Diode,发光二极管的英文缩写,是一种能够将电能转化为可见光的半导体器件。LED点阵模块以发光二极管为像素,使用高亮度发光二极管矩阵组合后,环氧树脂和塑模封装而成。一体化封装的LED点阵模块,具有高亮度、引脚少、寿命长、耐冷热等特点。LED点阵规模常见的有44、48、57、58、88、1616等等。根据LED点阵的颜色又可将LED点阵分为单色、双基色、三基色等。像素颜色的不同,所显示的图文内容的颜色也不同。单色点阵只能显示固定单一的颜色、双基色和三基色点阵显示内容的颜色由像素内不同颜色的发光二极管发光组合而得,例如红绿色LED混合显示黄色,按照脉冲的方式控制二极管的点亮时间,则可实现不同灰度级别的颜色显示,以实现真彩色显示。88 LED点阵是最常见的LED点阵,其外形如图2-1 88单色LED点阵的外形规格所示。图2-1 88单色LED点阵的外形规格这是款88红色LED点阵,能够显示分辨率为88的图像或文字,并且该LED点阵可以进行组合,通过行扩展与列扩展,实现大型的LED点阵,用来显示更加复杂的图像或文字。其对应的内部电路如图2-2 88单色LED点阵内部电路图所示。图2-2 88单色LED点阵内部电路图88单色LED点阵模块有16个控制引脚,其中8个行选引脚,8个列选引脚。每一行的LED的阳极都连接在同一行选引脚上,每一列的LED都连接在同一列选引脚上。由于LED的单向导通性,LED点阵某一像素的点亮必须同时使其行引脚处于高电平,其列引脚处于低电平。例如,如果需要点亮第3行第4列的LED,那么就需要使行选引脚3处于高电平,同时列选引脚4处于低电平。2.2 LED点阵静态显示原理静态显示是一种基本的显示技术。静态显示的每一个像素都需要单独使用一个引脚来控制,即所谓的点对像素,在显示过程中,显示内容不变,LED点阵像素的亮灭是永恒不变的,这种方法的稳定性好、亮度损失小、显示效果好,而且原理简单,易于控制3。但是静态显示有致命的缺点。首先,当LED点阵规模较大时,引脚数量众多,其电路将十分复杂,不利于实际应用。其次,由于静态显示方式在显示不变的图像时,处于点亮状态下得LED不会有任何变化,功耗会比较高。2.3 LED点阵动态显示原理由于静态显示的缺点,在实际应用中一般采用动态显示方式,动态显示采用扫描的方式工作,按照某种方式逐次不断地对LED点阵的一行或者数行进行选通,同时向各列送出表示图形或文字信息的数据信号,反复循环以上操作,利用人眼的视觉暂留特性,将这些间断的图像组合在一起形成图像。这种方式的总线是复用的,极为有效地缩减了控制数据线的数量,而且由于采用扫描方式,功耗较低,所以在LED显示技术及类似领域应用广泛。LED动态显示原理如图2-3 88 LED点阵动态显示原理图所示。图2-3 88 LED点阵动态显示原理图图所示的88 LED点阵当列引脚为高电平,行引脚为低电平时,所对应像素点亮。第一帧,行引脚为0xfe(11111110),为高电平的引脚所对应的行不能点亮,只有第1行的像素能够点亮,列引脚为0x00(00000000),即所有列均不点亮,因此,第一帧时,LED点阵所有像素都不点亮;第二帧,行引脚为0xfd(11111101),即选通了第2行,第2行的像素可能点亮,列引脚为0x1c(00011100),那么对应第2行的第3、4、5列的像素点亮。同理,依次形成第3-8帧4。如果这8帧能够连续循环地显示,并且速度足够快(日光灯每秒通断50次,人的视觉会感觉一直亮的,动画达到24帧/秒以上,人眼视觉会感觉是连续的),那么LED点阵会显示一个完整的“A”字母。这就是动态显示的原理。在实际应用中还要注意每两帧之间加上合适的延时,使人看到清晰的图像,帧切换的时候应当关闭显示,消除余辉,以避免出现尾影。2.4 LED点阵常见控制方式LED点阵常见的数据传输方式是并行传输方式,通过锁存器将数据总线上的显示数据进行锁存,例如74HC573、74HC574芯片。各锁存器的片选信号一般由译码器提供。这种方式的优点在于传输速度快,并且对微控制器的处理速度要求较低。但是这种方式最大的缺点是不便于扩展显示单元。每增加一个点阵显示单元,就需要增加相应的片选线,这就要求在电路设计上要为可能增加的点阵显示单元留下冗余。因此,并行传输方式适用于显示单元数目确定的LED点阵显示屏5。随着社会的发展,点阵显示屏显示内容的多样化,对控制器处理显示指令能力、数据传输速度的要求越来越高。因此使用的控制器也不断变化,从最初的MCS-51单片机,到PIC单片机,直到现在的ARM处理器等。不同性能要求的点阵系统对应着不同的控制芯片。以传统MCS-51单片机为控制器的LED点阵显示系统,由于MCS-51单片机运算速度较低,对显示算法的计算较慢,LED动态显示的刷新率不能太高,在实际显示效果上有明显的闪烁感。另外,传统的MCS-51单片机的内部资源匮乏,仅128B的RAM,几KB的ROM,无EEPROM等。实际应用中显示系统需要暂存显示数据,就需要增加外部存储器,这无疑增加了硬件成本和硬件电路复杂度。因此,传统的MCS-51单片机控制的点阵系统只能用于显示简单的内容6。PIC单片机由于采取哈佛体系以及流水线结构,性能大幅提高,指令处理速度较快,并且抗干扰能力强。使用PIC单片机作为LED点阵系统的控制器,能够明显地改善显示效果。PIC单片机内部的资源丰富,可以暂存显示数据,省去了外部电路。因此,以PIC单片机为控制器的点阵系统是LED点阵显示系统的一种常见方式。ARM处理器,是32位RISC架构高性能微处理器,多级的流水线机制和较高的指令执行速度使ARM处理有极高的执行效率。以ARM核心技术为基础各种ARM系列处理器,都集成各种资源,许多处理器都集成了显示控制单元。由于其运算能力非常强大,内部资源也十分丰富,在点阵显示系统中,常用ARM处理器来实现高色阶,多像素的全彩屏驱动7。第3章 总体设计方案3.1 芯片的选型在芯片选择上,常见的有ARM系列芯片、PIC芯片、MCS-51系列单片机等等。ARM系列芯片工作频率高、内部资源丰富、通讯速度快,但是对于设计的单色显示屏,资源浪费严重,尤其是ARM系列芯片价格相对高昂,与设计性价比高的要求相逆,因此设计放弃采用ARM芯片8。MCS-51系列历史悠久、技术成熟、功能强大,而且其价格低廉,适用于该设计。常见的MCS-51系列单片机有ATMEL的AT89系列、STC89系列等。传统的MCS-51系统单片机内部资源贫乏。尤其是没有可供掉电存储的存储器,不利于LED点阵显示屏显示数据的存储9。考虑到STC89C52系列单片机为国内的宏晶科技公司出品,在国内普及广泛,价格相比其他芯片低廉。尤其是相比原始的MCS-51系列,STC89C52还拥有片内EEPROM,可以在掉电状态下有效地保存数据,其功能完全胜任该设计,因此选择此款芯片。3.2 点阵LED组合设计按照设计要求显示一段英文,使用88 LED点阵即可实现一个英文字母的显示。本设计选用8个88 LED点阵组成648 LED点阵模块。能够同时显示8个英文字符,或者简单的汉字及符号。结合实际情况,设计选择88 红色LED点阵模块为基本显示单元。3.3 滚动显示的实现滚动显示即屏幕上文字或图像能够按照特定方向“滚动”显示。这种技术可以提升显示内容的效果,而且可以在有限的屏幕空间内显示更多的内容,是LED点阵极其广泛的显示技术之一。该技术可以通过硬件实现,但这样无疑会增加硬件设计的成本及难度。设计中使用软件方式实现滚动显示,包括左滚动、向上滚动等滚动显示效果。使用软件方法有效降低硬件成本,并且可以方便地维护。3.4 显示数据的存储LED点阵屏显示的内容是由上位机传送给单片机的,但是单片机每次启动后都要上位机传送数据是不实际的,我们希望的是单片机能够读取上一次上位机传输的显示内容。那么实际应用中,需要在掉电后,使用数据不丢失的存储器来存储这些显示数据。外加存储器无疑增加了电路复杂度及编程难度。STC89C52内部有2K的EEPROM,方便存储少量的数据。EEPROM写入必须先进行擦除,擦除以扇区为单位,EEPROM的一个扇区存储容量为512字节。一个英文字母、数字或符号占一个字节,那么EEPROM的一个扇区能够存储512个图像或文字,可以有效地存储显示数据。3.5 单片机与上位机通讯设计单片机与PC机通讯方式众多,例如USB通讯、RS232通讯等其他方式。考虑本设计中上位机仅为单片机传输所需要显示的内容、显示方式等数据,数据量较小,所以选择简单实用的串行通讯。考虑到现在的PC机上串口较少,USB使用较多,尤其是笔记本电脑上已经很少见串口。这里使用PL2303芯片实现串口与USB口电平转换,并且安装相应驱动,虚拟一个USB端口为串口,软件设计中依旧按照串口进行设计。上位机使用相应串口通讯编程技术,将数据通过USB传输线给PL2303芯片模块,PL2303模块将转化好的数据脉冲传输给单片机专用的串口通讯引脚。单片机采用串口中断方式接串口传来的数据,处理并应用到LED点阵模块显示上10。3.6 总体设计方案综合以上设计方案,完成总体设计方案,结构如图3-1 LED点阵显示系统框图所示。图3-1 LED点阵显示系统框图设计以STC89C52微控制器为中心,主要分为与PC机通讯部分、行驱动部分、列驱动部分等等。STC89C52微控制器需要完成与PL2303的通讯,将接收的数据存储到内部的EEPROM中。STC89C52微控制器计算点阵的行列驱动数据,并且利用I/O口输出这些数据到相应的集成芯片。行驱动单元可以由单片机I/O口直接控制,为了节省I/O引脚,加入译码器完成对行驱动单元的控制。由于STC89C52微处理器的I/O引脚数目有限,不能够同时输出64位的列数据,这里采用移位寄存器来暂时保存每一块88 LED点阵模块的列数据。因此STC89C52可以通过有限的I/O口每个88 LED点阵模块输出列数据11。PL2303芯片负责上位机与STC89C52微控制器之间的通讯信号电平转换。第4章 硬件电路设计4.1 显示电路设计思想由于设计中的行数较少,扫描循环一次的时间短,这样能使LED点阵模块的显示亮度要高,因此选用行线为动态扫描线。出于研究及成本的缘故,选用红色单色88 LED点阵模块,如图4-1 88 LED点阵模块引脚图所示。图4-1 88 LED点阵模块引脚图LED点阵的行引脚与点阵中的发光二极管的阳极引脚相连,列引脚与发光二极管的阴极相连,并且引脚功能经过测试可知,1-8为LED点阵行第1-8行引脚,A-H为LED点阵列第1-8列引脚。4.2 行驱动电路设计根据设计,648LED点阵要求行驱动单元能够承受最多64个LED工作的电流。因为没有十分合适的集成芯片,所以改用三极管。利用三极管的电流扩大功能,来驱动LED点阵12。行驱动原理如图4-2三极管驱动方式图所示。图4-2 三极管驱动方式图这是一款PNP型三极管,当三极管的控制端(基极)施加低电平时,将导通VCC(发射极)与LED正引脚(集电极),从而使LED导通发光,其他状态下LED不能点亮13。普通红色LED的工作电流为5-25mA,设计取15mA为准。那么三极管集电极需要承受的最大电流为:I = 15mA64 = 960mA根据最大电流限制,综合放大系数、成本等因素。最终选用S8550D这款三极管。S8550D 典型参数如表4-1 S8550D典型参数表所示。表4-1 S8550D典型参数表CharacterlsticSymbolRatingUnitCollector-Base VoltageVcbo-40VCollector-Emitter VoltageVceo-25VEmitter-Base VoltageVebo-6VCollector CurrentIc-1.5ACollector DissipationPc1WJunction TemperatureTj150Storage TemperatureTstg-65-150数据手册标明最大集电流为1.5A,为保证电路安全,使用二个S8550D并联的方式,构成一个功率较大的三极管使用。为了有效减少STC89C52引脚的使用,增强STC89C52的控制能力。在STC89C52的I/O管脚与行驱动单元之间加入74HC138译码器。74HC138是3路输入,8路输出的译码器,其真值表如表4-2 74HC138译码器真值表所示。表4-2 74HC138译码器真值表INPUTSOUTPUTSE1E2E3A0A1A2Y0Y1Y2Y3Y4Y5Y6Y7HXXXHXXXLXXXXXXXXXHHHHHHHHHHHHHHHHHHHHHHHHLLLLLLLLLLLLLLLLHHHHHHHHLHLHLHLHLLHHLLHHLLLLHHHHLHHHHHHHHLHHHHHHHHLHHHHHHHHLHHHHHHHHLHHHHHHHHLHHHHHHHHLHHHHHHHHLH:High voltage level L:Low voltage level X:Dont care在正常工作状态下,74HC138译码器的输出端只有一个输出引脚是低电平,该引脚能够使能PNP三极管。因此,可以通过控制74HC138译码器输入状态,即A0、A1、A2的电平状态,译码器特定的输出引脚(Y0Y7)会处于低电平,从而实现LED点阵特定一行的选通。4.3 列驱动电路设计在驱动电路设计中,需要选择合适的锁存器来暂时存储列驱动数据。74HC573是三态非反转透明锁存器,74HC574八路D型触发器。虽然两者都能够锁存八位数据,但是两者都需要8位并行数据的输入,而且必须进行片选(选择某一锁存器来记录当前数据输入线中的数据),这样无疑增加了数据线的数量,使电路复杂化。设计中,采用74HC595移位寄存器来保存列驱动数据。74HC595移位寄存器的引脚功能如图4-3 74HC595移位寄存器引脚图及表4-3 74HC595 CMOS移位寄存器管脚表所示。图4-3 74HC595移位寄存器引脚图表4-3 74HC595 CMOS移位寄存器管脚表管脚说明管脚名说明1、2、3、4、5、6、7、15QA-QH三态输出管脚8GND电源地9SQH串行数据输出管脚10SCLR移位寄存器清零端11SCK数据输入时钟线12RCK输出存储器锁存时钟线13OE输出使能14SI数据线15VCC电源端QA-QH输出引脚是用来控制LED点阵列显示,SI、SCK、RCK用于移位寄存器的数据输入、数据锁存等,SQH用于多片74HC595的级联。74HC595移位寄存器的具体使用方法如表4-4 74HC595 CMOS移位寄存器真值表所示。表4-4 74HC595 CMOS移位寄存器真值表输入管脚输出管脚SISCKSCLRRCKOEXXXXHQA-QH输出高阻XXXXLQA-QH输出有效值XXLXX移位寄存器清零L上沿HXX移位寄存器存储LH上沿HXX移位寄存器存储HX下沿HXX移位寄存器状态保持XXX上沿X输出存储器锁存移位寄存器中的状态值XXX下沿X输出存储器状态保持H:高电平 L:低电平 X:随意可以看出74HC595移位寄存器仅利用SI与SCK两条数据线即可实现数据的写入。在实际应用中,也仅仅使用SI、SCK、RCK、OE四个引脚与单片机I/O口相连,大大简化了电路复杂度。使SCK引脚由低电平到高电平转变,则SI数据线中的数据就会存入74HC595移位寄存器内部的移位寄存器中。利用这个特性,可以将所有待存储的列数据存入74HC595移位寄存器中。多个74HC595移位寄存器可以进行级联,构成一个多位的移位寄存器。将上一片的SQH引脚接下一片的SI引脚即可实现级联。当上一片存入一个数据到移位寄存器最低位时,该片的SQH引脚将输出移位寄存器移出的最高位,该信号可以由下一片接收。74HC595移位寄存器特殊的级联功能可以在硬件上解决点阵系统扩展的问题。新加入的点阵单元,只要对应74HC595芯片的SI引脚接前一点阵单元的SQH引脚,其他输入引脚接到总线上即可。OE为输出使能,低电平有效,可以方便地控制输出引脚QA-QH的输出与关闭,并且不影响74HC595移位寄存器的其他操作。综合上述,并且考虑实际情况,设计如下图4-4列驱动电路简图所示。图4-4列驱动电路简图单片机的通用I/O口的4个引脚以总线方式连接到每个74HC595移位寄存器。每个74HC595移位寄存器的SQH引脚接下一显示单元的SI引脚。每个74HC595移位寄存器的输出引脚连接对应的LED点阵模块的列选引脚。通过单片机的I/O口,将待输入的位数据送至SI引脚,再使SCK引脚的电平由低到高,SI的数据将存入第一片74HC595移位寄存器中,与此同时,SQH输出的内容也在SCK引脚电平变化下,写入与之级联的74HC595移位寄存器。如此,循环多次可以向移位寄存器写入每一行的显示数据14。4.4 单片机系统电路设计4.4.1 STC89C52微控制器简介STC89C52是一款低功耗、高性能、CMOS8位微控制器,是以经典的8051单片机为基础的衍生控制器,其指令代码完全兼容传统8051单片机。STC89C52具有以下标准功能:8KB Flash,512B RAM,32 位I/O 口,看门狗定时器,内置2KB EEPROM,三个16位定时器/计数器,一个6向量2级中断结构,ISP(在系统可编程)/IAP(在应用可编程),一个全双工工作的串行口等等。相对于传统的MCS-51系列单片机,STC89C52单片机增加EEPROM,可以存储少量需要在掉电状态下保存的数据,ISP/IAP功能使程序设计不需要专用的编程器或者仿真器15。4.4.2 STC89C52最小系统设计基于宏晶科技提供的STC单片机官方数据手册中的应用举例,并且结合其他相关资料以及设计的实际要求16。设计如下图4-5单片机最小系统图所示。图4-5 STC89C52最小系统图单片机最小系统是单片机工作的最简电路,由单片机芯片、晶振电路、复位电路、电源电路等组成,系统缺少任何一个部分,单片机都不能正常工作。J_IN的1、4引脚提供电源,1为+5V,4为GND。2、3为串口通讯接入引脚,分别接单片机的P30、P31引脚。晶振电路采用石英晶振,为单片机提供工作时钟,晶振选用11.0592MHZ的石英晶振,这样便于设置串口通讯的波特率,电容使用推荐的22pf的瓷片电容。STC89C52单片机的P0口片内无上拉电阻,P0为I/O口工作状态时,P0用于输出线时为开漏输出,由于片内无上拉电阻,P0输出1时无法拉升端口电平。因此P0需要加上拉电阻,根据通常规律,阻值选择10K为宜17。4.4.3 PL2303电路设计PL2303是一款高集成的RS232-USB接口转换芯片。提供了RS232全双工异步串行通信装置与USB功能接口便利连接的解决方案。上位机与单片机的通信接口电路设计如图4-6 PL2303典型应用电路图所示。图4-6 PL2303典型应用电路图其中,USB接口(J22)引脚的1、4引脚分别为+5V与GND,同时为PL2303芯片供应电源。OSC1与OSC2引脚外接晶振电路,选择12M石英晶振,为PL2303芯片提供工作时钟,PL2303的1、5引脚分别连接STC89C52的P30(RXD)与P31(TXD)两个引脚,这两个引脚为专用的串口通讯引脚。第5章 软件设计5.1 下位机程序设计5.1.1 开发环境设计选用的控制器是兼容8051指令集的STC89C52。因此选用现今流行的51单片机编程集成工具Keil Vision 3作为其开发工具。Keil Vision系列软件是美国Keil Software公司出品的8051系列兼容单片机的软件开发系统。由于功能强大、生成的代码紧凑、支持的厂商芯片众多等特点,成为目前使用最广的8051系列兼容单片机开发工具。同时开发语言选择C语言。与汇编语言相比,C语言在功能上、结构性、可读性、可维护性上、开发速度上有明显的优势,因此常应用于嵌入式软件的开发。Keil Vision 3提供了包括C编译器、宏汇编、连接器、库管理以及一个功能强大的仿真调试器等在内的完整开发方案,并且将这些组件都集成到开发环境(Vision)中,易于用户使用。5.1.2 软件流程根据设计思路以及实际情况,设计如图5-1系统流程图所示。左滚屏显示显示初始化系统上电载入下一字符清除显示缓存检测下载模式动态扫描显示读取显示模式显示初始化寄存器左移一位读取显示相关参数检测显示模式循环次数检测8显示模式一显示模式二显示模式三其他显示模式显示模式=8下有待显示字符检测无键值检测无有一次显示完毕其他显示模式主程序 显示过程 左滚屏显示流程下载模式串口中断关总中断串口中断初始化NO完成信号将数据写入缓存YES置位RI握手信号NO否接收完成检测YES擦除并重写EEPROM是完成标志置位返回开总中断返回下载模式 串口中断处理子程序图5-1系统流程图单片机开机上电后会检查按键是否按下,如果按键则进入下载模式,如果没有按键则显示初始化后会进入显示模式。下载模式按照流程包括串口初始化、串口中断处理程序、写EEPROM等过程,当下载模式完成后,会返回到主程序中。下载模式中最重要的是串口中断处理子程序,当串口缓存中接收到数据后,会置位串口接收标志RI,引发串口中断,串口中断处理子程序使用查询方式接收串口缓冲的数据,并放入缓存数组中,以便下一步将数据写入EEPROM18。显示初始化要完成显示设置的初始化,包括显示缓存的清除和显示内容的读取。根据显示初始化过程中读取的显示模式进入某显示模式,根据相关算法,将显示内容按照显示设置显示,显示过程采用查询方式查看是否有按键,如果有按键,LED点阵系统将切换到下一个显示模式,其中最后的显示模式的下一模式为第一种显示模式。5.1.3 显示程序设计设计的LED点阵显示涉及到移位寄存器数据写入、动态扫描显示以及滚动显示等主要技术19。为了方便程序编写,设置一个数据缓存数组,用来存放每一行对应的列数据20。方法如下:#define LED_L 9 /缓存区大小为LED点阵模块数加1/定义每一行的缓存显示数据数组,地址在片内的外RAM中,每组占用10个字节unsigned char xdata Display_Buffer_Y0LED_L _at_ 0x0000;unsigned char xdata Display_Buffer_Y1LED_L _at_ 0x000a;unsigned char xdata Display_Buffer_Y2LED_L _at_ 0x0014;unsigned char xdata Display_Buffer_Y3LED_L _at_ 0x001e;unsigned char xdata Display_Buffer_Y4LED_L _at_ 0x0028; unsigned char xdata Display_Buffer_Y5LED_L _at_ 0x0032;unsigned char xdata Display_Buffer_Y6LED_L _at_ 0x003c;unsigned char xdata Display_Buffer_Y7LED_L _at_ 0x0046;每一个数组的数组元素代表一个点阵模块的列数据,例如数组元素Display_Buffer_Yij代表的是第(j+1)个点阵模块的第(i+1)行的列数据。xdata关键字表示存储位置为片内的外部扩展RAM中,这样可以节省STC89C52芯片内部有限的RAM空间。所有的74HC595移位寄存器芯片级联在一起,对于74HC595移位寄存器内部寄存器数据的写入,只需要写第一块74HC595移位寄存器即可。相应的代码如下:HC595_RCK=0;HC595_SCK=0;for(j=0;jLED_L;j+)/LED_L表示点阵模块数目temp=*pdat+;/pdat指向数据缓存数组for(i=0;i8;i+)/每个移位寄存器需要写8次HC595_SCK=0;if(temp & 0x80)/取待写入数据的最高位数据HC595_SI=1;/如果最高位为1,数据输入线为1else HC595_SI=0;/如果最高位为0,数据输入线为0HC595_SCK=1;/将数据输入线的数据写入移位寄存器temp=1;/待写入数据左移一位HC595_RCK=1;HC595_SCK=0;HC595_RCK=0;SI数据输入线写入输入数据,SCK由高电平到低电平转换,即可将SI上的数据写入移位寄存器中。对于动态扫描程序,程序需要不停地进行行选,为了方便行选,将行选语句定义为宏定义,74HC138译码器负责行选,行选代码如下:sbit HC138_A0= P00; /74HC138译码器数据输入sbit HC138_A0 = P01;sbit HC138_A0 = P12;#define Select_Y0() HC138_A0=0;HC138_A1=0;HC138_A2=0;/第一行行选#define Select_Y1() HC138_A0=1;HC138_A1=0;HC138_A2=0;/第二行行选#define Select_Y2() HC138_A0=0;HC138_A1=1;HC138_A2=0;#define Select_Y3() HC138_A0=1;HC138_A1=1;HC138_A2=0;#define Select_Y4() HC138_A0=0;HC138_A1=0;HC138_A2=1;#define Select_Y5() HC138_A0=1;HC138_A1=0;HC138_A2=1;#define Select_Y6() HC138_A0=0;HC138_A1=1;HC138_A2=1;#define Select_Y7() HC138_A0=1;HC138_A1=1;HC138_A2=1;在以上的代码基础上,动态扫描显示程序的实现方法如下:OE = 1; /先关闭显示 Select_Y0(); /选通第一行OE = 0; /打开显示使能Led_Display(); /显示第一行Delay();/延时,使LED显示一段时间OE = 1;/显示关闭,防止上一帧的显示影响下一帧Select_Y1();OE = 0;Led_Display();Delay();OE = 1;/显示第二帧,即第二行 Select_Y2();OE = 0;Led_Display();Delay();OE = 1;/显示第三帧,即第三行Select_Y3();OE = 0;Led_Display();Delay();OE = 1;/以下类同Select_Y4();OE = 0;Led_Display();Delay();OE = 1;Select_Y5();OE = 0;Led_Di
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 转账佣金合同
- 建筑工程劳务承包合同
- 恭城租房合同
- 2025年中考生物押题试卷:六2025年级考前冲刺
- 空场地租赁合同
- 翻新沙发合同
- 成都上小学劳动合同
- 2026年云南财经职业学院单招职业适应性测试题库必考题
- 2026年南充电影工业职业学院单招综合素质考试题库及答案1套
- 2026年九江职业大学单招职业技能测试题库必考题
- 农业种植项目方案
- 湖北境内旅游合同模板
- 高中信息技术学业水平考试“必修知识点”讲义
- 反诉状(业主反诉物业)(供参考)
- 二年级上册 乘法口诀表1000题
- 概率论和数理统计浙江大学第四版-课后习题答案解析
- 服务热线外包投标方案技术标
- JB-QGL-TX3016AJB-QTL-TX3016A火灾报警控制器安装使用说明书
- 铝板幕墙技术交底
- 国家电网公司输变电工程工艺标准库变电工程部分
- 气象科普馆设计方案
评论
0/150
提交评论