光立方程序bata3

合集下载

基于单片机的光立方系统设计 电气工程及其自动化专业

基于单片机的光立方系统设计  电气工程及其自动化专业

题目基于单片机的光立方系统设计目录摘要 (I)英文摘要 (II)前言 (III)1绪论 (1)1.1选题背景 (1)1.2我国LED光立方研究现状及发展趋势 (1)1.3论文主要内容 (2)2 光立方系统硬件总体设计 (3)2.1设计要求 (3)2.2光立方系统硬件方案 (3)2.2.1 3D显示核心控制器 (3)2.2.2 电源电路 (4)2.2.3 I/O口扩展芯片 (4)2.2.4 层面控制驱动电路 (4)2.2.6 LED发光显示二极管 (4)2.3硬件整体设计概述及功能分析 (5)3 系统硬件设计 (7)3.1最小系统电路设计 (7)3.2电源供电系统设计 (7)3.3时钟电路设计 (8)3.4复位电路设计 (9)3.5驱动电路设计 (10)3.5.1 层驱动电路设计 (10)3.5.2 列驱动电路设计 (11)3.6光立方的工作原理介绍及制作 (13)3.6.1 3D LED光立方工作原理 (13)3.6.2 3D LED光立方搭接 (15)4 光立方电路和程序设计 (18)4.1电路设计仿真 (18)4.1.1 绘制电路原理图并仿真测试 (18)4.1.2 规划电路板并设置相关参数 (18)4.1.3 元件布局及调整 (19)4.1.4 元件布线及调整 (20)4.2主程序设计 (21)4.3显示程序的设计 (22)4.3.1 LED显示屏的数据传送 (22)4.3.2 LED显示程序的设计 (23)5 系统测试及仿真 (25)5.1硬件系统测试 (25)5.1.1不加电源前的检测 (26)5.1.2静态检测与测试 (26)5.1.3动态检测与测试 (27)5.1.4 测试注意事项 (27)5.1.5 小结 (27)5.2软件系统测试 (27)5.3系统总体测试 (28)5.4系统测试结果 (28)结论 (29)致谢 (30)参考文献 (31)附录1实物图 (32)附录2光立方测试程序 (32)基于单片机的光立方系统设计摘要本设计制作完成了一个8*8*8三维立体显示的LED光立方。

光立方教程(含HEX烧录文件)

光立方教程(含HEX烧录文件)

先上效果图首先,准备材料和工具。

材料:1, 雾面蓝色(喜欢其他色的随意)LED (3MM 或者5MM 都行),最好是雾面LED ,不懂得购买的时候跟老板说清楚就ok~2,STC12C5A60S2单片机一片3,DIP-40的插座一个4,22.1184MHZ晶振一个5,单排圆孔插针座20个(建议多准备些)6,单排插针4个7,USB母座一个8,0.3--0.8镀锡铜线一米左右,没有的也行,根据自己的焊接习惯。

个人比较喜欢镀锡铜线。

工具1,剪线钳2,尖嘴钳3,电烙铁4,焊丝5,松香6,镊子7,其他(总之就是焊接用的那些了,根据个人情况。

)———————————分割线———————————首先,电路图很简单了电路图很简单,稍微有点单片机基础都可以做。

然后呢,开动你灵活的小左和小右吧~准备绘制焊接图纸。

首先,确定你要做多大尺寸的光立方,4*4*4也就是64个灯,个人感觉做成7厘米见方左右就差不多了。

根据个人喜好调节吧~大小具体怎样确定呢,二少在这里简单说明一下,每一边是4个灯,也就是三个灯距,灯距的三倍加两个灯宽就是边长了。

灯距的确定,不是随便确定的,必须是2.54毫米的整数倍,为什么呢,因为洞洞板的孔距就是2.54,最后的灯是插在洞洞板上的。

本教程所定的灯距是4倍的孔距,也就是10毫米挂点,小误差这里就可以忽略了。

OK~根据灯的情况,确定洞洞板的大小,最少得是20孔,因为单片机用的是DIP40的,所以至少要保证单片机可以安装,当然高手还可以立式安装单片机,二少在这里就不多介绍了。

