资讯详情

4*4*4光立方制作分享

文章目录

  • 一、前言
  • 二、OLED模块介绍
    • 1、介绍
    • 2、驱动
  • 三、硬件连接
  • 四、软件代码
  • 五、效果展示
  • 六、代码链接

一、前言

顾名思义,光立方是一种发光的立方体。光立方的基本原理是利用人眼的暂留效应和单片机的控制LED灯光迅速闪烁,显示出完整的图案。光立方原理相对简单,但生产过程耗时。

二、OLED模块介绍

1、介绍

本设计的光立方采用循环照明法,循环照明LED灯层被点亮,以达到预期的效果。这与数字管的动态扫描相同。当第一层被点亮时,图形对应,第二层对应图形。当扫描速度加快时,它看起来像一个图形。

2、驱动

由于光立方小,本设计采用9013 NPN驱动三极管的目的是驱动三极管LED灯具提供足够大的电压电流,NPN当使用三极管作为驱动电路时,基层需要串联电阻,以保护三极管不被烧坏。三极管集电极与发射极接LED灯的负极端接GND。

三、硬件连接

正面 在这里插入图片描述 侧面 背面

单片机最小系统可自行添加按钮控制程序。本设计未添加。 驱动电路 LED灯电路 P0、P控制每层点亮LED灯,连接控制LED灯三极管的基级。

P24、P25、P26、P27用三极管控制照明层数。

四、软件代码

main主函数

调用想要的灯光,可以根据自己的想法进行不同的创意。我直接调用,方便大家学习使用。

void main() { 
            while(1)   { 
               and1();    and2();   and3();   and4();   and5();   and6();   and7();   } } 

BMP.c

存储不同的照明效果,我设计了中设计了9个供您学习。全亮,全灭,平面从左到右,平面从底到顶,旋转照明,旋转全亮,平面旋转,波浪,斜。每个效果的程序结构基本相同。

void end()  //全灭 void begin()  //全亮 void and1()///从平面最左边到最右边 void and2()///平面底部到顶部 void and3()//旋转点亮 void and4()//旋转亮 void and5()//平面旋转 void and6()//波浪
void and7()//斜面1

大致讲解:由于使用P0、P1两个端口,所以使用A、B分别控制,AB的第一行为光立方每一层的第一个状态,第二行为第二个状态。循环中j为状态的个数,根据实际情况进行改写,k为每个状态的时长,时长过短时影响效果,i为层数的选择,不需要更改。

void and6()//波浪
{ 
        
	unsigned char code A[2][4]=
    { 
        
      { 
        0x5a,0xa5,0x5a,0xa5},	//状态1 
      { 
        0xa5,0x5a,0xa5,0x5a},  	//状态2 
		};
	unsigned char code B[2][4]=
    { 
        
			{ 
        0x5a,0xa5,0x5a,0xa5},//状态1
			{ 
        0xa5,0x5a,0xa5,0x5a},//状态2 
    };
  int i,j,k;
		for(j=0;j<2;j++)
		{ 
        
			for(k=0;k<60;k++)
			{ 
        
				for(i=0;i<4;i++)
			    { 
        
				     switch(i)	 
		           { 
        
			            case(0):
				            b1=1;b2=0;b3=0;b4=0; break;//显示第0层
			            case(1):
				            b1=0;b2=1;b3=0;b4=0; break;//显示第1层
			            case(2):
				            b1=0;b2=0;b3=1;b4=0; break;//显示第2层
			            case(3):
				            b1=0;b2=0;b3=0;b4=1; break;//显示第3层
									default:break;
		           }
				     a=A[j][i];
				     b=B[j][i];
				     DelayMs(1);
			    }			
			 }		
		 }
}

delay.c

根据不同的效果进行添加。

#include "delay.h"
/*------------------------------------------------ uS延时函数 ------------------------------------------------*/
void DelayUs2x(unsigned char t)
{ 
           
 while(--t);
}
/*------------------------------------------------ mS延时函数 ------------------------------------------------*/
void DelayMs(unsigned char t)
{ 
        
     
 while(t--)
 { 
        
     //大致延时1mS
     DelayUs2x(245);
	 DelayUs2x(245);
 }
}

五、效果展示

4*4*4光立方

六、代码链接

关注公众号“小小创客者”回复“4*4光立方”获得代码,如有错误欢迎指正。

标签: 电阻b3a

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台