目录
(1)让led以20%的亮度实现跑马效果(取消LedPwmTime=4的注释)。
(2)让led以12.5%的亮度来实现跑马效果,跑马时间间隔400ms.
(3)让led每隔0.5s亮度增加14%(1/7),实现持续3.5s的呼吸灯效果。
<吐槽>
继几天前做第九套蓝桥杯赛题彩灯控制器后,当时灯的亮度等级让我顿时不知道怎么操作,良久后才把它做出来。以“今天对明天而言永远都是早的一天,明天对于今天永远都是晚的一天” 的原则,趁早趁现在也就是在今天我把PWM琢磨了一遍,感觉还行。(然后第二天测试,老师认为PWM的亮度等级不应该是灯亮度等级太低在闪烁。我认为答案是定时的时间还是太长,在一个周期内,高电平的持续时间和低电平的持续时间并没有欺骗过人的眼睛,所以把pwm调低而灯在闪,所以要把pwm的一个周期的时间调得更低,经过测试7ms-15ms内操作pwm是可行的,再经过调试,发现达到了预期效果)。
所用的开发板是蓝桥杯单片机的一块基于stc15f2k60s2的stc开发板。
<引言>
对于PWM:简而言之:就是高电平的持续时间(脉冲宽度)占整个时钟周期的比例,对于单片机而言用定时是再好不过的了,比如要百分之20的亮度,定时器1ms产生一次中断,则在前20次中断的前5次中断让其为高电平,其余15次中断为低电平,又由于若是频繁的对led灯操作会电平不稳定,所以要在前5次中断中只对led灯操作一次,其余15次中断也只操作一次,怎么做?——设标志位。
在之前的彩灯控制器的里以一定亮度等级 进行流转跳跃显示。如下图

而操作LED的PWM就改变了其亮度。
<操作>
(1)让led以20%的亮度实现跑马效果(取消LedPwmTime=4的注释)。
/*******************
函数名称:LedTest1
功能:让led以20%的亮度实现跑马效果(取消LedPwmTime=4的注释)
作者:yzh
邮箱:2649483892@qq.com
***********************/
void LedTest1(){//
if(time<500){
if(LedTime<=LedPwmTime&&PwmFlag==1){//由于PwmFlag进判断后被赋予不同值,
STC单片机PWM控制LED亮度及跑马灯效果实现

本文介绍了如何使用STC15F2K60S2单片机通过PWM技术实现LED亮度调节和跑马灯效果。作者通过设置定时器中断,控制高电平和低电平的比例来调整LED亮度,并通过标志位确保每个PWM周期内LED的操作次数。此外,还展示了实现12.5%递增亮度的跑马灯效果和呼吸灯效果的代码示例。
最低0.47元/天 解锁文章
1758

被折叠的 条评论
为什么被折叠?



