电气自动化技术毕业设计-基于51单片机的LED立方体显示器设计.doc_第1页
电气自动化技术毕业设计-基于51单片机的LED立方体显示器设计.doc_第2页
电气自动化技术毕业设计-基于51单片机的LED立方体显示器设计.doc_第3页
电气自动化技术毕业设计-基于51单片机的LED立方体显示器设计.doc_第4页
电气自动化技术毕业设计-基于51单片机的LED立方体显示器设计.doc_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

云南广播电视大学 云南国防工业职业技术学院电子工程学院毕业论文(设计)课 题 基于51单片机的led立方体显示器 教 研 室 机械电子工程学院教研室 专 业 电气自动化技术 班 级 学生姓名 学号 . 导师姓名 职称 讲师 2012年10月 10 日摘 要随着科技的不断发展led(lighting emitting diode), 发光二极管)技术在10多年间取得了长足的进步,1990年前lde以红绿双基色为主运用住处很少而且制造成本高昂。1990-1995年,这一阶段是led显示屏迅速发展的时期。先后研制出蓝色led、全彩色led,led屏的显示技术取得很大的提升。而今高亮度的三基色led电子显示屏作为一种高科技产品日益引起人们的重视。它可以实时显示或循环播放文字、图形和图像信息,具有显示方式丰富、色彩鲜艳、显示内容修改方便、亮度高、显示稳定且寿命长等多种优点,被广泛应用于商业广告、体育比赛、交通信息报导等诸多领域。在上海世博会开幕式上,竖立在黄浦江边的9500平方米的巨型led显示屏价值高达人民币1亿元,是特别为上海世博会定制的。“它不仅超大,且非常轻和通透。”此外,这块屏幕还能抗震和防火。这块屏幕其实是迄今为止世界上面积最大的led显示屏,它代表着led屏发展的技术方向。现在led在实际的运用中有了很宽广的范围,而且越来越收到人们的重视。在举世瞩目的北京奥运会上,在开幕式上出现了一个新名词“光立方”它是北京奥运会开幕式的亮点。本文所要介绍的led的另一种应用也叫光立方,运用高亮的led显示出不同的3d图案、动画和文字,运用51单片机进行控制长、宽、高由888个led灯组成的真实3d立方体显示器。其最大的特点,就是带给你未来3d技术的科技体验,在夜晚有让人震撼的3d效果给人眼前一亮的感觉。该光立方在显示3d图片和动画时从立方体的各各面都可以看到立体动画,富有科技感,让人觉得就像是在看3d电影一般而且还是不用3d眼镜的裸眼3d全方位不受视角限制的3d。相信这种富有科技感和实用性的led显示技术在未来会是一大亮点。【关键词】led;单片机;3d;51单片机目 录第一章 绪论41.1 led显示技术的发展史及意义41.2 led显示技术的发展规模51.3 led显示技术的发展趋势5第2章 led显示技术的理论基础72.1 led器件的应用基础7 2.1.1 led屏的工作原理72.2 led屏的衍生led立方体9第3章 硬件103.1硬件介绍10 3.1.1 单片机stc89c5210 3.1.2 锁存芯片74hc57312 3.1.3 放大三极管s8550153.2硬件构成15 3.2.1 单片机最小系统拆分15 3.2.2 驱动模块17 3.2.3 信号放大17 3.2.4 显示模块18第4章 软件设计184.1 检测程序184.2 主程序26第5章 系统调试605.1 检测led60 5.1.1检测led是否存在坏点60 5.1.2 调试led能否正常发光615.2 调试最小系统615.3 实物图62参考文献63致谢63附录a电路原理图64第1章 绪论1.1led显示技术的发展史及意义发光二极管(lighting emitting diode)),是一种把电能变成光能的特种器件,主要由pn结芯片、电极和光学系统构成。当系统受到外界激发后,会从稳定的低能态跃迁到不稳定的高能态,当系统由不稳定的高能态重新回到稳定的低能态时,能量差以光的形式辐射出来,就会产生发光现象。当在pn结上加以正向电压之后,p区的空穴注入至n区,n区的电子注入至p区,相互注入的电子与空穴相遇后即产生复合,这些多数载流子在结的注入和复合中产生辐射而发光。它是自发辐射发光,不需要较高的注入电流产生粒子数反转分布,也不需要光学谐振腔,发射的是非相干光。led显示屏发展经历了三个阶段:(1)led大约是在80年代中期开始在电子显示屏中使用的。进入90年代以后,由于半导体工业的迅猛发展,带动了led制造材料和工艺的改进,在颜色与亮度方面都有了质的飞跃。早期的led显示屏,由于受材料和工艺的限制,视角仅有200一300左右,从而制约了led显示屏的发展。在分辨率方而,由于受当时数字技术、集成电路技术和控制技术等技术的限制,很难作出高密度的led显示屏。今后随着半导体工业的不断发展,无论是材料,还是加工工艺,都会不断地提高,led显示屏在颜色、视角、亮度、密度、寿命等方面也会逐步完善,价格也会进一步降低一方面,受led材料器件的限制,led显示屏的应用领域没有广泛展开,另一方面,显示屏控制技术基本上是通讯控制方式,客观上影响了显示效果。这一时期的led显示屏在国外应用较广,国内很少,产品以红、绿双基色为主。 (2)1990-1995年,这一阶段是led显示屏迅速发展的时期。进入九十年代,全球信息产业高速增长,信息技术各个领域不断突破,led显示屏在led材料和控制技术方面也不断出现新的成果。蓝色led晶片研制成功,全彩色led显示屏进入市场;电子计算机及微电子领域的技术发展,在显示屏控制技术领域出现了视频控制技术,显示屏灰度等级实现16级灰度和64级灰度调灰,显示屏的动态显示效果大大提高。(3)1995年以来,led显示屏的发展进入一个总体稳步提高产业格局调整完善的时期。1995年以来,led显示屏产业内部竞争加剧,形成了许多中小企业,产品价格大幅回落,应用领域更为广阔,产品在质量、标准化等方面出现了一系列新的问题,有关部门对led显示屏的发展予以重视并进行了适当的规范和引导,目前这面的工作正在逐步深化。近年来,随着高亮度发光二极管技术的发展,led显示屏从室内走到室外,其显示内容也从没有层次的计算文字动画发展到能显示有层次的电视图像。国家信息产业部委托蓝通电子科技有限责任公司制定的led显示屏技术条件也于1998年正式颁布实施。进入新世纪,光电子产业得到广泛的重视,中国加入wto、北京奥运成功举办等,成为led显示屏产业发展的契机,我国led显示屏及相关的技术必将得到飞跃发展。1.2led显示技术的发展规模2008年、2009年度的产业增长中,北京奥运会、国庆60周年庆典活动、上海世博会等重大活动的拉动因素不容忽视。对此,一方面要有理性认识,另一方面要以此为契机,认真总结经验,积极推广技术创新成果,拓展新市场,方能保持行业的持续发展。直至2011年中国led户外电子显示屏广告市场规模达到12.15亿元,较上年增长了35.5%。数据统计,这个广告市场的规模可望达到15.5亿元人民币,同比增长27.6%。近年来,在国家的政策支持下游应用需求的带动下,国内led行业发展迅速,形成了较为完整的led产业链体系,业内掀起一股建设热潮。产品行业应用领域逐渐扩大,在交通安全领域,显示屏应用日渐普及越来越得到大家认可,正全力充当智能交通得力助手。1.3led显示技术的发展趋势 二十一世纪的显示技术将是平板显示的时代,led显示屏作为平板显示的主导产品之一将有更大的发展,并有可能成为二十一世纪平板显示的代表性主流产品。白光led是led产业中最被看好的新兴产品,在全球能源短缺的忧虑再度升高的背景下,白光led在照明市场的前景备受瞩目。欧、美及日本等先进技术国家也投注许多人力,成立专门的机构推动白光led研发工作。可见国外led显示屏技术主要集中在新材料的开发上,以新发光材料来提高显示屏的视觉效果、能耗等各种性能。随着能源紧缺问题越来越突出,led的重要性和市场空间更加显著。鉴于我国led产业的现状,不论技术还是产能短期内达到世界先进水平都有相当大的难度。要在国内发展高亮led产业,可以充分利用国内现有的研发和生产力量,走合作发展的道路。 半导体产业的全球化发展,是每个企业都要面对和无法回避的。国内企业通过规范股权架构、加大研发,采取并购和合作的方式将海外先进技术引入国内,可争取与国际大厂基本在同一技术水平进行产业竞争。继上海、厦门、大连、南昌和深圳成为首批五个国家半导体产业化基地,国内封装和应用企业形成快速的市场适应能力和价格优势,我国大陆已经成为世界上重要的led封装生产基地。封装及应用,尤其是国际应用产品加工有向我国转移的趋势。在封装和应用领域中国已经完全有可能、有能力在高端市场占据一席之地,但必须加大产品的创新、加强品牌的培育。目前全世界都在寻求解决经济发展和能源短缺的矛盾,给整个绿色照明生产行业带来广阔的市场前景与新的机遇。 随着社会科技的进步和户外广告的发展,人们对户外广告媒体的要求也越来越高,传统的路牌、灯箱、单立柱、霓虹灯等表现形式单一的户外广告媒体已经无法满足受众的需求。户外广告市场上的竞争将是品牌价值、客户管理和专业品质的较量,于是,led开始浮出水面。led大型显示屏是科技与媒体的完美结合,能把该理念充分发挥,当仁不让地成为未来户外广告媒体发展趋势。led显示屏不仅画面亮度高、对比度大,色彩鲜艳,而且可显示动态画面和文字,它主动光发,远距离分辨率高,即使在百米以外,视觉效果跟在家里看电视一样,已广泛用于人流量多的公共场所、交通要道承担着信息发布实时更新的重任。3d一词,现在在显示业可谓大行其道,显示器巨头们也是争相推出了自家的当家花旦3d电视。现在商家们都会把3d技术作为一项亮点来推销,而消费者在购买时也都接受这一技术,甚至愿意为之买单,享受其提供的视觉享受。3d显示技术显然受到了消费者的追逐。3d技术也有缺点,观看时需佩戴3d眼镜。这就制约了它在生机磅礴的户外广告业的发展,试想如果让3d显示技术出现在户外广告中,人们对观看广告兴趣会提高,对于广告投放者来说就是莫大的福音,因为广告效果将会事半功倍。但是平面的led显示屏是难以突破这种技术的,解决的方法就是立方体的led显示器,让它实现裸眼3d。第二章 led显示技术的理论基础2.1led器件的应用基础 led器件种类繁多。早期led产品是单个的发光灯,随着数字化设备的出现,led数码管和字符管得到了广泛的应用。led发光灯可以分为单色发光灯、双色发光灯、三色发光灯、面发光灯、闪烁发光灯、电压型发光灯等多种类型。按照发光灯强度又可以分为普通亮度发光灯、高亮度发光灯等。led发光灯的外形由pn结、阳极引脚、阴极引脚和环氧树脂封装外壳组成。其核心部分是具有注入复合发光功能的pn结。环氧树脂封装外壳除具有保护芯片的作用外,还具有透光聚光的能力,以增强显示效果。led器件通常用砷化镓(gaas)、磷化镓(gap)等半导体材料制成。当向led器件施加正向电压时,器件内部的电子与空穴直接复合而产生能量,以光的形式释放出来,产生半导体发光。因此led的驱动就是如何使它的pn结处于正偏状态,而且为了控制它的发光强度,还要解决正向电流的调节问题。具体的驱动方法可以分为直流驱动、恒流驱动、脉冲驱动和扫描驱动等。2.1.1led屏的工作原理 led显示屏通常由若干led点阵显示模块组成,用于显示的8x8单色led显示点阵模块,每块有64个led。为了减少引脚且便于封装,led显示点阵模块采用阵列形式排布,即在行列线的交点处接有显示led 。 8x8 led点阵的外观及引脚如图3-1,等效电路图如图3-2所示。 图2-3-1 8*8led点阵的外观及引脚图2-3-2 8*8led点阵等效电路图 led显示屏的基本工作原理是动态扫描。动态扫描又分为行扫描和列扫描两种方式,常用的方式是行扫描。行扫描方式又分为8行扫描和16行扫描两种。在行扫描工作方式下,每一片led点阵片都有一组列驱动电路,列驱动电路中一定有一片锁存器或移位寄存器,用来锁存待显示内容的字模数据。在行扫描工作方式下,同一排led点阵片的同名行控制引脚是并接在一条线上的,共8条线,最后连接在一个行驱动电路上;行驱动电路中也一定有一片锁存器或移位寄存器,用来锁存行扫描信号。led显示屏的列驱动电路和行驱动电路一般都采用单片机进行控制,常用的单片机是mcs51系列。led显示屏显示的内容一般按字模的形式存放在单片机的外部数据存储器中,字模是8位二进制数。单片机对led显示屏的控制过程是先读后写。按led点阵片在屏幕上的排列顺序,单片机先对第1排的第1片led点阵片的列驱动锁存器,写入从外部数据存储器读得的字模数据,接着对第2片、第3片直到这一排的最后一片都写完字模数据后,单片机再对这一排的行驱动锁存器写行扫描信号,于是第1排第1行与字模数据相关的发光二极管点亮。接着第2排第1行、第3排第1行直到最后一排第1行的点亮。各排第1行都点亮后,延时一段时间,然后黑屏,这样就算完成了单片机对led显示屏的一行扫描控制。单片机对led显示屏第2行的扫描控制、第3行的扫描控制直到第8行的扫描控制,其过程与第1行的扫描控制过程相同。对全部8行的控制过程都完成后,led显示屏也就完成了1帧图像的完整显示。虽然按这种工作方式,led显示屏是一行一行点亮的,每次都只有一行亮,但只要保证每行每秒钟能点亮50次以上,即刷新频率高于50 hz,那么由于人的视觉惰性,所看到的led显示屏显示的图像还是全屏稳定的图像。2.2led屏的衍生led立方体 led屏日益受到青睐的今天,凭借自身色彩鲜艳、环境适应能力强、高节能、利于环保、可显示动态画面和文字、广告模式更趋近于电视、可承担信息发布等特点大有取代传统广告的趋势。现今3d一词俨然成为了显示器的一项不可或缺的功能,在未来3d技术将会显得非常重要。然而要把3d技术融入到户外领域那就很有难度了,3d实现是需要借助3d眼镜来实现的。如果把led显示器制作成立方体的那就能实现裸眼3d的效果,显示以后你会发现led立方体所显示的东西效果逼真的呈现在人们面前,而且它是个立方体不论从各各方向来看都不会影响效果显得非常通透,不会像led普通显示屏那样受到可视角的限制。第3章 硬件3.1硬件介绍3.1.1 单片机stc89c52stc89c52是一种带8k字节闪烁可编程可擦除只读存储器的低电压,高性能comos8的微处理器,俗称单片机。该器件采用atmel搞密度非易失存储器制造技术制造,与工业标准的mcs-51指令集和输出管脚相兼容。表3-3-1给出了其主要功能。表3-3-1 stc89c52主要功能:主要功能特性兼容mcs51指令系统8k可反复擦写flash rom32个双向i/o口256x8bit内部ram3个16位可编程定时/计数器中断时钟频率0-24mhz2个串行中断可编程uart串行通道2个外部中断源共6个中断源2个读写中断口线3级加密位低功耗空闲和掉电模式软件设置睡眠和唤醒功能图3-3-1 stc89c52管脚图stc89c52管脚介绍:(1)主电源引脚vcc(40):电源输入,接5v电源gnd(20):接地线(2)外接晶振引脚xtal0(18):片内振荡电路的输入端xtal1(19):片内振荡电路的输出端(3)控制引脚rst/vpp(9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。ale/prog(30):地址锁存允许信号psen(29):外部存储器读选通信号ea/vpp(31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。(4)可编程输入/输出引脚stc89c52单片机有4组8位的可编程i/o口,分别位p0、p1、p2、p3口,每个口有8位,共32根。po口(3932):名称为p0.0p0.7。p0口是一个8位漏极开路的双向i/o口。作为输出口,每位能驱动8个ttl逻辑电平(晶体管-晶体管逻辑电平)。p1口(18):名称为p1.0p1.7。p1 口是一个具有内部上拉电阻的8 位双向i/o 口,p1 输出缓冲器能驱动4 个 ttl 逻辑电平。对p1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。p2口(2128):名称为p2.0p2.7。p2 口是一个具有内部上拉电阻的8 位双向i/o 口,p2 输出缓冲器能驱动4 个 ttl 逻辑电平。对p2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil)。p3口(1017):8位准双向i/o口线,名称为p3.0p3.7。p3 口是一个具有内部上拉电阻的8 位双向i/o 口,p2 输出缓冲器能驱动4 个 ttl 逻辑电平。对p3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。 rst复位输入。当振荡器工作时,rst引脚出现两个机器周期以上高电平将是单片机复位。ale/prog当访问外部程序存储器或数据存储器时,ale(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ale仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ale脉冲。psen程序储存允许(psen)输出是外部程序存储器的读选通信号,当stc89c52由外部程序存储器取指令(或数据)时,每个机器周期两次psen有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次psen信号。ea/vpp外部访问允许,欲使cpu仅访问外部程序存储器(地址为0000h-ffffh),ea端必须保持低电平(接地)。需注意的是:如果加密位lb1被编程,复位时内部会锁存ea端状态。3.1.2 锁存芯片74hc57374hc573的八个锁存器都是透明的d 型锁存器,当使能(g)为高时,q 输出将随数据(d)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。特别适用于缓冲寄存器,i/o 通道,双向总线驱动器和工作寄存器。引脚如图3-3-1-174hc573引脚功能表: pin no 引脚号symbol符号name and function名称及功能1oe3 state output enable input (active low)3态输出使能输入(低电平)2, 3, 4, 5, 6, 7, 8, 9d0 to d7data inputs数据输入12,13,14,15,16,17,18,19q0 to q73 state latch outputs 3态锁存输出11lelatch enable input 锁存使能输入10gndground接地(0v)20vccpositive supply voltage电源电压 图3-3-1-1 74hc573引脚 hc573 逻辑图真值表: inputs 输入outputs输出oe le d q (hc573) q (hc563) hxxzzllxno change *no change *lhllhlhhhl 3.1.3 放大三极管s8550参数:耗散功率0.625w(贴片:0.3w)集电极电流0.5a集电极-基极电压40v集电极-发射极击穿电压25v集电极-发射极饱和电压 0.6v特征频率ft 最小150mhz 典型值产家的目录没给出引脚排列为ebc或ecb 838电子按三极管后缀号分为 b c d档放大倍数b85-160 c120-200 d160-300 l100-200 h200-350 三极管74hc5733.2硬件构成3.2.1 单片机最小系统 晶振电路: 最小系统晶振电路如图3-3-2-1所示。 图3-3-2-1 晶振电路图stc89c52内部有一个用于构成振荡器的高增益反相放大器,引脚xtal0和xtal1分别是此放大器的输入端和输出端。时钟可以由内部方式产生或外部方式产生。内部方式的时钟电路如图3-9所示,在xtal0和xtal1引脚上外接定时元件,内部振荡器就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。晶体振荡频率可以在1.212mhz之间选择,电容值在530pf之间选择,电容值的大小可对频率起微调的作用。单片机晶振两个电容的作用:这两个电容叫晶振的负载电容,分别接在晶振的两个脚上和对地的电容,一般在几十pf。它会影响到晶振的谐振频率和输出幅度。晶振的负载电容=(cd*cg)/(cd+cg)+cic+c式中cd,cg为分别接在晶振的两个脚上和对地的电容,经验值为3至5pf。 (二)复位电路最小系统复位电路如图3-3-2-2所示 图3-3-2-2复位电路图无论使用哪种类型的单片机,总要涉及到单片机复位电路的设计而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的。复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经过一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。3.2.2 驱动模块驱动模块由8块74hc573和单片机的最小系统组成,stc89c52的p1口用于控制锁存器的开启和关闭;p2口提供锁存器控制512个led的指令;p3用于控制从上到下每层的开关,可以单独开启每一层的开关,相互独立不受影响。8块74hc573是控制512个led的关键所在,通过这些芯片可以独立的控制每一个led,让光立方能显示心中所想成为可能。 3.2.3 信号放大 由于stc89c52的驱动能力有限难以同时驱动512个led,如果led全部亮起来的话单片机的输出会很大有可能把单片机烧坏,而且全部亮起来也不是led的最佳工作状态。所以加上8个s8550的三极管用于信号的放大,这样就能让512个led都达到最佳的工作状态达到设计的初衷。8只三极管的e极都接入单片机的p3.0p3.7口作为输入信号,b极接电源的正极用作信号的放大,c极则接入光立方由上到下的8层led。3.2.4 显示模块 显示模块由512只led焊接而成,每只led都需要进行引脚的弯折,然后精确的完成焊接工作。最先由8个led组成一条,然后把8条led组合成一个led点阵,最后把8个点阵组合为一个立方体,实现每一层共阳极接入到p3口。64个阴极的管脚接入到8块74hc573实现对每一束led的控制。 第四章 软件设计4.1 检测程序/8*8*8光立方程序/p1口为锁存器锁存控制,p2口为锁存器输入,p3口为上下控制,p0口为按键/由于锁存器与共阴极电路必须输出为1才能工作故置1为开启 置0为关闭org 0000h/程序开始 ;start:ljmp qishi/跳转到起始指令/检查程序 看led是否有损坏/*jiancha:mov p2,#00h/开启p2口mov p1,#0ffh/同步输出mov p3,#00h/开启p3口jmp jiancha/无限循环/起始程序-关闭所有ledqishi:acall guanbi/调用关闭程序;acall anjian/检查按键jmp qishi/无限循环*/层移程序cengyi:mov r0,#1/程序1dec r0mov r1,#40/将r1赋予5-层移5次mov r3,#01h/设置从第一层开始mov p2,#00h/开启p2口mov p1,#0ffh/同步锁存器输入输出mov p1,#0ffh/锁存loop11:mov p3,r3/p3口按r3中的值开启相应输出mov a,r3/开始左移rl amov r3,a/将左移后的值保存acall delay/调用延时;acall anjian/检查按键djnz r1,loop11/判断左移次数 不满5次继续循环acall guanbi/调用关闭程/闪烁程序shan:mov r0,#2/第2条程序dec r0mov r1,#12/设置重复12次mov p3,#00h/开启p3口mov p1,#0ffh/同步输出loop21:mov p2,#0ffh/开启p2口acall delay/调用延时;acall anjian/检查按键mov p2,#00h/关闭p2口acall delay/调用延时;acall anjian/检测按键djnz r1,loop21/判断重复次数 不满5次继续循环acall guanbi/调用关闭程序/束移程序xiayu:mov r0,#3/第3条程序dec r0/r1与r2赋值为05loop31:mov r1,#5/为纵向赋值mov r2,#0/为横向赋值acall loop32/调用束移效果程序mov r1,#2mov r2,#2acall loop32mov r1,#1mov r2,#4acall loop32mov r1,#3mov r2,#2acall loop32mov r1,#5mov r2,#3acall loop32mov r1,#2mov r2,#0acall loop32mov r1,#1mov r2,#5acall loop32mov r1,#2mov r2,#4acall loop32mov r1,#3mov r2,#1acall loop32mov r1,#0mov r2,#2acall loop32mov r1,#3mov r2,#0acall loop32mov r1,#4mov r2,#0acall loop32mov r1,#0mov r2,#2acall loop32ljmp anloop32:acall guanbi/初始化acall yudian/束移位置查表acall xia/调用左移程序acall bo2/横向移动查表acall suo/锁存acall bo1/纵向移动查表acall suo2/锁存acall delay1/调用延时acall guanbiret/返回xia:mov r4,#8/循环8次mov r3,#80h/初始从第一层开始loop33:mov p3,r3/将p3口显示r3值mov a,r3/开始右移rr amov r3,a/结果存入r3acall delay1/调用延时;acall anjian/检测按键djnz r4,loop33/没有8次循环ret/返回yudian:mov dptr,#table1/保存束移表格mov a,r1/将r1值作为指针给amovc a,a+dptr/查表mov p2,a/结果送入p2口acall suo/调用锁存程序ret/返回suo:mov dptr,#table1/保存第一类锁存表格mov a,r2/将r2作为指针给amovc a,a+dptr/查表mov p1,a/结果送p1口mov p1,#00h/锁存ret/返回suo2:mov dptr,#table3/保存第二类锁存地址mov a,r2/将r2作为指针给amovc a,a+dptr/查表mov p1,a/结果送p1口mov p1,#00h/锁存ret/返回bo1:mov dptr,#table2/保存横向波纹表格mov a,r1/将r1作为指针给amovc a,a+dptr/查表mov p2,a/结果送p2口ret/返回bo2:mov dptr,#table3/保存纵向波纹表格mov a,r1/将r1作为指针给amovc a,a+dptr/查表mov p2,a/结果送p2口ret/返回table1:db 3fh,1fh,0fh,07h,03h,01htable2:db 1fh,0fh,07h,03h,01h,00htable3: db 5fh,2fh,17h,0bh,05h,02h/结束程序an:lcall guanbi/调用关闭程序jmp an/无限循环/关闭所有输出guanbi:mov p2,#0ffh/关闭p2口mov p1,#0ffh/同步输出mov p1,#00h/锁存mov p3,#0ffh/关闭p3口ret/返回/*/按键检测子程序anjian:mov p0,#0ffh/p0口复位mov a,p0/取p0口值cjne a,#0ffh,loop1/判断是否有按键按下有按键按下跳转ret/无按键返回loop1:lcall yanshi/调用延时去抖动mov a,p0/取p0口值cjne a,#0ffh,loop2/判断是否有按键按下有按键按下跳转jmp loop1/没检测到循环loop2:jnb p0.0,kaishi/p0.0按下跳转jnb p0.1,jieshu/p0.1按下跳转jnb p0.2,zdjx/p0.2按下跳转jnb p0.3,jian/p0.3按下跳转jmp jixu/误读跳转继续jian:ljmp jiancha/跳转检查程序jmp jian/循环kaishi:ljmp cengyi/跳转层移程序jmp kaishi/循环jieshu:ljmp an/跳转结束程序jmp jieshu/循环zdjx:cjne r4,#1,ting1/判断p0.2口为第几次按下 第一次跳转暂停程序(r4为1)第二次执行继续指令mov r4,#00h/将r4复位jmp jixu/跳转继续指令ting1:mov r4,#1/将r4置1ting2:acall anjian/检测按键jmp ting2/无按键按下停止jixu:mov b,#3mov a,r0/取程序序号程序mul ab/因为每次长条转为3字节 所以每次乘3mov dptr,#jjmp/保存跳转表格jmp a+dptr/按表格转移jjmp:ljmp loop11ljmp loop21ljmp loop31/按键去抖动延时子程序yanshi:mov r6,#120dly:mov r7,#248djnz r7,$djnz r6,dlyret*/0.2s延时子程序delay:mov r5,#20dly1:mov r6,#100dly2:mov r7,#100djnz r7,$djnz r6,dly2djnz r5,dly1ret/0.08s延时程序delay1:mov r5,#8dly3:mov r6,#100dly4:mov r7,#100djnz r7,$djnz r6,dly4djnz r5,dly3retend/程序结束4.2主程序#include #include #include #include #include#include#include xdata unsigned char cubecube_sizecube_size=0;xdata unsigned char fbcube_sizecube_size=0; void show() interrupt 1 int i,j; th0 = (65536-50000)/256; tl0 = (65536-50000)%256; for(i=0;i8;i+) for(j=0;j 0 ; x-) for ( y = 0 ; y 90 ; y+) for ( z = 0 ; z 6 ; z+) _nop_(); / set a single voxel to onvoid setvoxel(int x, int y, int z)if (inrange(x,y,z)cubexy |= (1 z);/ set a single voxel in the temporary cube buffer to onvoid tmpsetvoxel(int

温馨提示

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

评论

0/150

提交评论