基于51单片机的8x8x8LED光立方设计

2023-11-19

1.简介
本设计是以STC89C52单片机的8x8x8的LED光立方。本设计将LED光立方分成8层,分别由单片机的P1,8个IO口来控制每一层,由于采用的是共阴极所以当层电位为高电平有效,由P0口和P2的总共16个IO口来控制每层的64盏灯,低电平有效,P2口通过8个74HC573缓冲器芯片来驱动LED。这样就可以通过控制IO口的输出电平来控制每盏灯的亮灭。

2.硬件设计
本系统的硬件电路主要单片机最小系统、LED光立方驱动电路、LED光立方电路组成,其硬件框图如图:
在这里插入图片描述
(1)光立方驱动电路原理
以8X8X8光立方为例:

一个光立方我们可以拆成8个面,如图
在这里插入图片描述
而每个面又有8X8共64个LED灯,如图:
在这里插入图片描述
这样,我们只要控制这 64 个灯使其能够自由变换,然后再通过控制每个层依次点亮即可,由于我们眼睛的视觉暂留,使我们感觉看到的东西是一起再亮的。这样我们就看到了一个完整的个体。
驱动的步骤是:

  1. Z轴选中一个要点亮的面(一个面共有8段Y轴)
  2. Y轴选中一个需要点亮的Y轴(一段Y轴共有8个LED灯)
  3. X轴上的8个控制引脚通过设定的编码来点亮8个LED中某几个,并延时相应的时间
  4. 重复扫描8个Y轴边完成一个面的点亮,然后再重复扫描其他7个面,便完成了一次光立方的点亮了

(2)光立方驱动电路设计
此光立方采用一个ULN2308驱动芯片(作为Z轴的选择),和8个8路的74HC573锁存器(一个74HC573作为一个Y轴)来驱动8X8X8共512个LED灯。整体电路如图:
在这里插入图片描述
总的原理是每一时刻选中573的LE使能脚,使其为低电平,再由573输送次引脚对应的8个LED的亮灭状态,一个阴极点需要8位,即一个字节数据,完成一次完整的显示需要64个字节,此为一帧,要产生动画效果则需要产生中断进入下一帧。

(3)总体硬件电路
在这里插入图片描述
3.软件设计
(1)软件说明
光立方的软件设计相对简单,主要根据相应的动画效果的编码对光立方进行动态扫描,软件流程如图:
在这里插入图片描述
程序开始运行,获取到要显示的LED所在的层和列然后调用显示子程序点亮LED灯,通过延时程序进行短暂延时后继续获取下一个要显示的LED灯的所在的层和列。
如果你想要设计自己所要的动画效果,可以通过常用的光立方取模软件获得相应的动画编码。

(2)部分显示效果编码

uchar code display[]={
						
					 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,0x18,0x18,0x00,0x00,0x00,	    //1
					 0x00,0x00,0x00,0x18,0x18,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,0x00,0x00,0x00,
					 0x00,0x00,0x3c,0x24,0x24,0x3c,0x00,0x00,
					 0x00,0x00,0x24,0x00,0x00,0x24,0x00,0x00,	    //2
					 0x00,0x00,0x24,0x00,0x00,0x24,0x00,0x00,
					 0x00,0x00,0x3c,0x24,0x24,0x3c,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,0x00,0x00,
					 0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,	    //骰子1-49
					 0x00,0x00,0x00,0x18,0x18,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,}					 

(3)主函数代码

void main()
{
	init();	
	while(1)
	{
		for(i=0;i<8;i++)
		{
			Z = Z_Seg[i];
			for(j=0;j<8;j++)
				{
					Y = Y_Seg[j];
					X = display[count++];
					delay();
				}
			}
		count=64*temp;	
	}
}

源码+AD原理图 下载:关注公众号,首页回复“光立方”获取资料
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于51单片机的8x8x8LED光立方设计 的相关文章

  • 在区块链世界中的token到底是什么?

    token的概念很广泛 在计算机领域中 无论是基础的网络架构还是服务系统的身份验证等 都有涉及到token的概念 然而在这里我想阐述的是在区块链世界中的token是什么 相信对区块链有些了解的朋友 都或多或少的听过或者看过关于token的描
  • C++——oo的魅力之多态

    文章目录 多态的概念 多态的定义和实现 多态的构成条件 虚函数重写的两个例外 协变 基类和派生类虚函数返回值类型不同 析构函数的重写 基类和派生类析构函数名字不同 c 11 override 和 final 关键字 重载 重写 覆盖 隐藏
  • 全国大学生信息安全竞赛真题(CTF)

    web篇 https blog csdn net csu vc article details 78011716 https www cnblogs com iamstudy articles 2017 quanguo ctf web wr

