02 基于51单片机的LED闪烁实验

 目录

        前言

        一、整体目录结构

        二、代码展示

        三、main.c代码解析

        四、下载到单片机中

        总结


前言

前面我们已经学会了点亮一个led的实验,今天我们来实现LED闪烁。前面我们讲到想要让LED亮的话,只要给单片机引脚高电平就好了,如果给LED低电平的话就可以实现LED熄灭。那么LED亮灭功能都能实现了,怎么实现LED闪烁呢?没错,只要在LED亮灭的中间增加延时就可以了,延时的时间只要人肉眼可见,就能实现LED闪烁的效果。

先来看一下饰演的效果:

LED闪烁

一、整体目录结构

        其中:
        Template.uvproj:工程文件

        main.c:项目的主程序

        Objects:存放编译的文件夹


二、代码展示
#include "reg52.h"

// 位定义
sbit led = P0^0;
typedef unsigned int uint16;  // 

// 延时函数  i=1时大约10us
void delay(uint16 i)
{
	while(i--);
}

void main()
{
	while(1)
	{
		led = 1;
		delay(50000);
		led = 0;
		delay(50000);
	}
}
三、main.c代码解析

        1,sbit led = P0^0;

                通过sbit对led进行位定义,我们把led定位到单片机的P00口,后面我们就可以通过变量名led去进行控制,这样定义的好处:后续我们需要改变单片机引脚的话,只需要在位定义出修改就OK了!

        2,delay()函数

                delay函数,他是一个延时函数,当delay函数中的变量为1时,大约延时10us的时间。

        3,在while循环中,我们将LED灯亮500ms灭500ms,这样我们就能肉眼看到,LED灯在闪烁。我们真正去做仿真的时候,发现其实delay(50000)大概是延时了450ms的时间。

                3.1 仿真

                step 01:点击keil中的仿真按钮

                  

                step 02:打2个断点

              

                step 03:复位一下时间

                 

                step 04:记录初始时间+结束时间

                

                

                

                计算出来delay(50000)实际的时间大概是450.22ms。

                虽然不准确,但是我们做实验是可以的,后面学到定时器的时候,就能精确的去做定时了。

四、下载到单片机中

       

         我们把LED的正极连接到单片机P00端口,开发板上电,通过烧录软件将Objects文件夹中的Template.hex文件烧录到单片机中即可!

总结


本篇文章给出了基于51单片机去实现LED闪烁的效果。
下面给出源码地址,欢迎star:
02 LED闪烁文件
如果阅读本文对你有用,欢迎一键三连呀!!!您的支持是我最大的动力!


 

一键三连 - 快懂百科


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

soumns丶涛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值