找回密码
 立即注册
查看: 432|回复: 4

PWM在100%占空比的可能会降低LED亮度

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:499
  • 最近打卡:2025-06-18 11:41:10

27

主题

163

回帖

2100

积分

金牌会员

积分
2100
发表于 2024-8-25 10:56:14 | 显示全部楼层 |阅读模式

微信图片_20240825104903.jpg

这是手机拍的一张照片,P20使用的100%占空比的PWM,P22使用的是io端口低电平导通,两个端口都是推挽模式,但目测来看,P20的会比较暗一些(手机拍的不一定对比明显,但确实这样)
[code]#include <AI8H.H>

#define MAIN_Fosc        24000000UL

#define        PSCR        11
#define        ARR                7999

typedef         unsigned char        u8;
typedef         unsigned int        u16;
typedef         unsigned long        u32;

u16        CCR = 0;
u8 i = 0;
bit PWM1_Flag = 0;

void Timer0_Init(void)                                        //30毫秒@24.000MHz
{
        AUXR &= 0x7F;                                                //定时器时钟12T模式
        TMOD &= 0xF0;                                                //设置定时器模式
        TL0 = 0xA0;                                                        //设置定时初始值
        TH0 = 0x15;                                                        //设置定时初始值
        TF0 = 0;                                                        //清除TF0标志
        TR0 = 1;                                                        //定时器0开始计时
        ET0 = 1;                                                        //使能定时器0中断
}

void io_init(void)
{
        P_SW2 |= 0X80;                                                //扩展寄存器(XFR)访问使能
    P2M0 = 0xff; P2M1 = 0x00;                         //P2端口全部推挽输出模式
}

void PWM_init(void)
{
        PWMA_CCER1 = 0x00;
        PWMA_CCMR1 = 0x60;
        PWMA_CCER1 |= 0x01;

        PWMA_CCMR1 |= 0x08;

        PWMA_PSCRH = (u8)(PSCR >> 8);
        PWMA_PSCRL = (u8)PSCR;       
        PWMA_ARRH = (u8)(ARR >> 8);
        PWMA_ARRL = (u8)ARR;
       
        PWMA_ENO |= 0x01;
        PWMA_PS |= 0x01;
       
        PWMA_BKR = 0x80;
        PWMA_CR1 |= 0x81;
       
        PWMA_CCR1H = (u8)(CCR >> 8);
        PWMA_CCR1L = (u8)CCR;
}

void main(void)
{
//        Timer0_Init();
        io_init();
        PWM_init();
        P22 = 0;
        EA = 1;
        while(1)
        {
       
        }
}

void Timer0_Isr(void) interrupt 1
{
        i++;
        if(i >= 5)
        {
                if(!PWM1_Flag)               
                {       
                        CCR += 200;
                        if(CCR >= ARR) PWM1_Flag = 1;
<p>
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:471
  • 最近打卡:2025-06-19 00:01:43
已绑定手机

79

主题

5148

回帖

9164

积分

超级版主

DebugLab

积分
9164
发表于 2024-8-25 20:08:33 | 显示全部楼层
示波器或逻辑分析仪看波形是直线吗?
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:499
  • 最近打卡:2025-06-18 11:41:10

27

主题

163

回帖

2100

积分

金牌会员

积分
2100
发表于 2024-8-25 20:43:35 | 显示全部楼层
Debu*** 发表于 2024-8-25 20:08
示波器或逻辑分析仪看波形是直线吗?

没有,你有的话帮我瞅瞅如何
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:96
  • 最近打卡:2025-06-18 10:41:10

74

主题

6099

回帖

1万

积分

超级版主

积分
12749
发表于 2024-8-27 13:58:08 | 显示全部楼层
LED是电流器件,电流恒定则亮度不变。你可以测下串联电阻的电压是否变小了导致电流减小。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:499
  • 最近打卡:2025-06-18 11:41:10

27

主题

163

回帖

2100

积分

金牌会员

积分
2100
发表于 2024-8-28 08:15:44 | 显示全部楼层
梁*** 发表于 2024-8-27 13:58
LED是电流器件,电流恒定则亮度不变。你可以测下串联电阻的电压是否变小了导致电流减小。 ...

好嘞,谢谢
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-19 02:34 , Processed in 0.235397 second(s), 77 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表