确定以上参数后,好了,开始制作吧~我这边手头有的洞洞板是19*23孔的,所以嘛~单片机就有俩引脚是悬空的,不过不影响。

焊接电路,(绘制软件,layout)然后,确定单片机和LED灯体的安装位置。

并做简单标注。

用尖嘴钳把插针掰成一个一个的,直接焊接于绿色的焊盘位置,4*4+4个。

如下图效果单片机最好安装在座子上,直接焊接死亡率较高。

基于单片机的光立方设计方案

基于单片机的光立方设计方案

基于单片机的光立方设计方案摘要本设计制作出一个三维立体显示图案的LED光立方。

本产品不仅可以像发光二极管点阵一样显示平面的静态或动态画面,还可以显示立体的静态或动态画面,打破了传统的平面显示方案。

同锁存器/8*8*8/LED显示时又增加了显示的花样和立体图案显示效果,可以广泛用于传媒信息显示和各种装饰显示,为将来显示技术的进步和发展指导了方向,光立方显示比发光二极管点阵更具有视觉效果,而且画面图案更加非富多彩。

本设计是采用AT89S52单片机为核心控制器,八D边沿触发器(三态)74LS574扩展I/O口,完成硬件电路设计。

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

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

关键词51单片机/74LS574目录摘要 (I)1 绪论 (1)1.1国内外LED显示屏的发展概况 (1)1.2我国LED显示屏研究现状及发展趋势 (1)1.3设计的总体要求及方案选择 (2)1.4设计说明书的结构安排 (2)2 系统总体方案设计 (4)2.1系统总体硬件方案选择 (4)2.1.1 3D显示屏核心控制器 (4)2.1.2 电源电路 (5)2.1.3 I\O口扩展芯片 (5)2.1.4 层面控制驱动电路 (6)2.1.5 串口通讯芯片的选择 (6)2.1.6 LED发光显示二级管 (6)2.1.7 硬件电路绘图软件 (7)2.2系统总体软件方案选择 (8)2.2.1 单片机编程语言 (8)2.2.2 系统软件编译器WA VE介绍 (9)3 系统硬件方案设计 (10)3.1硬件整体设计概述及功能分析 (10)3.2电源供电系统设计 (10)3.351系列单片机简介 (11)3.3.1 时钟电路设计 (11)3.3.2 复位电路设计 (13)3.4驱动电路设计 (13)3.4.1 层驱动电路设计 (13)3.4.2 列驱动电路设计 (15)3.5通信系统硬件设计 (16)3.6光立方的制作及工作原理介绍 (17)3.6.1 3D LED光立方搭接 (17)3.6.2 3D LED光立方工作原理 (19)4 系统软件方案设计 (21)4.1概述 (21)4.2主程序设计 (21)4.3显示程序的设计 (22)4.3.1 LED显示屏的数据传送 (22)4.3.2 显示程序的设计 (22)4.4软件中防止程序出错ERR处理 (23)4.5ISP软件程序下载 (24)5 光立方PCB版制作 (25)5.1 PROTUES制作PCB版图 (25)5.1.1 绘制电路原理图并仿真测试 (25)5.1.2 加载网络表及元件封装 (26)5.1.3 规划电路板并设置相关参数 (27)5.1.4 元件布局及调整 (28)5.1.5 元件布线及调整 (29)5.1.6 输出及制作PCB (30)5.2PCB版的制作过程 (30)5.2.1 热转印版图 (31)5.2.2 蚀刻去铜 (31)5.2.3 去墨打孔 (31)6 系统测试及仿真 (32)6.1硬件系统测试 (32)6.2软件系统测试 (33)6.3系统总体测试 (33)6.4系统测试结果与结论 (34)6.4.1 测试结果分析 (34)6.4.2 测试结论 (34)总结 (35)参考文献 (37)附录1 总体电路原理图 (38)附录2 电路PCB版图 (39)附录3 电路3D仿真图 (40)附录4 元器件清单 (41)附录5 电路实物图 (43)附录6 源程序 (44)1 绪论1.1 国内外LED显示屏的发展概况在当今信息化社会的高速发展过程中,大屏幕显示已经从公共信息展示等商业应用向消费类多媒体应用渗透。

