×

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

51单片机学习纪实:1.3-控制2颗LED灯依次点亮_【增强实验1】

一哥 一哥 发表于2021-11-25 21:37:51 浏览1489 评论0

抢沙发发表评论

实验思路:

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

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

  3. 重定义unsigned int 为"U16"


完整代码:

/*****************************程序信息*********************************
* 实验名称:控制2颗LED灯依次点亮
* 文件名称:main.c
* 版    本:V1.00
* 日    期:2021-11-25
* 编    著:gefon
* 说    明:使用普中A7开发版,控制D1、D2两颗LED依次点亮

*******************************声明区*********************************/
#include "reg52.h"

sbit LED1=P0^0;
sbit LED2=P0^1;

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灯
         /*依次点亮LED时,上一颗LED熄灭后下一颗LED直接点亮,无需延时*/
         LED2=0; //点亮D2灯
         delay_10us(50000);
         LED2=1; //熄灭D2灯
    }
}


实验分析:

程序要求为2颗灯依次点亮,即点亮D1->熄灭D1->点亮D2->熄灭D2。当D1熄灭时即可立即点亮D2,因此D1给高电平后,不需要再做延时处理。

少长咸集

群贤毕至

访客