📄 12ul_play.c
字号:
/****************************************************************************
//------------------ All color 12ul play implement-----------------------
//FileName : 12ul_Play.c
//Function : All color(RGB) play implement
//Created by : Zhoushengzhi
//Created date : 12/10/2006
//Version : V0.1
//CopyRight (c) 2006 Zhoushengzhi
//E-mail : zhounanxu@163.com
//--------------------------------------------------------------------------
****************************************************************************/
#include <avrx/avrx.h>
#include "Hardware.h"
#include "12ul_Play.h"
//----------------------------------------------------------------
TimerControlBlock delay;// Declare the control blocks for timers
/*================================================================
Function: All lamps revolve the same color:R-G-B-RB-GB-RG-RGB.
-----------------------------------------------------------------*/
void Play_Jump_All(WORD bDelayT1ms)
{
BYTE bi;
for(bi = 0; bi < 7; bi++)
{
PlayAllOneColor(bi);
AvrXDelay(&delay, bDelayT1ms);
}
}
//----------------------------------------------------------------
void PlayAllOneColor(BYTE bColor)
{
WORD bi;
Set_Stb();
for(bi = 0; bi < BLAMPS*BXDOTS; bi++)
{
SendOneDotColorData(bColor);
}
Clr_Stb();
}
//----------------------------------------------------------------
void SendOneDotColorData(BYTE bColor)
{
BYTE bi;
Set_Clk();Set_Sdi();Clr_Clk();
for(bi=0; bi<3; bi++)
{
Set_Clk();
if(bRgb_Logic[bColor*3+bi] == 1)
Clr_Sdi();
else
Set_Sdi();
Clr_Clk();
}
}
/*================================================================
Function: Run color close and open,R-G-B-RB-GB-RG.
-----------------------------------------------------------------*/
void Play_CloseOpenMoveUpt( WORD bRunSpeed)
{
BYTE bi;
PlayAllOneColor(YELLOW);
for(bi = RED; bi<= YELLOW; bi++)
if(bi%2 == 0)
SetCloseColor( bi, bRunSpeed);
else
SetOpenColor( bi, bRunSpeed);
}
//----------------------------------------------------------------
void SetCloseColor( BYTE bMoveColor, WORD bMoveSpeed)
{
WORD bi, loop;
for(loop=0; loop < (BLAMPS*BXDOTS)/2; loop++)
{
Set_Stb();
for(bi=0; bi < (BLAMPS*BXDOTS); bi++)
{
if((bi <= loop) || (bi >= ((BLAMPS*BXDOTS)-loop)))
{
SendOneDotColorData(bMoveColor);
}
else
{
if(bMoveColor == RED)
{
SendOneDotColorData(YELLOW);
}
else
{
SendOneDotColorData(bMoveColor-1);
}
}
}
Clr_Stb();
AvrXDelay(&delay, bMoveSpeed);
}
}
//-----------------------------------------------------------------
void SetOpenColor( BYTE bMoveColor, WORD bMoveSpeed)
{
WORD bi, loop;
for(loop=0; loop < (BLAMPS*BXDOTS)/2; loop++)
{
Set_Stb();
for(bi=0; bi < (BLAMPS*BXDOTS); bi++)
{
if((bi <= ((BLAMPS*BXDOTS)/2+loop)) && (bi >= ((BLAMPS*BXDOTS)/2-loop)))
{
SendOneDotColorData(bMoveColor);
}
else
{
if(bMoveColor == RED)
{
SendOneDotColorData(YELLOW);
}
else
{
SendOneDotColorData(bMoveColor-1);
}
}
}
Clr_Stb();
AvrXDelay(&delay, bMoveSpeed);
}
}
/*================================================================
Function: Gradual about 16dots.
-----------------------------------------------------------------*/
void Play_Gradual(BYTE bGradSpeeds)
{
WORD wi, wj;
for(wi = 1; wi <= BASHVAL; wi++)
{
for(wj = 0; wj < bGradSpeeds; wj++)
DisplayAsh(wi, BASHVAL - wi, 0);
}
for(wi = 1; wi <= BASHVAL; wi++)
{
for(wj = 0; wj < bGradSpeeds; wj++)
DisplayAsh(BASHVAL - wi, 0, wi);
}
for(wi = 1; wi <= BASHVAL; wi++)
{
for(wj = 0; wj < bGradSpeeds; wj++)
DisplayAsh(0, wi, BASHVAL - wi);
}
}
//-----------------------------------------------------------------
void DisplayAsh(WORD wRedAsh, WORD wGreenAsh, WORD wBlueAsh)
{
WORD wi,wloop;
for(wi = 0; wi < BASHVAL; wi++)
{
Set_Stb();
for(wloop = 0; wloop < 8; wloop++)
{
SendOneDotAshColorData(wi, wRedAsh, wGreenAsh, wBlueAsh);
}
Clr_Stb();
}
}
/*==========================================================================
Function: play AshRGB.
----------------------------------------------------------------------------*/
void Play_24ColorRunAsh_L_to_R(WORD wStayTimes)
{
WORD wi, wj, wk, wStartDot;
for(wStartDot = 0; wStartDot < 24; wStartDot++)
{
for(wk = 0; wk < wStayTimes; wk++)
{
for(wj = 0; wj < BASH16; wj++)
{
Set_Stb();
for(wi = wStartDot; wi < (wStartDot + 24); wi++)
{
SendOneDotAshColorData(wj, bAshRgb[wi%24*3+0], bAshRgb[wi%24*3+1], bAshRgb[wi%24*3+2]);
}
Clr_Stb();
}
}
}
}
//------------------------------------------------------------------------------
void SendOneDotAshColorData(WORD wi, WORD wRedAsh, WORD wGreAsh, WORD wBluAsh)
{
Set_Clk();Set_Sdi();Clr_Clk();
Set_Clk();
if(wi < wGreAsh)Clr_Sdi();
else Set_Sdi();
Clr_Clk();
Set_Clk();
if(wi < wRedAsh)Clr_Sdi();
else Set_Sdi();
Clr_Clk();
Set_Clk();
if(wi < wBluAsh)Clr_Sdi();
else Set_Sdi();
Clr_Clk();
}
/*==========================================================================
Function: play BmpAsh.
----------------------------------------------------------------------------*/
void Play_24ColorStaAsh(WORD wStaAshTime)
{
WORD wi, wloop, wxdots;
for(wloop = 0; wloop < wStaAshTime; wloop++)
{
for(wi = 0; wi < BASH16; wi++)
{
Set_Stb();
for(wxdots = 0; wxdots < 24; wxdots++)
{
SendOneDotAshColorData(wi, bAshRgb[wxdots*3+0], bAshRgb[wxdots*3+1], bAshRgb[wxdots*3+2]);
}
Clr_Stb();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -