444光立方的设计与实现论文

毕业设计说明书(论文)作者: 学号:系:专业:题目: 4*4*4光立方的设计与实现(姓名) (专业技术职务)评阅者:(姓名) (专业技术职务)毕业设计说明书(论文)中文摘要毕业设计说明书(论文)外文摘要南京理工大学紫金学院毕业设计(论文)评语学生姓名:唐佳恒班级、学号:110404333题目:4*4*4光立方的设计与实现综合成绩:毕业设计(论文)评语本科毕业设计说明书(论文)第I 页共I 页目次1 绪论 (1)1.1 光立方的发展背景 (1)1.2 研究意义 (1)1.3 章节安排 (1)2 总体设计 (3)2.1 光立方控制原理 (3)2.2 系统的总体设计方案 (3)2.3 各个模块的方案比较 (4)3 系统硬件设计 (6)3.1 单片机选型 (6)3.2 单片机总控制电路 (8)3.3 光立方显示电路 (12)4 系统软件设计 (13)4.1 软件编译 (13)4.2 流程设计 (15)4.3 显示设计 (16)4.4 小结 (22)结论与展望 (23)致谢 (28)参考文献 (29)附录: (30)1 绪论1.1 光立方的发展背景光立方在我国的起步还是相对比较晚,直到2009年,在北京天安门广场举行的国庆晚会才与大家相见。

“光立方”在气势和整体感觉上,融合了北京奥运会开幕式“击缶而歌”和“活字印刷”的风格,而各种图案则与贯穿奥运会开幕式的“画卷”有异曲同工之妙[1]。

光立方在国庆联欢晚会上演习结束之后, “光立方”这一个新名词在不知不觉之中吸引了许多人的目光。

之后以“光立方”制作而成的手电筒也被应用在2010年的世博会的主题馆和中国馆。

随后“光立方”在中国被越来越多的人所留意,也有越来越多的人学习和制作光立方,他们在此基础上不断创新,开发出了更多的花样。

其实在我们的日常生活中,“光立方”的各种产品早就已经存在了,只是我们没有去关注它。

例如照明类光立方,常见的是在景观处所使用的装饰灯;还有就是应用在各种活动中的大屏幕上,色彩斑斓的效果非常绚丽。

1.2 研究意义随着人们生活水平的提高,3D效果的欣赏已经成为了人们的追求,但是发展到现在3D还不能够普及到人们的生活当中去,因此要更好地把3D推广到日常生活中。

在这一次的设计中,放弃了对平面LED灯的制作,而是转向3D效果的设计,利用3D制作出来的效果更加丰富多彩,不但可以吸引人们的目光,还可以提升人们的审美观,不用把视线集中在平面成像上。

3D光立方是一种新型的显示资源,因此它所拥有的优势也是比较明显的,在体积方面非常小、功率消耗方面相比同类也降低很多、功能强大、优秀的拓展能力、微型化等。

比起市面上使用的电子或数字电路的光照设备,在每一个方面都有显著的优势。

最重要的是它的研究极具创意和启发,还可以应用于未来的3D手机、节能灯等产品,并且由于制作成本低廉,用3D所实现的智能产品对市场经济发展有很大的推动作用。

1.3 章节安排具体安排如下:第二章:主要说明了光立方的总体设计原理和各个结构都有一些什么特点,并且对不同的方案都作了比较。

第三章:详细说明了电路各个部分的排布、设计和功能,主要包括控制电路、驱动电路还有显示电路在光立方工作过程中的作用。

第四章:主要说明了软件调试的过程,软件设计的具体做法更加方便读者理解设计的整个架构和逻辑关系。

最后,对光立方的设计过程做出总结,并对光立方的发展前景进行描述。

2 总体设计2.1 光立方控制原理3D光立方看起来就像是一个三维的显示器,只不过这个光立方是由发光二极管组成的一个立方体。

光立方显示的原理简单来说就是用单片机控制64个发光二极管,在不同时间段点亮动画效果所需要的发光二级管,然后便能看到图案或动画效果了。

光立方的具体原理如下:整个光立方由下到上一共分为4层,将每一层的总共16个发光二级管的负极焊接在一直线上,由于是双色的发光二极管,所以将32个正极分为两路焊接,其他层都对应焊接,然后再曾与曾直接对应焊接起来。

然后再根据所要实现的动画效果,编写相应的程序来控制发光二极管。

根据人眼的视觉暂留效果,设置每幅画面呈现动态,最终达到所要显示的内容。

每一个发光二级管的点亮或者熄灭,都是由层控制端所决定的。

2.2 系统的总体设计方案此次的光立方设计用的是层整体控制的方法,每一层都要引出两个正极引脚,然后将16个灯的阴极分为2路焊接起来,最后焊接到PCB板相对应引脚上就可以了。

用64个双色发光二级管灯作为显示模块来构成光立方,再加上查询芯片的功能和作用,就可以确定基本思路。

系统模块框图如图2.1所示。

图2.1 系统模块框如上图2.1所示,此次设计的系统整体模块包括了以单片机为核心的控制模块,驱动模块、运放模块和显示模块。

2.3 各个模块的方案比较2.3.1 单片机模块方案一:采用常规的51单片机的作为光立方的主要控制芯片,存在两个明显的不足之处。

第一,51单片机的内存比较小,而相对的制作3D光立方的动画所要的程序量比较大,会出现内存不足的情况。

第二,如果采用89c51单片机作为主要控制芯片,还需要添加另外的芯片,这样的话不仅制作的成本上来了,在这同时也增加了工作量。

所以不采用此方案。

方案二:采用MCS-51系列的STC12C5A60S2芯片作为控制芯片,这个芯片具有60K 的超大内存,非常适合用来存储光立方形成的多种动画的程序量,并且此芯片完全兼容普通8051单片机,而且内部集成度又非常高,具有超强的抗干扰能力,外部的复位可用可不用,运行的速度也比普通8051单片机快10倍左右。

正是因为内部的高度集成,不需再添加其它的芯片,降低了成本,节约了时间,还在一定程度上减小了PCB 板的面积,更加小巧。

2.3.2 驱动模块方案一:采用8个8050NPN三极管驱动。

如果使用这一类驱动,就需要8个三极管对双色LED进行控制,数量太多,影响整理的布局和美观,最重要的是性价比不高,所以不建议使用此方案。

方案二:采用达林顿ULN2803来驱动,如果使用这一类驱动,第1个引脚到第8个引脚作为输入端,第11引脚到18作为输出端,工作能力是500mA\50V。

虽然在很大程度上缩小了元件占用的空间,但是64个LED灯所需的电流没有那么大,因此性价比也不是很高,所以也不考虑此方案。

方案三:采用MCS-51系列的STC12C5A60S2芯片。

由于此芯片的高度集成化,可以用I\O口直接驱动LED二极管,功率消耗也不大,而且可以只用一个芯片就能驱动LED,所以直接采用此芯片直接驱动。

2.3.3 运放模块方案一:选用LM4562,这个芯片是高性能音频专用双运算放大器,这款芯片常用于制作专业级或者高端的音频系统,在本次的设计中,由于性价比不高,所以不推荐使用。

方案二:选用LM358p,这个芯片内部具备两个独立的、高增益、频率补偿的双运算放大器,功耗低,价格低廉,非常适合本次的设计。

2.3.4 显示模块方案一:我们在生活中常用的LED不容易聚光,当LED被点亮的时候光发散比较厉害,灯与灯之间会相互影响,效果比较混乱,直接导致视觉效果达不到要求,而且在质量方面也不过关。

方案二:我们选用方形或者草帽型双色雾状LED发光二极管,此类二极管的工作电压是3.5V左右,工作电流在6mA左右。

这种二极管的特点是同时可以显示两种颜色,分别是红色和蓝色,在适当的控制下,可以变换更多的颜色,当64 个灯同时被点亮的时候效果更佳。

效果如图2.2所示:图2.2 方形双色雾状发光二极管3 系统硬件设计系统的硬件设计采用的方法很多,此次的设计在要求精简的前提下,又保证了功能的正常运行。

3.1 单片机选型MCS-51系列的STC12C5A60S2单片机是宏晶科技生产的一款功能较为强大的单时钟/机器周的单片机,它是MCS-51系列单片机衍生产品中代表。

这个系列的单片机在指令代码上可以完全兼容普通的8051单片机,而且这个单片机的与传统的单片机所不同的是它具有1T的内核,所以在速度上比普通8051单片机快10倍左右。

但是在碰到对延迟有特殊要求的时候,便会对应转换成单片机的1/12。

