目的是想用51的定时器模拟PWM来驱动RGB LED 调出不同颜色的光!
RGB用的是 5MM 透明 共阳类型
贴出一小段程序:
#define Cycle 255 //这个是整个周期
uchar xdata HighTime={0,0,0}; //HighTime 整个周期内高电平占用的时间
uchar xdata ZKBtime[3]={0,0,0}; //计数变量 在50us的中断自加
void Timer1_Rountine(void) interrupt 3 //50us定时中断
{
TL1 = 0xCE; //设置定时初值
TH1 = 0xFF; //设置定时初值
if(ZKBtime[0]<HighTime[0]) //红灯
{
ZKBtime[0]++;
OpenRedLedFlag=1; //打开红灯
}
else if(ZKBtime[0]<Cycle)
{
OpenRedLedFlag=0; //关闭红灯
ZKBtime[0]++;
}
else ZKBtime[0]=0;
}
现在就是发现 当我混色时,如果直接用眼睛看LED的话,里面的 红 绿 蓝能同时看见 也就是说,假如我想生成黄色,理论上是将 红灯和绿灯一起打开,但是当我同时打开 红灯和绿灯时,直接看LED的话,虽然有点黄色但是同时也能看看红灯和绿灯 也就是说“黄色不纯”,当我在灯上盖了一层白色的纸,情况就会好很多!
这个现象是占空比没调好?还是这种透明的RGB LED就有这个现象?那用雾状的RGB LED是不是就没有我说那种情况
|