如何实现PWM控制多个LED灯亮度

  1. 定义两个 PWM 通道,分别控制两个 LED 灯的亮度
  2. 在主循环中,根据需求设置不同的 PWM 占空比,从而实现一个 LED 灯高亮,另一个 LED 灯低亮
#include <reg51.h>

sbit LED1 = P1^0;  // LED1 引脚定义
sbit LED2 = P1^1;  // LED2 引脚定义

void pwm_init() {
    TMOD = 0x22;    // 定时器 0 工作在 PWM 模式
    TH0 = 0xFF;     // 设置 PWM 周期
    TL0 = 0x00;
    ET0 = 1;        // 允许定时器 0 中断
    EA = 1;         // 总中断允许
    TR0 = 1;        // 启动定时器 0
}

void pwm_update() interrupt 1 {
    static unsigned char duty1 = 0xFF;  // LED1 占空比
    static unsigned char duty2 = 0x7F;  // LED2 占空比
    
    if (TL0 < duty1) {
        LED1 = 1;  // LED1 点亮
    } else {
        LED1 = 0;  // LED1 熄灭
    }
    
    if (TL0 < duty2) {
        LED2 = 1;  // LED2 点亮
    } else {
        LED2 = 0;  // LED2 熄灭
    }
    
    // 在这里可以根据需求动态调整 duty1 和 duty2 的值
}

void main() {
    pwm_init();  // 初始化 PWM
    
    while (1) {
        // 在这里可以根据需求动态调整 duty1 和 duty2 的值
        // 例如:
        // duty1 = 0xFF;  // LED1 全亮
        // duty2 = 0x7F;  // LED2 半亮
    }
}

在 pwm_update() 中断函数里,根据 TL0 的值来控制两个 LED 灯的亮度。duty1 和 duty2 分别控制 LED1 和 LED2 的占空比,可以根据需求进行动态调整。

例如,将 duty1 设置为 0xFF 使 LED1 全亮,将 duty2 设置为 0x7F 使 LED2 半亮。

这样就可以实现一个 LED 灯高亮,另一个 LED 灯低亮的效果。也可以根据具体需求调整 duty1 和 duty2 的值,从而实现不同的亮度控制。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值