利用ch32v003的ADC采光强,再转PWM控制LCD屏幕亮度遇到的问题:
????while(1)
????{
????????sum+=ADC_ConvertedValue;
????????if(++count==1000)
????????{
????????????currpwm=map(sum/count,0,826,25,499);
????????????printf("lastpwm=%d,currpwm=%d\r\n",lastpwm,currpwm);
????????????ColorToColor(lastpwm,currpwm);//渐变调光
????????????lastpwm=currpwm;
????????????sum=0;count=0;
????????}
????????Delay_Ms(1);
????}
????
????
????/***********************************************************************************
*?渐变算法
*?误差?<=?2
************************************************************************************/
u32?ColorToColor(u32?last_pwm,?u32?_pwm)
{

????u32?NStep=0,i=0,temp=0;????????????????????????????//?需要几步
????int32_t?differPWM=0;
????float??avrStep=0;
????(last_pwm<_pwm)?(NStep=_pwm-last_pwm):(NStep=last_pwm-_pwm);
????differPWM=_pwm-last_pwm;
????//?渐变开始
????avrStep???=?(float)differPWM???/?NStep;
????for(i=0;?i

利用ch32v003的ADC采光强,再转PWM控制LCD屏幕亮度遇到的问题:


1.一致性不好,虽然都是200Hz的PWM,但是不同屏响应不同;

2.光敏二极管灵敏度很高,虽然有做算术均平滤波,1S周期采样完成进入PWM渐变调控

3.但客户反馈有两段变化,手一挥过就能检测到由亮变暗,由暗变亮过程。

所以希望各位能够不吝赐教,如何进行AD采样和PWM调整。


屏不一样,在一起用的尽量挑一样的,或者写个可以后期调节的值

1S太短了,明亮变化,不需要反应这么快,加长时间



只有登录才能回复,可以选择微信账号登录