基于avr单片机的led点阵屏设计_第1页
基于avr单片机的led点阵屏设计_第2页
基于avr单片机的led点阵屏设计_第3页
基于avr单片机的led点阵屏设计_第4页
基于avr单片机的led点阵屏设计_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计题目基于AVR单片机的LED点阵屏的设计学院专业班级学生学号指导教师二一二年六月八日摘要LED显示屏是一种由很多个发光二极管组成的点阵,通过控制半导体发光二极管的亮灭来显示内容的显示屏。LED显示屏分为数码显示屏、图文显示屏和视频显示屏,都是由LED矩阵块组成。目前由于LED显示屏造价昂贵,主要应用于比较高档的场所,主要集中在城市的繁华场所。本文介绍了一款以AVR单片机为控制器的LED点阵显示屏系统的设计。该系统可实现字母汉字的静态显示和动态滚动效果,并且可以通过外扩接口级连的方式来扩大显示屏幕的尺寸以达到增加显示内容的目的。系统采用PC机作为上位机,上位机向单片机发送控制命令和上位机所存储的字模数据,AVR单片机接收字模数据并处理PC机的控制命令,由显示驱动模块驱动一个1616分辨率的LED点阵显示屏的扫描显示。PC机与单片机之间的通信采用RS232C通信标准来实现。该系统只占用了单片机少量的I/O口和内存,为系统留下了功能扩展的空间。关键字LED点阵显示屏,AVR单片机,595驱动,串口通信ABSTRACTLEDMATRIXDISPLAYISAKINDOFDISPLAYTHATISCOMPOSEDOFALOTOFSEMICONDUCTORLIGHTEMITTINGDIODESUSUALLYREDLIGHTEMITTINGDIODESWHICHSHOWCHARACTERBYTHELEDONANDOFFLEDDISPLAYISDIVIDEDINTODIGITALDISPLAY,GRAPHICDISPLAYANDVIDEODISPLAY,WHICHISCOMPOSEDBYLEDMATRIXBECAUSEOFHIGHPRICEOFTHELEDMATRIX,NOWITISMAINLYUSEDINRELATIVELYLUXURYPLACESTHISPAPERINTRODUCESADESIGNOFTHELEDLATTICEDISPLAYSYSTEMBASEONMCUAVRTHESYSTEMCANDISPLAYINBOTHCHINESEANDENGLISHCHARACTERSOFTHESHOWANDFROMTOPTOBOTTOMANDMOVEAROUNDTHEMAGICSHOWANDCANBECASCADEDTOEXPANDTHESCREENSIZETOACHIEVEINCREASEDCONTENTPURPOSESTHEPCSENDSCONTROLCOMMANDSANDDISPLAYSCODETOMICROCONTROLLER,AVRRECEIVESCONTROLCOMMANDSFROMPCANDSHOWSTHECODE,DRIVERMODULEDRIVESA1616RESOLUTIONLEDLATTICELEDSPANELDISPLAYSCANSHOWEDCOMMUNICATIONBETWEENPCANDTHEMICROCONTROLLERUSINGRS232CCOMMUNICATIONSSTANDARDSINADDITION,THESYSTEMWILLTAKEUPONLYASMALLAMOUNTOFTHEMCUI/OANDMEMORY,SOTHATTHESYSTEMHASFUNCTIONALSPACEFOREXPANSIONKEYWORDSLEDMATRIX,AVR,595DRIVER,UART目录摘要IABSTRACTI第1章绪论111课题背景1111选题背景1112我国现状1113LED显示屏的市场前景1第2章方案论证与选择221系统硬件方案设计2211通信系统2212LED点阵显示屏3213LED点阵屏的驱动方式3214硬件设计方案422系统软件方案5221单片机编程语言5222系统软件编译器介绍6223上位机控制传输软件6224下载软件7第3章系统硬件设计731硬件系统的总体设计832AVR单片机最小系统设计8321串口通信电路设计8322复位电路设计9323单片机的下载口10324AVR单片机的时钟电路11325AVR单片机最小系统1133LED点阵屏设计及驱动电路设计12331驱动电路设计13332行驱动电路设计13333列驱动电路设计1534LED点阵屏设计16第4章系统软件设计1841主程序设计1842显示程序设计19421显示驱动程序的设计19422点阵数据的获取19423串口通信程序的设计20第5章系统制作与调试2351系统硬件部分的调试23511短路与虚焊检测23512上电测试23513串口调试2452系统软件调试方法2453系统软硬件调试及结果26结论27参考文献28致谢29附录1系统PCB30附录2系统运行样式31附录3系统程序部分代码32第1章绪论11课题背景111选题背景LED点阵显示屏是八十年代后期迅速风靡全球的新型信息显示媒体,显示屏由几万几十万个半导体发光二极管点阵像素均匀排列组成。利用不同的制作材料可以制造不同发光颜色的LED像素点。目前应用最广泛的是红色、绿色、黄色。而蓝色和绿色LED显示屏的开发已经达到了实用阶段。LED显示屏可以显示变化的字母、数字、文字、图形图像,不仅可以用于室内装饰还可以用于室外环境,具有投影仪、电视墙、液晶显示屏都无法比拟的优点。在短短的十几来年中,LED显示屏就以其功耗小、亮度高、能够承受各种恶劣气候而得到了广泛的应用。LED显示屏的发展前景极为广阔,目前正朝着更高亮度、更高的发光密度、更高的发光均匀性、更高耐气候性、可靠性、全色化的方向发展。LED显示屏的应用涉及到社会经济的方方面面,主要应用的场合有(1)车站的买票公告栏(2)广场的LED电视直播(3)银行的交易信息及利率等信息的显示(4)商店超市的广告牌等等。112我国现状自LED显示屏诞生至今,我国在LED显示屏领域的研究,在国际上还是名列前茅的。目前各种形式的LED屏幕在我国都有生产,其中最流行的彩色LED显示屏做的很突出,这种显示屏主要用在广场跟街头的城市电视中。现在一些电脑的显示器也开始采用了LED显示技术,应该来说在这方面,我也没有落后于别的国家,联想研制的新型笔记本,很多采用了LED显示技术,突破了原来的LCD显示,这种笔记本电脑的显示屏亮度更高,功耗更低,可谓是理想的选择。相信在未来的中国将会有更多的电子产品采用LED显示技术。113LED显示屏的市场前景由于LED显示技术也是最新兴起的技术,目前LED显示技术的发展还是比较迅速,其中大多数用于商家的广告牌,晚上在城市的街道,到处可以看见LED显示屏的影子。LED显示技术是跟信息技术紧密相连的,信息技术的发展必定会带动LED显示技术的进步,在不久的将来,也将会出现更多的电子产品采用LED显示。可以将发光二极管做的更小,这样生产出来的LED显示屏的分辨率会更高。第2章方案论证与选择21系统硬件方案设计大多数的LED显示屏都在户外,所以对屏幕的材质硬件的质量要求非常的高。为方便检修和维护硬件电路设计,常常采用模块化的设计方法。硬件的设计采用模块化设计,既要满足模块本身功能要求又要能够和整个系统兼容。如图21所示,根据显示系统的功能特点,从而确定系统硬件由控制部分,显示屏部分,通信系统及上位机四部分组成。上位机通过通信串口部分向主控芯片发送控制指令和显示内容字模数据,主控芯片执行显示指令,将需要显示内容的字模数据转换为二极管的亮灭,从而显示出内容。图21系统硬件结构211通信系统通信部分的设计要满足要求就是稳定、快速、简单易实现。因为在通常情况下显示屏和上位机之间的传输距离不会很远,所以对通信距离的要求不是很高,采用RS232标准就可以。计算机通信的方式主要有并行通信和串行通信两种方式。(1)并行通信计算机并行通信时,数据是一起发送的。一起发送的数据位数就是并行通信的宽度,这个宽度可以是一个字节也可以是一个字。并行传输的速度较快,因为可以一起传送很多的位数,但是并行传输的成本很高,故在远距离传输时,我们选用串行通信。(2)串行通信串行通信每次只可以发送一位数据,所有的数据信号都是在一条数据线上发送的,所以只需要很少几根线就可以进行,串行通信的速度低,但传送的距离长,因此串行通信适用于长距离而速度要求不是很严格的场合。在串行通信时,数据是一位一位按顺序进行的,而计算机内部的数据是并行进行处理的。因此,当计算机向外发送数据时,必须将计算机内部的并行数据转换为串行数据再发送。反之,当计算机接收数据时,又必须将串行数据转换为并行数据进行处理。这种转换可以由硬件来实现也可以由软件实现。如果仅用软件实现又会增加CPU的负担,降低其利用率,故目前常通常采用硬件实现。通用异步接收/发送器,简称UART(UNIVERSALPC机LED显示屏通信系统AVR单片机ASYNCHROMOUSRECEEIVER/TRABSNITTER)是完成这一功能的硬件电路。在AVR单片机芯片中,UART已经集成在单片机内,作为其组成部分,构成一个串口。综上所述,在本系统中将采用UART来实现单片机与上位机之间的通信,由于串口已经集成在了单片机的内部,故只需设置相关寄存器就可以使用串口了。212LED点阵显示屏显示部分有可以显示汉字的显示屏和对显示屏进行驱动的底层硬件电路。由于单片机的I/O口有限且计算机IO口的驱动能力不是很强,故不能直接用单片机的I/O口来驱动LED显示屏,所以需要对单片机IO口进行扩展来增加单片机并行输出和驱动能力。LED显示屏是由一个一个的发光二极管组成的点阵构成的,要构成大尺寸的LED显示屏就需要很多的发光二极管。构成LED屏幕的方法有两种,一是由单个的发光二极管逐点连接起来构成的,如图22所示;二是选用一些由单个发光二极管构成的LED点阵单元模块来构成较大的LED点阵模块。目前市场上普遍采用的点阵单元模块有88、1616几种。这两种屏幕构成方法各有自己的优缺点,单个发光二极管构成显示屏优点是当某个发光二极管出现问题时只需更换一个二极管便可以正常工作,检修的成本较低,缺点在于连接线路较为复杂;而点阵模块构成的方法却正好与之相反,采用点阵模块构成显示屏节约了大量的连线,但是一旦某个发光二极管出现问题时,与其同在一个模块的所有LED都必须被更换,这样就加大了维修的成本。两种方法相比较,本系统中采用模块点阵的方法,这样可以避免较为复杂的连线。为了避免点阵模块的缺点,在本系统中选用8X8LED点阵的基础单元模块,这样一段某个发光二极管出现问题,我们只需更换一个8X8的点阵模块,若选用16X16的单元模块,则更换的成本太高了。213LED点阵屏的驱动方式LED点阵的驱动方式有两种恒流驱动方式和非恒流驱动方式。在非恒流驱动方式中,可以将74HC595输出的数据直接接到点阵屏上,即用74HC595输出的电流来驱动显示屏,但有74HC595输出电流有限,不能驱动很多的发光二极管同时点亮,所以当一排点亮很多二极管时,会出现跟其他排亮度不一的现象。恒流驱动是将74HC164的输出接到三极管基极,三极管的发射极接到电源上,集电极接到LED显示屏幕上。图22LED点阵图一个1616的LED显示屏行和列各有16支引脚,我们不能直接用单片机来驱动显示屏,因为单片机的IO口驱动能力很弱,而且直接接到单片机上,会占用大量的IO口。在单片机驱动LED显示屏时,常采用IO口扩展的方式,在这里我们采用74HC595、74HC164来进行IO口扩展,这样只需要占用少量的IO口便可以驱动显示屏了。由于74HC595芯片输出的电流只有30MA,所以不能驱动很多的发光二极管同时发光,这样我们需要在每个芯片的输出端口加上功放电路,这样我们就可以同时点亮很多的发光二极管,这就是LED显示屏的恒流驱动。但是,采用恒流驱动的方式,对于电源的要求也相应的提高了,要求电源必须能够提供足够的电流,来驱动大量的发光二极管同时发光。214硬件设计方案最终方案如图23所示,在这里,我们让PC机作为上位机,在PC机上运行串口调试助手,通过此软件来实现上位机与单片机之间的通信。在上位机中,存储着字模数据和控制数据显示的方式的控制指令。首先上位机将字模数据发送到单片机内,单片机接受到字模数据,通过译码电路,将字模数据还原出来,利用这些01字符串来控制发光二极管的亮灭,从而在点阵屏幕上显示出内容。题目将以此涉及方案为指导展开具体的硬件电路设计。16LEDPC图23硬件设计方案22系统软件方案软件的设计除了满足系统的功能外,还必须满足容易读写,方便下载和编译的特点。在系统设计目标和硬件总体结构确定的情况下,系统程序可以由主程序,显示驱动程序和各种特效显示程序,串口通信程序三个主要部分组成。具体结构如图24所示。图24软件功能结构框图程序的编写需要借助编辑编辑器和编译软件,本系统中采用ICCAVR这个集成开发环境来编写编译程序,编译完成后还需要下载软件将编译生成的HEX文件下载到单片机中执行。编写程序之前首先选择一种合适的程序设计语言以及配套的编辑器和编译软件。最后还需要选择与所选单片机相适应的下载器和下载软件,来把程序执行生成的HEX文件下载到单片机中。221单片机编程语言在单片机开发领域所用的主流编程语言为汇编语言和C语言。两种语言相比较各有优点。汇编语言ASSEMBLYLANGUAGE是面向特定机器的程序设计语言,是一种功能很强的程序设计语言,汇编语言是直接控制计算机的硬件来执行的,所以它对编程人员的要求好高,程序员要充分的了解所使用的单片机的硬件架构及组成特性。汇编语言具有执行速度快,占内存空间少等优点,所以它一般用在对于时间空间要求比较严格的场合,在平时我们开发单片机程序时,一般都用不到。汇编语言对于机器的依赖性较强,在一种型号的单片机上编写的汇编程序不能移植到另一型号的单片机上,这就限制了它的应用。C语言是一种高级程序设计语言,C语言经过若干年的使用,可以证明其强大性,C语言最初是用来开发UNIX操作系统,在C语言在其编译效率、执行速度等方面显示出了强大的优越性,这就扩大了它的使用范围。C语言相比于其他程序设计语言,最大的特点是可以直接控制硬件,这是JAVA、C等高级语言多没有的特性,它兼顾了高级语言的特点,又具有汇编语言的特点,其执行速率也是很快的。所以C语言成为了嵌入式开发领域的主流语言。另外,C语言还是一种结构化语言,在C语言中最基本的单元就是函数,我们可以把功能接近的代码,放在一个函数中,这样我们的程序就成为了由一个个函数组成的整体,在主函数中我们可以调用相应的函数来实现某种功能,C语言的这种特点使其很容易调试、修改。在C语言中,有很多的库函数,如果在我们的程序中要实现某种功能,而这种功能在函数库中已经得以实现,那么我们就可以将这个函数库直接包含在我们的程序中,可以减少我们自己多要编写的代码量。综合比较了两种语言,在本系统设计中,我们采用C语言作为程序设计语言。222系统软件编译器介绍用C语言编写好的程序不能直接被单片机所执行,要想让C语言控制单片机运行,需要对C语言程序进行编译,所以编译程序是不可缺少的。支持AVR用C语言编程的编译器主要有ICCAVR编译器和AVRSTUDIO编译器。目前在单片机开发中普遍都是使用ICCAVR来进行编译。因此软件设计最终方案为采用C语言为编程语言,ICCAVR为编译工具按照控制、通信、显示等几个功能模块来编写程序。223上位机控制传输软件本系统采用PC机作为上位机,这样对该系统的控制就变得简单了,因为PC机可以直观的反应单片机的状态。本系统中上位机的作用是存储字模数据并控制单片机的显示,通过通信系统将控制指令传送到单片机中控制LED的显示。LED点阵屏的显示一般有存储显示和实时显示两种。存储显示是将要显示数据的字模通过串口由上位机发送到单片机内,单片机接到上位机发来的数据,再接受上位机的控制信息便可以在LED显示屏上显示了。实时显示即上位机屏幕上显示的内容会同步的显示到单片机多控制的LED显示屏上。两种显示方法相比较实时显示对于硬件的要求较高,对于通信系统的要求很高,上位机需要不断的将更新的数据发动到LED屏幕上,通信开销交大,此种显示方式多用于广场的新闻播报显示屏。存储显示不要求有较高的传输速率,对硬件要求不是很高,多用于需要较长时间在显示屏上显示信息的场合,上位机将数据发送到单片机后,单片机便可以将其长期的显示在屏幕上了。本系统设计中,对于实时性要求不是很好,另外,从成本方面考虑,选用存储显示来设计系统。224下载软件AVR单片机的下载软件主要有AVRFIGHTER,MUCODE,AVRSTUDIO。AVRSTUDIO在下载程序时,不方便设置熔丝位,而AVRFIGHTER,MUCODE可以方便直观的设置AVR的熔丝位,所以本系统采用AVRFIGHTER作为下载软件。第3章系统硬件设计在第二章中,讨论过不同的软硬件设计方案,选择了最有效的方案,在本章中详细设计系统的硬件,其中包括AVR单片机最小系统的设计,串口通信硬件设计,ISP下载口设计,JTAG调试口设计,LED点阵屏幕设计,LED驱动电路设计。31硬件系统的总体设计本系统采用AVR单片机为核心控制器件,用四块88点阵相连组成1616点阵屏,作为显示部分,用两片74HC595作为列驱动控制,用74LS164作为行驱动控制,系统硬件总体方框图如图31所示。图31系统硬件总体框图32AVR单片机最小系统设计AVR单片机最小系统包括UART串口,AVR芯片,复位电路,时钟电路,ISP下载口,JTAG仿真调试接口,电源供电接口。在串口通信中采用MAX232芯片作为电平转换芯片,AVR单片采用的是TTL电平5V代表逻辑1,0V代表逻辑0而PC机采用的是RS232电平,15V代表逻辑0,15V代表逻辑1,与单片机的逻辑电平不一致,所以采用MAX232芯片进行电平转换。321串口通信电路设计在串口通信设计中,我们选用UART与上位机进行通信,串行通信可分为同步串行通信与异步串行通信。同步串行通信的代表有SPI、IIC,这种通信的最显著特点是,收发方有相同的时钟来协调双方的发送。异步串行通信的代表是UART,在这种通信方式里,我们没有统一的时钟来协调收发方。收发方数据一致性的保证是波特率,在这种发送方式中,每个数据帧的格式是一位起始位,后跟若干数据位,单片机74HC595列驱动74HC164行驱动LED点阵模块时钟电路复位电路奇偶校验位,停止位。数据位的位数我们可以在配置寄存器中进行设置,而选用奇偶校验也可以在配置寄存器中进行设置,这样就可以保证了数据发送的正确性质了。串口通信电路原理图如图31所示,在DB9中只用到3跟线,其中第五管脚接地,第二管脚接到MAX232的第14管脚,在MAX232中11管脚输入的数据经过电平转换从14管脚发送出去,传送到上位机中,其中11管脚接单片机的串口发送端。DB9的第3管脚接到单片机的13管脚上,上位机发送的数据通过13管脚进行电平转换,从MAX232的第12管脚发送出去,传送到单片机的串口接收端。图31串口通信电路原理图322复位电路设计复位电路是确保单片机最小系统中不可缺少的一部分,当单片机上电后,单片机会自动运行存储在FLASH中的程序,当程序出现问题时候,我们希望程序重新开始执行,那么我们会使用到复位,单片机重新开始执行程序,我们会在自小系统中设置一个按键,当手按下,单片机会自动复位,这种复位叫做上电复位。另一种复位是上电复位,但我们打开电源时候,单片机会自动复位,从FLASH开始处,执行程序。复位电路工作原理如图33所示,当系统上电时,电流经过10K电阻和10UF电容,系统导通,此时在电容的正极上是低电平,而AVR单片机是低电平复位,所以此时单片机复位。在上电过程中,电容有个充放电的过程,所以上电后瞬间电容又放电。此电路中还有手动复位的功能,当按下按键时,电流经过10K电阻,又经过1K电阻,电路导通,此时在10K电阻两端有个很大的压降,10K电阻RESET端为低电平,单片机复位。图32复位电路323单片机的下载口在PC机上写好的程序要下载到单片机里才能控制单片机的IO口输出高低电平,从而控制LED点阵屏亮灭。对于AVR单片机来说,可以有两种下载程序的方法,一种通过ISP在线下载,一种通过JTAG仿真调试,在调试后程序自动下载到单片机里,同时JTAG仿真调试可以很方便的找出程序中的错误,有利于调试,所以在的最小系统中也加入了JTAG口。ISP下载口的电路原理图如图33所示,接口的2管脚接VCC,4、6、8、10管脚接GND,在下载器上可以通过跳线设置通过下载线给单片机供电,接口的第3管脚悬空,1、5、7、9接到单片机的程序下载口上,这样通过下载器就可以向单片机里下载程序了。JTAG仿真调试口电路原理图如图34所示,其中1、3、5、9分别接到单片机的JTAG调试口,在AVRSTUDIO开发环境中,可以通过JTAG仿真调试逐句执行程图33ISP下载口序语句来观察单片机控制的LED显示屏的现象还帮助调试。同时也可以用仿真调试器来给系统供电。图34JTAG下载口324AVR单片机的时钟电路对于AVR单片机来说,片内已经集成了晶振,可以采用外部晶振提供时钟源,也可以通过设置单片机的熔丝位来改用内部晶振。但是,在系统对时钟要求严格的场合应选用外部晶振。在本系统中,由于要用到串口通信,在串口通信中要用波特率来保持上位机跟单片机传输数据的一致。所以的系统采用外部晶振的工作方式。如图35为单片机的时钟电路。325AVR单片机最小系统AVR单片机最小系统是单片机能够正常工作时,所需要连接的最少管脚数,一般AVR单片机要能够工作需要接电源、地、晶振、下载口。图36为AVR单片机的最小系统原理图,在本系统中,由于采用了74HC595芯片及74HC164图35时钟电路芯片实现串行数据转换为并行数据,所以在的系统中只用到少量的IO口,这样其他的IO口可以用来控制其他的外设,达到减少IO口的目的。在画原理图的过程中,我大量的使用了网络标号,网络标号相同的结点可以正常的连接起来,这样可以避免在画电路原理图时,采用大量的连线。采用网络标号可以达到模块化的目的,这样画较为复杂的电路原理图时,可以很整洁清晰的表达出来。也有利于原理图的纠错,避免了复杂难看的线路连接网络。其实,AVR单片机内部已经集成了很多外围设备接口,在AVR单片机内部集成了晶振,所以在AVR最小系统中可以不画外围晶振,最简单的AVR最小系统只需要两根电源线,4根程序下载线。由于在本系统中,我们用到了串口,所以需要设置波特率,那么对于时钟源的精确度就有要求了。所以我们采用外部晶振的方式,采用119582M的晶振来为系统提供电源。33LED点阵屏设计及驱动电路设计图36AVR单片机最小系统331驱动电路设计本系统中采用两片74HC595和两片74HC164将串行数据转换为并行数据,在LED点阵屏设计时,采用三极管来驱动显示屏,这样可以是每个二极管的亮度都达到饱和。图37为三极管组成的驱动电路。在电路中,采用的是PNP型三极管,三极管的基极接到74HC164的输出端,发射极接到电源,集电极接到LED点阵屏上,这样当74HC164某个管脚输出低电平时,其对应的三极管导通,电流通过三极管流到LED点阵屏,点亮相应的二极管。当74HC164输出高电平时,其对应的三极管不能导通,所驱动的发光二极管不会被点亮。这样就能很好的控制发光二极管的亮灭了。图37三极管驱动电路332行驱动电路设计在行驱动电路中,采用2片74HC164来扩展IO口,74HC164的输出通过47K的电阻接到三极管的基极。图38为74HC164的管脚图。图3874HC16474HC164是一种串入并出的芯片,在本设计中,将芯片的1、2管脚接在一起,使1、2管脚成为线与的关系,数据从1、2管脚串行进入芯片,时钟线接在第8管脚,在每个时钟周期的上升沿,串行数据写入芯片内,在8个时钟周期后,数据就并行的从芯片输出。同时,芯片的第13管脚,也是芯片的级联管脚,可以将第13管脚接到下一片芯片的输入端,这样就可以输出16位并行数据了。图39为本设计中74HC164的级联图,本系统中用单片机的IO口模拟芯片输入的数字时钟,通过IO口不断的拉高拉低来实现时钟的效果,在每次的上升沿数据就写入到了芯片内,16个上升沿后,16位数据就在IO口准备好了,输出到16个三极管的基极,为低电平的IO口所对应的三极管导通,三极管驱动相应的发光二极管点亮。333列驱动电路设计图3974HC164级联效果图在列驱动电路里,用了两片74HC595来扩展IO口,74HC595芯片的功能类似于74HC164,但74HC595芯片带有锁存功能,在时钟引脚上,每来一个上升沿,串行数据就向高位移位,待8为数据都准备好时,在锁存时钟引脚上来一个上升沿,就打开锁存端口,并行数据发出。74HC595输出端接在限流电阻端,限流电阻另一端接在了LED点阵屏幕上。图310为74HC595的引脚图。其中第14管脚为数据输入管脚,第9管脚为级联管脚,本设计中将两片595芯片级联起来,当低位芯片满八位时,通过级联端口向高位移位,第11管脚为595芯片的时钟输入端,每次在11管脚上产生一个上升沿时,串行数据就向前移动一位,第12管脚为595芯片的数据锁存端,当在12管脚上产生上升沿时,锁存输出打开,595中的数据并行输出。第13管脚为595的使能端,在本设计中,直接将13管脚接低电平,即595芯片一直处于使能状态。第10管脚为芯片的擦除引脚,当在第10管脚加低电平时,就将595芯片内部存储的数据擦除,在本设计中,不需要擦除芯片,所以直接将第10管脚接高电平。图311为74HC595的级联连接,在本设计中用单片机的PA1口作为芯片的时钟信号输入端,利用单片机的IO口输出高低电平来模拟时钟信号,单片机的PA2口接到芯片的锁存控制端,通过IO口输出的高低电平来实现上升沿。图31074HC595管脚图图31174HC595级联图34LED点阵屏设计在本设计中,采用的是8X8的LED点阵来拼成一个16X16的点阵屏,将4片8X8LED点阵相同的列与相同的行连接起来,形成一个16X16的点阵屏幕。图312为8X8点阵的引脚图。图中为共阳型LED点阵,左边的一列引脚为LED点阵的行信号输入引脚,上面一行为LED点阵的列信号输入引脚。当在某一行输入引图3128X8LED点阵引脚图脚输入高电平,某一列输入引脚输入低电平时,相应的行列交错点的发光二极管将被点亮。我们将4个8X8LED点阵对应的引脚连接起来,就形成了16X16点阵。如图313所示。图31316X16LED点阵引脚图第4章系统软件设计41主程序设计系统控制程序采用C语言编写,按照模块化程序设计的思想来设计。首先分析程序所要实现的功能,程序要实现PC机与单片机的串口通信,LED显示屏的静态显示与动态显示三大功能。串口程序接收上位机数据,交给主程序处理后再通过显示控制程序选择不同的显示方式进行显示。主程序的工作流程如图41所示图41主程序流程图程序开始时首先必须对单片机进行初始化,其中包括各IO口功能的设定,中断初始化,串行通信方式的选择和波特率的设定等。单片机上电后,首先进入主程序,在主程序中,调用串口程序,待上位机的指令通过串口发送到单片机,且单片机接受完指令时,主程序开始调用显示程序,将信息显示在LED显示屏上。42显示程序设计421显示驱动程序的设计显示驱动程序是显示部分的核心,显示驱动程序有行驱动程序跟列驱动程序组成,行驱动程序主要是74HC164芯片的驱动程序,列驱动程序主要是对74HC595芯片的驱动。对于行驱动程序,第一次将第一位输出为0,这样相应的三极管导通LED点阵的第一行被阳极为高电平,这样第一行所有阴极被置为低电平的二极管点亮。在下一个脉冲到来时,74HC164芯片内的数据向高位移位,同时在程序中让低位补1,这样第2行的二极管的阳极置为高电平,同样,第二行所有阴极被置为低电平的二极管将被点亮。对于列驱动程序,单片机移位输入的是显示内容的字模数据,将数据移位16次后,在74HC595芯片的数据锁存端给一个上升沿,将16位并行数据全部输出。注意在这里,我们输入到595芯片内的数据是要显示信息的字模的反码,因为列扫描程序对应的是二极管的阴极,在行扫描程序中,我们已经给了二极管的阳极高电平,所以在列扫描程序中应该给出低电平才能点亮相应的发光二极管。图42为LED显示屏显示的动态扫描过程。图42LED显示的动态扫描过程第一次在第一行输出高电平,同时列输出的是字模数据在第一行对应的字节的反码,第二次在第二行输出高电平,同时列输出的是字模数据在第二行对应的字节的反码。以此类推,直到第16行扫描结束,又回到第一行继续扫描。422点阵数据的获取对于一些简单的字母或者汉字,我们可以在16X16的表格上写出0、1的点阵数据获取要显示信息的字模,但是当我们要显示的文字很多时,这样非常麻烦。在这里介绍一种去字模的软件PCTOLCD,在这里我们输入要显示的汉字字母等信息,点击获取字模就可以得到我们需要显示的内容的字模。图43为取字模软件的界面。在软件中,设置好字宽字高字体等信息后,点击获取字模就可以得到字模数据了,非常方便。图43PCTOLCD界面423串口通信程序的设计系统采用串行中断的方式进行通信。AVR单片机的中断源两种类型一类是外部中断源;另一类是内部中断源,包括三个定时器/计数器(T0和T1)的溢出中断和串行口的接收和发送中断。AVR单片机设置了4个专用寄存器用于中断控制,分别为定时器控制寄存器(TCON),串行口中断控制器(SCON),中断允许控制寄存器(IE),中断优先级控制寄存器(IP)。编程时通过设置其状态来管理中断系统。在编写中断程序时首先是将中断控制寄存器(IE)初始化,其控制位分布如表。EA为中断允许总控制位,EA1时CPU开中断;EA0时,CPU屏蔽所有中断,只有打开总中断,所有模块的终端才会起作用,ET、ES、EX1、ET0、EX0为对应的定时器/计数器1中断、串行口中断、外部中断1中断、外部中断0中断、定时器/计数器0中断的中断允许位,对应位为1时允许其中断,对应位为0时,禁止其中断。有些读者可能搞不懂总中断与其他中断的关系,图44做了形象的描述。图44总中断与分中断的关系表41中断允许寄存器格式D7D6D5D4D3D2D1D0EAESET1EX1ET0EX0总中断分中断在系统初始化时设定中断允许寄存器初值为0XFF,指令为IE0XFF。设置串口工作方式1,波特率9600,计算可得计数器初值的十六进制表示为0XFD。通信协议如表42所示表42串行通信协议格式具体串口中断程序流程图如图45所示,在主程序中先进行了串行中断的初始化,初始化内容包括了串行工作方式选择,波特率的设定,计数初值的设定。程序开始进入中断等待,当PC机向单片机发送数据时产生中断接收允许位RI置1,将SBUF(缓冲寄存器)中的值输入到暂存器中进行数据处理。首先判断数据是否设定的起始标志位S如果是则开始接收起始位后的33个字节,不是则中断返回继续等待。接收到第34个字节后便将收到的数据发送回PC机进行验证比较。所有的程序编写完成后都必须经过编译才能烧写到单片机中运行。为了减小程序的修改和优化难度,按照模块化编程的思想,将各个功能写入到一个模块中,每完成一个模块就用总程序调用测试,测试通过则继续编写下一个模块。各子模块编译没有错误后再输入单片机进行验证。这两项都通过后,再将所有的程序整合到一起,进行集成测试,测试通过则完成了该系统的软件设计。数据结构第1个字节第2至第33个字节第34个字节内容起始标志位S显示数据控制指令作用判断是否开始接收数据LED的显示内容控制LED显示方式中断开始YNNN接收到第34位接收起始位后33位数据Y起始位S将第2位起的32位数据发回PC机接收串口数据RI1中断返回Y图45串口程序的调试第5章系统制作与调试在系统设计完成后,必须对其进行实物测试,本系统的测试包括硬件测试、软件测试、软硬件集成测试。检查系统的各项功能是否得以实现。C11VDD2C13C24C25VEE6T2OUT7R2IN8R2OUT9T2IN10T1IN11R1OUT12R1IN13T1OUT14GND15VCC165MAX232ACPE12345678911101DCONNECTOR9C1104C2104C3104C4104VCCP31TXP30RXVCC51系统硬件部分的调试硬件调试主要是各芯片的输出输入电压是否符合设计要求和调试各部分的焊接是否合格,最后测试各硬件部分能否完成设计功能。因此把硬件调试按照以下四部分分步来进行(1)用万用表检测所用的电路是否导通,整个板子是否存在虚焊及其短路;(2)用万用表检测每个芯片的电源端与接地端的电压是否符合芯片对电源的要求;(3)测试单片机的程序下载口能否正常工作;(4)测试单片机与上位机之间的串口通信功能能否实现。由于整个系统的显示功能需要应用程序的配合,所以在硬件调试部分只测试单片机的各个管脚的电平及是否存在虚焊,整个系统的显示功能部分的测试放在系统联合调试部分来完成。511短路与虚焊检测此项测试中,工具是多用电表,利用多用电表的报警功能,测试各个连接点是否连接好,如果连接无缝,则万用表会发出声响提示连接无误。这样就检测出了电路中不存在虚焊。再用万用表测试芯片相邻的管脚,看看是否发出警报,发出警报证明系统存在短路,需要用电烙铁占松香进行清除。512上电测试本系统设计中是采用USB电源供电,输出电压为5V。系统中所用到的单片机、74HC595芯片、74HC164芯片的工作电压都是5V,所以在本系统中所有的芯片都是采用相同的电源进行供电。上电后首先要观察整个电路是否有发热、冒烟的现象。经过长时间的测试观察发现电路工作正常,没有上述现象产生。接着,将万用表的旋钮调到直流电压档位,测试各个芯片的电源端与接地端的电压范围,经过测试,发现电压范围大致都在48V至512V之间,所以芯片的工作电压正常。513串口调试串口作为上位机与单片机通信的部分,是整个系统的关键部分,所以必须认真测试。测试串口时,串口的连接如图51所示,将MAX232芯片的第9管脚之直接与第10管脚端接,这样表示上位机发送过来的数据未经过单片机而直接从发送口又发送给了上位机,在串口调试助手中,不断的向单片机发送不同的数据,观察串口调试助手能不能将数据原封不动的收回。图51串口部分的测试52系统软件调试方法由于在上一步中已经进行了硬件测试,所以在这里开始软件的测试。编写好各个芯片的驱动程序后,开始编写应用程序,在应用程序中调用底层的驱动程序,进行动态的显示。为了精确的定位软件的出错点,在这里分模块测试,先测试LED显示部分,这是系统最主要的功能,在主程序中调用显示程序,观察显示效果,经过多次测试,发现显示程序没有问题。接着,开始串口程序的测试,由于在硬件测试中已经将串口的发送端与接收端进行短接,所以在这里就不用测试MAX232芯片的工作状态了。测试串口通信程序的正确性,不但需要连接单片机与上位机,而且还需要串口调试工具协助程序的调试。在这里,我们选用串口调试助手来协助我们调试串口程序,串口调试助手的界面如图52所示。在串口调试助手中,选择好与单片机通信的上位机的COM口,设置好通信的波特率,选择有无校验位,设置好数据位与停止位的位数。下面就可以开始串口程序的调试了,由于在本系统设计中,只需要上位机向单片机发送控制指令及字模数据,而不需要上位机读取单片机的状态,所以在本系统的串口调试中,我们只检测串口的接受数据的功能。串口调试助手的设置如下图所示,我们选择上位机的COM1口,通信的波特率设置为9600,不设置校验位,数据帧的格式为数据位为8位,1位停止位,选择以十六进制的格式发动数据,以十六进制格式显示数据,发送的一串数据以AA开头,当单片机接收到以AA开头的一串数据时,将AA以后的数据提取出来发动到上位机来,我们送的数据是AA11223344556677889900AABBCCDDEEFF11223344556677889900AABBCCDDEEFF,单片机接收到这串数据后,将AA以后的一串数据发送回来,在串口调试助手中显示为11223344556677889900AABBCCDDEEFF11223344556677889900AABBCCDDEEFF,由于我们设置的是以十六进制的格式发送数据,以十六进制的格式接受数据,所以上位机接受到的数据位正确格式的数据。在这里,一定设置好波特率,这里设置的波特率一定要跟我们在串口通信程序里设置的波特率一致,因为异步串行通信没有统一的时钟线来协调发送方跟接受方,它仅靠着波特率来协调发送方跟接收方的一致。如果串口调试助手中的波特率,跟程序中设置的不一致,那么在串口调试助手这里,我们将会看到单片机发送给上位机的是乱码。图52串口调试助手调试情况53系统软硬件调试及结果经过硬件调试与软件调试,我们可以证明硬件电路连接的正确性,排除系统存在虚焊的情况;经过对串口的软硬件调试,可以证明系统串口在硬件上连接无误,同时在软件上,也可以正常运行。下面我们重点调试LED点阵显示屏幕,检查屏幕有无坏处。(1)检查屏幕的好坏,我们首先要编写一个逐行扫描的程序,让此程序从点阵屏的第一行开始逐行的向下扫描,扫描到第十六行,观察有无发光二极管没有被点亮。结果发现第一块LED点阵单元有俩两个发光二极管没有点亮,因为在之前的测试中由于没有接限流电阻,导致直接在发光二极管的两端加5V电压,烧坏了连个二极管。更换LED显示单元,每行的LED都会被点亮。(2)通过上一步检测,可以保证屏幕没有问题,每个LED像素点都可以发光。现在开始测试我们之前编写的显示程序,显示程序分为动态滚动显示和静态显示。静态显示在LED点阵屏上只显示一个汉字,通过反复测试,发现静态显示功能可以正常实现。动态滚动效果是让现实的内容从左到右,从上到下,从下到上滚动显示,通过测试,滚动效果没有问题。这一部测试可以断定整个系统的驱动电路与显示屏没有问题。(3)在上一步中我们证明了系统的屏幕显示汉字没有问题,并且在之前的测试中,我们证明了串口的软硬件结构都没有问题。在这里,我们开始测试串口控制LED显示的功能能否得以实现。在串口调试助手中,我们发送控制LED屏幕显示的控制代码,观察能否通过串口有效的控制LED点阵屏的显示。通过发送控制代码,我们发现LED点阵屏幕能够被控制,我们可以通过上位机来控制显示内容的移动情况,同时可以控制移动的速度。结论本论文采取由浅入深,循序渐进的模式。首先简单的介绍了半导体发光二极管的相关知识,接着在发光二极管的基础上降到到由LED矩阵组成的显示屏,这样就引到了本次设计的核心。在设计上分为四大步。第一步是画电路原理图。我用的是ALTIUMDESIGNER来画的电路原理图。画好每个元件的管脚图后,用导线或者网络标号将相应的管脚连接起来。第二步是程序的设计。根据电路原理图,我用了C语言编写了每个模块的程序,在主程序中调用每个模块的程序,编译后没有错误,设置生成HEX文件。第三步是电路的仿真。通常使用PROTEUS仿真软件,根据电路原理图要求,选择必要的器件,并将他们对应的管脚连接起来。完成之后,将在第二步中生成的HEX文件下载到仿真电路中的单片机上,仿真运行观察结果。第四步是实物的设计。在仿真电路运行没有错误不代表本设计能够顺利的完成,实体的设计还会遇到很多实际问题,比如器件的购买,各种元器件的底层封装,电路的焊接。虽然几经波折,最终还是完成了实物的设计。最后将HEX文件通过下载器下载到单片机上,整个系统就可以正常运行了。本设计为简单的单色显示屏,在工业控制上,单色LED屏,双基色LED屏,以及全彩LED屏技术正在蓬勃的发展,并且在生活中已经得到了广泛应用也将继续发挥它们的作用。将来全彩LED显示屏必将会得到大力发展。所以我并不会满足当前所取得的一点点的成绩,我还将继续努力,不断提高和充实自己,争取能为LED显示屏在国内的发展贡献出自己的一份力量。参考文献1马潮AVR单片机嵌入式原理与应用实践M北京航空航天大学出版社,2007102张军,宋涛AVR单片机C语言程序设计实例精粹M电子工业出版社,200913陈建军LED大屏幕显示系统的VGA同步技术J电子技术应用,1997,21129324周兴华手把手教你AVR单片机C语言程序设计M北京航空航天大学出版社,200942322385周志敏,纪爱华LED驱动电路设计与应用M人民邮电出版社,2010102212356单蓉,李涛基于AT89S51芯片的电子广告牌电路设计J现代电子技术,2009,1201961977陈元灯,陈宇LED制造技术与应用M电子工业出版社,200910108208NEIESONL,LEEJDCONVERSATIONWITHGRAPHICSIMPLICATINONSFORTHEDESIGNOFNATURALLANGUAGE/GRAPHICSINTERFACESMINTJHUMAN_COMPUTERSTUDIES,199431261279DAIYISONG,ZHAOJIYINTHERECURSIVEREALIZATIONOFWINNERFILTERFORARPMODELSJTHEAMSEINTERNATIONAL1990CHENGDUCONFERENCE,810,1999222510SMWU,IMPACTOF100INPROCESSCONTROLSPCINAUTOMOBILEBODYASSEMBLYJSCIENCEMAGINE,1999262911张庆双LED应用电路精选M机械工业出版社,20101555612郑刚,李宇成LED大屏幕显示系统的设计J北方工业大学学报,2001,53434713李元生LED光柱专用驱动器J家庭电子,2005,641714严雨,廉洁AVR单片机C语言程序设计100例M电子工业出版社,20122253715陈新忠基于RS232总线的单片机多机通信软件设计J现代电子技术,2002,335678致谢这次能够圆满完成毕业设计我首先要感谢我的指导老师孔祥玉老师,感谢他在毕业设计期间对我的指导、勉励、和督导。同时我要感谢大学四年里教过我课程的老师们,感谢他们对我知识增长所付出的辛勤劳动。临近毕业,在此感谢济南大学四年来对我的培育,让我在学校的这四年里学到了很多东西,为以后的工作及进一步的深造打下了扎实的基础,同时感谢信息科学与工程学院的各位老师为我提供了良好的学习环境,感谢学院领导以及各位辅导员老师在生活和学习上对我无微不至的关怀与支持。另外还要特别感谢电子专业的几个同学,在我毕业设计过程中给予了我很大的帮助和支持,才能让我的设计进行的相当顺利。感谢为评阅本文付出辛勤劳动的所有老师评委最后,再一次衷心感谢所有关心和帮助过我的人们。附录1系统PCB附录2系统运行样式附录3系统程序部分代码INCLUDEUNSIGNEDCHARCACHE32VOIDDISPLAYVOIDDISPLAYSUNSIGNEDINTTIMERVOIDDISPLAYMOVE_LEFTRIGHTUNSIGNEDCHA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论