×

51单片机笔记 51单片机学习纪实

51单片机学习纪实:1.2-控制1颗LED灯闪烁_【基础实验2】

一哥 一哥 发表于2021-11-24 21:09:50 浏览1120 评论0

抢沙发发表评论

实验思路:

  1. 重定义P0.0管脚为LED1

  2. 定义一个延时函数delay_10us,用于LED闪烁延时

  3. 将unsigned int重命名为“U16",以提高代码编写效率


完整代码:

/*******************************声明区*********************************
* 实验名称:控制1颗LED闪烁
* 文件名称:main.c
* 版    本:V1.00
* 日    期:2021-11-24
* 编    著:gefon
* 说    明:使用普中A7开发版,控制D1编号LED闪烁

***********************************************************************/
#include "reg52.h"

sbit LED1=P0^0; //将P0.0管脚定义为LED1

typedef unsigned int U16;

/*******************************子程序*********************************
* 函 数 名   :delay_10us
* 函数功能   :延时函数,传入变量ten_us=1时,大约延时10us
* 输    入   :ten_us
* 输    出   :无
***********************************************************************/
void delay_10us(U16 ten_us) 
{
    while(ten_us--);
}

/*******************************主程序*********************************
* 函 数 名   :main
* 函数功能   :主函数
* 输    入   :无
* 输    出   :无
***********************************************************************/
void main()
{
    while(1)
	{
	     LED1=0; //点亮D1灯
		 delay_10us(50000); //晶振为12M时,延时约450ms;晶振为11.0592M时,延时约480ms
		 LED1=1; //熄灭D1灯
		 delay_10us(50000);
	}
}


实验分析:

要使LED灯闪烁需要点亮后再熄灭。如只是给LED低电平然后再给高电平,肉眼无法看到,需要给一定的延时时间。所以这里要有一定的延时,肉眼才能看到LED闪烁的过程。因此这里用到了一个延时函数"delay_10us",延时一定的时候熄灭。

少长咸集

群贤毕至

访客