推荐-3D光立方说明书 精品

推荐-3D光立方说明书 精品

3D光立方说明书摘要光立方是一个长、宽、高由8×8×8 个LED 灯组成的真实3D 立方体显示器。

其最大的特点,就是带给观赏者立体的超酷的3D视觉体验。

因此各大网站也充斥着各种各样的光立方版本。

但是这各种版本的光立方的制作方法都很复杂,而且成本也很高,而本设计与之相比则制作简单精美,成本低廉。

为保证光立方精美的外形,本设计还提供了一种光立方的制作模板,以确保将动手能力导致的美观差异降到最低。

为降低其成本,本设计采用了STC12C5A60S2单片机,这种单片机自带有A/D转换模块;使用的锁存器是常用的SN74HC573。

这样可以保证在降低制作成本的情况下,毫不影响作品的美观;再加上显示效果极佳的高亮雾面的蓝色方形LED,硬件电路无需添加额外的驱动和上拉电阻,即可实现其强大的功能:除了能显示3D 图形,还可以支持多级亮度和速度调整,允许用户自拓展音频显示功能,就像音乐显示器一样。

用户还可以在不改动硬件电路的情况下设计出自己喜欢的的自定义图形。

这些充分体现了制作成本低、显示效果好、功能完善的特点。

最后,经过软硬件调试,解决了一些硬件电路短路,程序报错的问题,完美地实现了多种图形动态显示,流畅的图形变换和音频显示的多种功能。

关键词:光立方制作模板音频显示 A/D转换ABSTRACTLight-cube is a long, wide, high is posed of 8 x 8 x 8 leds true 3 d volumetric display. Its biggest characteristic, is to bring the viewer stereo cool 3 d visual experience. So each big web site is filled with all kinds of cubic light version.But all versions of this light cubic method is very plex, and the cost is also high, and pared with this design is beautifully simple and low cost.In order to ensure the exquisite cubic shape, this design also provides a light cube production template, to ensure that the ability to appearance difference to a minimum.To reduce its cost, this design USES STC12C5A60S2 MCU, the MCU built-in A/D conversion module; Use the latch is SN74HC573 in mon use. So that in the case of lower production costs, not effect the beauty of the works; Plus showed excellent results highlighted square LED fog below in blue, don't need to add additional hardware circuit drive pull up resistance, and its powerful functions can be realized: in addition to display 3 d graphics, can support multiple levels of brightness and speed adjustment, allows the user to expand the audio display function, like music display. Users can also in the case of do not change the hardware circuit design their own custom graphics. These fully reflect the production of low cost, good effect of display, the characteristics of the function is perfect.Finally, after the hardware and software debugging, solve some of the short circuit hardware circuit, program error, perfect the dynamic variety of graphic display, smooth graphics transform and audio display a variety of functions.Key words: light-cube making stencil audio-display A/D conversion目录1、引言1.1研究意义LED射灯是指发出的光线是方向性的(directional)的LED灯泡, 主要类型有MR16,GU10, PAR series.LED球泡灯是指发出的光线为发散性的LED灯泡, 主要类型为:E27 base.按照功率来分, LED灯泡可分为: 小功率(主要为5mm LED生产的)和大功率(主要1 W, 3 W ,甚至5 W LED生产的)。

光立方制作+程序

光立方制作+程序

光立方教程今天,给大家带来光立方的制作教程,基于本人制作的经验,给各位想要做的朋友分享制作过程。

对于第一次制作的朋友,我们要先制作好一个日程表,如下图:我们要弄好一个计划,就好像单片机运行程序一样。

当然,废话少说。

接下来,我们需要一份购买材料的清单如上图所示,我们需要购买的万能板需要购买18*30的规格。

这样子才有足够的空间去安装我们的电子元件。

首先,我们需要用万能板作为骨架,每2cm*2cm就要焊接一个排针,上下左右间隔一样。

