【无标题】51单片机实现简单的流水灯流转

1、硬件设计

首先,介绍下流水灯的原理,下图为我们这个工程的原理图。其中主要包括51单片机芯片和流水灯模块,流水灯模块接在了单片机的P1口,200欧电阻是用来保护电路的。由原理图可以知道,我们可以看到LED的左边接了电源(高电平),在P2口给一个低电平即可点亮LED灯。相反,如果要LED灯熄灭,就要把P2口的电平变为高电平即可。要实现流水灯功能,我们只要将LED1~LED8依次点亮、熄灭,以此类推,8只LED变回一亮一暗的做流水灯了。
在这里插入图片描述

2、软件设计

硬件完成后就可以进行软件设计
我们可以先打开Keil新建一个名为LED的工程,在下面的代码复制到main.c里。

#include "led.h"
#include "reg51.h"
#include "Delay.h"


//这里定义LED八个灯的引角
sbit   LED1=P2^0; 
sbit   LED2=P2^1;
sbit   LED3=P2^2;
sbit   LED4=P2^3;
sbit   LED5=P2^4;
sbit   LED6=P2^5;
sbit   LED7=P2^6;
sbit   LED8=P2^7;


void style_1() //代码第一种运行名称

	{
			
		//16进制使LCD灯亮哪个,可进行自己更改
		P2=0xFE;  
		Delay(200);
		
		P2=0xFD;
		Delay(200);
		
		P2=0xFB;
		Delay(200);
		
		P2=0xF7;
		Delay(200);
		
		P2=0xEF;
		Delay(200);
		
		P2=0xDF;
		Delay(200);
		
		P2=0xBF;
		Delay(200);
		
		P2=0x7F;
		Delay(200);
	}	

     //第二种流水灯形式,和上方一样
		void style_2()

	{
		
		P2=0x7F;
		Delay(200);
		
		P2=0xBF;
		Delay(200);
		
		P2=0xDF;
		Delay(200);
		
		P2=0xEF;
		Delay(200);
		
			P2=0xF7;
		Delay(200);
		
		P2=0xFB;
		Delay(200);
		
			
		P2=0xFD;
		Delay(200);
		
		P2=0xFE;
		Delay(200);
		
	}	
	然后我这里是分了模块的,我们还要把其他模块给添加上,不然会导致报错
	延时函数的代码添加如下
#include "Delay.h"
#include "intrins.h"
//
void Delay(unsigned int a)		
{
	unsigned char i, j;
	for(a;a>0;a--)
	{
		_nop_();
		i = 2;
		j = 199;
		do
		{
			while (--j);
		} while (--i);
	}
}

还要合并添加延时函数的.h文件,代码如下

#ifndef _DELAY_H
#define _DELAY_H

void Delay(unsigned int a);

#endif

LED文件的.h函数,如下

#ifndef _LED_H
#define _LED_H

void style_1();
void style_2();
void style_3();


#endif

最后将这个.c文件添上合并即可运行函数

#include "reg51.h"
#include "led.h"
void main()
{
	while (1)
	{
 style_1();
 style_2();
 style_3();
	}
}

3、综合调试测验

当我们硬件设计和代码都已经完成了之后我们就可以将代码录进我们设计好的硬件里,实现简单的控制LCD流水灯。

要使用代码我们需要把hex文件给勾选出来
在这里插入图片描述
然后将程序录进我们开始弄的硬件工程
在这里插入图片描述
可以看到我们的程序录用进去之后,它就随着我们设计的软件的方式跳动起来,当然也可以更改一些函数使它的跳动顺序不一,按自己的方式来进行操控。

4、小结

在这个流水灯的实现教程中,我是以工程的形式展现出来的。原因在于我想让大家从入门开始就建立起工程的意识,从硬件设计再到软件设计,最后我们进行综合调试,把工程实现。最后我是小白,讲的不清楚,见谅见谅

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值