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

本次设计一个非常简洁的光立方,省略了限流电阻,用两节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();

}

}

相关推荐
zd84510150018 分钟前
ESP8266 MQTT连接onenet
stm32·单片机
3壹1 小时前
STM32按键检测与上拉电阻详解
c语言·stm32·嵌入式硬件
昵称只能一个月修改一次。。。2 小时前
【无标题】
单片机·嵌入式硬件
AI+程序员在路上2 小时前
新手进入嵌入式行业方法与方向选择
c语言·开发语言·单片机·嵌入式硬件
The️2 小时前
STM32F407 + LVGL 图形界面开源开发板
stm32·单片机·嵌入式硬件·开源·硬件工程·开源协议·pcb工艺
Zevalin爱灰灰2 小时前
编程技巧(基于STM32)第三章 模式切换程序模板
stm32·单片机·嵌入式
爱喝纯牛奶的柠檬2 小时前
【已验证】STM32驱动RC522_RFID模块实现卡片识别
stm32·单片机·嵌入式硬件
老师用之于民2 小时前
【DAY34】基于 IMX6ULL 的嵌入式系统底层开发:中断、时钟与定时器配置
单片机·嵌入式硬件
DA02212 小时前
系统移植-STM32MP1_U-Boot移植
单片机·bsp·系统移植
不怕犯错,就怕不做3 小时前
Linux中的IS_ENABLED 函数实战使用demo
linux·驱动开发·嵌入式硬件