总的来说这款单片机是具有速度快,功率消耗低,抗干扰能力强等特点的新一代8051单片机。

特别是在电机控制的方面,干扰信号比较强的情况下比传统8051单片机优势明显。

单片机特点1)属于功能增强型51单片机,具有1T的内核,内部单时钟/机器周期,传统8051单片机的指令和代码在这款单片机中都可以运行2)工作电压:STC12C5A60S2系列单片机工作的电压为3.5V -5.5VSTC12LE5A60S2 系列单片机工作的电压为2.2V -3.6V3)工作频率范围:0~35MHZ,近似于普通8051单片机的0~420MHZ4)用户可用的应用程序的空间大有8K / 16K / 20K / 32K / 40K / 48K / 52K / 60最大64k字节5)片上集成1280字节RAM6)通用I/O口(36/40/44个),复位后为准双向口/弱上拉(一般8051单片机I/O)可以设置成四种模式:准双向口/弱上拉,强推挽/强上拉,仅为输入/高阻,开漏每个I/O口驱动能力均可到达20mA,但是整个芯片最大不要超过120mA 7) ISP/IAP,ISP指的是直接将写好的程序下载到芯片里面,而芯片不需要从PCB板上取出来,IAP指的是通过操作之后将程序下载到芯片,也不需要特定的仿真器,只要通过串口(P3.0/P3.1)就可以下载已经编写好的程序代码,几秒内就可以完成8)具备EEPROM功能,但是要注意的是此款单片机内部没有这个功能9)看门狗功能10)内部集成MAX810复位电路,不用再设计外部的复位电路,而且这个复位是非常可靠的,如果需要的话只要在外部接一个复位按键11)外部掉电检测电路:这个电路主要是在遇到突发情况的时候可以把数据保存在EEPROM当中12)时钟源:在外面接一个高精度的晶振,设计者在下载已经编写完成的程序时,能选择用外部高精度晶振/时钟,3.3V单片机为10MHZ左右。

在设计的精确度不需要非常高的情况下,也可以用单片机的内部时钟,只是每一个单片机都存在制造误差,所以还是要根据实际测量的值作为标准13)共有4个16位定时器,两个与传统的8051单片机兼容的定时器/计数器,16位定时器T0和T1,没有定时器2,但是有独立波特率发生器做串行通讯的波特率发生器,再加上2路PCA模块可以实现2个16位定时器14)3个时钟输出口,独立波特率发生器可以在P1.0口输出时钟,其中选用这款单片机最主要的原因还是因为它本身具有A/D转换功能,而不需要外接其它A/D转换模块,这样不但使电路看起来更加精致和简单,与此同时也降低了制作成本,节约了时间,并且能够存储足够多的动画,达到非常好的效果15) 2路PWM/PCA---可以用来当做2路D/A使用---可以用来当做另外的两个定时器---可以用来再实现2个外部中断16)通用全双工异步串行口,由于此单片机是增强型MCS-51,可以再使用别的一些软件来达成多串口的目的17)封装:当I/O接口不够用的时候,可以用2到3根普通I/O口外接来扩展I/O端口,还可以用A/D作为按键扫描来节省I/O/,或者用双CPU,这样做的话就可以实现多线通信,STC12C5A60S2单片机各个引脚功能不同,P0、P1、P2和P3口在常规状态下是双向I/O口,其余的有的引脚有双功能。

合集下载

光立方设计与实现论文详细教程

光立方设计与实现论文详细教程

1绪论1.1课题背景在当今信息化社会的高速发展过程中,大屏幕显示已经从公共信息展示等商业应用向消费类多媒体应用渗透。

随着宽带网络的发展,数字化的多媒体内容将在信息世界中占据主流,新型的大屏幕显示设备将代替传统电视机成为人们享受信息和多媒体内容的中心。

与传统的显示设备相比,这种未来的巨大需求让LED大屏幕显示技术成为众人目光的焦点。

LED显示屏一般分为图文显示屏和视频显示屏,均由LED矩阵块组成。

动态图文显示屏可与计算机同步显示汉字、英文文本和图形;视频显示屏采用微型计算机进行控制,图文、图像并茂,以实时、同步、清晰的信息传播方式播放各种信息,还可显示二维、三维的动画、录像、电视、VCD节目以及现场实况转播。

不仅可以用于室内环境装饰还可以用于室外环境信息传播,具有投影仪、电视墙、液晶显示屏无法比拟的优点。

而且显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于交通运输、车站、商场、医院、宾馆、证券市场、工业企业管理等公共场所。

随着社会经济的不断进步,人们对LED显示器的认识不断加深,其应用领域越来越广。

目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展[1]。

1.2我国LED显示屏研究现状及发展趋势(1)我国LED产业发展现状目前国内主要LED广告大屏幕制造厂商主要集中在华东、华北、华南区域,大型制造商的市场范围几乎覆盖整个国内市场。

国产LED广告大屏幕的性价比比较高,市场占有率近100%。

我国的LED显示屏产业经过几年的发展,基本形成了一批具有一定规模的骨干企业。

我国LED显示屏产业在规模发展的同时,产品技术推陈出新,一直保持比较先进的水平。

LED显示屏产业正成为我国电子信息产业的重要组成部分,也是平板显示领域唯一立足国内形成的民族高科技产业[2]。

(2)LED显示屏的发展趋势二十一世纪的显示技术将是平板显示的时代。

基础材料的产业化,使LED基于单片机的光立方设计与实现全彩色显示产品成本下降,应用加快发展。

光立方论文

光立方论文

有关光立方的制作过程和心得体会在学习单片机课程时,组成光立方小组的我们就散发出了对单片机的浓厚兴趣,尽管身边的同学,往届的前辈们都指点我们道“这个设计不好过,郭老师很严厉的。

”,但是这些并没有阻止我们小组对单片机进行最终的选择:小组认为毕业前要做一件像样的事情,如果这个毕业设计做不好,我们认为自己还是没有毕业资格的;更重要的是小组对老师的向往,感谢我们的结识,感谢老师的指点。

刚刚开始与其它班级一同进行单片机的实训课程时,小组可以说是一头雾水,因为在开始设计作品之前,老师提出了一点当时我们并不认为是很重要的,但开始设计时才知道这点是很致命的一个要求:那就是老师不允许小组对设计进行同网络相同的层共阴列共阳概念设计。

经过资料查询,小组可以说是崩溃一般,想不出其它设计的方式,当时小组是钻了牛角尖的,把想法局限到了类似杜洋工作室设计的光立方概念那一方向。

直到一次小实验,小组用一片74hc573点亮了8个LED灯,小组看到了希望,因为这个亮度并不是非常低,LED灯没有像查询资料中所说的那么暗。

在此引导下,小组用Protues软件设计了电路图,并进行了初步测试程序的烧入,模拟的实验效果还是不错的,最终小组就决定了这个设计方式。

小组自己探讨的设计方式要用到8块74hc573,但是并没有用到uln2803,由单片机3个I/O口对整个设计进行控制,1个I/O口同时连接8块74hc573的输入端,进行并行传输数据,在通过单片机对74hc573的选通,实现8个74hc573对每一列8个LED灯阳极的供电;1个I/O口连接8块74hc573的使能端口,进行对74hc573不同时间的选通;1个I/O 口连接一层LED灯的负极,一共有8层LED灯。

工作原理就是由单片机先进行循环对74hc573进行选通,再由7hc573进行循环对每一列8个LED灯供电,再由单片机传输一组8位的负极信号,对选中供电的一列LED灯进行负逻辑点亮,这里一共有64列8个LED灯组成的列,通过负极信号的不同,实现立方效果的体现。

444光立方课程设计

444光立方课程设计

444光立方课程设计一、教学目标本课程的教学目标是使学生掌握光立方的基本概念、原理和应用,提高学生的科学素养和解决问题的能力。

具体目标如下:1.知识目标:学生能够理解光立方的定义、特点和基本原理,掌握光立方的构造方法和操作技巧,了解光立方的应用领域。

2.技能目标:学生能够运用光立方进行简单的计算和建模,能够利用光立方解决实际问题,提高学生的科学思维和创新能力。

3.情感态度价值观目标:学生能够认识到光立方在科学技术和社会发展中的重要性,增强对科学的兴趣和好奇心,培养学生的科学精神和责任感。

二、教学内容本课程的教学内容主要包括光立方的基本概念、原理和应用。

具体内容包括:1.光立方的定义和特点:介绍光立方的概念,解释光立方的特性和优势,引导学生了解光立方的应用前景。

