




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
aaaa广西交通职业技术学院信息工程系作品设计报告书课程名称电子电路设计与制作题 目 16*16汉字点阵显示屏班级电信2011-1班学号 007032姓名 范杰任课老师 韦家正二O一三年一月
目录卩TOC\o"1-5"\h\z摘要 1一、 系统方案选择和论证 1设计要求 1系统基本方案 1主控电路选择 1点阵显示屏部分 1显示屏控制部分 2二、 电路模块的设计与分析 2系统程序的设计 2单片机系统及外围电路 3LED点阵显示 7汉字扫描的原理 8方案的实现 8三、 系统软件设计 9四、 系统测试与分析 11点阵显示屏的仿真与程序调试 11整机测试 12系统主程序 12系统测试结果分析 12五、 设计制作总结 12总结 12\o"CurrentDocument"致谢词 13\o"CurrentDocument"六、 参考文献 13\o"CurrentDocument"附录一:系统主要元件清单 14摘要卩摘要led点阵显示屏作为一种新兴的显示器件,是由多个独立的高亮度的LED发光二极管封装而成。LED点阵显示屏可以显示数字或符号,通常用来显示时间、速度、系统状态等灵活的动态显示。文章给出了一种基于MCS-51/52单片机的16X16点阵LED显示屏的设计方案,包括系统具体的硬件设计方案,软件流程图和汇编语言程序等方面内容。在负载范围内,只需通过简单的级联就可以对显示屏进行扩展,是一种成本低廉、亮度高、工作电压低、功耗小、微型化、易与集成电路匹配、驱动简单、寿命长、耐冲击、性能稳定的图文显示方案。□□AbstractLEDdotmatrixdisplay,asanewdisplaydevice,byanumberofindependenthigh-brightnessLEDlight-emittingdiodepackages.LEDdotmatrixdisplaycandisplaynumbersorsymbols,usuallyusedtodisplaytime,speed,systemstatus,andaflexibledynamicdisplay.Paper,amicrocomputer-basedMCS-51/5216X16dotmatrixLEDdisplaydesign,includingthesystemspecifichardwaredesign,softwareaaaaflowchartsandassemblylanguageprogramsandotheraspects.Withintheloadrange,bysimplycascadingJiuexpansioncanrightdisplayJinXing,isalowcost,highbrightness,lowvoltageGongHaoXiao,miniaturization,YiYuICmatch,QuDongsimple,ShouMinglong,impactresistance,stableperformance,graphicsanddisplayoptions.―、系统方案选择和论证1.1设计要求基本要求:要求点阵显示屏能够显示中文汉字、英文字母、阿拉伯数字等信息。要求点阵显示屏能够显示三角形、矩形等各类简单的图形。要求通过按键进行显示模式(汉字、英文、数字、图形)的切换。要求整个系统只使用两节1.5V的电池进行供电。发挥要求:要求所显示的内容能够实现上、下、左、右的移动功能。移动方向和移动速度(至少分三个等级)可以通过按键进行设置。显示屏能够通过红外遥控的方式进行控制2.1系统基本方案主控电路选择方案一:数字电路控制的原理是LED点阵显示屏由单片机控制电路和显示驱动电路两大部分组成。一般的单片机控制部分采用ATMEL公司的AT89S51/52系列单片机,显示驱动部分由4片8X8LED点阵模块和相应的驱动电路组成,位码扫描信号和段码信号都由单片机提供,并且AT89S52单片机构成的主控电路,支持ISP下载技术,控制操作简单,价格低廉,通用性强。方案二:由CPLD器件组成的控制电路,具有很高的可靠性和设计灵活性,所实现的显示效果样式较多,但采用可编程逻辑器件CPLD的设计成本相对较高。由于采用由单片机组成的控制电路已能完成设计的要求,且其性价比要优于采用由CPLD组成的控制电路。因此,主控电路采用方案一作为控制电路。点阵显示屏部分方案一:串行方式显示。这种方式可同时显示4个8X8汉字点阵的汉字、字符或数字。点阵显示屏每个单元由4个8X8点阵LED显示模块、驱动器74HC154、数据移位寄存器74HC595和行驱动器组成,单元显示屏可以接收控制器(主控制电路板)或上一级显示单元模块传输下来的数据信息和命令信息,并可将这些数据信息和命令信息不经任何变化地再传送到下一级显示模块单元中,因此显示屏可扩展至更多的显示单元,用于显示更多的内容。此方案为点阵显示屏系统中比较常用的,所用器件也比较常用,容易买到。但是它存在一个致命的缺点,就是刷新速度不够快。如果要驱动64列点阵显示,通用51单片机会比较吃力,出现比较严重的闪烁停滞现象。此外,要实现文字的左右移动和调整移动速度等功能,都会给软件设计带来较多困难。方案二:并行方式显示。可以通过锁存器芯片来扩展I/O口,达到控制LED点阵的64个列线的目的。方案中运用16片锁存器74HC154来组成8组双缓冲寄存器。驱动LED点阵的8组列线,移位寄存器74HC595对LED点阵的16行进行扫描。在送每一行的数据到LED点阵前,先把数据分别送到第一级的8个74HC154,然后再给第二级的8个74HC154送锁脉冲,数据一起输出到LED点阵列中,这样就避免了各行数据显示不同步问题。由于并行数据传输速度比串行快,所以字符闪烁的问题得到较好地解决,文字左右aaaa/上下移动也比较容易控制。综上所述,本作品制作最终选择了方案二。2.1.3.显示屏控制部分方案一:单机工作模式。采用一个单片机控制实现所有功能,其中包括LED点阵显示屏的刷新显示、模式选择等。只用一个单片机控制点阵显示屏可以使电路大大减化,软件设计方面也容易实现。但是,将所有功能集成在一起,一片AT89S51/52单片机处理能力是不够的。此时,单片机的CPU内部资源已显不足,会导致系统功能欠佳,达不到较好的性能。方案二:主从工作模式。采用主从单片机工作方式来控制整个系统。其中一个单片机用于控制LED点阵显示,另外一个单片机用于扩展键盘、串口等工作。相对单机工作方式,主从工作模式的处理能力大大提高,并且分工明确,执行速度得到很大的提高。虽然硬件电路以及软件设计方面要求相对高了一些,更涉及到主从单片机通信问题。至此,为了更好地实现各项性能指标,本设计采用了这种方案。二、电路模块的设计与分析2.1.系统程序的设计显示屏软件的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。根据软件分层次设计的原理,可以把显示屏的软件系统分为两层;第一层是底层的显示驱动程序,第二层是上层的系统应用程序。显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和其他控制信号,配合完成LED显示屏的扫描显示工作。显示驱动器程序由定时器T0中断程序实现。系统应用程序完成系统环境设置(初始化)、显示效果处理等工作,由主程序来实现。从有利于实现较复杂的算法(显示效果处理)和有利于程序结构化考虑,显示屏程序适宜采用汇编语言编写。16X16LED显示屏电路大致上可以分成单片机系统及外围电路、列驱动电路和行驱动电路三部分,系统框如下所示:草片机-|矶草片机-|矶2.2.单片机系统及外围电路单片机采用MSC-51或其兼容系列芯片,采用12MHZ或更高频率晶振,以获得较高的刷新频率,使显示更稳定。
RP1PD.DJAOjP0.2.WEP0.3ZW3PD.4.纣耳PU.5.W6pc.e/<ePU2顷39Lj2'RP1PD.DJAOjP0.2.WEP0.3ZW3PD.4.纣耳PU.5.W6pc.e/<ePU2顷39Lj2'33L1漑:37—124L351.4634L5■7~ir~■,s■■站.■-L7Q1关P2.Li7.tf:P2.1泗P2.2/A1DP2.3/A11P2.4/A12P2.6/A13P2.6/A14P2.7/A15P,上非山口P3.1/THDP3.2jTCiP3.3/imP3.4-1DP3-5."TI亟P3.7.-RD101617IDu1213El0C:i74154<TE-:T4.7K23'rr-显示驱动程序在进入中断后首先要对定时器TO重新赋初值,以保证显示屏刷新率的稳定,1/16扫描显示屏的刷新率(帧频)计算公式如下:刷频率(帧频)=1/16X=1/16Xf/12(65536-t)其中f位晶振频率,七为定时器T。初值(工作在16位定时器模式)。然后显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。为消除在切换行/列显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消隐。等显示数据打入输出锁存器并锁存,然后再输出新的行/列号,重新打开显示。aaaa图1显示驱动程序流程图图2显示驱动电路2.3.LED点阵显示从下图5LED内部结构可以看出,8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置。电平,则相应的二极管就亮。对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:一根竖柱:对应的列置1,而行则采用扫描的方法来实现。一根横柱:对应的行置0,而列则采用扫描的方法来实现IjzSj卜IJCD.I貝, MJ" «V.―FrG■■ I~M~1h.Jh.. —~~n1~f*",k*-j-#-■4*.■■■,知f,4\n»-■1■\r»~r•1j■IR\n^■l«r.-:rd*-■■■n*-1r^11AnF"p,一士■■■:*・・lLcitL7十■hlIR“—wmiI¥■'ll「wI_H_-■w-■FPdF■npji『X j1!■M(r?-■Ul■A■1H1 mi11s1■H(r^\8X8点阵LE隋效电路图5LED内部结构LED点阵选用8x8模块,每2块排列成一个16x16的点阵,用于显示一个汉字。点阵每一行的所有LED共阴极,每一列的所有LED共阳极。因为单片机I/O口的驱动能力有限,所以每一行LED阴极通过一个三极管9012(或者8550)与电源相连,I/O口仅需要提供几个毫安的灌入电流即可控制其通断。同一行汉字字模(即12个字节)通过锁存器74HC154并行送出后,由移位寄存器74HC595输出行选通信号,来点亮该行的LED,接着再送下一行数据,再选中下一行有效,直到16行全被扫描过一遍。至此,一幅完整的文字信息就显现出来,然后按这种方式反复扫描,借助于程序的控制,即可实现信息从右至左aa(或者从上至下)的ZLED行扫描,
列顺序输出妈表延时以控制豆示斂巣(或者从上至下)的ZLED行扫描,
列顺序输出妈表延时以控制豆示斂巣循环处理听示。图6实验程序框图2.4.汉字扫描的原理汉字扫描显示基本过程是这样:通电后由于电阻,电容的作用,使单片机RST复位脚电平先高后低,从而达到复位。之后,在电阻、电容、晶振以及单片机内部时钟电路作用下,单片机89C51/52按照设定程序在P1和P3接口输出与内部汉字对应代码电平送至LED点阵行选线(高电平驱动),同时在P1.0,P1.1,P1.2,P1.3接口输出列选扫描信号(低电平驱动),从而选中相应象素LCD发光,并利用人眼视觉暂留特性合成整个汉字显示。以UCDOS中文宋体字库为例,每一个字由16行16列点阵组成显示。即国标汉字库中每一个字均由256点阵来表示。我们可以把每一个点理解为一个象素,而把每一个字字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字,也可以显示在256象素范围内任何图形。如查用8位AT89C51/52单片机控制,由于单片机总线为8位,一个字需要拆分为2个部分首先通过列扫描方法获取汉字代码。汉字可拆分为上部和下部,上部由8X16点阵组成,下部也由8X16点阵组成。汉字点阵显示一般有点扫描、行扫描和列扫描3种。为了符合视觉暂留要求,点扫描方法扫描频率必须大于16X64=1024Hz,周期小于1ms即可。行扫描和列扫描方法扫描频率必须大于16X8=128Hz,周期小于7.8ms即可,但是一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。aaaa2.5.方案的实现从理论上说,不论显示图形还是文字,只要控制组成这些图形或文字的各个点所在的位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。16x16的点阵共有256个发光二极管,显然单片机没有这么多的端口,如果采用锁存器来扩展端口,按8位的锁存器来计算,16x16的点阵需要256/8=32个锁存器。这个数字很庞大,因为我们仅仅是16x16的点阵,在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。因此在实际应用中的显示屏几乎都不采用这种设计,而采用另外一种称为动态扫描的显示方法。动态扫描的意思简单地说就是逐行轮流点亮。这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套驱动器。具体就16x16的点阵来说,把所有同1行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳极的接法),先送出对应第1行发光管亮灭的数据并锁存,然后先通第1行使其燃亮一定时间,然后熄灭;再送出第2行的数据并锁存,然后先通第2行使其燃亮相同的时间,然后熄灭;以此类推,第16行之后,又重新燃亮第1行,反复轮回。当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能够看到显示屏上稳定的图形。采用扫描方式进行显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。从控制电路到列驱动器的数据传输可以采用并列方式或串行方式。显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。当列数很多时,并列传输的方案是不可取的。采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都以传输到位之后,这一行的各列才能并行地进行显示。这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两部分。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下留给行显示的时间就太少了,以致影响到led的亮度。解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。即在显示本行各列数据的同时,传送下一列数据,为了达到重叠处理的目的,列数据的显示就需要具有所存功能。经过上述分析,就可以归纳出列驱动器电路应具有的功能。对于列数据准备来说,它应能实现串入并处的移位功能;对于列数据显示来说,应具有并行锁存的功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。三、系统软件设计卩系统的软件程序由汇编程序语言编写,使用VW(伟福)编译环境,详细的程序流程图发如下图7所示,模式如图8所示:< DI系统君始化
疝釘一—,读取显示的内客送扫描脉冲送显示的点阵敎图7程序流程图J显示效果选择,,丨/、+§静左上打下字定移移显时动动示显显显示 示示i返回主程序图8模式选择aaaa四、系统测试与分析4.1点阵显示屏的仿真与程序调试protues是一款比较常用的单片机仿真软件,许多仿真与实际电路非常相似。为了尽可能确保实际电路能达到预期的效果,减少无用功,要对许多电路模块的方案进行了仿真。对点阵显示的处理与相应程序设计,可以使用protuesl进行仿真,旨在改善提高整机系统的硬件与软件方案,提高系统运行效率与稳定性。在点阵显示方式的方案选择上,通过不断修改程序与串行电路接法后发现串行方式很难实现字幕的右移功能,调整字幕移动的速度也不方便。经过分析,决定试用并行方式显示,结果发现这种方式电路不算复杂,并且给程序设计带来很多便利,特别是便于实现字幕的左右移动与移动速度的设定。本系统仿真电路如图9所示。aaaaRP-119::CTRL2RSTPDB'ftEiDPn.I.WEH叩22WD2叫一龄KPEL职[UPD.^.[i5PD.mCiSPD.7JWO732PSENALE畐MRT2H.1.T2E;1;:M2M.3M.iM方MJ6M.TPWRP-119::CTRL2RSTPDB'ftEiDPn.I.WEH叩22WD2叫一龄KPEL职[UPD.^.[i5PD.mCiSPD.7JWO732PSENALE畐MRT2H.1.T2E;1;:M2M.3M.iM方MJ6M.TPW口牌FEMMP22W0P23W11P2.4JW12P2J5mi3P2.7XA15P3H'RXDpn.imppjaitiTD-Pl^'lNTrPMTO卩輸~n叮丘,.匝P3.TJFD21222435穿38Is15ITg哄:其-=TE:cT^-HRH0rH12冷AB-GD□123€567I—I口_y□123L-5-=TB-:T=-图9仿真电路图4.2整机测试把编译器生成的代码—HEX文件下载到单片机Flash中,连接好各个模块,将LED点阵显示屏的功能逐一测试实现。4.3系统主程序#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintucharjj,k,m,n,i,j,kk,temp[2],mode_down,mode_up,mode_left,mode_right;uchara,b,c,A0,Al,A2,A3,Dl,D2,D3,mode;sbiten=P2A7;//使能端sbitflag_up=卩3人3;//上移sbitflag_down=卩3人4;//下移sbitflag_left=P3A5;//左移sbitflag_right=P3A6;//右移sbitkey_ting=P3A7;//切换ucharcodezi[4][128]={{0x08,0x04,0x08,0x04,0x08,0x04,0x08,0x04,0xBF,0x7F,0x08,0x04,0x08,0x06,0x1C,0x0E,0x2C,0x0D,0x2A,0x15,0x8A,0x14,0x49,0x64,0x28,0x24,0x08,0x04,0x08,0x04,0x08,0x04},/*”林”,0*/{0x08,0x00,0x08,0x70,0xE8,0x0E,0xBF,0x08,0x88,0x08,0x48,0x08,0x58,0x7E,0xEC,0x09,0x0B,0x09,0x98,0x08,0xA8,0x08,0x48,0x3E,0xC8,0x00,0x28,0x01,0x1A,0x7E,0x04,0x00},/*,挺”,1*/{0x20,0x04,0x20,0x04,0xFF,0x7F,0x20,0x06,0x02,0x00,0x8C,0x1F,0x89,0x10,0x86,0x10,0x92,0x10,0x90,0x1C,0x88,0x08,0x87,0x00,0x84,0x20,0x84,0x20,0x04,0x3F,0x04,0x00},/*”范”,2*/{0x80,0x00,0x80,0x00,0x80,0x00,0xFE,0x3F,0xC0,0x01,0xC0,0x02,0xA0,0x04,0x90,0x18,aaaa0x88,0x70,0x86,0x20,0x80,0x00,0x00,0x00,0xl2,0xll,0x22,0x22,0x21,0x22,0x00,0x00}};/*”杰",3*/ucharcodeshu[8][64]={{0x00,0x00,0x00,0x7E,0x02,0x02,0x02,0x1A,0x26,0x40,0x40,0x42,0x22,0x1C,0x00,0x00},/*”5”,0*/{0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x20,0x20,0x10,0x08,0x04,0x42,0x7E,0x00,0x00},/*”2”,1*/{0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00},/*”0”,2*/{0x00,0x00,0x00,0x00,0x7F,0xFE,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x7F,0xFE,0x00,0x00,0x00,0x00},{0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x80,0x04,0x40,0x08,0x20,0x10,0x10,0x20,0x08,0x40,0x04,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}};/*”4”,3*/ucharcodemu[8][48]={{0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xl0,0xlC,0xl0,0x2A,0xl0,0x49,0xl0,0x08,0xl0,0x08,0xl0,0x08,0x92,0x08,0x54,0x08,0x38,0x08,0xl0,0x00,0x00,0x00,0x00,0x00,0x00},{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x60,0xll,0xl0,0x10,0x10,0x10,0x10,0xl0,0xl0,0x08,0x20,0x04,0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*”心形”,0*/{0x00,0x00,0x00,0x3F,0x42,0x12,0x12,0x1E,0x12,0x12,0x02,0x02,0x02,0x07,0x00,0x00},/*",。*/{0x00,0x00,0x00,0x07,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x42,0x7F,0x00,0x00}};/*”L”,l*/ucharcodetuxing[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x04,0x80,0x08,0x40,0x10,0x20,0x20,0x10,0x7F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//延时程序 voiddelay(uintt)while(t--);}//*************************voidkeyscan(){if(flag_down==0) //下移{delay(1000);if(flag_down==0){while(flag_down==O);mode_down=l;mode_up=O;mode_left=O;mode_right=0;}}if(flag_up==0) //上移{delay(1000);if(flag_up==0){while(flag_up==0);mode_up=1;mode_down=0;mode_left=0;mode_right=0;}}if(flag_left==0) //左移{delay(1000);if(flag_left==0){while(flag_left==0);mode_left=1;mode_up=0;mode_down=0;mode_right=0;}}if(flag_right==0) 〃右移{delay(1000);if(flag_right==0){while(flag_right==0);mode_right=1;mode_up=0;mode_down=0;mode_left=0;}}if(key_ting==0)delay(1000);if(key_ting==0){while(key_ting==0);mode++;if(mode==4){mode=0;}}}}//*******************************voidshift_R()//右移函数{bitlbit;lbit=temp[1]&0x01;//保存最低位temp[1]=temp[1]>>1;//右移一位temp[1]+=temp[0]v<7;temp[0]=temp[0]>>1;if(lbit)temp[0]+=0x80;}/*****************************************aaaavoidshift_L() //左移函数{bithbit;hbit=temp[0]&0x80;//保存最高位temp[0]=temp[0]<<1;temp[0]+=temp[l]>>7;temp[1]=temp[1]<<1;if(hbit)temp[1]+=0x01;}// T0初始化函数 voidinit_T0(){TMOD=0x01;TH0=-10000/256;TL0=-10000%256;EA=1;ET0=1;TR0=1;}//***********************************main(){
while(1)keyscan();for(A0=0;A0<16;A0++)if(mode_down==1)if(mode==1)for(i=0;i<16;i++)//for(i=0;i<16;i++)//行扫描循环扫描16行temp[0]=shu[c][i];//[2*i]表示每一列是temp[0]=shu[c][i];//[2*i]表示每一列是16位(刚好~1个字节)temp[1]=shu[2*c][i];P1=temp[0];〃高8P1=temp[0];〃高8位P0=temp[1];//低八位en=0;en=0;P2=(a+i)%16;〃下P2=(a+i)%16;〃下移delay(100);en=1;elseif(mode==2){for(i=0;i<16;i++) 〃行扫描循环扫描16行temp[O]=mu[c][i];//[2*i]表示每一列是16位(刚好~1个字节)temp[1]=mu[2*c][i];P1=temp[0]; //高8位P0=temp[1]; //低八位en=0;P2=(a+i)%16; 〃下移delay(100);en=1;}}elseif(mode==3){for(i=0;i<16;i++) //行扫描循环扫描16行temp[0]=tuxing[2*i];//[2*i]表示每一列是16位(刚好~1个字节)temp[1]=tuxing[2*i+1];P1=temp[0]; //高8位P0=temp[1];//低八位en=0;P2=(i+a)%16;〃上移delay(100);en=1;}}else{for(i=0;i<16;i++) 〃行扫描循环扫描16行{temp[0]=zi[c][2*i];//[2*i]表示每一列是16位(刚好~1个字节)temp[1]=zi[c][2*i+1];P1=temp[0]; 〃高8位P0=temp[1]; //低八位en=0;P2=(a+i)%16; 〃下移delay(100);en=1;}}}elseif(mode_up==1) //上移aaaa{if(mode==1){//行扫描循环扫描//行扫描循环扫描16行temp[0]=shu[c][i];//[2*i]表示每一列是16位(刚好~1个字节)temp[1]=shu[2*c][i];P1=temp[0];//高8位P0=temp[1];//低八位en=0;P2=(i-a)%16;〃下移delay(100);en=1;}}elseif(mode==2){for(i=0;i<16;i++)//行扫描循环扫描16行{temp[0]=mu[c][i];//[2*i]表示每一列是16位(刚好~1个字节)temp[1]=mu[2*c][i];P1=temp[0]; //高8位
P0=temp[1];//低八位en=0;P2=(i-a)%16;〃下移delay(50);en=1;elseif(mode==3)P0=temp[1];//低八位en=0;P2=(i-a)%16;〃下移delay(50);en=1;elseif(mode==3)for(i=0;i<16;i++)//行扫描循环扫描16行temp[0]=tuxing[2*i];//[2*i]表示每一列是16位(刚好~1个字节)temp[1]=tuxing[2*i+1];P1=temp[0];//高8P1=temp[0];//高8位P0=temp[1];//低八位en=0;P2=(i-a)%16;〃上P2=(i-a)%16;〃上移elseelsedelay(100);en=1;for(i=0;i<16;i++) 〃行扫描循环扫描16行{temp[0]=zi[c][2*i];//[2*i]表示每一列是16位(刚好~1个字节)temp[1]=zi[c][2*i+1];P1=temp[0]; //高8位P0=temp[1]; //低八位en=0;P2=(i-a)%16;〃上移delay(100);en=1;}}}elseif(mode_right==1) //右移{if(mode==1){for(i=0;i<16;i++) //行扫描循环扫描16行{temp[0]=shu[c][i];//[2*i]表示每一列是16位(刚好~1个字节)temp[1]=shu[2*c][i];for(kk=a;kk>0;kk--){shift_R();}P1=temp[0]; 〃高8位P0=temp[1]; //低八位en=0;P2=i;delay(100);en=1;}}elseif(mode==2){//行扫描循环扫描//行扫描循环扫描16行{temp[0]=mu[c][i];//[2*i]表示每一列是16位(刚好~1个字节)temp[1]=mu[2*c][i];for(kk=a;kk>0;kk--){shift_R();}P1=temp[0]; //高8位P0=temp[1]; //低八位en=0;P2=i;delay(100);en=1;aaaa}elseif(mode==3){//行扫描循环扫描//行扫描循环扫描16行{temp[0]=tuxing[2*i];//[2*i]表示每一列是16位(刚好~1个字节)temp[1]=tuxing[2*i+1];for(kk=a;kk>O;kk--){shift_R();}P1=temp[0]; //高8位P0=temp[1]; //低八位en=0;P2=i;delay(100);en=1;}}else{for(i=0;i<16;i++)//行扫描循环扫描for(i=0;i<16;i++)//行扫描循环扫描16行temp[0]=zi[c][2*i];//[2*i]表示每一列是16位(刚好~1个字节)temp[1]=zi[c][2*i+1];for(kk=a;kk>0;kk--){shift_R();}P1=temp[0]; 〃高8位P0=temp[1]; //低八位en=0;P2=i;delay(100);en=1;}}}elseif(mode_left==1)//左移{if(mode==1){for(i=0;i<16;i++)//for(i=0;i<16;i++)//行扫描循环扫描16行temp[0]=shu[c][i];//[2*i]表示每一列是16位(刚好~1个字节)temp[1]=shu[2*c][i];for(kk=a;kk>0;kk--){shift_L();}P1=temp[0]; 〃高8位P0=temp[1];//低八位en=0;P2=i;delay(100);en=1;}}elseif(mode==2){for(i=0;i<16;i++) 〃行扫描循环扫描16行{temp[0]=mu[c][i];//[2*i]表示每一列是16位(刚好~1个字节)temp[1]=mu[2*c][i];for(kk=a;kk>O;kk--){shift_L();}P1=temp[0]; //高8位P0=temp[1]; //低八位en=0;P2=i;delay(100);en=1;}}elseif(mode==3)
for(i=0;i<16;i++) 〃行扫描循环扫描16行{temp[0]=tuxing[2*i];//[2*i]表示每一列是16位(刚好~1个字节)temp[1]=tuxing[2*i+1];for(kk=a;kk>O;kk--){shift_L();}P1=temp[0]; //高8位P0=temp[1]; //低八位en=0;P2=i;delay(100);en=1;}}else{for(i=0;i<16;i++)//行扫描循环扫描for(i=0;i<16;i++)//行扫描循环扫描16行temp[0]=zi[c][2*i];//[2*i]表示每一列是16位(刚好~1个字节)temp[1]=zi[c][2*i+1];for(kk=a;kk>0;kk--){shift_L();}P1=temp[0]; //高8位aaaaP0=temp[1]; //低八位en=0;P2=i;delay(100);en=1;}}}elseif(mode==3){for(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物流与信息技术整合的策略试题及答案
- 加强信息素养的图书管理员试题及答案
- 2024年计算机二级考试全科试题及答案
- 注册会计师在企业中的角色试题及答案
- 宠物殡葬师社会责任感试题及答案
- 投资咨询工程师战略选择试题及答案
- 生态位与生物多样性试题及答案
- 学习投资理论的有效方法试题及答案
- 黑龙江民族职业学院《教师工作实务》2023-2024学年第二学期期末试卷
- 黑龙江省伊春市伊春区2025年数学三下期末质量跟踪监视模拟试题含解析
- 最新国家级课程-颌面骨炎症的影像诊断课件
- 与孩子一起成长(家庭教育课件)
- 铁缺乏症和缺铁性贫血诊治和预防的多学科专家共识(2022年版)
- 斯蒂芬·P·罗宾斯-组织行为学笔记14版(自己整理)
- 植保无人机基础知识试题含答案
- 砂(碎石)垫层施工作业指导书
- 黑红色简约风《白夜行》名著导读好书推荐PPT模板
- 吉春亚神奇的汉字-完整版PPT
- 上海市初三数学竞赛(大同杯)试题
- 付款审批表(标准样本)
- 《船舶安全检查表》word版
评论
0/150
提交评论