如题,stc8h4k32tl单片机驱动100颗LED白色灯珠,采用共阳的模式,每个seg里面穿了100R的电阻,实际使用的时候亮度没有专用的LED驱动芯片的亮,请问该如何整改?
初始化函数如下:
- void bsp_StcLedInit(void)
- {
- /*
- 所有使用到的COM口配置成高阻态
- */
- P2_MODE_OUT_PP(GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6); // COM0~COM6
- /*
- 所有使用到的SEG口配置成高阻态
- */
- P4_MODE_OUT_PP(GPIO_Pin_All); // SEG0~SEG7
- P0_MODE_OUT_PP(GPIO_Pin_LOW); // seg8~seg11 P0.0-P0.3
- P3_MODE_OUT_PP(GPIO_Pin_HIGH); // seg12~seg15 P3.4-P3.7
- /*
- COM 使能寄存器(COMEN)
- 0:不使能 COMn,仍然为 GPIO
- 1:使能 COM/O 在 LEDON/O 在 LEDON=1 时输出 COM 的驱动波形。
- 比如此处只用到了 COM0-COM6,所以此寄存器配置为 0x7F(0x0b0111111)
- */
- COMEN = 0x7F; // 使能COM0~COM6
- /*
- SEG 使能寄存器(SEGEN)
- SEGENL:控制 SEG0-SEG7
- SEGENH:控制 SEG8-SEG15
- 0:不使能 SEGn,仍然为 GPIO
- 1:使能 SEGn,对应的 I/O 在 LEDON=1 时输出 SEG 的驱动波形。
- */
- SEGENL = 0xFF; // 使能SEG0~SEG7
- SEGENH = 0xFF; // 使能SEG8~SEG15
- /*
- LED 控制寄存器(LEDCTRL)
- bit7: LEDON:LED驱动器使能控制
- 0:关闭 LED 驱动器
- 1:使能 LED 驱动器。
- bit6: NC
- bit5-bit4:LEDMODE[1:0]:LED驱动模式
- 00 共阴模式
- 01 共阳模式
- 10 共阴/共阳模式
- 11 保留
- bit3: NC
- bit2-bit0: LED灰度调节
- LEDDUTY[2:0] LED占空比 LED亮度
- 000 8/8 100%
- 001 7/8 87.5%
- 010 6/8 75%
- 011 5/8 62.5%
- 100 4/8 50%
- 101 3/8 37.5%
- 110 2/8 25%
- 111 1/8 12.5%
- */
- // LEDCTRL=0x80; //使能LED驱动器,共阴模式,亮度100%
- LEDCTRL = 0x90; // 使能LED驱动器,共阳模式,亮度100%
- /*
- LED 时钟分频寄存器(LEDCKS)
- 寄存器 LEDCKS 的值若设置太大,会导致 LED 产生闪烁现象,一般 LED 刷新频率大于或等于 75Hz 则不会有明显的闪烁
- */
- LEDCKS = 0x00;
- }
复制代码
|