2.光立方的构造方法:讲解光立方的构造原理和方法,引导学生掌握光立方的制作技巧,培养学生的动手能力。

3.光立方的操作技巧:介绍光立方的操作方法和技巧,通过实际操作练习,使学生熟练掌握光立方的使用。

4.光立方的应用领域:讲解光立方的应用案例,使学生了解光立方的应用范围和价值,激发学生的学习兴趣。

三、教学方法为了实现教学目标,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。

具体方法如下:1.讲授法:通过教师的讲解,使学生掌握光立方的基本概念和原理,引导学生理解光立方的构造方法和操作技巧。

2.讨论法:学生进行小组讨论,促进学生之间的交流和合作,培养学生的科学思维和创新能力。

3.案例分析法:通过分析光立方的应用案例,使学生了解光立方的实际应用,引导学生运用光立方解决实际问题。

4.实验法:安排学生进行实验操作,使学生亲身体验光立方的构造和操作过程,提高学生的动手能力和实践能力。

四、教学资源为了支持教学内容和教学方法的实施,本课程将选择和准备适当的教学资源。

具体包括:1.教材:选择适合学生水平的教材,为学生提供系统的学习材料,帮助学生掌握光立方的基本概念和原理。

光立方论文说明书大学学位论文

光立方论文说明书大学学位论文

毕业设计说明书学校代码:10129系 别:计算机技术与信息管理系 年 份:2015题 目:单片机8*8*8光立方 小组成员:孟斌、静厚霖、宋金宝 班 级:11计教甲班 指导教师:郭彬年 月摘要随着人们物质生活水平的提高,人们对精神生活的追求也愈加强烈,对信息的渴求已成为了人们必不可少的需要,更加简捷与新颖的信息传递方式无疑会给人们带来耳目一新的感受。

而现代工具务求简捷化、便携化,因此,光立方显示装置的到来,必将会给人们带来一种新的方便的文化传递方式。

单片机8*8*8光立方,在60周年国庆大典上,在天安门前,被称为三大国宝之一的节目就是由我们小组所选的设计光立方组合而成;并且光立方是由LED灯组成,近看几年的发展,LED灯的用途越加的广泛起来,小组看到LED灯的发展前景,经过小组讨论,依据上述两点,最终决定选择光立方作为毕业设计。

光立方是基于人的视觉暂留原理的,通过分时刷新8*8*8构成的512个LED灯来显示输出文字或图案等信息的立体显示装置。

输出信号频率的控制通过单片机连接74hc573芯片来实现,由于人的视觉暂留原理,会由8个LED灯为列到8*8个LED灯为面再到8*8*8个LED灯为立方的过程产生一个立体的视觉效果,在立体视觉效果内的LED灯通过不同频率的刷新,会在立方区域内产生三维立体的图像,从而达到在该立体视觉上传达信息的作用。

本文以单片机、74hc573芯片、LED灯的实际应用为背景,介绍了以单片机、74hc573芯片、LED灯为核心系统的光立方立体显示设计的基本结构和基本原理。

【关键词】单片机、74hc573芯片、LED灯目录引言 (1)一.系统设计方案 (2)1.设计目的 (2)2.设计要求 (2)3.设计思路 (2)二.系统硬件设计 (4)1.基本原理图 (4)2、各部分功能 (4)(1)外部驱动电路模块 (4)(2)LED显示模块 (5)3、系统硬件 (5)(1)单片机控制 (5)(2)显示功能 (5)三.系统软件设计 (7)1.软件设计思路 (7)2.主程序流程图 (7)四.系统的硬件调试及软件调试 (8)1.常见的硬件故障 (8)(1)逻辑错误 (8)(2)器件失效 (8)(3)可靠性差 (8)(4)电源故障 (8)2.硬件调试方法 (8)(1)脱机调试 (8)(2)联机调试 (9)3.软件调试方法 (9)4.具体调试过程 (10)五、有关光立方的制作过程和心得体会 (11)六、作品使用说明 (13)七、制作过程 (14)1.LED灯面的焊接方式 (14)2.逐层LED灯负极的焊接 (16)3.电路版制作 (18)4.电路板上飞线的制作 (19)5.显示部分与电路板之间的焊接 (20)6.每层LED灯负极信号飞线的焊接 (21)八、总结 (22)九、致谢 (23)十、参考文献 (24)引言单片机是随着大规模集成电路的出现极其发展,将计算机的CPU,RAM,ROM,定时/计数器和多种I/O接口集成在一片芯片上,形成了芯片级的计算机,因此单片机早期的含义称为单片微型计算机。

444光立方课程设计

444光立方课程设计

444光立方课程设计一、教学目标本课程旨在让学生掌握光立方的基本概念、原理和应用,培养学生的空间想象能力和创新能力。

具体目标如下:1.知识目标:学生能够理解光立方的定义、特点和基本原理,了解光立方的应用领域,如光学、物理、数学等。

2.技能目标:学生能够通过观察、实验和计算,分析和解决光立方相关的问题,提高学生的实践操作能力和科学思维能力。

3.情感态度价值观目标:学生能够培养对光立方的兴趣和好奇心,提高学生对科学探究的热情和积极性,培养学生的团队合作意识和创新精神。

二、教学内容本课程的教学内容主要包括光立方的定义和特点、光立方的原理和计算方法、光立方的应用领域等。

具体安排如下:1.第一章:光立方的定义和特点,介绍光立方的概念和特点,理解光立方的基本性质。

2.第二章:光立方的原理和计算方法,学习光立方的原理和计算方法,掌握光立方的操作技巧。

3.第三章:光立方的应用领域,了解光立方的应用领域,如光学、物理、数学等,探索光立方的实际应用案例。

三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。

具体方法如下:1.讲授法:通过教师的讲解,介绍光立方的基本概念、原理和应用,帮助学生建立知识框架。

2.讨论法:学生进行小组讨论,分享对光立方的理解和思考,促进学生之间的交流和思维碰撞。

3.案例分析法:分析光立方的实际应用案例,让学生了解光立方的应用领域和实际价值。

4.实验法:进行光立方实验操作,让学生亲身体验光立方的原理和应用,提高学生的实践能力。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:选用权威、实用的教材,如《光立方导论》、《光立方实验指导》等,作为学生学习的主要参考资料。

2.参考书:提供相关的参考书籍,如《光学原理》、《数学模型》等,供学生进一步深入学习和研究。

3.多媒体资料:制作精美的多媒体课件和教学视频,通过图文并茂的形式,生动展示光立方的原理和应用。

51单片机电子设计制作444彩色光立方

51单片机电子设计制作444彩色光立方
for(i=0;i<10;i++)
{ //一次采集数据的数量
Adc_Delay(3);
R=Read(1); //读对应的口,触发对应的触摸按键
if(R<0x2f)
{//此参数可调整感应灵敏度值在0x01到0x2F
k++;
}
if(R == 0xFF)
{
j++;
}
}
if(k>1 && j>1)
{
mm++;
uint i;
while( --a != 0){
for(i = 0; i < 600; i++);
}
}
void Delay(uint z)
{
uint x,y;
for(x=80;x>0;x--)
for(y=z;y>0;y--);
}
void timer1_init()
{
TMOD |= 0x10;
TH1 = 0;
TL1 = 0;
ET1 = 1;
TR1 = 1;
EA = 1;
}
/******************************************************************************
********************** AD转换函数**************/
#define MIN_Delay 1
sbit S_1 = P1 ^ 1;
sbit S_2 = P1 ^ 2;
unsigned int pwm;
unsigned char TimeDelay = 10;

444光立方设计报告

444光立方设计报告目录第1章摘要 (1)第2章绪论 (2)第3章设计目的与要求 (3)3.1 设计目的 (3)3.2 设计要求 (3)第4章 444光立方基础技术 (4)4.1 STC89C52的标准功能 (4)4.2 STC89C52的主要特性 (5)4.3 STC89C52的器件参数 (6)第5章总体方案设计 (7)5.1 单片机资源分配情况 (7)5.2复位电路 (8)5.3 时钟电路 (8)5.4系统框图和程序流程图 (9)5.5系统的工作原理图 (10)第6章系统调试与测试 (13)第7章总结与展望 (14)第8章致辞 (15)第9章参考文献 (16)附录(原理图、源程序) (17)摘要当今社会,随着电子行业的不断发展,单片机凭借着其极高的性能价格比,受到人们的重视和关注,应用广泛,发展迅猛。

单片机体积小,质量小,抗干扰能力强,对环境要就不高,价格低廉,灵活性好,已广泛的应用在工业自动化、通信、自动检测、信息家电、电力电子航空航天等各个方面。

