51单片机pwm呼吸灯流程图(零基础单片机学习笔记)
今天学习到了通过延时函数和for循环来做一个简单的PWM输出,来控制Led进行渐变下面是我自已对这处程序的理解,我来为大家科普一下关于51单片机pwm呼吸灯流程图?以下内容希望对你有帮助!
51单片机pwm呼吸灯流程图
今天学习到了通过延时函数和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的亮度从最暗逐渐变到最亮,然后从最亮又慢慢的变到最暗的状态,从而实现了一个呼吸灯的效果。
这是我学习了一段时间总结下来的经验。当然有很多地方我自己理解的,也不是很到位,希望大家可以指出来
以上内容纯手打,请不要搬运哦。如果你觉得不错请关注!
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com