haoDIY创好电子音响电脑科技DIY小制作发明移动版

主页 > 电子DIY > 单片机 >

单片机LED点阵流水灯的制作 附视频(2)

单片机LED点阵流水灯的制作 附视频(2)

再将那10路光源也就是显示面板连接至驱动电路板:

单片机LED点阵流水灯的制作 附视频(2)

软件设计:

        对于此作品,软件上除了实现流水灯的功能就没有其他技巧,但为了尽量使彩灯好看一些,不得不挖空心思想一些新花样。既便如此,一个51芯片也绰绰有余。



/***************************************************
程序名称:单片机流水灯
简要说明:P0口、P2.0、P2.1输出10路彩灯信号
编    写:JiangX.net
***************************************************/
#include<AT89X52.h>
#define uchar unsigned char
#define uint unsigned int			
sbit lie1=P0^6;
sbit lie2=P0^5;
sbit lie3=P0^4;
sbit lie4=P0^3;
sbit lie5=P0^2;
sbit lie6=P0^1;

/*****(n)ms延时子程序*****/
void delayms(uint n)
{
	while(n--)
	{
		uchar i;
		for(i=0;i<125;i++);
	}	
}

/*****开机画面*****/
void kaiji(void)
{
	P0=P2=0xff;
	delayms(2000);
	P0=P2=0x00;
	delayms(200);
	P0=P2=0xff;
	delayms(200);
	P0=P2=0x00;
	delayms(200);
	P0=P2=0xff;
	delayms(200);
	P0=P2=0x00;
	delayms(200);
	P0=P2=0xff;
	delayms(200);
	P0=P2=0x00;
	delayms(200);
	P0=P2=0xff;
	delayms(200);
	P0=P2=0x00;
	delayms(200);
	P0=P2=0xff;
	delayms(200);
	P0=P2=0x00;
	delayms(200);
}

/*****流水显示*****/
void liushui1(void)
{
	uchar temp0,i;
	temp0=0x01;
	for(i=0;i<7;i++)
	{
		P0=temp0;
		delayms(200);
		temp0=temp0*2;
	}
}

void liushui2(void)
{
	uchar temp0,i;
	temp0=0x03;
	for(i=0;i<6;i++)
	{
		P0=temp0;
		delayms(200);
		temp0=temp0*2;
	}
}

void liushui3(void)
{
	uchar temp0,i;
	temp0=0x07;
	for(i=0;i<5;i++)
	{
		P0=temp0;
		delayms(200);
		temp0=temp0*2;
	}
}

void liushui4(void)
{
	uchar temp0,i;
	temp0=0x0f;
	for(i=0;i<4;i++)
	{
		P0=temp0;
		delayms(200);
		temp0=temp0*2;
	}
}

void liushui5(void)
{
	uchar temp0,i;
	temp0=0x1f;
	for(i=0;i<3;i++)
	{
		P0=temp0;
		delayms(200);
		temp0=temp0*2;
	}
}

void liushui6(void)
{
	uchar temp0,i;
	temp0=0x3f;
	for(i=0;i<2;i++)
	{
		P0=temp0;
		delayms(200);
		temp0=temp0*2;
	}
}

void liushui7(void)
{
	uchar temp0,i;
	temp0=0x7f;
	for(i=0;i<1;i++)
	{
		P0=temp0;
		delayms(200);
		temp0=temp0*2;
	}
}

void liushui8(void)
{
	uchar temp0,i;
	temp0=0x05;
	for(i=0;i<5;i++)
	{
		P0=temp0;
		delayms(200);
		temp0=temp0*2;
	}
}

void liushui9(void)
{
	uchar temp0,i;
	temp0=0x15;
	for(i=0;i<3;i++)
	{
		P0=temp0;
		delayms(200);
		temp0=temp0*2;
	}
}

void liushui10(void)
{
	uchar temp0,i;
	temp0=0x55;
	for(i=0;i<1;i++)
	{
		P0=temp0;
		delayms(200);
		temp0=temp0*2;
	}
}