不过对于初学者来说,一次性焊接64颗排针有点困难,所以我们需要用胶布把每一颗排针固定好,然后上焊,当然这是一个快捷的方法,也适合所有的初学者当我们把排针固定好后,我们只需要把板子翻过来焊接就可以了。

接下来,我们要把每一颗led灯折弯后侧着放置在排针中。

从左到右,从上至下的安放,安放好后,我们只需要把他们的脚焊接即可。

折弯时记住使用镊子折弯。

效果图如下图所示显而易见,这是非常需要考焊功的活,各位制作时候要注意节点与节点之间的间距,并且注意焊点不要点太多的锡,会影响做出来的效果与美观。

接下来,我们把弄好的8排led插在万能板上,注意:我们要注意每排之间的间隔。

下一步,我们需要在把每排led的共阴极连接在一起,一共8层,每层都要连接好,当我们把每层连接好后,我们要在每层的末端或者初始端接一条输出线,作为共阴极连接UNL2803。

当然,我们连接UNL2803的前提是先把芯片接好。

小编我直接把芯片焊接在板子上,这种方法对于初学者来说不可取,需要弄芯片底座,不然芯片烧掉了就很难拆下来了。

接下来我们要按照电路图接线路了(是不是很开心,终于可以接线路了,好戏在后头),下面是74HC573集成电路的接法:首先我们先分析一下原理图:74HC573的1D~8D都连接在一起,然后再接到单片机的P0.0~P0.7端口;1Q~8Q分别连接每排的共阳里,就是焊接在电路板上的光立方引脚;至于LE要分别接到单片机的P2.0~P2.7。

光立方电路原理图及程序

光立方电路原理图及程序

74HC595 P E CK A GE =S OP 16
U10:D
b3 13 74HC04 12
C2 C1 C3
C4
220UF
1 2 3 4 5 6 7 8 +5V
P1.0/T2 P 1.1/T2E X P 1.2 P 1.3 P 1.4 P 1.5 P 1.6 P 1.7 AT89C52
U4
C1 f1 f2 11 14 C3 12 S H_CP DS S T_CP Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q 7' 15 1 2 3 4 5 6 7 9
R3
500
+5V 29 30 31 PSEN ALE EA
U10:D
b3 13 12 74HC04
R5
500
C4
220UF
b0 b1 b2 b3 b4 b5 b6 b7
U4
2 3 4 5 6 7 8 9 11 c2 1 D0 D1 D2 D3 D4 D5 D6 D7 LE OE 74HC573 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
U2
C1 C2 +5V C3 11 14 12 S H_CP DS S T_CP Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q 7' 15 1 2 3 4 5 6 7 9 C1 11 14 12 C3
U6
S H_CP DS S T_CP Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q 7' 15 1 2 3 4 5 6 7 9
1 2 3 4 5 6 7 8 +5V
P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 AT89C52

光立方制作方法

光立方制作方法

光立方的制作01、LED灯珠,最好选择长脚5mm,雾状(乳状)蓝色的灯珠,效果更好。

记住,长脚的,不要短脚的,3mm的也可以,当然也能自己换喜欢的颜色,仅仅是推荐蓝色。

(话说我就是短脚的,结果效果很不好。

)价格在70-90元一包,一包1000个,店家不会散卖的。

02、74HC573,8个,记得要1-2元左右的,太便宜的可能是用过返新的,IC芯片都是一分钱一分货,便宜的全是旧的,别老想着贪便宜。

(建议买十个,多买两个以备特殊情况。

)03、UNL2803,1个,这个便宜,要0.5-1.5元的就行,同样建议买俩。

04、IC座,9个,不过一般商家不会单卖,一卖就得卖10或15个,这个可以多买点,记得买20P的。

一般0.2-0.6元一个。

05、焊接飞线,自己有导线也行,一定要结实耐用,准备10米,一定要多准备,我仅仅焊接一个9cm*12cm的驱动板就用了6米的飞线。

06、电阻,基本上100-500欧都可以,我用的是220欧的,用来接在UNL2803上,给LED 分压。

不过最好是100欧的,其实2803不加电阻也完全可以。

一般都是卖一包,很稍有单卖的,一包12-18元,买精度低的就行,精度低的便宜,12-15左右。

07、排针,用来焊接,这个就不多说了。

0.5元一排,40个。

08、杜邦线,8p的4个,2p的1个,建议多买点,以备不时之需。

0.25元一根,记得买30cm 的,短的不好使,8p的一般0.8-1.2元。

09、3节一体的电池盒,用于装3节5号南孚电池。

1.2-2元。

10、南孚电池,一板,5号的。

这个木有价格木有图。

11、洞洞板,初学者建议用面积比较大的,15cm*20cm的,别买太小的,不好焊接。

(话说我用的是9cm*12cm的,结果焊的时候那个纠结啊。

)稍微好点的8-16元,用单面覆铜的就行。

12、木板,用来做模具。

尽量找光滑的,容易打眼的,塑料板也行。

13、电烙铁,30W或40W的,如果有经济条件最好买防静电的,带焊台,手头不宽裕那就买十几块一个的普通电烙铁就行。

LED光立方的单片机控制程序设计

LED光立方的单片机控制程序设计

随着我国信息化建设的不断推进以及LED 显示技术的不断发展,LED 显示屏在各个行业中得到了广泛的应用,给人们的学习、工作、生活带来了极大的便利。

但在一些需要显示立体符号、图形和动画的场合,二维平面LED 显示屏就无法胜任了。

于是,人们便开发设计出各种三维LED 显示屏,即LED 光立方。

康志强[1]等设计了以FPGA 为控制核心,三极管为层驱动,锁存器74HC574为列驱动的LED 光立方电路方案;李行杰[2]等设计了以AVR 单片机为控制核心,双MOS 管STM4953为层驱动,恒流驱动TM1816为列驱动的电路方案;鲁宛生[3]等设计了以单片机为控制核心,ULN2803为层驱动,锁存器74HC573为列驱动的电路方案;吴永德[4]等设计了以STC15F2K60S2单片机为控制核心,双MOS 管APM4953为层驱动,16位恒流LED 驱动器MBI5024为列驱动的电路方案,等。

以上LED 光立方设计方案中,对硬件电路的设计都有详细的阐述,而软件部分往往只是粗略地介绍系统程序设计思想,提供简单的系统程序流程图,也有个别设计方案会提供硬件驱动程序,但对光立方各种具体符号、图形、动画的显示控制程序设计,均没有进行详细深入的论述。

LED 光立方就是一个三维LED 显示屏,要把它应用在装饰、娱乐、教学等场合,显示各自特定的内容,则需依靠编写相应的控制程序来实现。

将以STC15F2K60S2单片机为控制核心,APM4953为层驱动,MBI5024为列驱动的8×8×8(长×宽×高)LED 光立方硬件电路方案[4]为例,详细探讨在光立方中显示点、线、面、体等基本图形元素的控制程序设计。

1显示控制程序总体设计为保持LED 光立方的通透性,一般制作光立方时,都会把控制电路板置于光立方的底部,每层64个LED 的独立控制引脚分别和控制板的64路列驱动电路输出端相连接,各层的公共控制端分别和控制板的8路层驱动电路输出端相连接。

光立方(含程序)毕业设计

光立方(含程序)毕业设计

毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。

尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。

对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。

除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。

对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。

本人完全意识到本声明的法律后果由本人承担。

作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。

本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

作者签名:日期:年月日导师签名:日期:年月日注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。

光立方开发板程序下载方法及调试过程

光立方开发板程序下载方法及调试过程

光立方开发板程序下载方法及调试过程光立方开发板是一款基于FPGA的硬件开发平台,可执行数字信号处理、数字信号生成、图像和视频处理等任务。

本文将重点介绍在Windows系统下如何下载光立方开发板程序并进行调试。

一、准备工作在开始下载程序之前,我们需要先进行一些准备工作:1.安装Xilinx ISE软件,它是运行并下载FPGA程序的关键软件。

2.下载并安装光立方驱动,并将光立方开发板连接到电脑。

3.下载并安装JTAG烧录器,以便通过JTAG接口向开发板烧录程序。

4.准备好FPGA程序文件。

二、下载程序1.打开Xilinx ISE软件,创建新的工程。

选择FPGA型号并设置工程路径和名称。

2.添加UCF约束文件和FPGA程序文件。

在工程目录下,新建一个.ucf文件,并在ISE工具栏中选择Process-> Generate Programming File。

3.选择工程路径,将程序文件转换成比特流的数据文件。

这个文件后面将用于烧录到开发板上。

4.打开JTAG烧录器软件,然后设置好开发板的连接端口和IP地址。

5.将光立方开发板与电脑连接,并插上电源。

6.在ISE软件中,选择Tools-> iMPACT打开JTAG烧录器。

7.在打开的iMPACT窗口中,选择new project并命名。

8.选择Cable Setup-> Add Cable,将连接端口和IP地址配置给烧录器。

9.在iMPACT软件中选择File-> Open..打开比特流数据文件。

10.右键单击Xilinx硬件设备图标,选择Program,然后程序将开始下载。

下载完成后,iMPACT软件将提示“Successful”.三、调试程序下载完程序后,我们可以开始调试程序。

1.在ISE中打开ISE design suite command prompt,运行openJTAG,连接开发板。

2.连接到开发板后,运行xmd命令,进入调试模式。

光立方程序bata3

光立方程序bata3
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
uint t=0;//花样数组检测数
uchar z=0;//选择标志位
uint p[]={0x140,0x780};//花样个数
uint b=10;//停留时间常数
uchar a=0;
uchar j=0;
0xFF, 0x81, 0xBD, 0xBD, 0xBD, 0xBD, 0x81, 0xFF,
0xFF, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
};
uint t=0,y=0;//花样数组检测数,为校验位
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
for(a=0;a<8;a++){
cls=0x01;//74ls573 C控制端赋值,1输入,0锁存
for(j=0;j<8;j++){
wdata();//调用数据写入函数
cls=cls<<1;//对下一个74ls573写入数据
ls=0x00;
t=t+1;
}
uln=uln<<1;//准备显示下一层花样

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

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

目录摘要 .......................................................................................................................................................... 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)。

光立方项目设计说明书

光立方项目设计说明书

工程技术综合实践项目设计报告(电类)8x8x8光立方点阵西安理工大学工程训练中心2014年 10月 27 日指导教师(签字):1概述二十一世纪的显示技术将是平板显示的时代。

基础材料的产业化,使LED 显示产品成本下降,应用加快发展。

LED 产品性能的提高,使LED 灯的显示屏的亮度、色彩、白平衡均达到比较理想的效果。

但是考虑到此次光立方显示的效果问题,我们还是决定选用5mm 的蓝色雾灯。

本次设计制作一个8*8*8的三维的发光二极管立方显示体,能够通过编写程序来实现对每一个发光二级管的亮灭控制,从而可以显示多种多样的图案。

为了吸引观众增强显示效果,可以有多种显示模式。

按照图文运动的特点又可以分为闪烁、平移、旋转、缩放等多种显示模式。

2 总体设计2.1 系统功能及技术指标本作品是由512只LED 组成的长宽高均为8个LED 的正方体点阵,主要实现文字,图形的显示,显示效果立体感强,能够成为一件科技感十足的艺术品。

系统控制采用51单片机,通过输出高低电平控制LED 的状态,74hc595扩展单片机IO 口,使单片机具有64路输出。

通过74HC245D 控制层,最终实现对512只LED 中的任意一个的控制。

2.2 系统构成2.3 主要设备及元器件选型(1)STC12C5A60S2系列单片机是单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。

内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D 转换(250K/S),针对电机控制,强干扰场合, 能够满足快速驱动多只LED 的需求。

(2)74HC595 是一款漏极开路输出的CMOS 移位寄存器,输出端口为可控的三态输出端,亦能串行输出控制下一级级联芯片。

其特点是高速移位时钟频率Fmax>25MHz,标准串行(SPI)接口,CMOS 串行输出,可用于多个设备的级联,低功耗:TA =25℃时,Icc=4μA(MAX),可满足驱动多只LED的需求。

光立方设计说明书

光立方设计说明书

光立方设计说明书光立方学院:计算机学院学生姓名:斯东仁,刘逸凡,吕壮壮,龚明强指导教师:唐建国职称教师专业:嵌入式系统工程班级:1501学号:完成时间:2016年5月武汉软件工程职业学院光立方设计课题学院:计算机学院专业:嵌入式系统工程指导教师唐建国学生姓名斯东仁,吕壮壮,龚明强,刘逸凡课题名称光立方内设计内容及任务一、设计任务设计一个具有特定功能的光立方。

二、设计内容1、光立方的硬件系统(1)单片机最小系统模块(2)供电模块(3)光立方显示模块(4)键盘模块(5)驱动模块2、光立方的软件系统(1)系统监控程序模块(2)光立方显示程序模块(3)键盘程序模块三、设计要求该光立方上电或按键复位后能自动显示P.,进入准备工作状态。

该光立方可以通过键盘选择显示花样,切换花样,停止显示。

要求8×8的光立方硬件,并且显示四种及以上花样。

摘要当今社会,随着电子行业的不断发展,单片机的应用从根本上改变了传统的控制系统设计思想和设计方法,已广泛的应用在工业自动化、通信、自动检测、信息家电、电力电子航空航天等各个方面。

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

设计采用4*4*4的光立方模式,硬件主要分为七个模块:主控模块、驱动模块、显示模块、键盘模块、电源模块、复位模块、下载模块。

采用的主控芯片为AT89S52芯片,驱动电路是采用了常用74HC573数字芯片,设计采用C语言编程,通过单片机I/O口控制LED的亮灭,采用延时控制LED亮灭时间,最终使得整个立体展现不同的造型和图案,使其变得美轮美奂、绚丽多彩。

