STC 51单片机62——极简 4x4x4光立方

embedded/2025/2/13 4:01:52/

本次设计一个非常简洁的光立方,省略了限流电阻,用两节1.5V干电池直接驱动。

主控芯片:STC8H1K28,属于STC中比较新的系列单片机,管脚够用,也没有很多的空余。

电源直接使用带开关的电池盒,内含2节1.5v干电池。将电池盒的引线焊接到PCB上的电源孔,增加两个滤波电容:

程序下载电路,按照datasheet设计,需要加二极管和限流电阻:

核心部分是电路板上的4x4的共阴极LED矩阵:

 

然后是每层LED的公共极,连接一个三极管:

完整原理图:

并绘制出PCB:

焊接的时候,由于不喜欢LED躺着的光立方,所以设计一个模具,能够让LED直立:

把模具排开,做成二维图,用于激光切割亚克力板:

 

 

代码就先写了个框架,凑合试试:

#include "STC8H.h"

#include "usart.h"

#define u8 unsigned char

#define u16 unsigned int

sbit Ceng1=P3^7; //公共极图层1

sbit Ceng2=P3^6; //公共极图层2

sbit Ceng3=P3^5; //公共极图层3

sbit Ceng4=P3^4; //公共极图层4

u8 Tu1[8]={0x0f,0x00,0x0f,0x00,0x0f,0x00,0x0f,0x00};//一帧图像

u8 Tu2[8]={0xf0,0x00,0xf0,0x00,0xf0,0x00,0xf0,0x00};//一帧图像

u8 Tu3[8]={0x00,0x0f,0x00,0x0f,0x00,0x0f,0x00,0x0f};//一帧图像

u8 Tu4[8]={0x00,0xf0,0x00,0xf0,0x00,0xf0,0x00,0xf0};//一帧图像

void Mydelay(u8 t)

{

  unsigned char i,j,k;

    for(i=0;i<t;i++)

        for(j=0;j<20;j++)

            for(k=0;k<250;k++)

                ;

}

void IOInit()//IO初始化

{

    P0M0 = 0x00;

    P0M1 = 0x00;

    P1M0 = 0xff;

    P1M1 = 0x00;

    P2M0 = 0xff;

    P2M1 = 0x00;

    P3M0 = 0x00;

    P3M1 = 0x00;

    P4M0 = 0x00;

    P4M1 = 0x00;

    P5M0 = 0x00;

    P5M1 = 0x00;

}   

void XuanCeng(u8 CengN) //选择哪层亮

{

  switch (CengN){

      case 1: P3=0x10; break;

        case 2: P3=0x20; break;

      case 3: P3=0x40; break;

        case 4: P3=0x80; break;   

      default: P3=0x00;

    }

    Mydelay(1); //调整延时,控制显示速度

}                   

void YiZhen(u8 Table[])//显示一帧图像

{

    P1=Table[0];

    P2=Table[1];

  XuanCeng(1);

    P1=Table[2];

    P2=Table[3];

  XuanCeng(2);

    P1=Table[4];

    P2=Table[5];

  XuanCeng(3);

    P1=Table[6];

    P2=Table[7];

  XuanCeng(4);

}

void Donghua()//动画,由多个图像帧组成

{

    u8 i;

    for(i=0;i<10;i++)

    YiZhen(Tu1);

    for(i=0;i<10;i++)

    YiZhen(Tu2);   

    for(i=0;i<10;i++)

    YiZhen(Tu3);

    for(i=0;i<10;i++)

    YiZhen(Tu4);

}

void main()//主函数

{

  unsigned int n;

    n=0;

    IOInit();

    UartInitP();//串口初始化,用于调试

    //Mydelay();

    Ceng1=0;

    Ceng2=0;   

    Ceng3=0;   

    Ceng4=0;   

   

    P1=0x01;

    P2=0x01;

    while(1){

    Donghua();

    }

}


http://www.ppmy.cn/embedded/161774.html

相关文章

BUU35 [DASCTF X GFCTF 2024|四月开启第一局]EasySignin 100 【gopher打mysql】

先注册一个账号&#xff0c;登进去以后发现有三个功能&#xff0c;康好康的图片现在不行&#xff0c;推测得是admin用户才行 点击更新当前用户密码&#xff0c;没让我们输入旧密码&#xff0c;抓包后更改username&#xff0c;这样我们更新的就是admin用户的密码了 利用gopher…

数​字​政​通​一​面

1. 请尽可能详细地说明&#xff0c;虚拟dom是什么&#xff0c;它的产生是为了解决哪些问题的&#xff1f;你的回答中不要写出示例代码。 虚拟DOM&#xff08;Virtual DOM&#xff09; 定义 虚拟DOM是一个轻量级的JavaScript对象&#xff0c;它是真实DOM&#xff08;Document…

关于防火墙运维面试题

一、防火墙基础概念类 1. 请详细阐述防火墙在网络安全体系中的具体作用及核心原理。 以下是防火墙在网络安全体系中的具体作用及核心原理的详细阐述&#xff1a; 防火墙在网络安全体系中的作用 访问控制 限制非法访问&#xff1a;防火墙可以根据预设的规则&#xff0c;允许…

Wiki文档转换为Word技术

一、技术背景与目标 Wiki系统导出的文档通常以HTML格式存在,且内容分散在多个文件中,每个页面对应一个HTML文件。然而,Microsoft Word(Word)在处理HTML文件时,仅支持单个HTML文件的导入。因此,为了将Wiki导出的内容转换为Word可识别的格式,必须将分散的HTML文件整合为一…

DeepSeek图解10页PDF

以前一直在关注国内外的一些AI工具&#xff0c;包括文本型、图像类的一些AI实践&#xff0c;最近DeepSeek突然爆火&#xff0c;从互联网收集一些资料与大家一起分享学习。 本章节分享的文件为网上流传的DeepSeek图解10页PDF&#xff0c;免费附件链接给出。 1 本地 1 本地部…

SpringBoot项目练习

重点学习技术&#xff1a; Nginx、Spring Session、Swagger、lombok、Redis、junit 流程&#xff1a; 建库-->建表&#xff08;导入表结构&#xff09; 新建maven项目-->pom文件-->application.yml-->启动类-->前端静态资源配置 登录功能&#xff08;创建实体…

基于房价预测的线性回归算法原理与python实现(附源代码)

前言 线性回归是机器学习中最基础且应用广泛的算法之一。本文将详细介绍一个基于Python实现的线性回归算法,包括数据预处理、特征归一化、梯度下降优化等核心步骤。同时将结合房价预测的实际案例,从数学角度深入解析线性回归的原理及其Python实现。 一、问题定义 1.1 数据集…

React Hooks 与 Class 组件相比有何优势

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…