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