返回顶部

【51单片机系列】点灯大师二之LED闪烁

本文实现LED的闪烁,即LED处于亮-灭交替的状态。

实现LED闪烁

LED要亮-灭交替,对于共阳极LED来说,也就是要连接的I/O口交替输出低电平-高电平,很显然就需要一个延时函数,保证LED亮和灭的时间,否则肉眼很难观察到LED闪烁的状态。

延时可以使用如下函数实现:

void delay(unsigned short i)
{
    while(i--);
}

每次I-1延时大约10us。

软件实现:D1,D3,D5,D7闪烁。代码如下:

image

仿真结果:

image

延时时间确认

delay()函数实现简单的延时。可以通过debug确定延时的具体时间。

第一步,在34、35、36行加断点(选中该行,按F9即可添加断点)。

image

第二步,按Ctrl+F5进入调试界面,当前运行到了34行,左侧的sec=0,按F5运行到35行。

image

第三步,记录此时的时间sec=0.000406,按F5运行到36行。

image

第四步,记录此时的时间sec =0.450617,将这两次记录的时间相减就得到delay(50000)的时间t=0.450617-0.000406=0.450211s≈450ms。

image

需要注意这个时间和工程设置的晶振频率有关系,上面调试时晶振频率为12MHz,如果改为24MHz,那么delay(50000)的时间大约为225ms。

在keil5中更改晶振频率,按Alt+F7弹出如下窗口,更改Xtal的频率即可。

image

posted @ 2023-11-20 22:07  Zoya23  阅读(40)  评论(0编辑  收藏  举报