一、简介
本文介绍如何不同频率闪烁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闪烁的频率比较慢