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

📄 krhld.c

📁 LED照明行业地砖及护栏控制器程序 从现况来看
💻 C
字号:
//************************************
//**** 测试护栏管程序
//****	pcb:mdx-48 mcu:89c2051 2004-07-17
//************************************
#include <reg51.h>
#include <stdio.h>//一般I/O函数
#include <stdlib.h>//标准函数
#include <absacc.h>//绝对地址
#include <intrins.h>//内部函数	
#include <setjmp.h>
#define uchar unsigned char
#define uint unsigned int
#define Byte unsigned char
#define Word unsigned int
#define ulong unsigned long
#define bool bit
#define true 1
#define false 0
#define V_TH0   0xfb  /* 时间常数高8位 (65536-500)/256			*/
#define V_TL0   0x00  /* 时间常数低8位 (65536-500)%256   11.0592*/
#define ADD 2
#define reg01 XBYTE[0xc000]
#define reg02 XBYTE[0xc001] //控制寄存器
uchar code chr[]=
{
0x0B,0x0B,0x0A,0x0A,0x09,0x09,0x08,0x07,0x07,0x06,0x06,0x05,0x05,0x05,0x04,0x04,
0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,
0x0D,0x0E,0x0E,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0C,0x0C,0x0B,0x00,
0x0B,0x0B,0x0A,0x0A,0x09,0x09,0x08,0x07,0x07,0x06,0x06,0x05,0x05,0x05,0x04,0x04,
0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,
0x0D,0x0E,0x0E,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0C,0x0C,0x0B,0x00,
0x0B,0x0B,0x0A,0x0A,0x09,0x09,0x08,0x07,0x07,0x06,0x06,0x05,0x05,0x05,0x04,0x04,
0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,
0x0D,0x0E,0x0E,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0C,0x0C,0x0B,0x00,
0x0B,0x0B,0x0A,0x0A,0x09,0x09,0x08,0x07,0x07,0x06,0x06,0x05,0x05,0x05,0x04,0x04,
0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,
0x0D,0x0E,0x0E,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0C,0x0C,0x0B,0x00,

};
//*****************************************************************************
uchar code chg[]=
{
0x0F,0x0E,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0C,0x0B,0x0B,0x0B,0x0A,0x0A,0x0A,0x0A,
0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x09,0x09,0x09,0x08,0x08,0x07,0x07,
0x06,0x06,0x06,0x05,0x05,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x05,0x05,0x05,0x05,
0x05,0x05,0x05,0x05,0x04,0x05,0x05,0x05,0x05,0x05,0x06,0x06,0x06,0x07,0x07,0x00,
0x0F,0x0E,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0C,0x0B,0x0B,0x0B,0x0A,0x0A,0x0A,0x0A,
0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x09,0x09,0x09,0x08,0x08,0x07,0x07,
0x06,0x06,0x06,0x05,0x05,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x05,0x05,0x05,0x05,
0x05,0x05,0x05,0x05,0x04,0x05,0x05,0x05,0x05,0x05,0x06,0x06,0x06,0x07,0x07,0x00,
0x0F,0x0E,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0C,0x0B,0x0B,0x0B,0x0A,0x0A,0x0A,0x0A,
0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x09,0x09,0x09,0x08,0x08,0x07,0x07,
0x06,0x06,0x06,0x05,0x05,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x05,0x05,0x05,0x05,
0x05,0x05,0x05,0x05,0x04,0x05,0x05,0x05,0x05,0x05,0x06,0x06,0x06,0x07,0x07,0x00,
0x0F,0x0E,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0C,0x0B,0x0B,0x0B,0x0A,0x0A,0x0A,0x0A,
0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x09,0x09,0x09,0x08,0x08,0x07,0x07,
0x06,0x06,0x06,0x05,0x05,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x05,0x05,0x05,0x05,
0x05,0x05,0x05,0x05,0x04,0x05,0x05,0x05,0x05,0x05,0x06,0x06,0x06,0x07,0x07,0x00,

};
//*************************************
uchar code chb[]=
{
0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x06,
0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0E,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0E,0x0D,0x0B,0x0A,0x08,0x07,0x06,0x05,0x04,0x03,
0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x06,
0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0E,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0E,0x0D,0x0B,0x0A,0x08,0x07,0x06,0x05,0x04,0x03,
0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x06,
0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0E,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0E,0x0D,0x0B,0x0A,0x08,0x07,0x06,0x05,0x04,0x03,
0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x06,
0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0E,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0E,0x0D,0x0B,0x0A,0x08,0x07,0x06,0x05,0x04,0x03,

};
//******************************
uchar code x64cr[]=
{
15,11,7,3,0,0,0,0,
15,11,7,3,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
15,11,7,3,0,0,0,0,
15,11,7,3,0,0,0,0,

};
//********************
uchar code x64cg[]=
{
0,0,0,0,0,0,0,0,
15,11,7,3,0,0,0,0,
15,11,7,3,0,0,0,0,
15,11,7,3,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
15,11,7,3,0,0,0,0,
};
//*************************************
uchar code x64cb[]=
{
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
15,11,7,3,0,0,0,0,
15,11,7,3,0,0,0,0,
15,11,7,3,0,0,0,0,
15,11,7,3,0,0,0,0,
};
//******************************
uchar code x7cr[]=
{
15,
15,
0,
0,
0,
15,
15,

};
//********************
uchar code x7cg[]=
{
0,
15,
15,
15,
0,
0,
15,
};
//*************************************
uchar code x7cb[]=
{
0,
0,
0,
15,
15,
15,
15,
};

