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

📄 xszkzqv12.c

📁 LED照明行业地砖及护栏控制器程序 从现况来看
💻 C
📖 第 1 页 / 共 2 页
字号:
	sendall();
	delay1s(speed);
	}
}
//*******************************
//右百叶闭幕
//********************************
void ybybm(uchar speed)
{
uchar x,i;
for(i=3;i<254;i--)
	{for(x=0;x<XX/4;x++)
		{
		dis_red[x*4+i]=0;
		dis_grn[x*4+i]=0;
		dis_blu[x*4+i]=0;
		}
	sendall();
	delay1s(speed);
	}
}
//*******************************
//从中间向两边展开
//*******************************
void mlrun(uchar speed)
{
uchar x;
for(x=0;x<X1;x++)
	{
	dis_red[x+X1]=x64cr[x+X1];dis_red[X1-x]=x64cr[X1-x];
	dis_grn[x+X1]=x64cg[x+X1];dis_grn[X1-x]=x64cg[X1-x];
	dis_blu[x+X1]=x64cb[x+X1];dis_blu[X1-x]=x64cb[X1-x];
	sendall();
	}
delay1s(speed);
}
//*******************************
//从中间向两边闭幕
//**********************************
void mlrco(uchar speed)
{
uchar x;
for(x=X1;x<XX;x++)
	{
	dis_red[x]=0;dis_red[XX-1-x]=0;
	dis_grn[x]=0;dis_grn[XX-1-x]=0;
	dis_blu[x]=0;dis_blu[XX-1-x]=0;
	sendall();
	}
delay1s(speed);
}
//*******************************
//两边向中间展开
//**********************************
void lrmun(uchar speed)
{
uchar x;
for(x=XX-1;x>X1;x--)
	{
	dis_red[x]=x64cr[x];dis_red[XX-1-x]=x64cr[XX-1-x];
	dis_grn[x]=x64cg[x];dis_grn[XX-1-x]=x64cg[XX-1-x];
	dis_blu[x]=x64cb[x];dis_blu[XX-1-x]=x64cb[XX-1-x];
	sendall();
	}
delay1s(speed);
}
//*******************************
//两边向中间闭幕
//**********************************
void lrmco(uchar speed)
{
uchar x;
for(x=0;x<X1;x++)
	{
	dis_red[x]=0;dis_red[XX-1-x]=0;
	dis_grn[x]=0;dis_grn[XX-1-x]=0;
	dis_blu[x]=0;dis_blu[XX-1-x]=0;
	sendall();
	}
delay1s(speed);
}
//*******************************
//中间向两边移出
//**********************************
void mlrmov(uchar speed)
{
uint i,x;
uchar code *ROMP;
ROMP=0x2000;
for(x=0;x<XX;x++)
	{
	dis_red[x]=0;//清屏
	dis_grn[x]=0;//清屏
	dis_blu[x]=0;//清屏
	}
for(i=0;i<XX/2;i++)
	{
	for(x=XX-1;x>X1;x--)
		{
		dis_red[x]=dis_red[x-1];
		dis_grn[x]=dis_grn[x-1];
		dis_blu[x]=dis_blu[x-1];
		}
	dis_red[X1]=*ROMP;ROMP++;
	dis_grn[X1]=*ROMP;ROMP++;
	dis_blu[X1]=*ROMP;ROMP++;
	for(x=0;x<X1-1;x++)
		{
		dis_red[x]=dis_red[x+1];
		dis_grn[x]=dis_grn[x+1];
		dis_blu[x]=dis_blu[x+1];
		}
	dis_red[X1-1]=*ROMP;ROMP++;
	dis_grn[X1-1]=*ROMP;ROMP++;
	dis_blu[X1-1]=*ROMP;ROMP++;
	sendall();
	}
delay1s(speed);
}
//***********************************
//多彩流动
//***************************************
void qcld(uchar speed)
{
uint j,x;
uchar rs,gs,bs;
for(j=0;j<XX;j++)
	{for(x=XX-1;x>0;x--)
		{
		dis_red[x]=dis_red[x-1];
		dis_grn[x]=dis_grn[x-1];
		dis_blu[x]=dis_blu[x-1];
		}
	dis_red[0]=x64cr[j];
	dis_grn[0]=x64cg[j];
	dis_blu[0]=x64cb[j];
	sendall();
	delay(speed);
	}
delay1s(speed);
for(j=0;j<256;j++)
	{
	rs=dis_red[XX-1];
	gs=dis_grn[XX-1];
	bs=dis_blu[XX-1];
	for(x=XX-1;x>0;x--)
		{
		dis_red[x]=dis_red[x-1];
		dis_grn[x]=dis_grn[x-1];
		dis_blu[x]=dis_blu[x-1];
		}
		dis_red[0]=rs;
		dis_grn[0]=gs;
		dis_blu[0]=bs;
		sendall();
		delay(speed);
	}
//*******************************************
for(j=0;j<XX;j++)
	{for(x=XX-1;x>0;x--)
		{
		dis_red[x]=dis_red[x-1];
		dis_grn[x]=dis_grn[x-1];
		dis_blu[x]=dis_blu[x-1];
		}
	dis_red[0]=0;
	dis_grn[0]=0;
	dis_blu[0]=0;
	sendall();
	delay(speed);
	}
}
//***********************************
//七彩流动 一条一种颜色
//***************************************
void colld(uchar speed)
{
uint j,x;
uchar rs,gs,bs;
for(j=0;j<XX;j++)
	{for(x=XX-1;x>0;x--)
		{
		dis_red[x]=dis_red[x-1];
		dis_grn[x]=dis_grn[x-1];
		dis_blu[x]=dis_blu[x-1];
		}
	dis_red[0]=col7cr[x];
	dis_grn[0]=col7cg[x];
	dis_blu[0]=col7cb[x];
	sendall();
	delay(speed);
	}
delay1s(speed);
for(j=0;j<256;j++)
	{
	rs=dis_red[XX-1];
	gs=dis_grn[XX-1];
	bs=dis_blu[XX-1];
	for(x=XX-1;x>0;x--)
		{
		dis_red[x]=dis_red[x-1];
		dis_grn[x]=dis_grn[x-1];
		dis_blu[x]=dis_blu[x-1];
		}
		dis_red[0]=rs;
		dis_grn[0]=gs;
		dis_blu[0]=bs;
		sendall();
		delay(speed);
	}
//*******************************************
for(j=0;j<XX;j++)
	{for(x=XX-1;x>0;x--)
		{
		dis_red[x]=dis_red[x-1];
		dis_grn[x]=dis_grn[x-1];
		dis_blu[x]=dis_blu[x-1];
		}
	dis_red[0]=0;
	dis_grn[0]=0;
	dis_blu[0]=0;
	sendall();
	delay(speed);
	}
}
//------------------------------
void msk_data(uchar r0,g0,b0,r1,g1,b1)
{
uchar i;
for(i=0;i<XX/4;i++)
	{
	dis_red[i]=r0;
	dis_grn[i]=g0;
	dis_blu[i]=b0;

	dis_red[i+1]=r1;
	dis_grn[i+1]=g1;
	dis_blu[i+1]=b1;

	dis_red[i+2]=r0;
	dis_grn[i+2]=g0;
	dis_blu[i+2]=b0;

	dis_red[i+3]=r1;
	dis_grn[i+3]=g1;
	dis_blu[i+3]=b1;
//------------------------------
	dis_red[i+4]=r1;
	dis_grn[i+4]=g1;
	dis_blu[i+4]=b1;

	dis_red[i+5]=r0;
	dis_grn[i+5]=g0;
	dis_blu[i+5]=b0;

	dis_red[i+6]=r1;
	dis_grn[i+6]=g1;
	dis_blu[i+6]=b1;

	dis_red[i+7]=r0;
	dis_grn[i+7]=g0;
	dis_blu[i+7]=b0;
	}
}
//************************************
//马赛克
//*************************************
void	msk(uchar speed)
{
msk_data(255,0,0,0,255,0);
sendall();
delay1s(speed);
msk_data(0,255,0,0,0,255);
sendall();
delay1s(speed);
msk_data(0,0,255,255,0,0);
sendall();
delay1s(speed);
msk_data(255,255,0,0,255,255);
sendall();
delay1s(speed);
msk_data(255,0,255,0,255,255);
sendall();
delay1s(speed);
msk_data(255,255,0,0,0,255);
sendall();
delay1s(speed);

}

