STC15系列单片机硬件PWM呼吸灯问题

想用CPU 2020-05-07 02:10:34
最近想用单片机硬件实现RGB灰度的变化,比如R155,G120,B10,的呼吸到R10,G160,B200,的呼吸,根据范例程序,三路PWM,单路呼吸现在可以实现。可是特定色彩的呼吸,要怎么计算才能实现呢



void modify_duty();
void Init_PWM();
void delay();

void main()
{
Init_PWM();

while(1)
{
modify_duty();
}
}

void Init_PWM() //
{
CMOD = 0X02; //

CCAPM0 = 0X42; //
PCA_PWM0 = 0X00; //
CCAP0L = 0x00; //
CCAP0H = 0X00; //

PCA_PWM1 = 0x00;
CCAP1L=0x00;
CCAP1H=0x00;
CCAPM1=0x42;

PCA_PWM2 = 0x00;
CCAP2L=0x00;
CCAP2H=0x00;
CCAPM2=0x42;


CL=0; //
CR =1; //
}

void modify_duty()
{
int i;

for(i=255;i>=1;i--)
{
CCAP0H = i;
CCAP1H = 0XFF;
CCAP2H = 0XFF;
delay();
}
for(i=0;i<255;i++)
{
CCAP0H = i;
CCAP1H = 0XFF;
CCAP2H = 0XFF;
delay();
}

for(i=255;i>=1;i--)
{
CCAP1H = i;
CCAP0H = 0XFF;
CCAP2H = 0XFF;
delay();
}
for(i=0;i<255;i++)
{
CCAP1H = i;
CCAP0H = 0XFF;
CCAP2H = 0XFF;
delay();
}

for(i=255;i>=1;i--)
{
CCAP2H = i;
CCAP0H = 0XFF;
CCAP1H = 0XFF;
delay();
}
for(i=0;i<255;i++)
{
CCAP2H = i;
CCAP0H = 0XFF;
CCAP1H = 0XFF;
delay();
}

}


...全文
367 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
想用CPU 2020-06-10
  • 打赏
  • 举报
回复
不错,解决了,制定了表格,存放特定颜色,读值就可以了
雪山怪叟 2020-05-09
  • 打赏
  • 举报
回复
你想要一个什么样的颜色。针对你选的三色灯应该有一个对应的表格,详细的说明了各颜色的比例和对应的颜色。

27,507

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