📄 xszkzqv12.c
字号:
//(***************************
// Version V1.0
// 地砖控制器 2004-10-18 带播放列表
// 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 senden1=P3^3; //to dz 485
sbit SDA=P1^1;
sbit SCL=P1^0;
//**********************
uchar xdata dis_red[40];
uchar xdata dis_grn[40];
uchar xdata dis_blu[40];
uchar xdata send_buf[128];
uchar idata iic_buf[128];
uchar XX,X1,ssp;
uchar pointer,subchk; //接收指针 和校验
uchar timer;
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[]=
{
0x0F,0x0F,0x0F,0x0E,0x09,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x0A,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0E,0x09,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
0x0A,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0E,};
//------------------------------------------------
uchar code x64cg[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0C,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0B,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0C,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0B,0x05,0x00,0x00,0x00,0x00,};
//---------------------------
uchar code x64cb[]=
{
0x00,0x05,0x0C,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0A,0x04,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x05,0x0C,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0A,0x04,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x05,0x0C,0x0F,};
//**************************
//七彩无过渡色
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(uchar add);//广播发送
void delay(uint j);
void delay1s(uint j);
void qczk(uchar speed);
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 SomeNOP(void)
{
uchar i;
i=20;
while(i--);
}
/***************************************************************************/
void I2cDelay(unsigned int number) {
unsigned char temp;
for(;number!=0;number--) {
for(temp=112;temp!=0;temp--) {
}
}
}
/***************************************************************************/
void Start() {
SDA=1;
SCL=1;SomeNOP();
SDA=0;SomeNOP();
SCL=0;
}
/***************************************************************************/
void Stop() {
SCL=0;
SDA=0;SomeNOP();
SCL=1;SomeNOP();
SDA=1;
}
/***************************************************************************/
void Ack() {
SDA=0;
SCL=1;SomeNOP();
SCL=0;SomeNOP();
SDA=1;
}
/***************************************************************************/
void NoAck() {
SDA=1;
SCL=1;SomeNOP();
SCL=0;
}
/***************************************************************************/
bit TestAck() {
bit ErrorBit;
SDA=1;
SCL=1;
ErrorBit=SDA;SomeNOP();
SCL=0;
return(ErrorBit);
}
/***************************************************************************/
Write8Bit(unsigned char input)
{
unsigned char temp;
for(temp=8;temp!=0;temp--) {
SDA=(bit)(input&0x80);
SCL=1;SomeNOP();
SCL=0;
input=input<<1;
}
}
/***************************************************************************/
void Write24c02(unsigned char xdata *Wdata,unsigned char RomAddress,unsigned char number) {
Start();
Write8Bit(WriteDeviceAddress);
TestAck();
Write8Bit(RomAddress);
TestAck();
for(;number!=0;number--) {
Write8Bit(*Wdata);
TestAck();
Wdata++;
}
Stop();
I2cDelay(10);
}
/***************************************************************************/
unsigned char Read8Bit() {
unsigned char temp,rbyte=0;
for(temp=8;temp!=0;temp--) {
SCL=1;
rbyte=rbyte<<1;
rbyte=rbyte|((unsigned char)(SDA));
SomeNOP();
SCL=0;
}
return(rbyte);
}
/***************************************************************************/
void Read24c02(unsigned char idata *RamAddress,unsigned char RomAddress,unsigned char bytes) {
// unsigned char temp,rbyte;
Start();
Write8Bit(WriteDeviceAddress);
TestAck();
Write8Bit(RomAddress);
TestAck();
Start();
Write8Bit(ReadDviceAddress);
TestAck();
while(bytes!=1) {
*RamAddress=Read8Bit();
Ack();
RamAddress++;
bytes--;
}
*RamAddress=Read8Bit();
NoAck();
Stop();
}
//**************************************
void save(void)
{
uchar i;
uchar xdata *sp;
sp=&send_buf[1];
for(i=0;i<7;i++)
{
Write24c02(sp,i*16,16);
sp+=16;
}
}
//**************************
//七种颜色渐变
//*****************************
void col7(uchar SPEEDCOL)
{
uchar i;
for(i=0;i<255;i++)
{dis_red[0]=i;
televise(0);
delay(SPEEDCOL*200);
}
delay1s(SPEEDCOL);
//----------------------------
for(i=0;i<255;i++)
{dis_grn[0]=i;
televise(0);
delay(SPEEDCOL*200);
}
delay1s(SPEEDCOL);
//----------------------------
for(i=255;i>0;i--)
{dis_red[0]=i;
televise(0);
delay(SPEEDCOL*200);
}
delay1s(SPEEDCOL);
//----------------------------
for(i=0;i<255;i++)
{dis_blu[0]=i;
televise(0);
delay(SPEEDCOL*200);
}
delay1s(SPEEDCOL);
//----------------------------
for(i=255;i>0;i--)
{dis_grn[0]=i;
televise(0);
delay(SPEEDCOL*200);
}
delay1s(SPEEDCOL);
//----------------------------
for(i=0;i<255;i++)
{dis_red[0]=i;
televise(0);
delay(SPEEDCOL*200);
}
delay1s(SPEEDCOL);
//---------------------------
for(i=0;i<255;i++)
{dis_grn[0]=i;
televise(0);
delay(SPEEDCOL*200);
}
delay1s(SPEEDCOL);
}
//**************************
//将数据广播发送
//*****************************
void televise(uchar add)
{
TB81=1;
SBUF1=add;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 qczk(uchar speed)
{
uchar i;
dis_red[0]=255;
dis_grn[0]=0;
dis_blu[0]=0;
for(i=0;i<XX+1;i++)
{
televise(i);
delay(speed*200);
}
dis_red[0]=255;
dis_grn[0]=255;
dis_blu[0]=0;
for(i=0;i<XX+1;i++)
{
televise(i);
delay(speed*200);
}
dis_red[0]=0;
dis_grn[0]=255;
dis_blu[0]=0;
for(i=0;i<XX+1;i++)
{
televise(i);
delay(speed*200);
}
dis_red[0]=0;
dis_grn[0]=255;
dis_blu[0]=255;
for(i=0;i<XX+1;i++)
{
televise(i);
delay(speed*200);
}
dis_red[0]=0;
dis_grn[0]=0;
dis_blu[0]=255;
for(i=0;i<XX+1;i++)
{
televise(i);
delay(speed*200);
}
dis_red[0]=255;
dis_grn[0]=0;
dis_blu[0]=255;
for(i=0;i<XX+1;i++)
{
televise(i);
delay(speed*200);
}
dis_red[0]=255;
dis_grn[0]=255;
dis_blu[0]=255;
for(i=0;i<XX+1;i++)
{
televise(i);
delay(speed*200);
}
}
//**************************
//加清除显示内存
//*****************************
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();
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];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -