⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 12ul_play.c

📁 基于AVR单片机的12段LED管灯控制程序
💻 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 + -