基于单片机的LED(3D)广告牌设计_第1页
基于单片机的LED(3D)广告牌设计_第2页
基于单片机的LED(3D)广告牌设计_第3页
基于单片机的LED(3D)广告牌设计_第4页
基于单片机的LED(3D)广告牌设计_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

页基于单片机的LED(3D)广告牌设计1.前言1.1课题研究背景和意义随着现代社会的高速发展,各个行业都发展得越来越快,广告业也不另外。现代社会奢侈品越累越多,生产数量也越来越多,销售就变得极为重要,所以便需要东西能够代替人来宣传产品,所以便生产出来霓虹灯灯箱广告。在这期间,大街小巷到处都有着灯箱广告,如图1.1所示,不管是品牌店铺、商场、车站、学校等地方,都不会缺少灯箱广告这类东西。但是由于社会发展快速,人们的消费观念也因此随着不断变化,灯箱广告也慢慢地跟不上社会的发展,人们也慢慢意识到,这种灯箱广告也要想办法让之得以提高,同时广告业对于宣传等方面的要求,灯箱广告也已经是远远跟不上脚步,如果再不寻求技术上的发展和进步,广告业将会一直停滞不前。图1.1灯箱广告随着LED显示屏的横空出世,人们的这些忧虑也随着得到解决。LED全称是lightemittingdiode,其实就是发光二极管,而当如今计算机和光电子技术得到快速发展的情况下,显示屏显示技术无疑是当下进军广告行业的最佳之选,所以LED显示屏显示技术就成为了当下最为先进且新型的显示技术,如下图1.2所示。LED显示屏点阵的大小也有很多种,有4×4、8×8、16×16、24×24、40×40等,与这些稍微不同的又有4×8、5×7、5×8的。对比起灯箱广告,LED显示屏的优点更是可以无限放大,从色彩方面去说,灯箱广告色彩单调,而LED显示屏色彩丰富,同时具备红黄蓝绿等多种颜色,根据图素的数目区分的话,又可以分为双原色、三原色等,然而显示屏中显示内容的颜色也会跟着图素颜色改变而改变,单原色就只能显示一种颜色、双原色和三原色则可以显示不同颜色发光二极管的组合,虽然到现在为止显示的颜色已然很丰富,但是这对于现在这种高速发展的时代却远远不够,目前更是在持续开发新的颜色当中,经过不断的研发之后,势必会实现更多种颜色的组合;从可显示的内容上来说,灯箱广告显示内容单一,仅仅只有文字,但是LED显示屏却可以做到图像、文字、视频等各种信息的显示,而且在现实过程中,不仅显示色彩各式各样,显示的方式也是各式各样,会移动的、会闪烁的、会旋转的等,各种各样的显示方式;同时灯箱广告在显示效果和耗电量方面也远远比不上LED显示屏,由于LED显示屏是发光二极管或者是很多的发光二极管组合而成,所以它的显示效果好、耗电量低和清晰度非常高,同时在寿命方面也远不是灯箱广告可比,灯箱广告在质量方面的问题导致其寿命并不高,在极端恶劣的天气情况下,灯箱广告很容易受损,甚至在一些人不小心拿着尖锐的东西刮蹭的情况下都会出现或大或小的损伤。当下,LED显示屏的应用区域越来越广泛,不管是在商业、娱乐业、餐饮业亦或者是学校等方面都得到了很大的重视,它能给人类带来巨大的效益。考虑到LED显示屏广告牌的实用性、经济性和发展快速性,我觉得这是一个较好的研究课题。图1.2LED显示屏广告牌1.2国内外研究现状1.2.1国内现状我国的LED显示屏发展时间到现在十几年,产业越来越多,当然比较庞大的一些企业也是成为了我国如今LED显示屏产业中的支柱型企业,为我国LED显示屏产业的迅速发展做出了很大的贡献。现如今我国的LED显示屏技术已经达到国际领先水平,具有很大一部分市场。说到LED显示屏,我国在这项技术方面能走到现在也是很困难的,在二十世纪九十年年代的时候,LED显示屏开始进入人们的视线,但是由于新中国成立到那时候仅仅只有四十年不到的时间,所以在这个技术方面我国涉及不多,能见到的可以说是少之又少,而且成本高这个问题让我们对于这项技术的发展更是落后于国际水平。二十世纪九十年代末的那段时间,在全球信息化的带动下,人们能够见识到的LED显示屏越来越多,对于LED显示屏的需求也是不断增加,以至于我国的LED显示屏技术得到快速的发展,在显示屏的灰度等级方面一度得到新的突破,从最初的16级灰度等级到64级灰度等级,产业链也随之变得越来越庞大。至今为止,我国的LED显示屏技术可以说是达到了国际领先水平,目前已经达到了256灰度等级。但是随着技术不断地发展,由于越来越多相关企业的诞生也加剧了国内的竞争,出现的问题也随之越来越多,各种质量、产品不规范问题也是层出不穷,甚至有很多非法分子用LED显示屏刊登虚假广告实施诈骗等,导致我国也是需要不断地加强完善监管和规范制度,同时,其他方面也同样面临着一些问题,在面临极端恶劣天气的时候,目前的技术下LED广告牌仍然无法完好无损的坚持下来,仍然有可能会造成各方面的损坏,比如在电路、显示屏等方面,一些比较庞大的LED广告牌会被悬挂在较高的地方,风大的情况下有可能会承受不住压力而倒下造成人员的受伤,这些问题仍然在困扰着我们,要解决这些问题,我们仍然需要不断地努力,不断地进步。1.2.2国外现状由于工业革命的影响,国际上很多国家的高新技术产业是远远领先于我国的,在二十世纪啊九十年代前,是LED显示屏的成长时期,但是在国外,有一些国家的LED显示屏已经得到了大范围多领域产品的应用。全球信息化那段时间,在我国LED显示屏技术产业得到快速发展的同时,国外也同样在不断地进步发展。到目前为止,国外的发展趋势跟国内基本持平,但是在技术方面还是要略领先于我国,因为据统计,国际上的与LED显示屏相关的大企业基本是在北美和日本等国家,制造商也基本集中于这些地方。同样的,在快速发展的同时,各个国家面临的问题都是越来越多,但是想要在LED显示屏技术取得不断地进步,就必须面临问题解决问题,不然永远不会进步。LED显示屏现如今使用基本都是在户外,所以时常会有因为天气恶劣而出现问题的时候,比如刮风下雨、天气炎热都是对LED显示屏质量的一种考验,彻底解决了这些问题之后又是一种领先的技术。现如今,随着社会的不断发展,室外LED显示屏已是基本能够做到防雨防风等的效果,原本因为体型过大受天气原因困扰的问题基本得到解决,但是在面临极端恶劣的天气时,如冰雹、台风等,会不会受到较大的影响还有待考察。室内显示屏也有很多,不过面积一般都比较小,发光点也是比较小,但是却非常的实用。总而言之,LED显示屏在全球很多国家发展都是很好的,即便可能面临着一些问题,但是在不断地考研更新下,一定会变得越来越好,越来越先进。1.3论文主要研究内容这次毕业设计主要是设计能够显示自己要求内容的LED点阵显示屏,主要是使用电脑通过STC下载器将程序下载录入到STC89C52RC单片机内,然后单片机将数据送出到74HC595移位寄存器中,移位寄存器将数据送出到LED显示屏中,行驱动器和列驱动器驱动显示屏显示内容,并且能够通过按键模块来进行控制。四个按键除复位以外分三类,分别是暂停显示内容的按键、切换移动方向的按键(主要是左移跟右移)、切换显示内容的按键(本设计总共有三段内容间的相互切换)。设计课题的主要工作是有两个主要部分,一个是硬件的设计,主要有单片机最小系统控制模块控制单元的设计、驱动模块的设计、LED显示屏的设计等,另一个是软件的设计,主要是包括功能模块流程图还有主程序和子程序的编写。除了这两部分还有方案选择以及最后的系统调试与仿真。2.系统的总体设计方案2.1主控制模板选择方案一:选用51单片机中的STC89C52RC当作主控制器,STC89C52RC是一种带有只读存储器的微处理器,它不但仅用低电压就可以控制使用,而且性能高,对于做毕业设计来说,价格也是非常低廉的。方案二:还可以采用一种PLC系列的单片机,这种单片机的是运算速度非常快,一般都是用于在需要有很多数字高难度数字运算的场合,而且更适用于那些档次比较好的电子设备,价格也是比起STC89C52RC昂贵许多。所以此设计就采用方案一,主控制器选用51单片机中的STC89C52RC,利用单片机来控制移位寄存器和译码器,通过这两个来送出列数据和行数据,从而达成LED显示屏的显示。2.2驱动器件的选择方案一:使用74HC573作为驱动器件,虽说74HC573拥有三线输出八线锁存的优良功能,但是它在连接的时候对于I/O口的使用会过多,所以并不适用于本设计。方案二:使用74HC138译码器作为列驱动器件,虽然说74HC138只是一种3-8线译码器,无法满足于本次设计的要求,但是如果将两片74HC138译码器组合成4-16线译码器的话则是刚好可以满足设计的要求,并且占用的I/O口相对较少,在能够降低成本的同时效果也很好。使用74HC595作为行驱动,同时能够用于数据的寄存和数据的输出,使用两片74HC595串联刚好有16个输出引脚,可以用于LED显示屏的驱动,故采用此方案。3.系统硬件的设计3.1总体设计此设计主要硬件包括主控制单片机模块、驱动模块(包括行驱动和列驱动)、LED显示屏模块、按键模块,设计完成之后的主要流程是通过pc端编写程序之后通过STC下载器下载录入单片机内,然后单片机通过处理相应的代码指令将LED显示屏要显示的内容通过I/O口输出。然后通过译码电路进行扩展,最后达到驱动的要求驱动LED显示屏显示内容。主要设计框图如下图3.1所示:图3.1总设计框图为了防止设计内容过于简单,此次LED显示屏的显示内容要求能够实现以下功能:(1)循环不断地显示(2)能够进行按钮操控进行左移或者右移动(3)能够通过切换按钮来实现几段显示内容的切换(4)能够通过暂停按钮随时进行暂停3.2各种芯片硬件的介绍3.2.1STC89C52RC单片机的基本介绍STC89C52RC是耗能很低而且性能又比较高的一种单片机,它包含有8k的程序存储器和256b的数据存储器,工作电压通常是5v,具有EPROM和看门狗功能,算是一种增强性的51单片机。它总共有40个引脚,而且可以把这40个引脚分组为四个大部分,分别是:(1)电源部分类引脚(2)时钟部分类引脚(3)控制线部分类引脚(4)I/O口类引脚STC89C52RC单片机引脚图如图3.2所示:图3.2STC89C52RC引脚图电源部分类引脚如表3.1:表3.1电源部分类引脚名称引脚功能VCC电源引脚,主要接5v电压GND接地引脚时钟部分类引脚如表3.2:表3.2时钟部分类引脚名称引脚功能XTAL1晶振电路的反相输入端XTAL2晶振电路的反相输出端此次设计过程中,晶振电路是必不可少的,晶振需要与两个电容串联,然后两端各自连上XTAL1和XTAL2形成晶振电路。晶振电路如图3.3所示:图3.3晶振电路图控制线部分类引脚如表3.3:表3.3控制线部分引脚名称引脚功能RST复位信号的输入端,主要是为了让单片机在工作工程中进行复位初始化操作。EA/VPP这里的引脚有两种功能,EA引脚的主要功能是可以对内外ROM进行选择,而VPP引脚的功能是如果片内有EPROM的芯片,则vpp则会在EPROM编程期间充当编程电源。PSEN外ROM的读选通信号ALE/PROG这个引脚也有两种功能,ALE引脚主要是为了地址的锁存,它可以锁存P0口送出的低8位输出脉冲,而PROG引脚主要是为了在Flash编程期间,用来输入编程脉冲。这次设计当中,需要用到一个复位按键,以便于在LED显示屏显示中或者在文字切换中进行复位初始化,复位电路如下图3.4所示:图3.4复位电路图I/O口类引脚:这部分一共有四个8位的并行I/O端口,分别是P0、P1、P2、P3这四个,每一个都有8个引脚,总共就有32个。各类引脚的名称及其功能介绍P0(包括P0.0~P0.7引脚)包含8位漏极开路的双向I/O口,每个引脚都可以吸收到8TTL的门电流,当它的管脚首次输入1时,就会被定义为高阻输入。同时,P0口也能用作外部程序数据存储器,能够作为数据总线提供地址的低八位数据,在EPROM编程时,P0口通常是作为输入口输入原码,而且在校验的时候,P0就成了原码输出口,同时在校验的时候必须要外接上拉电阻,拉高输出口的电位。P1(包括P1.0~P1.7引脚)包含8位自身内部就可以提供上拉电阻的双向I/O口,它的输出缓冲器能够驱动接收输出4个TTL的门电流,当它的管脚输入1时,会有内部上拉电阻将它拉到成高电位,以此就能用作为输入口,而同时,当它被外部下拉成为低电平的时候,就会变成输出电流。在EPROM编程校验的时候,它能够作为低8位地址的接收口。除此之位,STC89C52RC这里P1.0和P1.1的功能比STC89C51RC之中的要多一些,STC89C52RC中的P1.0引脚可以作为时钟输出,就是定时器或者计数器2的外部技术输出,P1.1则是可以作为定时器或者计数器2的输入P2(包括P2.0~P2.7引脚)这个端口的功能跟P1口并没有太大的差距,都是包含8位自身内部就可以提供上拉电阻的双向I/O口,而且它的输出缓冲器也能够驱动接收4个TTL的门电流,当它的管脚输入1时,会有内部上拉电阻将它拉到高电平,此时便可以用作为输入口,但同时管脚会被外部拉低,以此输出电流。而在当端口用于外部ROM和和16位地址的外部RAM存取时,它就会送出地址的高8位。当它在读写外部8位地址的RAM时,就会输出它在特殊寄存器SFR里面寄存的内容,在EPROM编程校验时,它能够接收高位的一些地址和控制的信号。P3(包括P3.0~P3.7引脚)P3端口跟P1、P2端口功能都是相同点很多,包含8位自身内部就可以提供上拉电阻的双向I/O口,它的输出缓冲器能够驱动接收4个TTL门电流,当它的管脚输入1时,电位会被内部上拉电阻拉高,用作于输入口,但又会被外部拉低,输出电流。当在EPROM编程校验时,与P2口不同的是它只能接收控制信号。与其他端口都不同的是,P3口每一个引脚都有它们的第二功能:(1)、P3.0(RXD又叫串行输入口)(2)、P3.1(TXD又叫串行输出口)(3)、P3.2(INT0,外部中断0)(4)、P3.3(INT1,外部中断1)(5)、P3.4(T0,是计时器0的外部输入)(6)、P3.5(T1,是计时器1的外部输入)(7)、P3.6(WR,外部RAM写选通)(8)、P3.7(RD,外部RAM读选通)以上便是P3口每一个引脚的第二功能。其中P3口的P3.1、P3.2、P3.3在此次设计中的主要功能是用于除了复位按键之外的其他三个按键作用的输出,P3.3主要是用于连接内容切换按键模块、P3.1主要是用于连接暂停按键、P3.2主要是用于连接循环左移时方向取反的按键。主要连接电路如图3.5所示:图3.5按键电路图以上便是此次设计单片机硬件中STC89C52RC单片机需要用到的功能介绍。3.2.274HC138译码器的基本介绍74HC138译码器是有三个通道输入加上八个通道输出的一种译码器,主要是采用CMOS工艺制作,而且它的功耗非常低。图3.674HC138引脚图74HC138译码器中主要工作步骤是有三个地址输入位,然后有三个使能输入位,之后便是共有八个输出位,其中GND引脚是逻辑接地端、VDD引脚是逻辑电源端、A0-A2便是三个数据地址的输入端、E1和E2跟E3则是数据地址输入之后的使能控制端、Y0--Y7则是八个数据输出端。在此次设计中,我们使用两片3-8线的74HC138译码器连接构成一个4-16线的译码器,因为每片74HC138译码器都有相对应的接口,这样使用两片构成一个4线译码器,不仅能够节约成本,因为一个4线译码器的价格远远比两个74HC138译码器的价格要昂贵,而且这样对接构成的4线译码器同样拥有提高单片机驱动能力的作用,在这里,我们将两片74HC138组合成的4-16线译码器作为行驱动器。它们连接起来的4-16线译码器的电路图如图3.7所示:图3.7译码器电路图图3.7中的电路图为74HC138译码器的逻辑图,但是在我们连接引脚的时候,要逻辑图和引脚图综合起来去接线,因为我们使用的74HC138译码器是两边都有八位引脚的,如图中所示Y0--Y6是在同一边的,而Y7则在另外一边,但是Y7也是74HC138的输出位,所以我们接线的时候一定要非常小心,如果只看着逻辑图去接线的话,很容易就接错。3.2.374HC595移位寄存器的基本介绍74HC595移位寄存器同样是采用COMS工艺制作,是一种漏极开路具有8位串行输入和8位串行并且也可以并行输出的芯片,具有三种可控的状态输出端,分别为高阻、关和断状态。同时,74HC595移位寄存器可以控制下一级级联芯片,所以可以使用两片移位寄存器进行级联,这样便刚好够16×16LED点阵显示屏数据的输出。其中74HC595也有一些特点,如下表3.4所示:表3.474HC595移位寄存器特点序号特点1COMS串行输出,可用于多个设备的级联2低功耗3标准串行接口4高速移位时钟频率Fmax>25MHz图3.874HC595引脚图在此次设计中,两片移位寄存器级联刚好有16个输出口,移位寄存器中存在有数据锁存器,可以锁存从单片机中送出来的数据,并且将其送出到LED显示屏中,同时它能够作为驱动器件使用,在本设计中74HC595移位寄存器同样担任着作为显示屏行驱动的角色。74HC595中的移位寄存器跟锁存器的控制是互不干扰的,所以在显示一行数据的时候,可以传送另一行数据,做到充分的准备。74HC595的各引脚功能如下表6所示,两片74HC595级联输出的电路图如图3.9所示:图3.974HC595电路图表3.574HC595引脚功能表引脚功能QA-QH三态的输出引脚GND电源接地端SQH标准串行接口SCLR高速移位时钟频率Fmax>25MHzSCKQH的延伸端,因为QH端收到锁存器的输入控制,便引出SQH作为串行数据的输出引脚RCK移位寄存器的清零端OE数据输入的时钟线SI输出存储器锁存时钟线输出使能VCC数据线电源端3.3LED显示屏的基本介绍3.3.1LED显示屏点阵介绍此次设计用的是8×8单色点阵,一共有64个发光二极管组合而成。8×8LED点阵外观和引脚图如下图3.10所示:图3.10LED8×8点阵引脚图8×8LED点阵显示器中的接法一共有两种,分别是共阳型和共阴型接法。此次设计中使用的LED显示屏型号为1088BS,使用的是两者中的共阳型接法。如下图3.11所示,每一个发光二极管都是在行线与列线的相交点上,共阳型接法简单来说就是把每一列的发光二极管的阴极接在一起,每一行的发光二极管接在一起,在给阳极端加高电平给阴极端接低电平的情况下,就能够点亮发光二极管。图3.118×8点阵原理图如图所示,如上述所说在给阳极端加高电平给阴极端加低电平的时候,二极管便会发亮,如果你要让1行线和h列线相交的二极管发亮,那么在1接高电平,h接低电平,那么这个发光二极管便会发亮。同理可得,如果你要第8行一整行的二极管都点亮,那么就需要在8接高电平,在a、b、c、d、e、f、g、h上都接低电平,那么便可以点亮一整行的二极管,如果要点亮第一列一整列的二极管,就需要在1、2、3、4、5、6、7、8上都接高电平,在a上接低电平,便可以点亮第1列的二极管。3.3.2LED显示屏的显示方法此次设计是为了要显示出汉字,并且实现特殊效果的显示,所以只是8×8LED显示屏的话无法满足显示整个汉字,所以我们选择将四块8×8LED显示屏模板组合成一个16×16的LED点阵显示屏,这样做一是因为16×16LED显示屏刚好能够显示一个完整的汉字,简单的或者复杂的都可以,二是因为用四块8×8的点阵显示屏会降低成本,比较便宜。同样的,在Proteus仿真中也仅仅只有5×7或者8×8之类的LED点阵显示屏,也是没有16×16的,所以同样需要用四块8×8的组合而成。组合的方法就是将左1和右1的行线连接起来,将左2和右2的行线连接起来,将左1和左2的列线连接起来,将右1和右2的列线连接起来。如图3.12所示:图3.1216×16LED显示屏解决了汉字显示的问题之后,便是要解决如何让LED显示屏显示出汉字。因为LED显示屏掌握的技术当中就包含有动态扫描的技术,所以此次设计便是采用LED显示屏的动态扫描技术的方式。对于LED显示屏的动态扫描通常由分为两种,一种逐行扫描一种是逐列扫描。逐行扫描方式就是将每一行的列数据送出进行锁存,然后逐位点亮熄灭,一直扫描完16行之后,又重新扫描第一行。逐列扫描的方式就是先送出16×16显示屏16列中第一列的发光二极管数据将之锁存,而后选通之后依次点亮一位之后熄灭在点亮另一位,之后在进行第二列数据的送出。虽然每一位的二极管不会同时点亮,每次只能显示一位,但是每一位点亮又熄灭之后都会有余晖,而且扫描完16列的时间是极其短的,而且在一秒中之内能扫描很多次,所以在人的视觉中,看到的仍然是一个完整的字体,本设计使用的是逐列扫描的方式。传输数据的方法是LED显示屏技术当中的串行传输的方式,将数据每一位每一位的送往驱动器中,引线的数量用得比较少,这样就降低了成本,耗能也随着减少了。3.3.3LED显示屏点阵的移动让LED显示屏中字符移动的方法其实并不少,因为此次设计使用的是列扫描的方法,所以在这里介绍两种列扫面的字符移动的方法。方法一:这个方法主要是在用单片机汇编语言的情况下使用的,这种方法是通过数组的延长来实现的。在开始第一次扫描的时候,从第一列开始每行送出行数据,一直到第十六列,当第一次扫描完之后便开始第二次扫描,但是第二次扫面的时候,便是从第二列开始每行送出行数据,一直扫描到第十七列,这里的第十七列其实就是第一列的数据,以此类推,第三次扫描就从第三列开始扫描起,以此便会在人的视觉中是正在左移的效果。假如一个字的字形编码是00H、01H、02H、03H、04H、05H、04H、08H、09H,那么扫描完第一次之后,第二次扫描出来的字形编码便是01H02H、03H、04H、05H、06H、07H、08H、09H、00H,这样便可以实现字符的做移动效果。方法二:第二种方法则是适合用c语言来编写实现。这种方法通常是能够实现字符的循环移动,这里拿左移动来进行阐述,就是使用c语言程序编写一个数组中数据的循环左移动子程序,在第一次调用这个子程序的时候字符便会循环左移一次,调用的方式是通过主程序来实现调用。还有一种方式是通过控制变量来实现字符的移动,因为本设计使用的方法是编写子程序的方法,所以不多加阐述。此次设计使用的方法是方法二,通过c语言程序来编写循环移动的子程序,在通过主程序来进行调用,两种方法都是使用左移动来说的,但是其他移动方式的方法大同小异,都是在这两种方法的基础上完成的。3.4字模的提取在字模的提取中,因为单片机的每部分端口或者总线是只有8位的,但是我们的LED显示屏是16×16的点阵显示屏,不能直接一列一列直接将字模代码显示出来,所以便是需要将之拆分开来,将16×16的LED显示屏拆分成两部分,上面一块8×16的LED显示屏,下面同样也有一部分8×16的LED显示屏。在此处,我们拿仲恺的仲字来说明字模代码的提取是如何提取的,16×16LED显示屏的仲字显示图如下图3.13所示:图3.13仲字模型字模代码提取的方式就是从第一列开始,上半部分从上至下8位分别是P0—P7,从图中的仲字看去,上半部分的第一列8位都没有亮,便可以看作为二进制中的00000000,转换成字模代码就是0x00,上半部分扫描完成便可扫描下半部分,下半部分的从上至下8位分别是P2.7—P2.0,这时候我们看图中的仲字,可以看出P2.7那个位是亮的,其他位都没有亮,则可以看成二进制中的10000000,转换成字模代码就是0x80,以此类推我们便可以很快的算出第二列上半部分的字模代码是0x01,下半部分的字模代码就是0x00,所以按照此方法,我们最后得出仲恺的仲字的字模代码就是:0x00,0x80,0x01,0x00,0x06,0x00,0x1F,0xFF,0xE0,0x00,0x0F,0xF0,0x08,0x20,0x08,0x20,0x08,0x20,0xFF,0xFF,0x08,0x20,0x08,0x20,0x08,0x20,0x0F,0xF0,0x00,0x00,0x00,0x00,/*"仲",0*/在输入我们需要的显示内容的时候,一般都会输入两个空字节进去,为了在显示屏显示出内容的时候进行一定时间的缓冲,一个原因是因为没有缓冲的时间的话可能会造成LED点阵显示屏的损坏,另一个原因是没有缓冲时间可能会因为一出现内容就直接向左移动或者向右移动,从而造成视觉上的不舒适。空字节代码如下所示:0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,这种方法很简单,利用这种方法原理,我们不管是文字或者图像或者要LED显示屏显示得其他东西,都可以很轻松的得出字模代码,但是如果字数量很大的话靠人为的运算难免会浪费大量的时间,所以在网上有很多现成得字模软件,我使用的字模软件名字叫做PCtoLCD2002,如下图3.14所示,但是在取模过程中,我们也要设置一些东西,比如我们此次设计用到的扫面方式是列扫描的方式,所以在设置字模选项的时候要选取逐列式,并且输出数制是十六进制数,在选取的格式中,因为我们设计使用的是c语言的程序设计,所以我们要选择c51的格式,并且删除行前缀,如图3.15所示:图3.14字模软件图图3.15字模软件设置图4.系统软件的设计4.1主程序框图的设计此次设计的程序流程主要是:首先设计清屏程序实现清屏效果,然后是循环左移的显示第一段字模代码内容,然后便是有着四个按键功能模块的设计。四个按键模块的第一个是暂停键,按下这个按键就会实现LED显示屏上内容显示过程中任意位置突然停止不动的效果,第二个按键是方向切换键,按下这个按键将会实现原本循环左移动的显示效果变成循环右移动,第三个按键是显示内容的切换键,这个按键按下之后会实现LED显示屏上显示内容的切换,本设计一共设计了三段字模内容,所以会实现三段内容间的相互切换,最后一个按键时复位按键,在任意显示效果的时候复位都会恢复到循环左移动显示第一段内容的状态。主要流程如下流程框图4.1所示:图4.1主程序流程框图4.2各部分程序的设计4.2.1延时程序的设计本设计的全部程序都是通过keiluVision4软件进行编写。延时程序的运用在单片机中是相当广泛的,基本上的电子设备程序中都会有相应的延时子程序,同如其名,延时子程序的主要功能便是延时,在本次设计中的主要功能是使LED显示屏中的文字在显示移动的时候都有一小段的时间间隔,用了延时子程序之后的移动速度会让人看起来比较舒服,速度刚刚好。延时子程序的代码主要有下所示:voiddelay(unsignedintz)//延时子函数{unsignedcharx;for(;z>0;z--)for(x=110;x>0;x--);}4.2.2按键模块程序的设计在这次设计过程中,除了复位电路以外,我总共采用了三个按键来帮助控制LED显示屏的显示,第一个是暂停按键,这个按键可以实现LED显示屏在显示的时候实现随时暂停,不管是显示完整的一个汉字或者不是一个完整的汉字都可以;第二个取反按键,这个按键可以实现LED显示屏中的内容在循环左移的情况变成循环右移,当然同样可以将循环右移动的情况下变成循环左移;第三个内容切换按键,这个按键主要实现的是将LED显示屏显示的内容随时地进行切换,本设计一共可以实现三段内容的相互切换。按键模块功能实现的流程图如下图4.2所示:图4.2按键模块流程图以下这段子程序的作用是提取出三段内容的字模代码:for(i=0;i<16;i++)//循环移位{//两片138组成的4-16线译码器P2=i;//列数据驱动,138的驱动端口if(fx==0)//正向移动{if(duan==0)writedata(tab[net+aa],tab[net+aa+1]);//写入第一段正向移动显示的数据if(duan==1)writedata(tab2[net+aa],tab2[net+aa+1]);//写入第二段正向移动显示的数据if(duan==2)writedata(tab4[net+aa],tab4[net+aa+1]);//写入第三段正向移动显示的数据}if(fx==1)//反向移动{if(duan==0)writedata(tab1[net+aa],tab1[net+aa+1]);//写入第一段反向移动显示的数据if(duan==1)writedata(tab3[net+aa],tab3[net+aa+1]);//写入第二段反向移动显示的数据if(duan==2)writedata(tab5[net+aa],tab5[net+aa+1]);//写入第三段反向移动显示的数据}delay(3);//延时writedata(0,0);//清屏aa+=2;//数据加实现扫描if(aa>30)aa=0;//循环16次清零}}}以上字模代码中,当tab等于0的时候提取出第一段左移动字模内容,等于2的时候提取第二段左移动字模内容,等于4的时候提取第三段左移动字模内容,同理可得,当tab等一1、3、5的时候,便会提取第一到第三段的右移动字模内容,这段子程序主要会受到按键模块主程序地调用。4.2.3特效显示程序设计本次设计要实现的特效显示是从单片机一启动开始,当主程序判断是左移动的方式之后,LED显示屏的显示内容便开始无限循环左移,显式初始化之后,程序进入判断阶段,判断是否中断并且判断是否进行某种按键的功能,如上面所说的,如果判断是否取反按键的结果是YES的话,则回到显式初始化阶段,并且方向取反,变成循环右移动。那么显示模块是怎么样接收到数据进行显示的呢,本次设计数据的送出主要是通过单片机送出数据到74HC595移位寄存器中,接收到数据的移位寄存器会将数据进行锁存,上电打开自锁开关之后,移位寄存器会送出行信号跟列信号,每次送出16×16中的一个,这样循环16次便能够完成一个汉字的输出,因为一列信号或者一行信号的输出时间很短,很快便能够完成16个数据的输出,所以在人的视角下,是看不出来有很大的区别的,左移动和右移动也是如此,单片机会将移位之后的数据送入到移位寄存器内,然后再由移位寄存器送出。实现显示的主要步骤流程图和设计程序如下图4.3和4.4所示:图4.3显示步骤流程图图4.4数据显示程序图以上便是系统软件设计的全部内容,主要流程便是如流程框图所示,整个设计想要实现的流程是,利用上位机使用STC下载器将程序代码下载进入到STC89C52RC单片机内,然后打开电源之后便是会运转主程序调用子程序使每个硬件模块发挥自己的作用,有了74HC595移位寄存器和两片74HC138译码器提高驱动能力,LED显示屏便能够成功显示自己编辑的内容,并且通过按键模块进行实现暂停、方向取反、内容切换的功能。系统的调试与仿真5.系统的调试与仿真5.1系统软件的调试软件的调试其实就是各模块程序的调试,就是检测程序有没有错误,能不能实现你写代码想要实现的功能。因为本次设计编写程序使用的是c语言程序,所以我们可以使用Keil软件来进行编写。使用此软件之前需先创建一个工程文件,用来进行程序的编写,创建过程中会出现一个选择单片机型号的过程,因为我们设计使用的是STC89C52RC单片机,故选择STC89C52RC型号单片机。创建好之后便可以开始进行程序的编写,在编写过程中我们还可以分模块编写,每个模块都可以用主模块进行调用,我们每编写好一段程序便可以用keil进行编译查看是都有出现错误,每条程序的后面都可以标上注释以便别人理解,如图5.1所示。在整段程序都编写完成后再次编译,确定无误后即可保存出后缀名为.HEX的文件。图5.1keil软件程序设计图5.2系统实物和proteus的测试与仿真5.2.1实物总体概述本次设计主要包括单片机模块、按键模块、驱动模块和显示模块,还有各种小器件如开关、电阻电容、晶振等。其中按键模块有四个按键,驱动模块中有两片74HC595移位寄存器和两片74HC138译码器,显示模块是由四块8×8LED点阵显示屏组合而成的16×16显示屏,主要的实现流程是通过电脑上位机将程序通过STC下载器录入到单片机模块中,然后单片机将数据送出到74HC595移位寄存器中,两片移位寄存器刚刚好有16位输出口,然后移位寄存器将数据送入到显示模块中,然后通过驱动模块驱动LED显示屏使其达到显示要求完成显示。准备好各种元器件之后,通过电路原理图将其一点点焊接起来,如5.2跟图5.3所示:图5.2实物成品图图5.3实物背面焊接图5.2.2实物功能演示(1)移动功能的测试刚上电开启开关的时候,显示模块会一直循环左移动的显示第一段内容,内容为“仲恺农业工程学院”。如图5.4所示:图5.4左移动测试左移动测试完成之后,按下方向取反的按键,实现内容的右循环移动功能,如图5.5所示,设计的三段内容全部都可以右移动。图5.5右移动测试(2)暂停功能的测试按键模块当中有个暂停按键,可以在显示内容在任意位置的时候进行暂停,如下图5.6所示,图中显示的内容是左移动时候的第一段内容,不管是第几段内容或者是右移动中的任意一段内容,都可以实现任意位置的暂停。图5.6暂停测试(3)内容切换功能的测试此次设计中一共有三段内容可以显示,内容切换按键每次按下都会切换一次内容,其中第一段内容是“仲恺农业工程学院”,第二段内容是“机电工程学院”,第三段内容是“毕业设计答辩”,如下图所示5.7和5.8所示第二段和第三段内容:图5.7第二段内容显示测试图5.8第三段内容显示测试在移动测试中,三段内容同样都可以进行右循环移动。这些便是此次设计的大致功能,总体功能流程是显示模块显示设计内容,按键模块进行方向以及显示内容之间的切换,同时还有暂停和复位的功能。此次设计实物完成的主要难点在于各元器件和线之间连接以及焊接,很容易造成失误,所以需要很细心的去做。5.2.3Proteus软件的仿真我们仿真可以用到的软件是Proteus,要成功进行仿真我们就要学会使用,首先我们要根据自己的元器件在器件库里面找的相对应的元器件,并按照电路原理图一一接线。接线过程中我们可以挪动各模块的位置,这样可以更方便的进行界限,完成之后我们双击任意一个元器件,在ProgramFile这个名称的地方选择我们自己编译的程序文件,确认之后便可以开始进行仿真,如未能正常显示出设计的内容,则检查一下接线和元器件是否有选择错误。具体接线图

温馨提示

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

评论

0/150

提交评论