内信我,我也想买
最近老出差,有一段时间没玩了,今天抽时间做了几个动画,就是手机录得太差了,看不到实物的效果。找时间再说了,部分源码稍后看有人参考的吗
#include <stm32f10x_lib.h>
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "cube.h"
#define CUBE_SIZE 0x08
//CUBE8*8*8
// 起始红色数组 x0 x1 x2 x3 x4 x5 x6 x7
const u8 Layer[CUBE_SIZE][CUBE_SIZE] = {
0x00, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x00, // y0
0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, // y1
0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, // y2
0x7E, 0xFF, 0xFF, 0xE7, 0xE7, 0xFF, 0xFF, 0x7E, // y3
0x7E, 0xFF, 0xFF, 0xE7, 0xE7, 0xFF, 0xFF, 0x7E, // y4
0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, // y5
0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, // y6
0x00, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x00, // y7
};
// 起始蓝色数组
const u8 Layex[CUBE_SIZE][CUBE_SIZE] = {
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xFF,
0xFF, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xFF,
0xFF, 0x81, 0x81, 0x99, 0x99, 0x81, 0x81, 0xFF,
0xFF, 0x81, 0x81, 0x99, 0x99, 0x81, 0x81, 0xFF,
0xFF, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xFF,
0xFF, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
};
//const u8 Layer[CUBE_SIZE][CUBE_SIZE] = {
// 0xFF, 0xFF, 0xE7, 0xF3, 0xF3, 0xE7, 0xFF, 0xFF, // y0
// 0xFF, 0xE7, 0xC3, 0xE1, 0xE1, 0xC3, 0xE7, 0xFF, // y1
// 0xF7, 0xE3, 0xC1, 0xE0, 0xE0, 0xC1, 0xE3, 0xF7, // y2
// 0xC7, 0x83, 0x81, 0xC0, 0xC0, 0x81, 0x83, 0xC7, // y3
// 0xC7, 0x83, 0x81, 0xC0, 0xC0, 0x81, 0x83, 0xC7, // y4
// 0xF7, 0xE3, 0xC1, 0xE0, 0xE0, 0xC1, 0xE3, 0xF7, // y5
// 0xFF, 0xE7, 0xC3, 0xE1, 0xE1, 0xC3, 0xE7, 0xFF, // y6
// 0xFF, 0xFF, 0xE7, 0xF3, 0xF3, 0xE7, 0xFF, 0xFF, // y7
// };
//// 起始蓝色数组
//const u8 Layex[CUBE_SIZE][CUBE_SIZE] = {
// 0xE3, 0xC1, 0x81, 0x03, 0x03, 0x81, 0xC1, 0xE3,
// 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
// 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
// 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
// 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
// 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
// 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
// 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
// };
// 蓝色点数据
vu8 cube1[CUBE_SIZE][CUBE_SIZE] = {
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
};
// 红色点数据
vu8 cube2[CUBE_SIZE][CUBE_SIZE] = {
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
};
// 蓝色点通信数据
vu8 cube_a[CUBE_SIZE][CUBE_SIZE] = {
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
};
// 红色点通信数据
vu8 cube_b[CUBE_SIZE][CUBE_SIZE] = {
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
};
/********************************************************/
/* */
/* * 芯片上升沿延时脉冲 */
/* */
/********************************************************/
void NOP_8(void)
{
__nop();
__nop();
__nop();
__nop();
__nop();
__nop();
__nop();
__nop();
}
/********************************************************/
/* */
/* * 将显示数据送入74HC595内部移位寄存器,输并出寄存器值 */
/* */
/********************************************************/
void WR_595(u8 ii)
{
// u8 i,j,k,Temp,a;
// for(k=0;k<8;k++)
// {
// for(i=0;i<8;i++) //八片74HC595
// {
// Temp = tab[8*k+i];
//// tab++;
// for(j=0;j<8;j++) //发送数据给对应的595
// {
//// SCK_595 = 0;
// if(Temp & 0x80)
// {
// SI_595 = 0;
// a = 0;
// }
// else
// {
// SI_595 = 1;
// a = 1;
// }
// Temp = Temp<<1;
// SCK_595 = 0;
// NOP_8();
// NOP_8();
// SCK_595 = 1;
// }
// }
// RCK_595 = 0; //上升沿时将信号输出到并行端口
// CLK_574 = 0; //上升沿时574将数据输出到并行端口
//// X_574(k);
//// Y_574(k);
// DATA_X(0xFF);
// DATA_Y(0xFF);
// switch(k)
// {
// case 0:
//// DATA_X(0xFE);
// DATA_Y(0xFE);
// break;
// case 1:
//// DATA_X(0xFD);
// DATA_Y(0xFD);
// case 2:
//// DATA_X(0xFB);
// DATA_Y(0xFB);
// break;
// case 3:
//// DATA_X(0xF7);
// DATA_Y(0xF7);
// case 4:
//// DATA_X(0xEF);
// DATA_Y(0xEF);
// break;
// case 5:
//// DATA_X(0xDF);
// DATA_Y(0xDF);
// case 6:
//// DATA_X(0xBF);
// DATA_Y(0xBF);
// break;
// case 7:
//// DATA_X(0x7F);
// DATA_Y(0x7F);
// break;
// default:
// break;
// }
//
//// RCK_595 = 0; //上升沿时将信号输出到并行端口
//// CLK_574 = 0; //上升沿时574将数据输出到并行端口
// NOP_8();
// RCK_595 = 1;
// CLK_574 = 1;
// delay_ms(200);
// }
u8 i,j;
for(i=0;i<8;i++) //74HC595移位64次
{
for(j=0;j<8;j++)
{
SCK_595 = 0;
if(i == 0 && j == 0)
SI_595 = 0;
else
SI_595 = 1;
NOP_8();
SCK_595 = 1;
if(ii == 0)
{
DATA_X(Layex[i][j]);
DATA_Y(Layer[i][j]);
}else if(ii == 1)
{
DATA_X(cube1[i][j]);
DATA_Y(cube2[i][j]);
}else
{
DATA_X(cube_a[i][j]);
DATA_Y(cube_b[i][j]);
}
RCK_595 = 0; //上升沿时将信号输出到并行端口
CLK_574 = 0; //上升沿时574将数据输出到并行端口
NOP_8();
RCK_595 = 1;
CLK_574 = 1;
delay_us(300);
}
}
}
int main(void)
{
u8 k,key = 0,Function = 1;
Stm32_Clock_Init(9); //系统时钟设置
delay_init(72); //延时初始化
LED_Init(); //初始化与LED连接的硬件接口
CUBE_Init(); //CUBE初始化
KEY_Init(); //初始化与按键连接的硬件接口
Kout = 0; //开电源
CLK_574 = 0;
OE_595 = 0; //595输出使能
SCK_595 = 1;
RCK_595 = 1;
for(k=0;k<64;k++)
{
WR_595(0);
}
// delay_ms(1000);
while(1)
{
WR_595(0);
key=KEY_Scan(); //得到键值
switch(key)
{
case 1:
Function =!Function;
break;
case 2:
delay_ms(1000);
Kout = 1;//关电源
break;
default:
break;
}
if(Function)
{
LED0=0;
LED1=1;
delay_us(325);
// LED0=1;
// LED1=1;
// delay_ms(10);
LED0=1;
LED1=0;
delay_us(325);
// LED0=1;
// LED1=1;
// delay_ms(10);
}
}
}
/*END*/
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图四被打赏50分 | |
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 |