//******************************
//发送显示内存数据到各灯管
//*******************************
void sendall(void)
{
uchar j;
for(j=0;j<XX-1;j++)
	{TB81=1;
	SBUF1=j+1;while(!TI1);TI1=0;
	TB81=0;
	send_del(50);
	//send  red
	SBUF1=dis_red[j];
	while(!TI1);TI1=0;
	send_del(50);
	//send greed
	SBUF1=dis_grn[j];
	while(!TI1);TI1=0;
	send_del(50);
	//***********bluer
	SBUF1=dis_blu[j];
	while(!TI1);TI1=0;
	send_del(50);
	}
	led=!led;
}
//**********************************
//延时
//*******************************
void delay1s(uint j)
{
//uint i;
while(j!=0)
	{
	while(timer!=10)
		{
		if(frameok){save();frameok=0;}
		}
		timer=0;
		j--;
	}
}
//*******************************
void delay(uint j)
{
while(j!=0)
	{
	j--;if(frameok){save();frameok=0;}
	}
}
//-------------------------------------
void send_del(uchar j)
{
while(j!=0)
	{
	j--;
	if(frameok){save();frameok=0;}
	}
}
//*******************************
void send_delay(void)
{
uchar	j;
j=12;
while(j!=0)
	{
	j--;
	}
}
//********************************************
void main()
{
uchar i,j;
uchar idata *p;
SM0=1;
SM1=1;
SM2=0;
T2CON=0X30;
ES=0;
RCAP2H=0XFF;
TH2=0XFF;
RCAP2L=0Xdc;	//bps19200 0xdc 
TL2=0Xdc;	//bps=38400bps 256-(22.1184*10^6/32/38400)
TR2=1;
ES=1;
REN=1;
TMOD=0x25;	//timer 1 dps timer sync
SCON1=0xc0;	//serial prot 1 
TH1=0xfd;
TL1=0xfd;	//256-(22.1184*10~6/32/12/3/38400*2)
senden=0;//rev
senden1=1;
TL0=0xff;	//timer 0 is ac sync
TH0=0xff;
TR0=1;
ET0=1;

TR1=1;
ET1=0;
//ES1=1;
EA=1;
PMR=PMR|0x01;	//enable on-chip RAM
XX=20;		//dz 162 pcs
X1=10;
while(1)
{
p=&iic_buf[0];
Read24c02(p,0,128);
if(iic_buf[0]==0xaa)
	{
	for(i=0;i<iic_buf[1];i++)
		{
		switch(iic_buf[i*3+2])
			{
			case 0:
				for(j=0;j<iic_buf[i*3+3];j++)
					col7(iic_buf[i*3+4]);	
			break;//七彩渐变
			case 1:
				for(j=0;j<iic_buf[i*3+3];j++)
					{zbyzk(iic_buf[i*3+4]);
					zbybm(iic_buf[i*3+4]);
					ybyzk(iic_buf[i*3+4]);
					ybybm(iic_buf[i*3+4]);
					}
			break;	//百叶
			case 2:
				for(j=0;j<iic_buf[i*3+3];j++)
					qcld(iic_buf[i*3+4]);
			break;//七彩流水
			case 3:
				for(j=0;j<iic_buf[i*3+3];j++)
					{duun(iic_buf[i*3+4]);clear();}
			break;//向左展开
			case 4:
				for(j=0;j<iic_buf[i*3+3];j++)
					{lrmun(iic_buf[i*3+4]);
					lrmco(iic_buf[i*3+4]);
					}
			break;//左右中间展开
			case 5:
				for(j=0;j<iic_buf[i*3+3];j++)
					{mlrun(iic_buf[i*3+4]);
					mlrco(iic_buf[i*3+4]);
					}
			break;//中间向两边展开
			case 6:
				for(j=0;j<iic_buf[i*3+3];j++)
					{mlrmov(iic_buf[i*3+4]);
					mlrun(iic_buf[i*3+4]);
					}
			break;//中间向两边流动
			case 7:
				for(j=0;j<iic_buf[i*3+3];j++)
					colld(iic_buf[i*3+4]);
			break;//七彩流动,
			case 8:
				for(j=0;j<iic_buf[i*3+3];j++)
					qczk(iic_buf[i*3+4]);
			break;
			case 9:
				for(j=0;j<iic_buf[i*3+3];j++)
					msk(iic_buf[i*3+4]);
			break;//马赛克

		 	default:break;

			}
		}
	}
else
	{
	col7(10);
	zbyzk(120/XX);
	zbybm(120/XX);
	ybyzk(120/XX);
	ybybm(120/XX);
	qcld(120/XX);
	duun(120/XX);
	clear();
	lrmun(120/XX);
	lrmco(120/XX);
	mlrun(120/XX);
	mlrco(120/XX);
	colld(120/XX);
	mlrmov(120/XX);
	mlrun(120/XX);
	qczk(10);
	}//end if 0xaa
}
}

//*****************************************
//			串口中断服务程序
//*****************************************
void send(void) interrupt  4 
{
uchar d;
if(!TI && RI && !frameok)
 {RI=0;
  d=SBUF;
	if(pointer==0)
    	{if(d==ADD)
			{
			subchk=d;send_buf[0]=d;TB8=1;senden=1;
			send_delay();SBUF=d;while(!TI);TI=0;send_delay();
			senden=0;
			SM2=0;TB8=0;
			pointer++;}//71
		else if(d==0x00)
			{subchk=d;SM2=0;pointer++;}
			
     	}
  else 
		{if(pointer==127)
	       	{//send_buf[pointer]=d;
			if(d==subchk)
				{
			senden=1;send_delay();SBUF=subchk;while(!TI);send_delay();senden=0;TI=0;
			frameok=1;pointer=0;SM2=1;}
//			else
//				{senden=1;send_delay();SBUF=~subchk;while(!TI);send_delay();TI=0;senden=0;}
//			SM2=1;pointer=0;
			}
     	else
          	{send_buf[pointer]=d;subchk+=d;pointer++;}
		}        
  }//end if
}
//*************************************
void timer1() interrupt  1  
{
TL0=0xff;
TH0=0xff;
timer++;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -