当前位置: 首页 > news >正文

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

文章目录

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

一、前言

光立方顾名思义就是会发光的立方体,光立方的基本原理是利用人眼的暂留效应,利用单片机控制LED灯快速的闪烁,显示出一个完整的图案。光立方原理相对简单只是制作过程较为耗时。

二、LED介绍

1、介绍

本设计的光立方采用的是循环点亮的方法,通过循环将LED灯层层点亮,从而达到想要的效果。这个和数码管的动态扫描一个道理,当点亮第一层时对应一个图形,第二层对应一个图形,当扫描速度加快时,看上去就成为一个图形了。

2、驱动

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

三、硬件连接

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

原理图
单片机最小系统,可自己添加按键控制程序。本设计未添加。
在这里插入图片描述
驱动电路
在这里插入图片描述
LED灯电路
在这里插入图片描述
P0、P1控制每一层点亮的LED灯,连接控制LED灯三极管的基级。

P24、P25、P26、P27控制点亮的层数,同样使用三极管进行控制。

四、软件代码

main主函数

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

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

BMP.c

存储不同的灯光效果,程序中我设计了九个供大家学习。全亮、全灭、平面从最左面到最右面、平面从最下面到最上面、旋转点亮、旋转全亮、平面旋转、波浪、斜面。每个效果的程序结构基本相同。

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--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}
}

五、效果展示

4*4*4光立方

六、代码链接

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

http://www.xdnf.cn/news/858007.html

相关文章:

  • DM、PQ、PM、diskgen分区工具介绍比较
  • 计算机vf打开多个窗口知识,计算机二级VF知识点总结
  • 【主题词——玫瑰花】
  • 广告基础概念
  • 数据质量管理
  • cookie和session区别
  • linux grep -a命令,linux grep用法
  • 5款好用的轻量云服务器(618超便宜轻量云)
  • 2022保密教育线上培训考试 06
  • 适合国人的常用的Cydia源地址搜集
  • 微信游戏小程序源码-合成大西瓜小游戏(合成版)源码 附带流量主功能
  • 电脑网页游戏打不开?
  • 红外光谱图解析知识大全(图文并茂)
  • 时域采样与频域采样实验报告_使用网络分析仪进行时域分析
  • 连接器分类及选型
  • mysql数据库的基本管理
  • 测试用例和设计方法
  • Measurement Studio简介
  • c++如何开发可安装的软件_ug软件如何正确安装?
  • STM32CubeMX+MDK通过I2S接口进行音频输入输出(全双工读写一个DMA回调)
  • TFT-lCD的常见接口介绍
  • 用计算机有什么坏处,电脑的危害有哪些 长期使用电脑的十大危害
  • SSH(Secure Shell)协议:
  • haproxy+keepalived集群搭建02
  • 南师大学生用考研Style鼓舞士气
  • Python调用天气API
  • TransparentBlt、StretchBlt与BitBlt三个函数的区别
  • RW-50004:Error code received when running external process
  • 解决git错误: error object file is empty , The remote end hung up unexpectedly
  • SEO外链神器,这几款工具能帮助网站快速搞定!