武汉理工大学《集成电路课程设计》说明书基于单片机的LED广告牌设计班级电子2班姓名秦地学号0902214075成绩一、设计背景LED显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。它具有发光效率高、使用寿命长、组态灵活、色彩丰富以及对室内外环境适应能力强等优点。并广泛的应用于公交汽车,码头,商店,学校和银行等公共场合的信息发布和广告宣传。LED显示屏经历了从单色,双色图文显示屏到现在的全彩色视频显示屏的发展过程,自20世纪八十年代开始,LED显示屏的应用领域已经遍布交通、电信、教育、证券、广告宣传等各方面。二、任务要求设计一个简易的LED广告牌,用于显示自己的名字或其它个性信息。显示的字符用LED发光二极管排列成固定形状,在控制电路驱动下各字符轮流循环点亮。或者用LED点阵显示,显示内容可更新。汉字一般是以点阵式方式存储的,如16×16,24×24点阵。汉字的字模其实是汉字字形的图形化。所谓16点阵字模,就是把汉字写在一个16×16的网格内,汉字的笔划通过某网格时该网格就对应1,否则该网格对应0,这样,每一网格均对应1或0,把对应1的网格连起来看,就是这个汉字。汉字就是这样通过字节表示其点阵存储在字形中的。为了方便查找所需要汉字的点阵,每个汉字都与一个双字节的内码相对应。通过汉字的内码可以计算出它的点阵起始字节。三、整体设计方案如图所示,本设计通过单片机来控制行列驱动器使LED显示屏显示出汉字,单片机选用AT89C52芯片,行驱动器采用74HC154的P0口,列驱动器选用74HC595芯片。该系统主要由AT89C52芯片、电源、行驱动器、列驱动器、16×64LED点阵5部分组成。武汉理工大学《集成电路课程设计》说明书1图3-1系统电路框图四、硬件设计4.1系统硬件概述整个电路由单片机89C51,8个74LS373,1个74HC154,1个74LS138,4个16×16的LED。该电路所设计的电子屏可显示多个汉字,需要4个16×16LED点阵模块,可组成16×64的条形点阵。AT89C51是一种带4KB可编程可擦除只读存储器的低电压,高性能微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51引脚即外观如图3.1所示。单片机行驱动器列驱动器LED显示点阵…………武汉理工大学《集成电路课程设计》说明书2图4.1AT89C51的管脚图译码器是组合逻辑电路的一个重要的器件,74LS138的输出是低电平有效,故实现逻辑功能时,输出端不可接或门及或非门,74LS138与前面不同,其有使能端,故使能端必须加以处理,否则无法实现需要的逻辑功能。发光二极管点亮只须使其正向导通即可,根据LED的公共极是阳极还是阴极分为两类译码器,即针对共阳极的低电平有效的译码器;针对共阴极LED的高电平输出有效的译码器。74LS373是低功耗肖特基TTL8D锁存器,内有8个相同的D型(三态同相)锁存器,由两个控制端(11脚G或EN;1脚OUT、CONT、OE)控制。当OE接地时,若G为高电平,74LS373接收由PPU输出的地址信号;如果G为低电平,则将地址信号锁存。工作原理:74LS373的输出端O0—O7可直接与总线相连。当三态允许控制端OE为低电平时,O0—O7为正常逻辑状态,可用来驱动负载或总线。当OE为高电平时,O0—O7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。当锁存允许端LE为高电平时,O随数据D而变。当LE为低电平时,O被锁存在已建立的数据电平。74LS373引脚即外观如图3.2所示武汉理工大学《集成电路课程设计》说明书3图4.274LS373引脚图74HC154为4线-12线译码器,当选通端(G1、G2)均为低电平时,可将地址端(ABCD)的二进制编码在一个对应的输出端,以低电平译出。若将G1和G2中的一个作为数据输入端,由ABCD对输出寻址,还可作1线-16线数据分配器。工作环境温度为0~70℃,对社会的要求非常适合。所以LED的抗震性能好该电路的显示采用逐行扫描方式。工作时,由单片机取出第一行需要显示的内容经延时一段时间后再进行下一行点阵数据的显示。需要注意的是,每次只能选通一行数据,即要通过不断的逐行扫描来实现汉字或字符的显示。4.216×16LED点阵显示制作4.2.116×16LED点阵的内部结构及工作原理以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。即国家标准汉字库中的每一个字均由256点阵来表示。我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字,也可以显示在256像素范围内的任何图形。这里我们以”高”字说明,如图3.3所示。图3.316*16LED汉字显示用8位的AT89C51单片机控制,由于单片机的总线为8位,一个字需要拆分为2个部分。一般把它拆分为上部和下部,上部由8×16点阵组成,下部也由8×16点阵组成。在本例中单片机首先显示的是左上角的第一列的上半部分,即第0列的p00—p07口。方向为p00到p07,显示汉字”高”时,p02点亮,由上往下排列,为p0.0灭,p0.1灭,p0.2亮,p0.3灭,p0.4灭,p0.5灭,p0.6灭,p0.7灭。即二进制00000100,转换为16进制为04h。上半部第一列完成后,继续扫描下半部的第一列,为了接线的方便,我们仍设计武汉理工大学《集成电路课程设计》说明书4成由上往下扫描,即从p27向p20方向扫描,从上图可以看到,这一列全部为不亮,即为00000000,16进制则为00h。然后单片机转向上半部第二列,仍为p01点亮,为00000100,即16进制04h.这一列完成后继续进行下半部分的扫描,p20点亮,为二进制00000010,即16进制02h.依照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字“高”的扫描代码为:02h,00h,01h,04h,0FFh,0FEh,00h,00h,1Fh,0F0h,10h,10h,10h,10h,1Fh,0F0h,00h,04h,7Fh,0FEh,40h,04h,4Fh,0E4h,48h,24h,48h,24h,4Fh,0E4h,40h,0Ch。由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出它的扫描代码从而显示在屏幕上。不过现在有很多现成的汉字字模生成软件,就不必自己去画表格算代码了。4.2.2用8×8LED点阵构成16×16LED点阵Proteus中只有5×7和8×8等LED点阵,并没有16×16LED点阵,而在实际应用中,要良好地显示一个汉字,则至少需要16×16点阵。下面我们就首先介绍使用8×8点阵构建16×16点阵的方法,并构建一块16×16LED点阵。首先,从Proteus7.1的元件库中找到“MATRIX-8X8-RED”元器件,并将四块该元器件放入Proteus文档区编辑窗口中。右边8个引脚是其列线(当然,如果你是将右转,则右边8个引脚是行线)。然后将四个元器件对应的行线和列线分别进行连接,引脚接一行16个LED,列线也相同。并注意要将行线和列线引出一定长度的引脚,以便下面我们使用。连接好的16×16点阵如图3.4所示。如上图的16×16点阵只是第一步,这样分开的数块并不能达到好的显示效果,下面我们要将其进一步组合。组合实际上很简单,首先选中如上图中右侧的两块8×8点阵,然后拖动并使其与左侧的两块相并拢,如图3.5所示。图4.4点阵模块组合武汉理工大学《集成电路课程设计》说明书5图4.5与左侧的两块相并拢可以看到原来的连线已经自动隐藏了,至于线上的交点,我们不要去动。然后,我们再来最后一步,选中下侧的两块点阵,并拖动使其与上侧的两块并拢,最后的效果如图3.6所示。看到,原来杂乱的连线现在已经几乎全部隐藏了,一块16×16的LED点阵做成了。需要注意,做成的LED点阵的行线为左侧的16个引脚,下侧的16个引脚为其列线,而且其行线为高电平有效,列线为低电平有效。然后,我们将其保存,以便以后使用。图4.6最后的效果图4.3主控单片机的接口说明P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复制用口,作为输入口时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写入“1可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期激活内部上拉电阻。在Flash编程时,PO口接收指令节,而在程序校检时,输出指令字节,校检时,要求外接上拉电阻。P1口:P1口是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口时,因为内部存在上拉电阻,某个引脚武汉理工大学《集成电路课程设计》说明书6被外部信号拉低时会输出一个电流I。Flash编程和程序校检期间,P1接收低8位地址。P2口:P2口是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流I。在访问外部数据存储器或16位地址的外部数据存储(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中R2寄存器的内容),在整个访问期间不改变。Flash编程和校检时,P2亦接收高位地址和其他控制信号。P3口:P3口是一个带内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作输入端口,作输入端时,被外部拉低的P3口将用上拉电阻,输出电流I。P3口还接收一些用于Flash闪速存储器编程和程序校检的控制信号。RST:复位输入,当震荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于所存地址的低8位字节。即使不访问外部存储器,ALE乃以时钟振动频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。4.4LED显示驱动电路LED显示驱动电路如图4.7所示。武汉理工大学《集成电路课程设计》说明书7图4.7显示驱动电路图5软件设计5.1程序设计总体思路和结构5.1.1程序设计总体思路用简短的汇编程序设计,实现LED点阵显示内容,并使显示的内容在屏幕上从左到右的滚动显示。系统采用模块化结构,包括主程序、延时程序、显示子程序和串行口中断程序。用AT89C51、74LS373、74LS138、74HC154芯片和4个16×16LED点阵显示器构成一个完整的16位点阵LED显示系统。武汉理工大学《集成电路课程设计》说明书85.1.2程序流程图程序主要由开始、初始化、主程序、字库组成。其中主程序和子程序的流程图5.1单片机汉字显示程序流程图图如图5.1所示。武汉理工大学《集成电路课程设计》说明书95.2各模块程序设计5.2.1系统初始化ORG0000HAJMPSTARTORG000BHLJMPTIME0ORG0030HSTART:MOVR1,#00HMOVR2,#00HMOVR3,#00HMOVR4,#00HMOVR5,#00H5.2.2LED动态显示显示要求汉字在显示屏上按从