📄 dzkzqv12.c
字号:
//*******************************
//左展开
//********************************
void duun(uchar speed)
{
uchar x;
for(x=0;x<XX;x++)
{
dis_red[x]=x64cr[x];
dis_grn[x]=x64cg[x];
dis_blu[x]=x64cb[x];
sendall();
delay(speed);
}
delay1s(speed);
}
//*******************************
//左百叶展开
//********************************
void zbyzk(uchar speed)
{
uchar x,i;
for(i=0;i<4;i++)
{for(x=0;x<XX/4;x++)
{
dis_red[x*4+i]=x64cr[x];
dis_grn[x*4+i]=x64cg[x];
dis_blu[x*4+i]=x64cb[x];
}
sendall();
delay1s(speed);
}
}
//*******************************
//左百叶闭幕
//********************************
void zbybm(uchar speed)
{
uchar x,i;
for(i=0;i<4;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 ybyzk(uchar speed)
{
uchar x,i;
for(i=3;i<254;i--)
{for(x=0;x<XX/4;x++)
{
dis_red[x*4+i]=x64cr[x];
dis_grn[x*4+i]=x64cg[x];
dis_blu[x*4+i]=x64cb[x];
}
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 qcldx4(uchar speed)
{
uint j,x;
for(j=0;j<XX/4;j++)
{
for(x=0;x<4;x++)
{
dis_red[j*4+x]=dis_red[j*4+x+1];
dis_grn[j*4+x]=dis_grn[j*4+x+1];
dis_blu[j*4+x]=dis_blu[j*4+x+1];
}
dis_red[XX-j*4-1]=x64cr[j*4];
dis_grn[XX-j*4-1]=x64cg[j*4];
dis_blu[XX-j*4-1]=x64cb[j*4];
dis_red[XX-j*4-2]=x64cr[j*4+1];
dis_grn[XX-j*4-2]=x64cg[j*4+1];
dis_blu[XX-j*4-2]=x64cb[j*4+1];
dis_red[XX-j*4-3]=x64cr[j*4+2];
dis_grn[XX-j*4-3]=x64cg[j*4+2];
dis_blu[XX-j*4-3]=x64cb[j*4+2];
dis_red[XX-j*4-4]=x64cr[j*4+3];
dis_grn[XX-j*4-4]=x64cg[j*4+3];
dis_blu[XX-j*4-4]=x64cb[j*4+3];
sendall();
delay(speed);
}
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; //计时器1启动控制位可由软件来设定或清除。为1时启动,0时关闭
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -