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

📄 xszkzqv12.c

📁 LED照明行业地砖及护栏控制器程序 从现况来看
💻 C
📖 第 1 页 / 共 2 页
字号:
//(***************************
//  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 + -