光立方,动手搭——原理简述

学习更多相关知识,关注博主知乎账号,用户名Trustintruth   https://www.zhihu.com/people/suo-yi-xin-90/activities

在光立方的制作中,我们一般选择一些单片机作为控制中心,而在本次的制作过程中,我们使用了STC89c5A60S2来实现。

驱动方式利用人眼视觉暂留特性,利用逐层扫描的方式,来达到显示各种图案的目的。常见的coms锁存器(cmos发热低,优先选择)有74hc573和74hc595,前者为并入,后者串入。因为不需要光立方的级联设计,所以采用573锁存器。

 

在主控的选择上,不选89C52等芯片,不是因为他们的运算速度不够,主要原因是它们的片上flash太小,难以满足需求,其次是因为自己有闲置的STC89C5A60S2,片上内存大,运算速度1T,即充分利用资源节省成本,又可以实现所需要的功能需求。

显示电路的连接如下:

 

在程序的设计中

1首先对主控单片机的初始化部分,主要是设置对应的中断,定时工作方式。

2 显示部分

 在对现实的设计过程中,我们把把立方体看作8位数码管,每个面即为一个数码管

 每个面的显示原理是和8X8点阵是完全一样的,保证这段程序正确的,可以直接调用

 查表的方式是自0起递增的,每次加1,每个画面查表64次。当然,实际的情况是要小于65536的,控制程序的代码也会占用rom空间,就会导致了画面次数减少,所以,要想在有限的空间内显示更多的画面,就得尽量把程序写的简短。c语言可以直接定义16位变量。

3中断部分,为了达到动画效果切换时间可准确调节性,画面的切换用中断方式。把时间通过一个变量来表示,这样每次只需修改一个变量,就可以设置动画的速度了。每次发送中断后,查表的变量就加64(i=i+64),然后返回显示程序继续显示,中断程序只做变量的计算,改变的是查表的地址。

4循环

 程序循环,循环的条件是i变量不满足动画显示的上限值。比如做八个画面,那么i的的值不满足8X64时,就继续显示,满足就清零从新开始。

 显示循环

 主题的显示程序,应该是一个死循环,一直在显示一个画面,只有中断产生的时候,改变了查表的变量,才切换一次动画,每个画面都显示后,注意修正变量,能使其显示同一个画面,不管是查表的变量还是Z轴,Y轴的控制变量,都要进行初始化,直到中断的产生才改变查表的变量数值。

.

 

 

 

  • 8
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值