成为现代生产和生活中不可缺少的一部分。

关键词:光立方单片机 STC89C52AbstractIn today's society, with the continuous development of electronic industry, single-chip microcomputer with its extremely high cost performance, is people's attention and concern, wide application, is developing rapidly. SCM small size, small quality, strong anti-jamming capability, the environment is not high, low price, good flexibility, has been widely used in industrial automation, communications, automatic detection, information home appliances, power electronics, aerospace and other aspects. Become an indispensable part of modern production and life.Keywords: light cube microcontroller STC89C52绪论为了让我们更加深入的了解单片机的原理及其部结构和功能,黄老师让我们用51单片机制作一个小作品,于是,我们组选择了制作4*4*4的光立方。

光立方毕业论文含程序+原理图+实物

目录第一章绪论............................................................................................................................................... - 1 -1.1 课题的背景................................................................................................................................ - 1 -1.2 研究目的和意义................................................ - 1 -1.3 论文研究内容与结构安排........................................................................................................ - 1 -第二章总体设计....................................................................................................................................... - 2 -2.1 工作原理.................................................................................................................................... - 2 -2.2 各模块方案选择与论证............................................................................................................ - 2 -2.2.1 单片机主控制模块......................................................................................................... - 2 -2.2.2 驱动模块......................................................................................................................... - 2 -2.2.3 显示模块......................................................................................................................... - 2 -第三章系统硬件电路设计与实现........................................................................................................... - 3 -3.1 硬件电路设计............................................................................................................................ - 3 -3.2 单片机最小系统........................................................................................................................ - 3 -3.2.1 时钟电路......................................................................................................................... - 4 -3.2.2 P0 口外接上拉电阻....................................................................................................... - 4 -3.3 驱动模块的设计........................................................................................................................ - 5 -3.4 光立方整体设计思路................................................................................................................ - 6 -3.4.1 LED灯排序方式设计.................................................................................................... - 6 -3.4.2 LED灯接法方式设计.................................................................................................... - 7 -3.5 光立方搭建方法........................................................................................................................ - 7 -3.5.1将LED从点到线的搭建.................................................................................................. - 7 -3.5.2将LED从线到面的搭建.................................................................................................. - 7 -3.5.3将LED从面到体的搭建.................................................................................................. - 8 -第四章系统软件设计............................................................................................................................... - 9 -4.1 主程序设计................................................................................................................................ - 9 -第五章系统调试及结果分析................................................................................................................. - 10 -5.1 系统调试.................................................................................................................................. - 10 -5.1.1. 硬件测试...................................................................................................................... - 11 -5.1.2. 软件测试...................................................................................................................... - 11 -5.2 结果分析.................................................................................................................................. - 11 -第六章结论............................................................................................................................................. - 12 -参考文献................................................................................................................................................... - 13 -英文摘要................................................................................................................................................... - 14 -致谢语 ...................................................................................................................................................... - 15 -附录 .......................................................................................................................................................... - 16 -1、实物图......................................................................................................................................... - 16 -2、系统原理图................................................................................................................................. - 17 -程序清单................................................................................................................................................... - 18 -基于单片机的光立方设计刘荣三明学院 09级电子信息工程专业福建三明 365004摘要本文介绍了一款基于STC12C5A60S2 单片机光立方的设计并阐述了整体设计思路,介绍了系统软硬件设计的主要方法。

光立方_毕业论文(含程序原理图实物图)

