📄 dzkzqv11.c
字号:
//(***************************
// Version V1.0
// 地砖控制器
// 2004-09-23 mcu:w77e58 ,172800bps at RS485 11.0592MHz
#include <reg52.h>
//#include <w77c32.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define byte unsigned char
#define word unsigned
#define bool bit
#define true 1
#define false 0
#define SPEED 20
#define SPEEDCOLS 500 //七彩停留时间
#define SPEEDBY 40 //百叶速度
#define ADD 1 /* 定时器T0方式控制字 */
#define WriteDeviceAddress 0xa0
#define ReadDviceAddress 0xa1
//*************************************
sfr CHPCON= 0xbf;
sfr CHPENR=0xf6;
sfr PMR= 0xC4;
sfr SBUF1=0xc1;
sfr SCON1=0xc0;
sbit SM01 = SCON1^7; /* alternative SM0_FE_1 */
sbit SM11 = SCON1^6; /* alternative SM1_1 */
sbit SM21 = SCON1^5; /* alternative SM2_1 */
sbit REN1 = SCON1^4; /* alternative REN_1 */
sbit TB81 = SCON1^3; /* alternative TB8_1 */
sbit RB81 = SCON1^2; /* alternative RB8_1 */
sbit TI1 = SCON1^1; /* alternative TI_1 */
sbit RI1 = SCON1^0; /* alternative RI_1 */
sbit ES1 = IE^6;
sbit led=P3^5;
sbit senden=P3^2;
sbit SDA=P1^0;
sbit SCL=P1^1;
//**********************
uchar idata dis_red[40];
uchar idata dis_grn[40];
uchar idata dis_blu[40];
uchar send_buf[65];
uchar XX,X1,ssp;
uchar pointer,subchk; //接收指针 和校验
uchar bdata flag;
sbit frameok=flag^0; //rece ok
uchar code r4d1cr[]=
{
0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,
0x00,0x20,0x20,0x20,0x20,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,0x3F,0x3F,0x3F,
0x3F,0x20,0x20,0x20,0x20,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,0x3F,0x3F,0x3F,
0x3F,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,0x3F,0x3F,0x3F,
0x3F,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,
0x20,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x3F,0x3F,0x3F,0x3F,0x20,0x20,
0x20,0x20,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,0x3F,0x3F,0x3F,0x3F,0x20,0x20,
0x20,0x20,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x3F,0x3F,0x3F,0x20,0x20,
0x20,0x20,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x3F,
0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x3F,0x3F,
};
//================================
uchar code r4d1cg[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,
0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,
0x3F,0x3F,0x3F,0x3F,0x10,0x10,0x10,0x10,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,
0x20,0x10,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x3F,0x3F,
0x3F,0x20,0x20,0x20,0x20,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,
0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x3F,0x3F,
0x3F,0x20,0x20,0x20,0x20,0x3F,0x3F,0x3F,0x3F,0x10,0x10,0x10,0x10,0x3F,0x3F,0x3F,
0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x20,0x20,0x20,0x20,0x10,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
0x3F,0x3F,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,0x3F,0x3F,0x3F,0x3F,0x10,0x10,
0x10,0x10,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x10,0x10,0x10,0x00,0x00,
};
//====================================
uchar code r4d1cb[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,0x3F,0x3F,0x3F,0x3F,
0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x10,0x10,0x10,
0x20,0x20,0x20,0x20,0x10,0x10,0x10,0x10,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
0x3F,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,0x3F,0x3F,0x3F,0x3F,0x10,0x10,0x10,
0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,
0x20,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x10,0x10,0x10,0x10,0x20,0x20,0x20,0x20,0x10,0x10,0x10,0x10,0x3F,0x3F,0x3F,
0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,0x3F,0x3F,
0x3F,0x3F,0x10,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x3F,
0x3F,0x3F,0x20,0x20,0x20,0x20,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x10,0x10,0x10,0x20,0x20,0x20,0x20,0x10,0x10,
0x10,0x10,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x20,
0x20,0x20,0x20,0x3F,0x3F,0x3F,0x3F,0x10,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,
};
//===========================
uchar code x64cr[]=
{
//红色数据:
/*
0x3F,0x3F,0x3F,0x3C,0x27,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x2A,0x3E,
0x3F,0x3F,0x3F,0x3F,0x3F,0x3C,0x27,0x0F,
*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0F,0x1A,
0x27,0x32,0x3C,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
0x3F,0x3D,0x35,0x29,0x1D,0x11,0x07,0x00,};
//------------------------------------------------
uchar code x64cg[]=
{
//绿色数据:
/*
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x30,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
0x2F,0x14,0x00,0x00,0x00,0x00,0x00,0x00,
*/
0x07,0x13,0x20,0x2C,0x38,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
0x3F,0x3F,0x3F,0x3D,0x36,0x2C,0x22,0x17,0x0C,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
//---------------------------
uchar code x64cb[]=
{
/*
0x00,0x15,0x32,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3D,0x2A,0x12,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x15,0x32,0x3F,0x3F,0x3F,
*/
0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x39,0x30,0x26,0x1B,0x11,0x7,0x01,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x8,0x12,0x1D,0x29,
0x33,0x3C,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,};
//**************************
//七彩无过渡色
uchar code col7cr[]=
{
0x3F,0x3F,0x3F,0x3C,0x27,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x2A,0x3E,
0x3F,0x3F,0x3F,0x3F,0x3F,0x3C,0x27,0x0F,
0x3F,0x3F,0x3F,0x3C,0x27,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x2A,0x3E,
0x3F,0x3F,0x3F,0x3F,0x3F,0x3C,0x27,0x0F,
};
uchar code col7cg[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x30,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
0x2F,0x14,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x30,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
0x2F,0x14,0x00,0x00,0x00,0x00,0x00,0x00,
};
uchar code col7cb[]=
{
0x00,0x15,0x32,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3D,0x2A,0x12,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x15,0x32,0x3F,0x3F,0x3F,
0x00,0x15,0x32,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3D,0x2A,0x12,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x15,0x32,0x3F,0x3F,0x3F,
};
void clear(void);
void sendall(void);//发送全部
void televise(void);//广播发送
void delay(uint j);
void delay1s(uint j);
void qcld(uchar speed);
void duun(uchar speed);
void lrmun(uchar speed);
void mlrun(uchar speed);
void mlrco(uchar speed);
void lrmco(uchar speed);
void colld(uchar speed);
void col7(uchar SPEEDCOL);
void mlrmov(uchar speed);
void lmovo(uchar speed);
void send_delay(void);
void ybyzk(uchar speed);
void send_del(uchar j);
void ybybm(uchar speed);
void zbyzk(uchar speed);
void zbybm(uchar speed);
//********************************************
void main()
{
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;
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)
/*TL0=0xff; //timer 0 is ac sync
TH0=0xff;
TR0=1;
ET0=1;
*/
TR1=1;
ET1=0;
ES1=1;
PMR=PMR|0x01; //enable on-chip RAM
XX=40; //dz 162 pcs
X1=20;
//p=&iic_buf[0];
//Read24c02(p,0,96);
//*******************
while(1)
{
// col7(10);
zbyzk(SPEEDBY);
zbybm(SPEEDBY);
ybyzk(SPEEDBY);
ybybm(SPEEDBY);
zbyzk(SPEEDBY);
zbybm(SPEEDBY);
ybyzk(SPEEDBY);
ybybm(SPEEDBY);
qcld(120/XX);
duun(120/XX);
clear();
lrmun(120/XX);
lrmco(120/XX);
mlrun(120/XX);
mlrco(120/XX);
// lpla(120/XX);
// lmovo(120/XX);
colld(120/XX);
mlrmov(120/XX);
mlrun(120/XX);
}
}
//**************************
//七种颜色渐变
//*****************************
void col7(uchar SPEEDCOL)
{
uchar i;
for(i=0;i<255;i++)
{dis_red[0]=i;
televise();
delay1s(SPEEDCOL);
}
delay1s(SPEEDCOLS);
//----------------------------
for(i=0;i<255;i++)
{dis_grn[0]=i;
televise();
delay1s(SPEEDCOL);
}
delay1s(SPEEDCOLS);
//----------------------------
for(i=255;i>0;i--)
{dis_red[0]=i;
televise();
delay1s(SPEEDCOL);
}
delay1s(SPEEDCOLS);
//----------------------------
for(i=0;i<255;i++)
{dis_blu[0]=i;
televise();
delay1s(SPEEDCOL);
}
delay1s(SPEEDCOLS);
//----------------------------
for(i=255;i>0;i--)
{dis_grn[0]=i;
televise();
delay1s(SPEEDCOL);
}
delay1s(SPEEDCOLS);
//----------------------------
for(i=0;i<255;i++)
{dis_red[0]=i;
televise();
delay1s(SPEEDCOL);
}
delay1s(SPEEDCOLS);
//---------------------------
for(i=0;i<255;i++)
{dis_grn[0]=i;
televise();
delay1s(SPEEDCOL);
}
delay1s(SPEEDCOLS);
}
//**************************
//将数据广播发送
//*****************************
void televise(void)
{
TB81=1;
SBUF1=0;while(!TI1);TI1=0;
TB81=0;
send_del(20);
SBUF1=dis_red[0];
while(!TI1);TI1=0;
send_del(20);
SBUF1=dis_grn[0];
while(!TI1);TI1=0;
send_del(20);
SBUF1=dis_blu[0];
while(!TI1);TI1=0;
send_del(20);
led=!led;
}
//**************************
//加清除显示内存
//*****************************
void clear(void)
{
uchar i;
for(i=0;i<XX;i++)
{
dis_red[i]=0;
dis_grn[i]=0;
dis_blu[i]=0;
}
}
//*******************************
//左展开
//********************************
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();
}
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];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -