[求助] 单片机自带PWM 控制LED灯得亮度。怎么写??

一百年后的自己   2019-10-17 17:00 楼主

image.png image.png

寄存器配置已经配好了, 我才学习单片机, 刚接触到PWM。现在寄存器配置好了,但是后面怎么是LED亮和灭。不知道怎么写。

我也知道高电平占整个周期的时间 就是  占空比。  但是应该怎么写呢??????????求助  !!!!!!!!!!!!!!!!!

 

回复评论 (17)

加一个while(1)循环,间隔一段时间比如100ms改变占空比,从0~100占空比,灯正常就会从亮到灭渐变

点赞  2019-10-17 17:26
引用: 29447945 发表于 2019-10-17 17:26 加一个while(1)循环,间隔一段时间比如100ms改变占空比,从0~100占空比,灯正常就会从亮到灭渐变

我试了。没效果了。我是手动改变的值

点赞  2019-10-17 17:47
引用: 一百年后的自己 发表于 2019-10-17 17:47
我试了。没效果了。我是手动改变的值

加了延时吗?
点赞  2019-10-17 21:34

修改占空比寄存器就行了

点赞  2019-10-18 08:14

是不是配置寄存器锁定了

点赞  2019-10-18 08:16
引用: 29447945 发表于 2019-10-17 21:34 加了延时吗?

没有加

点赞  2019-10-18 09:06
引用: huo_hu 发表于 2019-10-18 08:16 是不是配置寄存器锁定了

 

直接修改这一部分就可以了嘛?

  • image.png
点赞  2019-10-18 09:07

每次更改占空比都要延时,要不然你根本看不出来改变的过程

点赞  2019-10-18 09:10
引用: 29447945 发表于 2019-10-18 09:10 每次更改占空比都要延时,要不然你根本看不出来改变的过程

image.png

这个是我新更改的寄存器配置。

每次更改占空比需要延时???

点赞  2019-10-18 09:26
引用: 29447945 发表于 2019-10-18 09:10 每次更改占空比都要延时,要不然你根本看不出来改变的过程

image.png

image.png 然后我放在主函数里面,while 一直循环没问题吧,  而且周期和占空比我声明了变量,再主函数里面改变值就应该有效果吧。但是没声明改变

点赞  2019-10-18 09:38
引用: 一百年后的自己 发表于 2019-10-18 09:38 然后我放在主函数里面,while 一直循环没问题吧,  而且周期和占空比我声明了变量,再主函数里 ...

下面这是思路,你要自己去实现这些函数。

void main()

{

int pwm_value = 0;

pwm_init();

while(1)

{

set_pwm(pwm_value );

pwm_value += 10;

if(pwm_value  >= 100)

pwm_value  = 0;

delay_10ms();

}

}

点赞  2019-10-18 09:50
引用: 29447945 发表于 2019-10-18 09:50 下面这是思路,你要自己去实现这些函数。 void main() { int pwm_value = 0; pwm_init(); ...

好的, 谢谢

点赞  2019-10-18 10:04
引用: 29447945 发表于 2019-10-18 09:50 下面这是思路,你要自己去实现这些函数。 void main() { int pwm_value = 0; pwm_init(); ...

如果我开始不设置函数, 我直接更改占空比得值, 那那个led灯的亮度会不会有变化????????

点赞  2019-10-18 11:24
引用: 一百年后的自己 发表于 2019-10-18 11:24 如果我开始不设置函数, 我直接更改占空比得值, 那那个led灯的亮度会不会有变化????????

当然要先设置好定时器,再改占空比才能用啊,不设置定时器改当然不起作用。延时时间可以加长点

点赞  2019-10-18 12:17
引用: 29447945 发表于 2019-10-18 12:17 当然要先设置好定时器,再改占空比才能用啊,不设置定时器改当然不起作用。延时时间可以加长点

定时器设置了,我现在又疑问,我用示波器看也有高低电平。

主要是我配置寄存器后,还需不需要用io控制led灯亮。

还是PWM就可以直接把led调亮?如果可以直接调亮,为什么我烧写程序,led不亮。我也把PWM的使能打开了。

 

点赞  2019-10-18 13:42

PWM就可以直接把led调亮 和调暗,与驱动灯电路有关。

点赞  2019-12-9 09:37

你的PWM在单位时间内改变驱动电路开关时间,从而调整了驱动电路的电压大小,电压的大小改变灯的明暗程度。

点赞  2019-12-9 09:39
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复