关键词:光立方;AT89S52;74LS573锁存器目录1绪论 (1)1.1光立方的背景 (1)1.2研究的意义 (1)2设计要求和方案介绍 (2)2.1设计要求 (2)2.2方案介绍 (2)2.2.1系统整体框图 (2)2.2.2光立方发光原理 (3)3系统硬件电路设计 (4)3.1主要元器件的介绍 (4)3.1.1AT89S52芯片介绍 (4)3.1.274HC573芯片介绍 (5)3.1.3四位一体数码管介绍 (5)3.2硬件电路模块介绍 (7)3.2.1最小系统模块介绍 (7)3.2.2驱动模块介绍 (9)3.2.3键盘模块介绍 (10)3.2.4显示模块介绍 (10)4软件系统说明 (12)4.1软件系统模块 (12)4.2软件系统模块的程序流程框图 (12)5光立方系统测试 (15)5.1操作说明 (15)5.2测试结果 (15)5.3结果分析 (17)5.4设计结论 (17)5.5设计体会 (17)结束语 (18)参考文献 (19)致谢 (20)附录 (21)附录A原理图 (21)附录B实物图 (23)附录C元件清单 (24)附录D程序清单 (25)1绪论1.1光立方的背景光立方是由四千多棵光艺高科技“发光树”组成的,在2009年10月1日天安门广场举行的国庆联欢晚会上面世,这是新中国成立六十周年国庆晚会最具创意的三大法宝之首,自从国庆60周年联欢晚会开始演练后,一个全新的名词“光立方”,吸引了全国人民的关注,并得到了全球的高度肯定。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
0x00, 0x7E, 0x42, 0x42, 0x42, 0x42, 0x7E, 0x00,
0x00, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,//screen 5
uint b=10;//停留时间常数
uchar a=0;
uchar j=0;
uchar g=0;
uint counter=0;
void initial(){//定时器初始化函数
TMOD=0X01;//设定工作方式1
TH0=55536/256;//计算初始值,载入,定时
TL0=55536%256;
EA=1;//开总中断
}
t=t-64;//循环显示这八层数据,等待中断
}
}
void T0_int () interrupt 1{
TR0=0;//关定时器
ET0=0;//关T0中断
TH0=55536/256;//重装初值
TL0=55536%256;
switch (z){//根据t值不同选择花样停留的时间长度
case 0:b=300;break;
ls=0x00;
y=y+1;
if(y==(t+1)){t=y-1;}//校验t是否正确
ls=display[t];//写入花样
cls=cls<<1;//对下一个74ls573写入数据
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,//screen 5
0xFF, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xFF,
0xFF, 0x81, 0xBD, 0xBD, 0xBD, 0xBD, 0x81, 0xFF,
0xFF, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xFF,
0xFF, 0x81, 0xBD, 0xBD, 0xBD, 0xBD, 0x81, 0xFF,
0xFF, 0x81, 0xBD, 0xBD, 0xBD, 0xBD, 0x81, 0xFF,
0xFF, 0x81, 0xBD, 0xBD, 0xBD, 0xBD, 0x81, 0xFF,
TMOD=0x01;//设定工作方式1
TH0=55536/256;//计算初始值,载入,定时
TL0=55536%256;
EA=1;//开总中断
ET0=1;//开T0中断
TR0=1;//启动定时器
}
void main(){
initial();//初始化
while(1){//显示花样并等待进入中断
uln=0x01;//uln2803初始化
/*-----------------------------------------------
名称:光立方的控制程序
QQ:1101956457
编写:电子协会技术小组
日期:2012.12.21
修改:第三次
内容:通过层扫描方式Leabharlann 512个逐层扫描,扫描时间由参数b决定
------------------------------------------------*/
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
/*****************************************************************************/
0x00, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x00,
0x00, 0x7E, 0x42, 0x42, 0x42, 0x42, 0x7E, 0x00,
0x00, 0x7E, 0x42, 0x5A, 0x5A, 0x42, 0x7E, 0x00,
0x00, 0x7E, 0x42, 0x5A, 0x5A, 0x42, 0x7E, 0x00,
0xFF, 0x81, 0xBD, 0xBD, 0xBD, 0xBD, 0x81, 0xFF,
0xFF, 0x81, 0xBD, 0xBD, 0xBD, 0xBD, 0x81, 0xFF,
0xFF, 0x81, 0xBD, 0xBD, 0xBD, 0xBD, 0x81, 0xFF,
0xFF, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xFF,
ET0=1;//开T0中断
TR0=1;//启动定时器
}
void main(){
initial();//初始化
while(1){//显示花样并等待进入中断
uln=0x01;//uln2803初始化
for(a=0;a<8;a++){
cls=0x01;//74ls573 C控制端赋值,1输入,0锁存
for(j=0;j<8;j++){
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, //screen 35
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
#define uint unsigned int
uchar code display0[]={//花样数组
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,//screen 1
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
uint counter=0;
void wdata(){
//花样写入函数
switch (z==0){
case 0:ls=display0[t];break;//写入花样,以参数z为选择标志位
case 1:ls=display1[t];break;
}
}
void initial(){//定时器初始化函数
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
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,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
uint t=0;//花样数组检测数
uchar z=0;//选择标志位
uint p[]={0x140,0x780};//花样个数
uint b=10;//停留时间常数
uchar a=0;
uchar j=0;
#include<reg52.h> //包含头文件,一般情况不需要改动,
//头文件包含特殊功能寄存器的定义
#define uln P1//uln2803控制端
#define ls P0//ls573输入端
#define cls P2//ls573控制端
#define uchar unsigned char
#define cls P2//ls573控制端
#define uchar unsigned char
#define uint unsigned int
uchar code display[]={//花样数组
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,//screen 1
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/*****************************************************************************/
for(a=0;a<8;a++){
cls=0x01;//74ls573 C控制端赋值,1输入,0锁存
for(j=0;j<8;j++){
wdata();//调用数据写入函数
cls=cls<<1;//对下一个74ls573写入数据
ls=0x00;
t=t+1;
}
uln=uln<<1;//准备显示下一层花样
TR0=1;//启动定时器
ET0=1;//开T0中断
}
/*-----------------------------------------------
名称:光立方的控制程序
QQ:1101956457
相关文档
最新文档