目录摘要 .......................................................................................................................................................... X XX 关键词 ...................................................................................................................................................... X XX 1绪论 . 02总体设计 (1)工作原理 (1)各模块方案选择与论证 (1)单片机主控制模块 (1)驱动模块 (1)显示模块 (1)图2-2 雾面乳型LED灯 (2)3 系统硬件电路设计与实现 (2)硬件电路设计 (2)单片机最小系统 (2)驱动模块的设计 (4)主程序设计 (8)系统调试 (9)硬件测试 (9)软件测试 (10)结果分析 (10)6结论 (11)Keywords (13)致谢语 (14) (16) (16)程序清单 (17)#include <> (17)#define uchar unsigned char (17)#define uint unsigned int (17)sbit p30 = P1^0; (17)sbit p31 = P1^1; (17)sbit p32 = P1^2; (17)sbit p33 = P1^3; (17)sbit p34 = P1^4; (17)sbit p35 = P1^5; (17)sbit p36 = P1^6; (17)sbit p37 = P1^7; (17)uchar display[8][8]; (17)/*rank:A,1,2,3,4,I,心,U*/ (17)uchar code table_cha[8][8]={0x51,0x51,0x51,0x4a,0x4a,0x4a,0x44,0x44,0x18,0x1c,0x18,0x18,0x18, 0x18,0x18,0x3c,0x3c,0x66,0x66,0x30,0x18,0xc,0x6,0xf6,0x3c,0x66,0x60,0x38,0x60,0x60 ,0x66,0x3c,0x30,0x38,0x3c,0x3e,0x36,0x7e,0x30,0x30,0x3c,0x3c,0x18,0x18,0x18,0x18,0 x3c,0x3c,0x66,0xff,0xff,0xff,0x7e,0x3c,0x18,0x18,0x66,0x66,0x66,0x66,0x66,0x66,0x7 e,0x3c}; (17)/*the "ideasoft"*/ (17)uchar code table_id[40]={0x81,0xff,0x81,0x00,0xff,0x81,0x81,0x7e,0x00,0xff,0x89,0x89,0x00,0xf 8,0x27,0x27,0xf8,0x00,0x8f,0x89,0x89,0xf9,0x00,0xff,0x81,0x81,0xff,0x00,0xff,0x09, 0x09,0x09,0x01,0x0,0x01,0x01,0xff,0x01,0x01,0x00}; (17)/*railway*/ (17)uchar code dat[128]={0x0,0x20,0x40,0x60,0x80,0xa0,0xc0,0xe0,0xe4,0xe8,0xec,0xf0,0xf4,0xf8,0xf c,0xdc,0xbc,0x9c,0x7c,0x5c,0x3c,0x1c,0x18,0x14,0x10,0xc,0x8,0x4,0x25,0x45,0x65,0x8 5,0xa5,0xc5,0xc9,0xcd,0xd1,0xd5,0xd9,0xb9,0x99,0x79,0x59,0x39,0x35,0x31,0x2d,0x29, 0x4a,0x6a,0x8a,0xaa,0xae,0xb2,0xb6,0x96,0x76,0x56,0x52,0x4e,0x6f,0x8f,0x93,0x73,0x 6f,0x8f,0x93,0x73,0x4a,0x6a,0x8a,0xaa,0xae,0xb2,0xb6,0x96,0x76,0x56,0x52,0x4e,0x25 ,0x45,0x65,0x85,0xa5,0xc5,0xc9,0xcd,0xd1,0xd5,0xd9,0xb9,0x99,0x79,0x59,0x39,0x35,0 x31,0x2d,0x29,0x0,0x20,0x40,0x60,0x80,0xa0,0xc0,0xe0,0xe4,0xe8,0xec,0xf0,0xf4,0xf8 ,0xfc,0xdc,0xbc,0x9c,0x7c,0x5c,0x3c,0x1c,0x18,0x14,0x10,0xc,0x8,0x4}; (17)/*railway 2*/ (17)uchar code dat2[28]={0x0,0x20,0x40,0x60,0x80,0xa0,0xc0,0xe0,0xe4,0xe8,0xec,0xf0,0xf4,0xf8,0xf c,0xdc,0xbc,0x9c,0x7c,0x5c,0x3c,0x1c,0x18,0x14,0x10,0xc,0x8,0x4}; (17)/*railway 3*/ (17)uchar code dat3[24]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x16,0x26,0x36,0x46,0x56,0x66,0x65,0x 64,0x63,0x62,0x61,0x60,0x50,0x40,0x30,0x20,0x10}; (17)/*3p char*/ (17)uchar codex3f,0x1f,0x0e,0x18,0x3c,0x7e,0xff,0x18,0x18,0x18,0x18}; (17)/*initializtion (17)That is to initialize the program (17)It is write to set the timer in c52 mcu (17)So the program can renovate the led_3d_cube in fixed time use the interrupt function.*/ (17)void sinter() (17){ (17)IE=0x82; (17)TCON=0x01; (17)TH0=0xc0; (17)TL0=0; (17)TR0=1; (17)} (17)void delay5us(void) 误差 STC 1T (18){ (18)unsigned char a,b; (18)for(b=7;b>0;b--) (18)for(a=2;a>0;a--); (18)} (18)void delay(uint i) (18){ (18)while (i--){ (18)delay5us();}12t的mcu 注释这个延时即可 (18)} (18)/*To judge the num bit*/ (18)uchar judgebit(uchar num,uchar b) (18){ (18)char n; (18)num=num&(1<<b); (18)if (num) (18)n=1; (18)else (18)n=0; (18)return n; (18)} (18)/*To figure out the round number*/ (18)uchar abs(uchar a) (18){ (18)uchar b; (18)b=a/10; (18)a=a-b*10; (18)if (a>=5) (18)b++; (18)/*To figure out the absolute value*/ (18)uchar abss(char a) (18){ (18)if (a<0) (18)a=-a; (18)return a; (18)} (18)/*The function can comparat the character (18)And remove the big one to the back.*/ (18)void max(uchar *a,uchar *b) (18){ (18)uchar t; (18)if ((*a)>(*b)) (18){ (18)t=(*a); (18)(*a)=(*b); (19)(*b)=t; (19)} (19)} (19)/*The function is to figure out the max number and return it.*/ (19)uchar maxt(uchar a,uchar b,uchar c) (19){ (19)if (a<b) (19)a=b; (19)if (a<c) (19)a=c; (19)return a; (19)} (19)void clear(char le) (19){ (19)uchar i,j; (19)for (j=0;j<8;j++) (19){ (19)for (i=0;i<8;i++) (19)display[j][i]=le; (19)} (19)} (19)void trailler(uint speed) (19){ (19)char i,j; (19)for (i=6;i>=-3;i--) (19){ (19)if (i>=0) (19)display[j][i]=display[j][i+1]; (19)} (19)if (i<4) (19){ (19)for (j=0;j<8;j++) (19)display[j][i+4]=0; (19)} (19)delay(speed); (19)} (19)} (19)void point(uchar x,uchar y,uchar z,uchar le) (19){ (19)uchar ch1,ch0; (19)ch1=1<<x; (19)ch0=~ch1; (20)if (le) (20)display[z][y]=display[z][y]|ch1; (20)else (20)display[z][y]=display[z][y]&ch0; (20)} (20)void type(uchar cha,uchar y) (20){ (20)uchar xx; (20)for (xx=0;xx<8;xx++) (20){ (20)display[xx][y]=table_cha[cha][xx]; (20)} (20)} (20)/*The first variable is the distance from the midpoint. (20)The second is the layer (20)the third is the flash speed of the time between each two point. (20)The forth is the enable io,it controls weather draw or claen.*/ (20)void cirp(char cpp,uchar dir,uchar le) (20){ (20)uchar a,b,c,cp; (20)if ((cpp<128)&(cpp>=0)) (20){ (20)if (dir) (20)cp=127-cpp; (20)else (20)cp=cpp; (20)a=(dat[cp]>>5)&0x07; (20)b=(dat[cp]>>2)&0x07; (20)c=7-c; (20)point (a,b,c,le); (20)} (20)} (20)void line(uchar x1,uchar y1,uchar z1,uchar x2,uchar y2,uchar z2,uchar le) (20){ (20)char t,a,b,c,a1,b1,c1,i; (20)a1=x2-x1; (20)b1=y2-y1; (20)c1=z2-z1; (20)t=maxt(abss(a1),abss(b1),abss(c1)); (20)a=x1*10; (20)b=y1*10; (21)c=z1*10; (21)a1=a1*10/t; (21)b1=b1*10/t; (21)c1=c1*10/t; (21)for (i=0;i<t;i++) (21){ (21)point(abs(a),abs(b),abs(c),le); (21)a+=a1; (21)b+=b1; (21)c+=c1; (21)} (21)point(x2,y2,z2,le); (21)} (21)void box(uchar x1,uchar y1,uchar z1,uchar x2,uchar y2,uchar z2,uchar fill,uchar le) (21){ (21)uchar i,j,t=0; (21)max(&x1,&x2); (21)max(&y1,&y2); (21)max(&z1,&z2); (21)for (i=x1;i<=x2;i++) (21)t|=1<<i; (21)if (!le) (21)t=~t; (21)if (fill) (21){ (21)if (le) (21){ (21)for (i=z1;i<=z2;i++) (21){ (21)} (21)} (21)else (21){ (21)for (i=z1;i<=z2;i++) (21){ (21)for (j=y1;j<=y2;j++) (21)display[j][i]&=t; (21)} (21)} (21)} (21)else (21){ (22)if (le) (22){ (22)display[y1][z1]|=t; (22)display[y2][z1]|=t; (22)display[y1][z2]|=t; (22)display[y2][z2]|=t; (22)} (22)else (22){ (22)display[y1][z1]&=t; (22)display[y2][z1]&=t; (22)display[y1][z2]&=t; (22)display[y2][z2]&=t; (22)} (22)t=(0x01<<x1)|(0x01<<x2); (22)if (!le) (22)t=~t; (22)if (le) (22){ (22)for (j=z1;j<=z2;j+=(z2-z1)) (22){ (22)for (i=y1;i<=y2;i++) (22)display[i][j]|=t; (22)} (22)for (j=y1;j<=y2;j+=(y2-y1)) (22){ (22)for (i=z1;i<=z2;i++) (22)display[j][i]|=t; (22)} (22)} (22)for (j=z1;j<=z2;j+=(z2-z1)) (22){ (22)for (i=y1;i<=y2;i++) (22){ (22)display[i][j]&=t; (22)} (22)} (22)for (j=y1;j<=y2;j+=(y2-y1)) (22){ (22)for (i=z1;i<=z2;i++) (22){ (23)display[j][i]&=t; (23)} (23)} (23)} (23)} (23)} (23)void box_apeak_xy(uchar x1,uchar y1,uchar z1,uchar x2,uchar y2,uchar z2,uchar fill,uchar le) (23){ (23)uchar i; (23)max(&z1,&z2); (23)if (fill) (23){ (23)for (i=z1;i<=z2;i++) (23){ (23)line (x1,y1,i,x2,y2,i,le); (23)} (23)} (23)else (23){ (23)line (x1,y1,z1,x2,y2,z1,le); (23)line (x1,y1,z2,x2,y2,z2,le); (23)line (x2,y2,z1,x2,y2,z2,le); (23)line (x1,y1,z1,x1,y1,z2,le); (23)} (23)} (23)void poke(uchar n,uchar x,uchar y) (23){ (23)uchar i; (23)for (i=0;i<8;i++) (23){ (23)point(x,y,i,judgebit(n,i)); (23)void boxtola(char i,uchar n) (23){ (23)if ((i>=0)&(i<8)) (23){ (23)poke(n,0,7-i); (23)} (23)if ((i>=8)&(i<16)) (23){ (23)poke(n,i-8,0); (23)} (24)if ((i>=16)&(i<24)) (24){ (24)poke(n,7,i-16); (24)} (24)} (24)void rolldisplay(uint speed) (24){ (24)uchar j; (24)char i,a; (24)for (i=23;i>-40;i--) (24){ (24)for (j=0;j<40;j++) (24){ (24)a=i+j; (24)if ((a>=0)&(a<24)) (24)boxtola(a,table_id[j]); (24)} (24)delay(speed); (24)} (24)} (24)void roll_apeak_yz(uchar n,uint speed) (24){ (24)uchar i; (24)switch(n) (24){ (24)case 1: (24)for (i=0;i<7;i++) (24){ (24)display[i][7]=0; (24)display[7][6-i]=255; (24)delay(speed); (24)}; (24)break; (24){ (24)display[7][7-i]=0; (24)display[6-i][0]=255; (24)delay(speed); (24)}; (24)break; (24)case 3: (24)for (i=0;i<7;i++) (25){ (25)display[7-i][0]=0; (25)display[0][i+1]=255; (25)delay(speed); (25)}; (25)break; (25)case 0: (25)for (i=0;i<7;i++) (25){ (25)display[0][i]=0; (25)display[i+1][7]=255; (25)delay(speed); (25)}; (25)} (25)} (25)void roll_apeak_xy(uchar n,uint speed) (25){ (25)uchar i; (25)switch(n) (25){ (25)case 1: (25)for (i=0;i<7;i++) (25){ (25)line(0,i,0,0,i,7,0); (25)line(i+1,7,0,i+1,7,7,1); (25)delay(speed); (25)}; (25)break; (25)case 2: (25)for (i=0;i<7;i++) (25){ (25)line(i,7,0,i,7,7,0); (25)line(7,6-i,0,7,6-i,7,1); (25)delay(speed); (25)}; (25)for (i=0;i<7;i++) (25){ (25)line(7,7-i,0,7,7-i,7,0); (25)line(6-i,0,0,6-i,0,7,1); (25)delay(speed); (25)}; (26)break; (26)case 0: (26)for (i=0;i<7;i++) (26){ (26)line(7-i,0,0,7-i,0,7,0); (26)line(0,i+1,0,0,i+1,7,1); (26)delay(speed); (26)}; (26)} (26)} (26)void roll_3_xy(uchar n,uint speed) (26){ (26)uchar i; (26)switch(n) (26){ (26)case 1: (26)for (i=0;i<8;i++) (26){ (26)box_apeak_xy (0,i,0,7,7-i,7,1,1); (26)delay(speed); (26)if (i<7) (26)box_apeak_xy (3,3,0,0,i,7,1,0); (26)}; (26)break; (26)case 2: (26)for (i=0;i<8;i++) (26){ (26)box_apeak_xy (7-i,0,0,i,7,7,1,1); (26)delay(speed); (26)if (i<7) (26)box_apeak_xy (3,4,0,i,7,7,1,0); (26)}; (26)break; (26)case 3: (26)for (i=0;i<8;i++) (26){ (26)box_apeak_xy (0,i,0,7,7-i,7,1,1); (26)box_apeak_xy (4,4,0,7,7-i,7,1,0); (26)}; (26)break; (26)case 0: (26)for (i=0;i<8;i++) (27){ (27)box_apeak_xy (7-i,0,0,i,7,7,1,1); (27)delay(speed); (27)if (i<7) (27)box_apeak_xy (4,3,0,7-i,0,7,1,0); (27)}; (27)} (27)} (27)void trans(uchar z,uint speed) (27){ (27)uchar i,j; (27)for (j=0;j<8;j++) (27){ (27)for (i=0;i<8;i++) (27){ (27)display[z][i]>>=1; (27)} (27)delay(speed); (27)} (27)} (27)void tranoutchar(uchar c,uint speed) (27){ (27)uchar i,j,k,a,i2=0; (27)for (i=0;i<8;i++) (27){ (27)if (i<7) (27)box_apeak_xy (i+1,0,0,i+1,7,7,1,1); (27)box_apeak_xy (i2,0,0,i2,7,7,1,0); (27)a=0; (27)i2=i+1; (27)for (j=0;j<=i;j++) (27){ (27)a=a|(1<<j); (27)} (27)for (k=0;k<8;k++) (27){ (27)display[k][3]|=table_cha[c][k]&a; (27)display[k][4]|=table_cha[c][k]&a; (27)} (27)} (27)void transss() (28){ (28)uchar i,j; (28)for (i=0;i<8;i++) (28){ (28)for (j=0;j<8;j++) (28)display[i][j]<<=1; (28)} (28)} (28)/*From now on,the function below is to display the flash.*/ (28)void flash_1() (28){ (28)clear(0); (28)type(1,0); (28)delay(60000); (28)type(2,0); (28)delay(60000); (28)type(3,0); (28)delay(60000); (28)type(4,0); (28)delay(60000); (28)delay(60000); (28)clear(0); (28)rolldisplay(30000); (28)type(0,7); (28)delay(60000); (28)trailler(6000); (28)delay(60000); (28)} (28)void flash_2() (28){ (28)uchar i; (28)for (i=129;i>0;i--) (28){ (28)cirp(i-2,0,1); (28)delay(8000); (28)cirp(i-1,0,0); (28)} (28)delay(8000); (28)for (i=0;i<136;i++) (28){ (28)cirp(i-8,1,0); (29)} (29)delay(8000); (29)for (i=129;i>0;i--) (29){ (29)cirp(i-2,0,1); (29)delay(8000); (29)} (29)delay(8000); (29)for (i=0;i<128;i++) (29){ (29)cirp(i-8,1,0); (29)delay(8000); (29)} (29)delay(60000); (29)} (29)void flash_3() (29){ (29)char i; (29)for (i=0;i<8;i++) (29){ (29)box_apeak_xy(0,i,0,7,i,7,1,1); (29)delay(20000); (29)if (i<7) (29)box_apeak_xy(0,i,0,7,i,7,1,0); (29)} (29)for (i=7;i>=0;i--) (29){ (29)box_apeak_xy(0,i,0,7,i,7,1,1); (29)delay(20000); (29)if (i>0) (29)box_apeak_xy(0,i,0,7,i,7,1,0); (29)} (29)for (i=0;i<8;i++) (29){ (29)box_apeak_xy(0,i,0,7,i,7,1,1); (29)delay(20000); (29)if (i<7) (29)box_apeak_xy(0,i,0,7,i,7,1,0); (29)} (29)} (29)void flash_4() (29){ (30)an[j-7]=j; (30)for (i=0;i<=16;i++) (30){ (30)for (j=0;j<8;j++) (30){ (30)if ((an[j]<8)&(an[j]>=0)) (30)line(0,an[j],j,7,an[j],j,1); (30)} (30)for (j=0;j<8;j++) (30){ (30)if (((an[j]+1)<8)&(an[j]>=0)) (30)line(0,an[j]+1,j,7,an[j]+1,j,0); (30)} (30)for (j=0;j<8;j++) (30){ (30)if (an[j]>0) (30)an[j]--; (30)} (30)delay(15000); (30)} (30)for (j=0;j<8;j++) (30)an[j]=1-j; (30)for (i=0;i<=16;i++) (30){ (30)for (j=0;j<8;j++) (30){ (30)if ((an[j]<8)&(an[j]>=0)) (30)line(0,an[j],j,7,an[j],j,1); (30)} (30)for (j=0;j<8;j++) (30){ (30)if (((an[j]-1)<7)&(an[j]>0)) (30)line(0,an[j]-1,j,7,an[j]-1,j,0); (30)} (30)for (j=0;j<8;j++) (30){ (30)if (an[j]<7) (30)an[j]++; (30)} (30)delay(15000); (30)} (30)} (31)void flash_5() (31)char i=8,j,an[4]; (31)1 (31)for (j=7;j<11;j++) (31)an[j-7]=j; (31)while(i--) (31){ (31)for (j=0;j<4;j++) (31){ (31)if (an[j]<8) (31)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1); (31)if (an[j]<7) (31)box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0); (31)} (31)for (j=0;j<4;j++) (31){ (31)if (an[j]>3) (31)an[j]--; (31)} (31)delay(a); (31)} (31)2 (31)i=3; (31)for (j=0;j<4;j++) (31)an[j]=5-j; (31)while(i--) (31){ (31)for (j=1;j<4;j++) (31){ (31)if (an[j]<4) (31)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1); (31)if (an[j]<3) (31)box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0); (31)} (31)for (j=0;j<4;j++) (31){ (31)if (an[j]>0) (31)an[j]--; (31)} (31)delay(a); (31)} (32)3 (32)i=3; (32)for (j=1;j<4;j++) (32){ (32)for (j=1;j<4;j++) (32){ (32)if (an[j]>=0) (32)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1); (32)if (an[j]>0) (32)box_apeak_xy(j,an[j]-1,j,7-j,an[j]-1,7-j,0,0); (32)} (32)for (j=1;j<4;j++) (32){ (32)if (an[j]<3) (32)an[j]++; (32)} (32)delay(a); (32)} (32)4 (32)i=3; (32)for (j=0;j<4;j++) (32)an[j]=j+1; (32)while(i--) (32){ (32)for (j=1;j<4;j++) (32){ (32)if (an[j]>3) (32)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1); (32)if (an[j]>3) (32)box_apeak_xy(j,an[j]-1,j,7-j,an[j]-1,7-j,0,0); (32)} (32)for (j=0;j<4;j++) (32)an[j]++; (32)delay(a); (32)} (32)5 (32)i=3; (32)for (j=3;j<6;j++) (32)an[j-2]=j; (32)while(i--) (32){ (33)for (j=1;j<4;j++) (33){ (33)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1); (33)box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0); (33)} (33)if (an[j]>3) (33)an[j]--; (33)} (33)delay(a); (33)} (33)6 (33)i=3; (33)for (j=0;j<4;j++) (33)an[j]=5-j; (33)while(i--) (33){ (33)for (j=1;j<4;j++) (33){ (33)if (an[j]<4) (33)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1); (33)if (an[j]<3) (33)box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0); (33)} (33)for (j=0;j<4;j++) (33){ (33)if (an[j]>0) (33)an[j]--; (33)} (33)delay(a); (33)} (33)7 (33)i=3; (33)for (j=0;j<4;j++) (33)an[j]=3-j; (33)an[0]=2; (33)while(i--) (33){ (33)for (j=0;j<3;j++) (33){ (33)if (an[j]>=0) (33)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1); (34)if (an[j]>=0) (34)box_apeak_xy(j,an[j]+1,j,7-j,an[j]+1,7-j,0,0); (34)} (34)for (j=0;j<4;j++) (34){ (34)if (j<5-i) (34)an[j]--; (34)} (34)8 (34)i=10; (34)for (j=0;j<4;j++) (34)an[j]=j-2; (34)while(i--) (34){ (34)for (j=0;j<4;j++) (34){ (34)if (an[j]>=0) (34)box_apeak_xy(j,an[j],j,7-j,an[j],7-j,0,1); (34)if (an[j]>=0) (34)box_apeak_xy(j,an[j]-1,j,7-j,an[j]-1,7-j,0,0); (34)} (34)for (j=0;j<4;j++) (34){ (34)if (an[j]<7) (34)an[j]++; (34)} (34)delay(a); (34)} (34)} (34)void flash_6() (34){ (34)uchar i,j,k,z; (34)roll_apeak_yz(1,10000); (34)roll_apeak_yz(2,10000); (34)roll_apeak_yz(3,10000); (34)roll_apeak_yz(0,10000); (34)roll_apeak_yz(1,10000); (34)roll_apeak_yz(2,10000); (34)roll_apeak_yz(3,10000); (34)for (i=0;i<3;i++) (34){ (34)for (j=0;j<8;j++) (35){ (35)for (k=0;k<8;k++) (35){ (35)if ((table_3p[i][j]>>k)&1) (35){ (35)for (z=1;z<8;z++) (35){ (35)point (j,7-k,z,1); (35)delay(5000); (35)} (35)} (35)} (35)} (35)trans(7,15000); (35)} (35)} (35)void flash_7() (35){ (35)uchar i; (35)uint a=3000; (35)roll_apeak_yz(0,10000); (35)roll_apeak_yz(1,10000); (35)roll_apeak_yz(2,10000); (35)roll_apeak_yz(3,10000); (35)roll_apeak_yz(0,10000); (35)roll_apeak_yz(1,10000); (35)roll_apeak_yz(2,10000); (35)roll_apeak_yz(3,10000); (35)roll_apeak_yz(0,10000); (35)roll_apeak_yz(1,10000); (35)roll_apeak_yz(2,10000); (35)roll_apeak_xy(0,10000); (35)roll_apeak_xy(1,10000); (35)roll_apeak_xy(2,10000); (35)roll_apeak_xy(3,10000); (35)roll_apeak_xy(0,10000); (35)roll_apeak_xy(1,10000); (35)roll_apeak_xy(2,10000); (35)roll_apeak_xy(3,10000); (35)for (i=0;i<8;i++) (36){ (36)box_apeak_xy (0,i,0,7-i,i,7,1,1); (36)delay(a); (36)} (36)delay(30000); (36)roll_3_xy(0,a); (36)delay(30000); (36)roll_3_xy(1,a); (36)delay(30000); (36)roll_3_xy(2,a); (36)delay(30000); (36)roll_3_xy(0,a); (36)delay(30000); (36)roll_3_xy(1,a); (36)delay(30000); (36)roll_3_xy(2,a); (36)delay(30000); (36)roll_3_xy(3,a); (36)for (i=7;i>0;i--) (36){ (36)box_apeak_xy(i,0,0,i,7,7,1,0); (36)delay(a); (36)} (36)} (36)void flash_8() (36){ (36)uchar i; (36)for (i=5;i<8;i++) (36){ (36)tranoutchar(i,10000); (36)delay(60000); (36)delay(60000); (36)} (36)} (36)void flash_9() (36){ (36)char i; (36)uchar j,an[8],x,y,t,x1,y1; (36)for (i=0;i<8;i++) (36){ (36)box_apeak_xy (i,0,0,i,7,7,1,1); (36)if (i) (37)box_apeak_xy (i-1,0,0,i-1,7,7,1,0); (37)delay(10000); (37)} (37)roll_apeak_xy(3,10000); (37)roll_apeak_xy(0,10000); (37)roll_apeak_xy(1,10000); (37)for (i=0;i<7;i++) (37){ (37)line(6-i,6-i,0,6-i,6-i,7,1); (37)line(i,7,0,i,7,7,0); (37)delay(10000); (37)} (37)for (i=0;i<85;i++) (37){ (37)clear(0); (37)for (j=0;j<8;j++) (37){ (37)t=an[j]%28; (37)x=dat2[t]>>5; (37)y=(dat2[t]>>2)&0x07; (37)t=(an[j]-14)%28; (37)x1=dat2[t]>>5; (37)y1=(dat2[t]>>2)&0x07; (37)line(x,y,j,x1,y1,j,1); (37)} (37)for (j=0;j<8;j++) (37){ (37)if ((i>j)&(j>i-71)) (37)an[j]++; (37)} (37)delay(5000); (37)} (37)for (i=0;i<85;i++) (37){ (37)clear(0); (37)for (j=0;j<8;j++) (37){ (37)t=an[j]%28; (37)x=dat2[t]>>5; (37)y=(dat2[t]>>2)&0x07; (37)t=(an[j]-14)%28; (38)x1=dat2[t]>>5; (38)y1=(dat2[t]>>2)&0x07; (38)line(x,y,j,x1,y1,j,1); (38)} (38)for (j=0;j<8;j++) (38){ (38)if ((i>j)&(j>i-71)) (38)an[j]--; (38)} (38)delay(5000); (38)} (38)for (i=0;i<29;i++) (38){ (38)clear(0); (38)y=(dat2[t]>>2)&0x07; (38)t=(an[0]-14)%28; (38)x1=dat2[t]>>5; (38)y1=(dat2[t]>>2)&0x07; (38)box_apeak_xy(x,y,0,x1,y1,7,0,1); (38)box_apeak_xy(x,y,1,x1,y1,6,0,1); (38)an[0]++; (38)delay(5000); (38)} (38)for (i=0;i<16;i++) (38){ (38)clear(0); (38)t=an[0]%28; (38)x=dat2[t]>>5; (38)y=(dat2[t]>>2)&0x07; (38)t=(an[0]-14)%28; (38)x1=dat2[t]>>5; (38)y1=(dat2[t]>>2)&0x07; (38)box_apeak_xy(x,y,0,x1,y1,7,1,1); (38)an[0]--; (38)delay(5000); (38)} (38)for (i=0;i<8;i++) (38){ (38)line(i,i,0,0,0,i,0); (38)delay(5000); (39)} (39)for (i=1;i<7;i++) (39){ (39)line(i,i,7,7,7,i,0); (39)delay(5000); (39)} (39)for (i=1;i<8;i++) (39){ (39)clear(0); (39)box(7,7,7,7-i,7-i,7-i,0,1); (39)delay(10000); (39)} (39)for (i=1;i<7;i++) (39){ (39)clear(0); (39)box(0,0,0,7-i,7-i,7-i,0,1); (39)delay(10000); (39){ (39)clear(0); (39)box(0,0,0,i,i,i,0,1); (39)delay(10000); (39)} (39)for (i=1;i<7;i++) (39){ (39)clear(0); (39)box(7,0,0,i,7-i,7-i,0,1); (39)delay(10000); (39)} (39)for (i=1;i<8;i++) (39){ (39)box(7,0,0,7-i,i,i,1,1); (39)delay(10000); (39)} (39)for (i=1;i<7;i++) (39){ (39)clear(0); (39)box(0,7,7,7-i,i,i,1,1); (39)delay(10000); (39)} (39)} (39)void flash_10() (40){ (40)uchar i,j,an[4],x,y,t; (40)for (i=1;i<7;i++) (40){ (40)clear(0); (40)box(0,6,6,1,7,7,1,1); (40)box(i,6,6-i,i+1,7,7-i,1,1); (40)box(i,6,6,i+1,7,7,1,1); (40)box(0,6,6-i,1,7,7-i,1,1); (40)box(0,6-i,6,1,7-i,7,1,1); (40)box(i,6-i,6-i,i+1,7-i,7-i,1,1); (40)box(i,6-i,6,i+1,7-i,7,1,1); (40)box(0,6-i,6-i,1,7-i,7-i,1,1); (40)delay(30000); (40)} (40)for (i=0;i<4;i++) (40){ (40)an[i]=6*i; (40)} (40)clear(0); (40)for(j=0;j<4;j++) (40){ (40)t=an[j]%24; (40)x=dat3[t]>>4; (40)y=dat3[t]&0x0f; (40)box(x,y,0,x+1,y+1,1,1,1); (40)box(x,y,6,x+1,y+1,7,1,1); (40)} (40)for (j=0;j<4;j++) (40)an[j]++; (40)delay(10000); (40)} (40)for (i=0;i<35;i++) (40){ (40)clear(0); (40)for(j=0;j<4;j++) (40){ (40)t=an[j]%24; (40)x=dat3[t]>>4; (40)y=dat3[t]&0x0f; (40)box(x,y,0,x+1,y+1,1,1,1); (41)box(x,y,6,x+1,y+1,7,1,1); (41)} (41)for (j=0;j<4;j++) (41)an[j]--; (41)delay(10000); (41)} (41)for (i=0;i<35;i++) (41){ (41)clear(0); (41)for(j=0;j<4;j++) (41){ (41)t=an[j]%24; (41)x=dat3[t]>>4; (41)y=dat3[t]&0x0f; (41)box(x,0,y,x+1,1,y+1,1,1); (41)box(x,6,y,x+1,7,y+1,1,1); (41)} (41)for (j=0;j<4;j++) (41)an[j]++; (41)delay(10000); (41)} (41)clear(0); (41)for(j=0;j<4;j++) (41){ (41)t=an[j]%24; (41)x=dat3[t]>>4; (41)y=dat3[t]&0x0f; (41)box(x,0,y,x+1,1,y+1,1,1); (41)box(x,6,y,x+1,7,y+1,1,1); (41)} (41)for (j=0;j<4;j++) (41)an[j]--; (41)delay(10000); (41)} (41)for (i=6;i>0;i--) (41){ (41)clear(0); (41)box(0,6,6,1,7,7,1,1); (41)box(i,6,6-i,i+1,7,7-i,1,1); (41)box(i,6,6,i+1,7,7,1,1); (42)box(0,6,6-i,1,7,7-i,1,1); (42)box(0,6-i,6,1,7-i,7,1,1); (42)box(i,6-i,6-i,i+1,7-i,7-i,1,1); (42)box(i,6-i,6,i+1,7-i,7,1,1); (42)box(0,6-i,6-i,1,7-i,7-i,1,1); (42)delay(30000); (42)} (42)} (42)void flash_11() (42){ (42)uchar i,j,t,x,y; (42)uchar code daa[13]={0,1,2,0x23,5,6,7,6,5,0x23,2,1,0}; (42)for (j=0;j<5;j++) (42){ (42)for (i=0;i<13;i++) (42){ (42)if (daa[i]>>4) (42){ (42)t=daa[i]&0x0f; (42)line (0,0,t+1,0,7,t+1,1); (42)} (42)else (42)t=daa[i]; (42)line (0,0,t,0,7,t,1); (42)} (42)} (42)for (j=1;j<8;j++) (42){ (42)if (j>3) (42)t=4; (42)else (42)t=j; (42)for (i=0;i<24;i+=j) (42){ (42)x=dat3[i]>>4; (42)y=dat3[i]&0x0f; (42)box_apeak_xy(0,x,y,0,x+1,y+1,1,1); (42)transss(); (42)delay(10000); (42)} (42)} (42)for (j=1;j<8;j++) (43){ (43)if (j>3) (43)t=4; (43)else (43)t=j; (43)for (i=0;i<24;i+=j) (43){ (43)x=dat3[i]>>4; (43)y=dat3[i]&0x0f; (43)point (0,x,y,1); (43)transss(); (43)delay(10000); (43)} (43)} (43)} (43)void _P3(uchar x) (43){ (43)p30 = x&0x01; (43)p31 = (x&0x02)>>1; (43)p32 = (x&0x04)>>2; (43)p33 = (x&0x08)>>3; (43)p34 = (x&0x10)>>4; (43)p35 = (x&0x20)>>5; (43)p36 = (x&0x40)>>6; (43)p37 = (x&0x80)>>7; (43){ (43)sinter(); (43)while(1){ (43)clear(0); (43)/*play list*/ (43)flash_1(); (43)clear(0); (43)flash_2(); (43)flash_3(); (43)flash_4(); (43)flash_4(); (43)flash_5(); (43)flash_5(); (43)flash_6(); (43)flash_7(); (43)flash_8(); (43)flash_9(); (43)flash_10(); (43)clear (0); (43)flash_11(); (43)flash_9(); (43)flash_5(); (43)flash_7(); (44)flash_5(); (44)flash_6(); (44)flash_8(); (44)flash_9(); (44)flash_10(); (44)} (44)} (44)P0; 573 in (44)P1; uln2803 (44)P2; 573 LE (44)void print() interrupt 1 (44){ (44)uchar i; (44)static uchar layer=0; (44)P1=0; (44)for (i=0;i<8;i++) (44){ (44)P2=1<<i; (44)delay(3); (44)P0=display[layer][i]; (44)P1=1<<layer; (44)if (layer<7) (44)layer++; (44)else (44)layer=0; (44)TH0=0xc0; (44)TL0=0; (44)} (44)P0; 573 in p2 (44)P1; uln2803 p0 (44)P2; 573 LE p1 (44)void print() interrupt 1 (44){ (44)uchar i; (44)static uchar layer=0; (44)_P3(0); (44)for (i=0;i<8;i++) (44){ (44)P2=1<<i; (44)delay(3); (44)P0=display[layer][i]; (44)delay(3); (44)} (45)_P3(1<<layer); (45)if (layer<7) (45)layer++; (45)else (45)layer=0; (45)TH0=0xc0; (45)TL0=0; (45)} (45)void print() interrupt 1 (45){ (45)uchar i; (45)static uchar layer=0; (45)P0=0; (45)P1=0x00; (45)for (i=0;i<8;i++) (45){ (45)P1=0x00; (45)P2=display[layer][i]; (45)delay(3); (45)P1=1<<i;_crol_(0xfe,i) ; (45)。