/*****闪烁1*****/
void shanshuo1(void)
{
	uchar i;
	for(i=0;i<5;i++)
	{
		P2=0xff;
		P0=0x80;
		delayms(200);
		P0=0x7f;
		P2=0x00;
		delayms(200);
	}
	delayms(500);
	P0=P2=0x00;
	delayms(200);
}

/*****跑马显示*****/
void paoma(uchar sudu)
{
	uchar i,j;
	uchar temp1=0x01;
	uchar temp2=0x40;
	for(i=0;i<6;i++)
	{
		P0=temp1;
		delayms(sudu);
		temp1=temp1*2;	
	}
	for(j=0;j<6;j++)
	{
		P0=temp2;
		delayms(sudu);
		temp2=temp2/2;
	}
}

/*****闪烁2*****/
void shanshuo2(void)
{
	uchar i;
	for(i=0;i<7;i++)
	{
		P2=0xff;
		P0=0x80;
		delayms(200);
		P2=0x00;
		P0=0x00;
		delayms(200);
	}
	delayms(500);
}

/*****堆积显示子程序*****/
void duiji1(void)
{
	uchar temp0=0x01,i;
	for(i=0;i<7;i++)
	{
		P0=temp0;
		delayms(200);
		temp0=temp0*2;
	}	
}

void duiji2(void)
{
	uchar temp0=0x01,i;
	for(i=0;i<6;i++)
	{
		P0=temp0;
		lie1=1;
		delayms(200);
		temp0=temp0*2;
	}	
}

void duiji3(void)
{
	uchar temp0=0x01,i;
	for(i=0;i<5;i++)
	{
		P0=temp0;
		lie1=1;
		lie2=1;
		delayms(200);
		temp0=temp0*2;
	}	
}

void duiji4(void)
{
	uchar temp0=0x01,i;
	for(i=0;i<4;i++)
	{
		P0=temp0;
		lie1=1;
		lie2=1;
		lie3=1;
		delayms(200);
		temp0=temp0*2;
	}	
}

void duiji5(void)
{
	uchar temp0=0x01,i;
	for(i=0;i<3;i++)
	{
		P0=temp0;
		lie1=1;
		lie2=1;
		lie3=1;
		lie4=1;
		delayms(200);
		temp0=temp0*2;
	}	
}

void duiji6(void)
{
	uchar temp0=0x01,i;
	for(i=0;i<2;i++)
	{
		P0=temp0;
		lie1=1;
		lie2=1;
		lie3=1;
		lie4=1;
		lie5=1;
		delayms(200);
		temp0=temp0*2;
	}	
}

void duiji7(void)
{
	uchar temp0=0x01,i;
	for(i=0;i<1;i++)
	{
		P0=temp0;
		lie1=1;
		lie2=1;
		lie3=1;
		lie4=1;
		lie5=1;
		lie6=1;
		delayms(200);
		temp0=temp0*2;
	}	
}

/*****闪烁3*****/
void shanshuo3(void)
{
	uchar i;
	for(i=0;i<7;i++)
	{
		P0=0x55;
		delayms(200);
		P0=0x7f;
		delayms(200);
	}
	delayms(500);
}

/*****主程序*****/
void main(void)
{
	P0=P2=0x00;
	while(1)
	{
		kaiji();
		liushui1();
		liushui2();
		liushui3();
		liushui4();
		liushui5();
		liushui6();
		liushui7();
		delayms(500);
		shanshuo1();	  
		paoma(200);
		paoma(150);
		paoma(100);
		paoma(80);
		paoma(50);
		paoma(40);
		paoma(40);
		paoma(30);
		paoma(30);
		paoma(30);
		paoma(30);
		paoma(20);
		paoma(20);
		paoma(20);
		paoma(20);
		paoma(20);
		paoma(20);
		P0=0x41;
		delayms(1000);
		shanshuo2();
		duiji1();
		duiji2();
		duiji3();
		duiji4();
		duiji5();
		duiji6();
		duiji7();
		delayms(500);
		liushui8();
		liushui8();
		liushui8();
		liushui9();
		liushui9();
		liushui9();
		liushui10();
		liushui10();
		liushui10();
		shanshuo3();
	}
}  (责任编辑:admin)
haoDIY创好电子 版权所有,电话微信13977534587