[PIC®/AVR®/dsPIC®产品] 【CuriosityNano测评报告】03:pwm呼吸灯

[复制链接]
8129|34
 楼主| 740071911 发表于 2021-7-4 09:20 | 显示全部楼层 |阅读模式
本帖最后由 740071911 于 2021-7-4 09:25 编辑

实现pwm呼吸灯效果
1、pwm功能添加,打开mcc,根据如下配置,设置pwm输出到RC1引脚。



2、代码编写。

因为pwm为12bit,所以每1ms增加1,到0~4095时间太长,观察效果不好,
改为1ms ,PWM占空比增加2,这样往复循环,4s左右的呼吸灯。

pwm函数介绍
  1. PWM1_16BIT_SetSlice1Output1DutyCycleRegister();//设置占空比


定时器中断函数
  1. void TMR0_DefaultInterruptHandler(void){
  2.     // add your TMR0 interrupt custom code
  3.     // or set custom function using TMR0_SetInterruptHandler()
  4.    
  5.     static unsigned short int tmr_cnt = 0;
  6.     static unsigned short int pwm_duty = 0;
  7.     static unsigned char dir = 0;
  8.    
  9.     // clear the TMR0 interrupt flag
  10.     PIR3bits.TMR0IF = 0;
  11.     // Write to the Timer0 register
  12.     TMR0H = timer0ReloadVal16bit >> 8;
  13.     TMR0L = (uint8_t) timer0ReloadVal16bit;
  14.    
  15.     if (dir == 0)  //increase duty
  16.     {
  17.         pwm_duty+=2;
  18.         if (pwm_duty >= 4095)
  19.         {
  20.              pwm_duty =4095;
  21.              dir = 1;
  22.         }
  23.     }
  24.     else          //decrease duty
  25.     {
  26.         pwm_duty -=2;
  27.         if (pwm_duty > 60000)
  28.         {
  29.             pwm_duty = 0;
  30.             dir = 0;
  31.         }
  32.      }
  33.      PWM1_16BIT_SetSlice1Output1DutyCycleRegister(pwm_duty);
  34.      PWM1_16BIT_LoadBufferRegisters();//使能占空比修改
  35.      if(++tmr_cnt >= 1000)
  36.      {
  37.           tmr_cnt = 0;
  38.           flag_1s = 1;
  39.           //IO_RC1_Toggle();
  40.      }
  41. }


3、完整代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
usysm 发表于 2021-9-5 20:06 | 显示全部楼层
PWM的占空比越大,那么释放的能量越高
typeof 发表于 2021-9-5 20:06 | 显示全部楼层
pwm控制呼吸灯 呼吸三次然后灯熄灭的程序怎么写
yujielun 发表于 2021-9-5 20:07 | 显示全部楼层
怎么用DA做呼吸灯?   
htmlme 发表于 2021-9-5 20:07 | 显示全部楼层
PWM调节光强?         
pklong 发表于 2021-9-5 20:07 | 显示全部楼层
制作呼吸灯的C语言程序怎样编写?  
touser 发表于 2021-9-5 20:08 | 显示全部楼层
巧妙利用pwm原理   
myiclife 发表于 2021-9-5 20:08 | 显示全部楼层
PWM 输出比较模式吗   
uytyu 发表于 2021-9-5 20:09 | 显示全部楼层
可以直接使用单片机的PWM引脚  
iyoum 发表于 2021-9-5 20:09 | 显示全部楼层
做一个通过PWM来控制小灯的亮度  
jkl21 发表于 2021-9-5 20:09 | 显示全部楼层
每次PWM更新时都要使用判断来增或减,会大大影响程序效率。
yujielun 发表于 2021-9-5 20:09 | 显示全部楼层
怎么通过修改PWM的占空比实现RGB灯的不同颜色  
typeof 发表于 2021-9-5 20:10 | 显示全部楼层
两路PWM控制8盏LED呼吸灯   
usysm 发表于 2021-9-5 20:10 | 显示全部楼层
怎么控制PWM从而实现呼吸灯效果  
myiclife 发表于 2021-9-5 20:10 | 显示全部楼层
过PWM可以非常简单方便地实现呼吸灯  
touser 发表于 2021-9-5 20:10 | 显示全部楼层
PWM波可以由GPIO口产生  
pklong 发表于 2021-9-5 20:10 | 显示全部楼层
呼吸灯使用的光源类型一般是什么?  
htmlme 发表于 2021-9-5 20:10 | 显示全部楼层
以实现呼吸灯的效果  
jkl21 发表于 2021-9-5 20:10 | 显示全部楼层
DMA可以操作吗  
iyoum 发表于 2021-9-5 20:10 | 显示全部楼层
PWM调制数据从0取最大,再由最大到0,交替变化。  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:想低声说句不在乎,可会飞的心总是在高处!

48

主题

887

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部