随机推荐

  • 查看Python之禅,使用的命令以及初级学习的简单那注意事项

    cmd终端进入Python的执行终端 输入import this就可以查看到Python代码编写的原则
  • 《学习篇》学会这18个常用ROS命令集合就能入门ROS了

    常用ROS命令概述 ROS常用命令可以按照其使用场景分为ROSshell命令 ROS执行命令 ROS信息命令 ROS catkin命令与ROS功能包命令 虽然很难从一开始就很熟练地使用所有的命令 但是随着使用的次数增多 你会发现常用的几个R
  • rabbitmq queue_declare arguments参数注释

    说明 官方文档 在创建queue时可以指定很多参数 可以限制队列的大小 消息的死信时间 优先级等等 queue消息条数限制 x max length 该参数是非负整数值 官方文档 限制加入queue中消息的条数 先进先出原则 超过10条后面
  • JavaScript重写Symbol(Symbol.iterator)实现迭代器(1)

    iterator迭代 做的跟java集合迭代差不多就行了 示例图 h1 对象遍历重写iterator接口1 h1
  • HTML5无刷新修改URL:利用 History API 无刷新更改地址栏

    为什么80 的码农都做不了架构师 gt gt gt HTML5 新增的历史记录 API 可以实现无刷新更改地址栏链接 配合 AJAX 可以做到无刷新跳转 简单来说 假设当前页面为renfei org 那么执行下面的 JavaScript 语
  • 前端权限控制(一):前端权限管理及动态路由配置方案

    权限控制 在项目中 尤其是在后台管理系统中 不同人员登陆 看到的页面菜单是不一样的 比如 一个公司的办公系统 超级管理员登陆可以看到所有的页面 而普通员工账号登录可能无法看到人员管理等页面 比如公司的员工个人资料页面只有人力资源部门有权利看
  • 软件测试面试题:软件测试的风险主要体现在哪里?

    软件测试的风险主要体现在哪里 我们没有对软件进行完全测试 实际就是选择了风险 因为缺陷极有可能存在没有进行测试的部分 举个例子 程序员为了方便 在调试程序时会弹出一些提示信息框 而这些提示只在某种条件下会弹出 碰巧程序发布前这些代码中的一些
  • 【MySQL】MySQL存储过程从一张表查数据插入另一张表

    测试表 CREATE TABLE demo test ID varchar 64 NOT NULL name varchar 64 DEFAULT NULL age varchar 64 DEFAULT NULL PRIMARY KEY I
  • 四种常见函数式接口

    消费型函数式接口 Consumer
  • jmeter分布式压测

    1 什么是分布式压测 由一台控制机 Master 发出命令 控制多个压力机 Slaves 执行操作 2 为什么要做分布式压测 一台压力机的 Jmeter 默认最大支持 1000 左右的并发用户数 线程数 再大的话 容易造成卡顿 无响应等情况
  • Tomcat安装与配置(详细步骤)

    本篇博文记录了Tomcat环境安装与配置的详细步骤 旨在为将来再次配置Tomcat时提供指导方法 一 下载Tomcat Tomcat官网为 https tomcat apache org 1 按照下图根据JDK版本选择对应的 Tomcat
  • Chromium多进程架构,你知道多少?

    一 前言 国内外主流的浏览器 大多采用的是谷歌的Chromium 浏览器内核 Chromium是一个多进程多线程架构的Web引擎 很多应用和底层开发者希望了解Chromium中的进程和线程的种类和用途 以便能利用相关信息提升应用的性能 为此
  • 解决Eclipse,MyEclipse出现An error has occurred,See error log for more details的错误

    src http blog sina com cn s blog 4ba5b45e0102eam8 html 现把找到的解决方法整理提供给大家 如下 方法1 在 开始 gt 运行 gt 打入 cmd 进入命令提示行后 再进入eclipse的
  • iOS编程基础-OC(八)-运行时系统的结构(续)

    该系列文章系个人读书笔记及总结性内容 任何组织和个人不得转载进行商业活动 第八章 运行时系统的结构 8 1 2 运行时系统库 苹果公司提供的OC运行时系统库实现了OC的面向对象特性和动态属性 多数情况下 运行时系统库是在后台起作用 但也拥有
  • 如何使用Vue开发Electron桌面程序

    目录 一 Electron介绍 二 项目搭建 1 使用 vue cli 创建vue项目 2 安装插件 vue cli plugin electron builder 编辑 三 开发总结 1 配置项目图标 2 在Mac系统下的几个问题 3 项
  • 重要的环境变量&通配符&转义字符

    重要的环境变量 变量是系统用于可变值的数据类型 在linux中环境有几百个 都是系统运行环境的一些参数 例如 用户家目录等 输入 env 可输出所有环境变量 几个比较常见的环境变量 PATH 定义当前用户解释器搜索路径 HOME 当前用户的
  • Mac os下通过Anaconda在远程服务器配置python虚拟环境

    一 SSH管理软件 这里推荐一款本人正在使用的软件 Termius Termius是一款非常好用而且漂亮的SSH客户端 能快速远程控制服务器 可以定制自己喜欢的主题 Termius不仅涵盖了Windows Linux OSX 还变态得支持A
  • POI及EasyExcel-读写示例

    POI
  • 嵌入式杂谈之中断向量表

    虽说接触了好久的单片机或者说嵌入式开发 不过对于有些概念还是比较模糊 因此此系列将会从一些零碎的小知识点出发 慢慢的遍历整张嵌入式开发的地图 这次先来看一下中断向量表 至于为什么会提到中断向量表 主要是因为我自己在学习嵌入式Linux开发的
  • 基于51单片机的8x8x8LED光立方设计

    1 简介 本设计是以STC89C52单片机的8x8x8的LED光立方 本设计将LED光立方分成8层 分别由单片机的P1 8个IO口来控制每一层 由于采用的是共阴极所以当层电位为高电平有效 由P0口和P2的总共16个IO口来控制每层的64盏灯