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

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

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

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

共1个文件

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

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

程序编译:Keil5 C51

编程语言:C语言

设计编号:【Y04】

1.? 简介

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

2.? 主要功能

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

3.? 源程序(Keil5)

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

#include <REGX52.H>
#define	uint	unsigned int
#define	uchar	unsigned char
uchar code table0[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//LED从低位往高位移
uchar code table1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//LED从高位往低位移
uchar code table2[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};//LED从1个亮到8个都点亮(从低位往高位)
uchar code table3[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};//LED从1个亮到8个都点亮(从高位往低位)
uchar code table4[]={0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};//LED从8个全亮到一个都不亮(从低位往高位)
uchar code table5[]={0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};//LED从8个全亮到一个都不亮(从高位往低位)
uchar code table6[]={0xfe,0xfc,0xfa,0xf6,0xee,0xde,0xbe,0x7e};//LED从低位往高位移(最低位始终为0)
uchar code table7[]={0x7f,0x3f,0x5f,0x6f,0x77,0x7b,0x7d,0x7e};//LED从高位往低位移(最高位始终为0)
uchar i,j;		//定义循环变量
uint tt=70;		//定义时间指数
sbit K1 = P1^0;
sbit K2 = P1^1;
sbit K3 = P1^2;
sbit K4 = P1^3;
sbit K5 = P1^4;
sbit K6 = P1^5;
sbit K7 = P1^6;
sbit K8 = P1^7;
void delay(uint time)	//延时函数
{
	uint x,y;
	for(x=time;x>0;x--)
	for(y=110;y>0;y--);
}


void disp0()			//状态0 所有LED闪烁3次
{
	for(i=0;i<3;i++)
	{
		P0=0x00; P2=0x00; P3=0x00; 
		delay(300);
		P0=0xff; P2=0xff; P3=0xff; 
		delay(300);
	}
}

void disp1()			//状态1 LED顺时针转一圈
{
	for(i=0;i<8;i++)
	{
		P2=table1[i];
		delay(100);
	}
	P2=0xff;
	for(i=0;i<8;i++)
	{
		P3=table1[i];
		delay(100);
	}
	P3=0xff;
	for(i=0;i<8;i++)
	{
		P0=table0[i];
		delay(100);
	}
	P0=0xff;
}

void disp2()			//状态2 LED逆时针转一圈
{
	for(i=0;i<8;i++)
	{
		P0=table1[i];
		delay(100);
	}
	P0=0xff;
	for(i=0;i<8;i++)
	{
		P3=table0[i];
		delay(100);
	}
	P3=0xff;
	for(i=0;i<8;i++)
	{
		P2=table0[i];
		delay(100);
	}
	P2=0xff;
}

void disp3()			//状态3 4个LED同时顺时、逆时针移动1/4圈
{
	for(i=0;i<8;i++)
	{
		P0=table1[i];
		P2=table1[i];
		P3=table0[i];
		delay(100);
	}
	for(i=0;i<8;i++)
	{
		P0=table0[i];
		P2=table0[i];
		P3=table1[i];
		delay(100);
	}
	P3=0xff; P0=0xff; 
}

4.? 仿真proteus8.6

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

仿真界面:

5.? 设计报告

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

6.? 资料清单

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

7.? 资料获取链接

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

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

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

相关推荐