内信我,我也想买
 
					
				 
					
				最近老出差,有一段时间没玩了,今天抽时间做了几个动画,就是手机录得太差了,看不到实物的效果。找时间再说了,部分源码稍后看有人参考的吗
 
					
				 
					
				#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*/
回复
| 有奖活动 | |
|---|---|
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
| 送您一块开发板,2025年“我要开发板活动”又开始了! | |

 
					
				 
			
			
			
						
			 
					
				 
					
				 
					
				 
					
				 我要赚赏金
 我要赚赏金 STM32
STM32 MCU
MCU 通讯及无线技术
通讯及无线技术 物联网技术
物联网技术 电子DIY
电子DIY 板卡试用
板卡试用 基础知识
基础知识 软件与操作系统
软件与操作系统 我爱生活
我爱生活 小e食堂
小e食堂