光立方论文

电子与信息工程学院“创兴杯”电子设计竞赛参赛题目:光立方的设计与制作小组成员:指导教师:无专业班级:电子Z1201班光立方的设计与制作摘要:光立方以发光二极管搭建成立体点阵,利用单片机控制发光二极管的亮灭,并利用延时控制发光二极管的亮灭时间,最终使得整个立体展现不同的造型和图案,呈现给观众极为丰富的视觉效果。

以8*8*8的光立方为例,可以将其拆成8个点阵屏,每个点阵屏为64个灯,通过控制这512个灯让它自由的变换,然后控制每个层依次点亮,由于人眼睛的视觉暂留,使得人们感觉看到的东西是一起在亮的,这样人们就可以看到一个完整的个体。

本设计是采用优于89C51的STC12C5A60S2单片机为核心控制器,74HC573和UNL2803驱动电路,完成硬件电路设计。

通过软件编程控制数据下载到单片机完成设计图案的显示。

软件采用自上而下的模块化设计思想,使整个系统朝着分布式、模块化、小型化方向发展,增强系统的可扩展性和运行的稳定性。

如今,类似于光立方的LED显示屏应用在生活的方方面面,比如企业招牌、娱乐场所、广场标志牌、新型的动态户外广告牌等。

关键词:8*8*8光立方;STC12C5A60S2单片机;74HC573锁存器;UNL2803芯片;FFT1 光立方的功能及实现1.1功能描述8*8*8光立方能够通过编写程序实现对每一个发光二极管亮与灭进行控制,通过不同发光二极管的亮灭组合,从而形成多种多样的图案。

为增强显示效果,可以有多种显示模式。

其中最简单的就是图案的静态显示,此外还有多种动态显示,通过图案的不断变换以及翻转、缩放、平移、闪烁等变化产生绚丽的效果,给人丰富的视觉体验。

此外,光立方还具有一系列的实用功能:它可以跟随音乐节奏显示频谱,让人能够看到音乐的旋律,给人以视觉和听觉上的享受;它可以显示当前温度,提示您注意冷暖;它可以显示时间,告诉您时间的流逝,为您提供便利;它还可以实现待机呼吸灯,既节能又是一个装饰品……1.2 系统组成及工作过程光立方有8个8*8点阵,要控制8*8点阵,需要16个引脚,若有8个8*8点阵,需用8个引脚来当充当各个8*8点阵的“开关”,只要将64个灯阴极连在一起,再分别连到这8个引脚上,即可用一个引脚控制控制64个灯的亮灭,进而通过8个引脚控制512个灯的亮灭。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档