• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于51单片机的心形流水灯设计(一)

04/28 09:08
1361
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

单片机仿真设计合集资料获取.pdf

共1个文件

资料清单:C程序+仿真+设计报告+使用说明+元件清单+操作视频

仿真版本:Proteus8.6及以上版本

程序编译:Keil5 C51

编程语言:C语言

设计编号:【Y03】

1.? 简介

本文提出了一种基于51单片机的心型流水灯设计。本系统由AT89C51单片机为控制核心,实现不同花样的基本功能。

2.? 主要功能

a.支持单片机输出32个引脚,实现不同的心型流水灯花样效果。

3.? 源程序(Keil5)

本设计采用keil5 C51软件(内附安装包)实现程序设计。如需用keil4打开程序,可自行通过.c和.h文件新建工程即可。

void disp33()			//状态33 LED从左往右开始点亮(直到全亮),然后从左右两边开始熄灭(直到全部熄灭)
{
	for(i=0;i<8;i++)
	{
		P0=table2[i];
		P1=table2[i];
		delay(100);
	}
	for(i=0;i<8;i++)
	{
		P2=table3[i];
		P3=table2[i];
		delay(100);
	}
	delay(500);
	for(i=0;i<9;i++)
	{
		P2=table4[i];
		P3=table5[i];
		P1=table4[i];
		P0=table4[i];
		delay(100);
	}
	delay(300);
}

void disp34()			//状态34 LED从左往右开始点亮(直到全亮),然后从中间往左右边熄灭
{
	for(i=0;i<8;i++)
	{
		P2=table2[i];
		P3=table3[i];
		delay(100);
	}
	for(i=0;i<8;i++)
	{
		P0=table3[i];
		P1=table3[i];
		delay(100);
	}
	delay(500);
	for(i=0;i<9;i++)
	{
		P2=table5[i];
		P3=table4[i];
		P1=table5[i];
		P0=table5[i];
		delay(100);
	}
	delay(300);	
}

void disp35()			//状态35  从P2.7、P1.7开始同时顺时针旋转,直到LED全亮
{
	for(i=0;i<8;i++)
	{
		P2=table3[i];
		P1=table3[i];
		delay(100);
	}
	for(i=0;i<8;i++)
	{
		P3=table3[i];
		P0=table2[i];
		delay(100);
	}
}

void disp36()			//状态36  从P0.7、P3.1开始同时逆时针旋转,直到LED全亮
{
	for(i=0;i<8;i++)
	{
		P0=table3[i];
		P3=table2[i];
		delay(100);
	}
	for(i=0;i<8;i++)
	{
		P1=table2[i];
		P2=table2[i];
		delay(100);
	}
}

void disp37()			//状态37 2个LED自上而下移动,并点亮最下2个LED,然后2个LED再自下而上回去,同时4个LED(上下各2个LED)再来回移动一次
{
	for(i=0;i<8;i++)
	{
		P0=table1[i];
		P2=table1[i];
		delay(100);
	}
	P0=0xff; P2=0xff;
	for(i=0;i<8;i++)
	{
		P1=table0[i];
		P3=table1[i];
		delay(100);
	}
	
	for(i=0;i<8;i++)
	{
		P1=table7[i];
		P3=table6[i];
		delay(100);
	}
	P1=0x7f; P3=0xfe;
	for(i=0;i<8;i++)
	{
		P0=table0[i];
		P2=table0[i];
		delay(100);
	}
	
	for(i=0;i<8;i++)
	{
		P0=table1[i];
		P2=table1[i];
		P1=table1[i];
		P3=table0[i];
		delay(200);
	}
	
	for(i=0;i<8;i++)
	{
		P0=table0[i];
		P1=table0[i];
		P2=table0[i];
		P3=table1[i];
		delay(200);
	}	
	P0=0xff;P1=0xff; P2=0xff;P3=0xff;
}

void disp38()			//状态38 逐步顺时针点亮P2、P1的LED,熄灭后,再顺时针点亮P0、P3的LED
{
	P0=0xff; P1=0xff; P2=0xff; P3=0xff;
	for(j=0;j<2;j++)
	{
		for(i=0;i<8;i++)
		{
			P2=table3[i];
			P1=table3[i];
			delay(100);
		}
		P2=0xff; P1=0xff;
		for(i=0;i<8;i++)
		{
			P0=table2[i];
			P3=table3[i];
			delay(100);
		}
		P0=0xff; P3=0xff;
	}	
}

void disp39()			//状态39 P1、P3LED(下半部分)一直亮,上半部分LED向外扩张亮,然后闪烁3次
{
	P1=0x00; P3=0x00;
	for(i=0;i<8;i++)
	{
		P0=table3[i];
		P2=table3[i];
		delay(150);
	}
	for(i=0;i<8;i++)
	{
		P0=table3[i];
		P2=table3[i];
		delay(300);
	}
	for(i=0;i<4;i++)
	{
		P0=~P0; P2=~P2;
		delay(300);
	}
	delay(1000);
}

void disp40()			//状态40 LED从P3.0、P0.7开始逆时针同时熄灭,直到LED全部熄灭
{
	for(i=0;i<9;i++)
	{
		P3=table4[i];
		P0=table5[i];
		delay(100);
	}
	for(i=1;i<9;i++)
	{
		P2=table4[i];
		P1=table4[i];
		delay(100);
	}
	delay(300);	
}

void disp41()			//状态41 LED从P2.7、P1.7开始顺时针同时熄灭,直到全部熄灭
{
	for(i=0;i<9;i++)
	{
		P2=table5[i];
		P1=table5[i];
		delay(100);
	}
	for(i=1;i<9;i++)
	{
		P0=table4[i];
		P3=table5[i];
		delay(100);
	}
	delay(300);		
}

4.? 仿真proteus8.6

? 本设计采用proteus8.6软件(内附安装包)实现仿真设计,如下图所示。proteus软件一般存在高低版本兼容问题,该仿真是通过proteus8.6导出的,所以请尽量使用proteus8.6打开文件,低于proteus8.6的版本不能够正常使用,高于proteus8.6的版本除了proteus8.8/8.9理论上可以正常使用。

仿真界面:

5.? 设计报告

设计报告主要包括硬件电路、软件设计、仿真调试等等,仅供参考

6.? 资料清单

设计资料主要包括C程序+仿真+设计报告+使用说明+元件清单+操作视频等。

7.? 资料获取链接

百度网盘下载链接:【Y03】百度网盘下载链接

更多单片机仿真设计合集:单片机仿真设计合集

  • 单片机仿真设计合集资料获取.pdf
    下载

相关推荐