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

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

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

编译软件:KEIL

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

三、版权声明
博主:老蔡

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

原文地址:

联系方式:644746740@qq.com

老蔡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闪烁的频率比较慢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值