首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >51单片机——LED闪烁,流水灯,循环

51单片机——LED闪烁,流水灯,循环

作者头像
秋名山码神
发布2023-04-10 13:58:15
发布2023-04-10 13:58:15
1.2K0
举报
文章被收录于专栏:码神随笔码神随笔

😂一个打过一年半的oier,写过一年多的Java,现在致力于学习iot应用的普通本科生 🙏作者水平有限,如发现错误,还请私信或者评论区留言!


前言

使用示例单片机:stc89c52rc 编译软件:keil 烧录软件:stc-isp

原理图如下:

LED

顺序流水灯:

8个LED灯按照由上而下,由下而上的顺序循环点亮,间隔约50ms,无限循环

分析:

  1. 单个LED点亮,循环来实现由上而下,由下而上的顺序
  2. 延时来模拟流水灯

延时为50ms的实现:打开stc-isp寻求对应芯片,来实现软件延时

LED如何闪烁?

通过上面的LED原理图不难发现,当P2^0为0时,LED1亮,对应的十六进制为0xFE(1111 1110);

编码实现:

代码语言:javascript
复制
//流水灯实现
#include <REGX52.H>
#include <INTRINS.H>

//使用延时来模拟流水灯
void Delay50ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 3;
	j = 26;
	k = 223;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}


void main()
{
	while(1)
	{
		P2=0xFE;
		Delay50ms();
		P2=0xFD;
		Delay50ms();
		P2=0xFB;
		Delay50ms();
		P2=0xF7;
		Delay50ms();
		P2=0xEF;
		Delay50ms();
		P2=0xDF;
		Delay50ms();
		P2=0xBF;
		Delay50ms();
		P2=0x7F;
		Delay50ms();
	}
}

P2过于繁琐,可以用一个数组来存储,正逆循环操作来进行循环实现:

代码语言:javascript
复制
#include <REGX52.H>
#include <INTRINS.H>

char a[] = {0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
//使用延时来模拟流水灯
void Delay50ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 3;
	j = 26;
	k = 223;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}


void main()
{
	char i;
	while(1)
	{
		for(i=0;i<8;i++)
		{
			P2 = a[i];
			Delay50ms();
		}
		for(i=7;i>=0;i--)
		{
			P2 = a[i];
			Delay50ms();
		}
		
	}
}

整体亮灭:

8只发光二极管先整体闪烁3次

分析:

  1. 整体闪烁,就是整体亮+延时+整体灭
  2. 闪烁3次,加一个循环,循环3次
  3. 全部灭

编码实现

代码语言:javascript
复制
#include <REGX52.H>
#include <INTRINS.H>

void Delay50ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 3;
	j = 26;
	k = 223;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void main()
{
	int w;
	while(1)
	{
		for(w = 0; w<3; w++)
		{
			//P2 全为0,亮
			P2 = 0x00;
			Delay50ms();
			//P2 全为1,灭
			P2 = 0xFF;
			Delay50ms();
		}
		break;
	}
}

之后再把,流水灯的代码加到for循环后面就可以实现了,hh

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-04-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • LED
    • 顺序流水灯:
    • 整体亮灭:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档