目录
前言
一、整体目录结构
二、代码展示
三、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闪烁文件
 如果阅读本文对你有用,欢迎一键三连呀!!!您的支持是我最大的动力!
  




















