51单片机有关广州塔实验程序

发布时间:2022-12-19  

include
#include//循环函数的头文件
#define unint unsigned int
#define unchar unsigned char
unchar code table0[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//从低位往高位移一个灯
unchar code table1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//从高位往低位移一个灯
unchar code table2[]={0xfe,0xfa,0xf8,0xf0,0xe0,0xa0,0x80,0x00};//从低位到高位逐步全部点亮
unchar code table3[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};//从高位到低位逐步全部点亮
unchar code table4[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};//从低位到高位逐步全部熄灭
unchar code table5[]={0x80,0xa0,0xe0,0xf0,0xf8,0xfa,0xfe,0xff};//从高位到低位逐步全部熄灭
unchar code table6[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//从低位到高位,灭一个灯移动
unchar code table7[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//从高位到低位,灭一个灯移动

unchar i;

void delay(unint z) //延时函数
{
unint x,y;
for(x=z;x>0;x--)
for(y=314;y>0;y--);
}
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
void deng123()//
{
for(i=0;i<8;i++)
{
P2=table1[i];
P0=table1[i];
delay(25);
}
}
/***********************************************
************************************************/
void deng0()//所有灯亮一会儿
{
P0=0x00;P1=0x00;P2=0x00;P3=0x00;
delay(150);
}
/////////////////////////////////
void deng0_1()//所有灯灭一会儿
{
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
delay(150);
}
//////////////////////////////////////
void deng1()//两列灯顺时针旋转2遍,然后逐渐降低
{
unchar c;
P1=0x00;P3=0x00;

for(c=2;c>0;c--)
{
deng123();
}
////////////////

P1=0x03;
deng123();
/////////////////
P1=0x0f;
deng123();
////////////////
P1=0x3f;
deng123();
///////////////
P1=0xff;
deng123();
////////////////////////
P3=0x03;
deng123();
//////////////
P3=0x0f;
deng123();
//////////////
P3=0x3f;
deng123();
/////////////
P3=0xff;
deng123();
P2=0xff;P0=0xff;

}

///////////////////////////////////////////////

void deng2()//四列灯顺时针旋转2遍
{
unchar a;
unchar b;
b=0x77;
P2=b;
P0=b;
P1=0x00;P3=0x00;
for(a=4;a>0;a--)
{
for(i=0;i<8;i++)
{
b=_cror_(b,1);//循环左移
delay(25);
P2=b;
P0=b;
}
}

P2=0xff;P0=0xff;P1=0xff;P3=0xff;

}
//////////////////////////////////////////////
void deng3()//单层,向上升
{
P0=0x00;
P2=0x00;

for(i=0;i<8;i++)
{
P3=table1[i];
delay(25);
}
P3=0xff;
/*----------------------*/
for(i=0;i<8;i++)
{
P1=table1[i];
delay(25);
}
P1=0xff;
}
/////////////////////////////////////////
void deng4()//单层,向下降
{
P2=0x00;P0=0x00;
for(i=0;i<8;i++)
{
P1=table0[i];
delay(25);
}
P1=0xff;
/*----------------------*/
for(i=0;i<8;i++)
{
P3=table0[i];
delay(25);
}
P3=0xff;P1=0xff;P0=0xff;P2=0xff;
}
/////////////////////////////////////////
void deng5()//从上到下,逐层全部点亮】
{
P0=0x00;P2=0x00;
for(i=0;i<8;i++)
{
P1=table2[i];
delay(25);
}
for(i=0;i<8;i++)
{
P3=table2[i];
delay(25);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
}
////////////////////////////////////////
void deng6()//从上到下,逐层全部熄灭】
{
P0=0x00;P2=0x00;
P1=0x00;P3=0x00;
for(i=0;i<8;i++)
{
P1=table4[i];
delay(25);
}
P1=0xff;
for(i=0;i<8;i++)
{
P3=table4[i];
delay(25);
}
P3=0xff;
P0=0xff;P2=0xff;
}
///////////////////////////////////

void deng7()//四组灯,交替两次
{
for(i=2;i>0;i--)
{
P1=0x00;P2=0x00;//上左
delay(40);
P1=0xff;P2=0xff;
delay(40);


/////////////
P3=0x00;P0=0x00;//下右
delay(40);
P3=0xff;P0=0xff;
delay(40);
/////////////
P3=0x00;P2=0x00;//下左
delay(40);
P3=0xff;P2=0xff;
delay(40);
/////////////
P1=0x00;P0=0x00;//上右
delay(40);
P1=0xff;P0=0xff;
delay(40);
}

}
void deng8()//上半先逐步列点亮,然后再向下点点亮
{
P0=0xff;P2=0xff;P3=0xff;
P1=0x00;
for(i=0;i<8;i++)
{
P0=table3[i];
P2=table3[i];
delay(25);
}
delay(70);
P1=0x00;P2=0x00;P0=0x00;
for(i=0;i<8;i++)
{
P3=table2[i];
delay(25);
}


}
//////////////////////////////////////
void deng9()//从中间向上、下点亮,再熄灭
{
P0=0x00;P2=0x00;
for(i=0;i<8;i++)
{
P1=table3[i];
P3=table2[i];
delay(25);
}
for(i=0;i<8;i++)
{
P1=table4[i];
P3=table5[i];
delay(25);
}
}
///////////////////////////////////////////
void deng10()//从中间向上、下熄灭
{
P0=0x00;P2=0x00;
for(i=0;i<8;i++)
{
P1=table5[i];
P3=table4[i];
delay(25);
}
P1=0xff;P3=0xff;

}
void deng11()//逆时针逐列点亮所有灯
{
P1=0x00;P3=0x00;
P0=0xff;P2=0xff;
for(i=0;i<8;i++)
{
P0=table2[i];
delay(25);
}
for(i=0;i<8;i++)
{
P2=table2[i];
delay(25);
}
P0=0xff;P2=0xff;P3=0xff;P1=0xff;
}
///////////////////////////////////////////
void deng12()//闪烁
{
uchar i;
uchar b;
b=0xaa;
P2=b;
P0=b;
P1=b;
P3=b;

for(i=0;i<8;i++)
{
b=_cror_(b,1);//循环左移
delay(50);
P2=b;
P0=b;
P1=b;
P3=b;

}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
}
void deng13()//两层灯,分别从中间向上、下移动
{
P2=0x00;P0=0x00;
for(i=0;i<8;i++)
{
P1=table1[i];
P3=table0[i];
delay(25);
}
P2=0xff;P0=0xff;P1=0xff;P3=0xff;
}
void deng14_1()//点满一圈的小函数(限内部用)
{
P2=0xff;P0=0xff;

for(i=0;i<8;i++)
{
P2=table2[i];
delay(15);
}

for(i=0;i<8;i++)
{
P0=table2[i];
delay(15);
}
P2=0xff;P0=0xff;
}

文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>