工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->综合电路图->综合电路图->单片机LED点阵流水灯的制作

单片机LED点阵流水灯的制作

作者:dolphin时间:2016-10-14

单片机流水灯

电路设计:

图1是单片机最小系统电路;图2是驱动电路。共10路光源DS1~DS10,分别由AT89S52的P0口、P2的高两位驱动;每一路光源由14只高亮LED并联。图2中的D1、D2起到给光源部分降压的作用,这样LED可以不加限流电阻,因为VCC(5V)减去D1、D2、三极管的压降之和后可以保证LED安全地工作。

单片机流水灯

图1 AT89S52单片机最小系统

单片机流水灯

图2 驱动与光源电路

单片机最小系统板是以前做的直接拿来用了,自己做了驱动板:

单片机流水灯

为了不改动单片机最小系统板于是在驱动板上焊上排座,巧妙地实现两块板子间的电气连接:

单片机流水灯

拆开彩灯的外壳,掏空原先的电路,只留下电源部分:

单片机流水灯

将电路板固定在上面:

单片机流水灯

换个角度看,铝散热片上固定的是LM7805稳压块:

单片机流水灯

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

单片机流水灯

软件设计:

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



/***************************************************程序名称:单片机流水灯简要说明:P0口、P2.0、P2.1输出10路彩灯信号编    写:JiangX.net***************************************************/#includeAT89X52.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;i125;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;i7;i++)	{		P0=temp0;		delayms(200);		temp0=temp0*2;	}}void liushui2(void){	uchar temp0,i;	temp0=0x03;	for(i=0;i6;i++)	{		P0=temp0;		delayms(200);		temp0=temp0*2;	}}void liushui3(void){	uchar temp0,i;	temp0=0x07;	for(i=0;i5;i++)	{		P0=temp0;		delayms(200);		temp0=temp0*2;	}}void liushui4(void){	uchar temp0,i;	temp0=0x0f;	for(i=0;i4;i++)	{		P0=temp0;		delayms(200);		temp0=temp0*2;	}}void liushui5(void){	uchar temp0,i;	temp0=0x1f;	for(i=0;i3;i++)	{		P0=temp0;		delayms(200);		temp0=temp0*2;	}}void liushui6(void){	uchar temp0,i;	temp0=0x3f;	for(i=0;i2;i++)	{		P0=temp0;		delayms(200);		temp0=temp0*2;	}}void liushui7(void){	uchar temp0,i;	temp0=0x7f;	for(i=0;i1;i++)	{		P0=temp0;		delayms(200);		temp0=temp0*2;	}}void liushui8(void){	uchar temp0,i;	temp0=0x05;	for(i=0;i5;i++)	{		P0=temp0;		delayms(200);		temp0=temp0*2;	}}void liushui9(void){	uchar temp0,i;	temp0=0x15;	for(i=0;i3;i++)	{		P0=temp0;		delayms(200);		temp0=temp0*2;	}}void liushui10(void){	uchar temp0,i;	temp0=0x55;	for(i=0;i1;i++)	{		P0=temp0;		delayms(200);		temp0=temp0*2;	}}/*****闪烁1*****/void shanshuo1(void){	uchar i;	for(i=0;i5;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;i6;i++)	{		P0=temp1;		delayms(sudu);		temp1=temp1*2;		}	for(j=0;j6;j++)	{		P0=temp2;		delayms(sudu);		temp2=temp2/2;	}}/*****闪烁2*****/void shanshuo2(void){	uchar i;	for(i=0;i7;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;i7;i++)	{		P0=temp0;		delayms(200);		temp0=temp0*2;	}	}void duiji2(void){	uchar temp0=0x01,i;	for(i=0;i6;i++)	{		P0=temp0;		lie1=1;		delayms(200);		temp0=temp0*2;	}	}void duiji3(void){	uchar temp0=0x01,i;	for(i=0;i5;i++)	{		P0=temp0;		lie1=1;		lie2=1;		delayms(200);		temp0=temp0*2;	}	}void duiji4(void){	uchar temp0=0x01,i;	for(i=0;i4;i++)	{		P0=temp0;		lie1=1;		lie2=1;		lie3=1;		delayms(200);		temp0=temp0*2;	}	}void duiji5(void){	uchar temp0=0x01,i;	for(i=0;i3;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;i2;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;i1;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;i7;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();	}}


技术资讯 技术方案 技术应用 技术新品 技术前沿 行业资讯 行业方案 行业应用 行业新品 行业前沿


评论

技术专区