这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » Tensl - DIY光立方双色带频谱,(72楼更新驱动部分加主函数源码,供参考

共123条 7/13 |‹ 5 6 7 8 9 10 ›| 跳转至
工程师
2011-12-31 17:35:58     打赏
61楼

内信我,我也想买


助工
2012-01-01 16:45:34     打赏
62楼

过来学习学习啦


助工
2012-01-01 19:32:17     打赏
63楼
学习!

助工
2012-01-01 22:43:06     打赏
64楼
好高级!

高工
2012-01-02 21:55:08     打赏
65楼
板子我自己做的,其实早就有人做出来了,楼上说的杜阳也有,我只不过目前应该个人做的功能还是比较多的,双色频谱光敏等很多别人的没有

高工
2012-01-02 22:01:53     打赏
66楼
http://v.youku.com/v_show/id_XMzM4OTc1NjQw.html
最近老出差,有一段时间没玩了,今天抽时间做了几个动画,就是手机录得太差了,看不到实物的效果。找时间再说了,部分源码稍后看有人参考的吗

菜鸟
2012-01-03 20:05:11     打赏
67楼
DIY英雄

高工
2012-01-04 13:31:38     打赏
68楼
这个做出来还是挺好玩的

高工
2012-01-14 17:15:45     打赏
69楼

#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*/


助工
2012-03-08 08:52:10     打赏
70楼
好,我顶啊!

共123条 7/13 |‹ 5 6 7 8 9 10 ›| 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]