//**************************************************************
uchar 	pwm,rl,mode;
uchar 	pointer;
uchar 	dis_buf[96];
sbit	roe=P1^3;
sbit	goe=P1^4;
sbit	boe=P1^5;
sbit	da=P1^0;
sbit	sclk=P1^1;
sbit	lat=P1^2;
//*****************************************
//	 延时
//**************************************
void delay(uint tim)
{
uint i;
while(tim!=0)
	{
	for(i=0;i<500;i++);
	tim--;
	}
}
//-----------------------
void	cler(void)
{
uchar i,j;
j=0;
for(i=0;i<96;i++)
	dis_buf[i]=~j;
}
//*****************************************
void	pwm_oe(uchar r,g,b)
{
uchar i;
for(i=1;i<255;i++)
	{
	roe=(r<i)?1:0;
	goe=(g<i)?1:0;
	boe=(b<i)?1:0;
	}
}

//********************************
// 多彩流动
//***************************************
void	qcld(uchar ts,uchar code *rp,uchar code *gp,uchar code *bp)
{
uchar i,j;
for(j=0;j<ts;j++)
	{
	for(i=0;i<7;i++)
		dis_buf[i]=dis_buf[i+1];
		dis_buf[7]=dis_buf[24];
	for(i=8;i<15;i++)
		dis_buf[i]=dis_buf[i+1];
		dis_buf[15]=dis_buf[32];
	for(i=16;i<23;i++)
		dis_buf[i]=dis_buf[i+1];
		dis_buf[23]=dis_buf[40];

	for(i=24;i<31;i++)
		dis_buf[i]=dis_buf[i+1];
		dis_buf[31]=dis_buf[48];
	for(i=32;i<39;i++)
		dis_buf[i]=dis_buf[i+1];
		dis_buf[39]=dis_buf[56];
	for(i=40;i<47;i++)
		dis_buf[i]=dis_buf[i+1];
		dis_buf[47]=dis_buf[64];

	for(i=48;i<55;i++)
		dis_buf[i]=dis_buf[i+1];
		dis_buf[55]=dis_buf[72];
	for(i=56;i<63;i++)
		dis_buf[i]=dis_buf[i+1];
		dis_buf[63]=dis_buf[80];
	for(i=64;i<71;i++)
		dis_buf[i]=dis_buf[i+1];
		dis_buf[71]=dis_buf[88];

	for(i=72;i<79;i++)
		dis_buf[i]=dis_buf[i+1];
		dis_buf[79]=*rp++;
	for(i=80;i<87;i++)
		dis_buf[i]=dis_buf[i+1];
		dis_buf[87]=*gp++;
	for(i=88;i<95;i++)
		dis_buf[i]=dis_buf[i+1];
		dis_buf[95]=*bp++;

	delay(60);
	}

}
//************************************
//七彩渐变
//**********************************

void	qcjb(uint speed)
{
uchar i,j;
for(i=0;i<96;i++)
	{
	da=1;
	sclk=1;
	sclk=0;
	}
lat=0;
lat=1;
for(i=0;i<255;i++)
	for(j=0;j<speed;j++)
	pwm_oe(i,0,0);
for(i=0;i<255;i++)
	for(j=0;j<speed;j++)
	pwm_oe(255,i,0);//y
for(i=255;i>0;i--)
	for(j=0;j<speed;j++)
	pwm_oe(i,255,0);//g
for(i=0;i<255;i++)
	for(j=0;j<speed;j++)
	pwm_oe(0,255,i);//q
for(i=255;i>0;i--)
	for(j=0;j<speed;j++)
	pwm_oe(0,i,255);//b
for(i=0;i<255;i++)
	for(j=0;j<speed;j++)
	pwm_oe(i,0,255);//z
for(i=0;i<255;i++)
	for(j=0;j<speed;j++)
	pwm_oe(255,i,255);//b

}

//*********************************
void main(void)
{
uchar i;
TMOD=0x01;
TL0=V_TL0;
TH0=V_TH0;
TR0=1;
ET0=1;
TR1=1;
rl=0x01;
P1=0;
while(1)
	{
	EA=0;
	qcjb(2);
	EA=1;
	roe=0;
	goe=0;
	boe=0;
	
	cler();
	qcld(255,chr,chg,chb);
	qcld(255,chr,chg,chb);
	qcld(56,x64cr,x64cg,x64cb);
	qcld(56,x64cr,x64cg,x64cb);
	for(i=0;i<12;i++)
		qcld(7,x7cr,x7cg,x7cb);

	}

}

//**************************************
void pwmout(void)
{
uchar i;
for(i=0;i<96;i++)
	{
	da=(bit)(dis_buf[i]&rl);
	sclk=0;
	sclk=1;
	}
lat=0;
lat=1;
}

//*******************************************
void timer1() interrupt  1  
{
TR0=0;
 pwm++;
	switch(pwm)
		{
		case	1:
			pwmout();
			rl=0x02;
		break;
		case	2:
			pwmout();
			rl=0x04;
		break;
		case	4:
			pwmout();
			rl=0x08;
		break;
		case	8:
			pwmout();
			rl=0x01;
		break;
		case	16:
			pwm=0;
		break;
		default:	break;
		}

	TR0=1;
}//end sub

⌨️ 快捷键说明

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