[VinCiPI 51开发板]第四章 功能模块的实验方法 4.1.6 不同频率闪烁1个LED

一、简介
本文介绍如何不同频率闪烁1个LED。

二、实验平台
单片机型号:STC12C5A60S2

编译软件:KEIL

硬件平台:达芬奇51开发版

三、版权声明
博主:老蔡

声明:喝水不忘挖井人,转载请注明出处。

原文地址:

联系方式:[email protected]

老蔡51单片机群:463850023

四、讲解
先让LED快速闪烁,闪烁10次之后再让LED慢速闪烁,先看一下程序:

/*-------------------------------------------------------------------
                    主函数
---------------------------------------------------------------------*/
void main (void)
{
                             //此方法使用bit位对单个端口赋值
    unsigned char i;         //定义一个无符号字符型局部变量 i 取值范围 0~255
    P2M0 = 0XFF;            //设置P2端口推挽输出
    P2M1 = 0X00;
    P2 = 0x00;          //初始化P2端口数据
    LED_Switch = 0;     //打开流水灯开关
    while (1)                //主循环
    {
        for(i=0;i<10;i++)    //加入 for循环,表明for循环大括号中的程序循环执行10次
        {
            LED0=0;          //将P2.2口赋值 0,对外输出低电平
            Delay(50000);    //调用延时程序;更改延时数字可以更改延时长度;
                             //用于改变闪烁频率
            LED0=1;          //将P2.2口赋值 1,对外输出高电平
            Delay(50000);
        }

        for(i=0;i<10;i++)
        {
            LED0=0;            //将PP2.2口赋值 0,对外输出低电平
            Delay(60000);      //调用延时程序;更改延时数字可以更改延时长度;
            Delay(60000);      //用于改变闪烁频率
            Delay(60000);     
            LED0=1;            //将PP2.2口赋值 1,对外输出高电平
            Delay(60000); 
            Delay(60000);
            Delay(60000);     
        }
                               //主循环中添加其他需要一直工作的程序
    }
}

我们来分析一下代码

P2M0 = 0XFF;            //设置P2端口推挽输出
P2M1 = 0X00;

以上两条语句是加强io口驱动能力,从下表可以看出,推挽输出,可达20mA,接LED时需要加上限流电阻
这里写图片描述
第一个 for循环
led快速闪烁,原因是对于LED0高电平与低电平之间Delay延时时间小,所以led闪烁的频率比较快
第二个for循环
led慢速闪烁,原因是对于LED0高电平与低电平之间Delay延时时间长,所以led闪烁的频率比较慢

猜你喜欢

转载自blog.csdn.net/caibinguitar/article/details/80306087
今日推荐