打印
[PIC®/AVR®/dsPIC®产品]

【Curiosity Nano测评报告】+ PIC16F13145 Curiosity Nano的PWM实现呼吸灯

[复制链接]
436|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
呼吸灯就是灯珠在明暗之间有规律的缓慢变化。
可以通过PWM来实现,PWM的占空比不同人眼看起来会觉得亮度不同,因此定时修改驱动LED引脚的PWM占空比即可实现呼吸灯的效果。
接下来我们使用PWM实现一个呼吸灯效果。
硬件PIC16F13145 Curiosity Nano 上的RC0引脚的橙色LED灯珠。
1、新建工程
2、启动MCC配置PWM


PWM1默认使用TMR2

所以在TMR2里配置PWM的周期

如上图所示,这里显示的就是TMR2中配置出来的结果,另外初始化的默认占空比可以修改成你需要的默认配置。
完成了这些配置即可编写我们的函数了,用以实现呼吸灯效果。
#include "mcc_generated_files/system/system.h"
#include"mcc_generated_files/timer/delay.h"

int main(void)
{

    int brightness = 0; // 当前亮度
    int step = 1;            // 亮度改变的步长
    int delayTime = 25;      // 延时时间
   
    SYSTEM_Initialize();

    DELAY_milliseconds(1000);

    while(1)
    {
        for(brightness=0;brightness<100;brightness+=step)
        {
            PWM1_LoadDutyValue(brightness);
            DELAY_milliseconds(delayTime);
            if(brightness<50)
            {
                step=1+(brightness/10);
            }
            else
            {
                step=1+(100-brightness)/10;
            }
        }        
        DELAY_milliseconds(50);
        
        for(brightness=100;brightness>=0;brightness-=step)
        {
            PWM1_LoadDutyValue(brightness);
            DELAY_milliseconds(delayTime);
            if(brightness>50)
            {
                step=1+(100-brightness)/10;
            }
            else
            {
                step=1 + brightness/10;
            }        
        }
        DELAY_milliseconds(50);
    }   
}



使用特权

评论回复
沙发
gaoyang9992006|  楼主 | 2024-9-8 17:20 | 只看该作者

示波器捕捉的PWM波形。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1938

主题

15839

帖子

204

粉丝