编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

零基础单片机学习笔记:LED呼吸灯程序详解

wxchong 2024-12-20 19:08:44 开源技术 18 ℃ 0 评论

今天学习到了通过延时函数和for循环来做一个简单的PWM输出,来控制LED进行渐变。下面是我自已对这处程序的理解

#include <REGX52.H> // 调用REGX52.H这个文件,简单理解就是把这个文件内的东西放到自已的程序里。

void Delay(unsigned int t); // 定义一个延时函数Delay, unsigned int t是定义一个0-65535的变量

{

while(--t);// 通过循环while 从65535自减到0就会跳出程序,通过自减来实现延时。

}

void main()//主程序入口。 不管多复杂的程序 主程序只有一个

{

unsigned int T=500,Toff=0;//两个0-65535的变量,赋初值 T=500 Toff=0;

while (1)//进入循环,下面的程序会一直循环执行。

{

for(Toff=1;Toff<T;Toff++)//for循环,先初始化Toff=1,然判断Toff<T是否成立,如果成立则执行下面大括内的程序,再进行Toff++,因为T=500, Toff=1 , 当Toff自加499次时Toff=T。Toff<T的条件不成立,跳出程序。

{

P0=0X01;//转换为二进制就是0000 0001 意思是P0口的最位输出高电平,点亮LED.

Delay(Toff); // 这里的延时从1自加到499 每运行一次程序延时加长一点

P0=0X00;//转换为二进制就是0000 0000 意思是P0口全输出低电平,LED灭

Delay(T-Toff); //这里的延时从499减到1每运行一次程序延时缩短一点


for(Toff=T-1;Toff>0;Toff--)//for循环,先初始化Toff=T-1,然判断Toff>0是否成立,如果成立则执行下面大括内的程序,再进行Toff--,因为T=500, Toff=T-1(499) , 当Toff自减499次时Toff=0。Toff>0的条件不成立,跳出程序。

{

P0=0X01;//转换为二进制就是0000 0001 意思是P0口的最位输出高电平,点亮LED.

Delay(Toff); // 这里的延时从499减到1每运行一次程序延时缩短一点

P0=0X00;//转换为二进制就是0000 0000 意思是P0口全输出低电平,LED灭

Delay(T-Toff); 这里的延时从1自加到499 每运行一次程序延时加长一点

}

}

}


上电之后,Led的亮度从最暗逐渐变到最亮,然后从最亮又慢慢的变到最暗的状态,从而实现了一个呼吸灯的效果。

这是我学习了一段时间总结下来的经验。当然有很多地方我自己理解的,也不是很到位,希望大家可以指出来

以上内容纯手打,请不要搬运哦。如果你觉得不错请关注!

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表