打印

51驱动RGB LED的问题

[复制链接]
1401|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
目的是想用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是不是就没有我说那种情况


KNBI4OG_}WGSBVM}4[WDKN2.png (36.01 KB )

KNBI4OG_}WGSBVM}4[WDKN2.png

KUUJY05DP5H}4QQ02{SE(}9.png (25.49 KB )

KUUJY05DP5H}4QQ02{SE(}9.png

相关帖子

沙发
whtwhtw| | 2016-11-17 08:50 | 只看该作者
肯定的,没混色的只可远观

使用特权

评论回复
板凳
coody| | 2016-11-17 09:35 | 只看该作者
当很近的看电视机的屏幕时,你会看到好多的点。。。

使用特权

评论回复
地板
JerryWu75| | 2016-11-17 09:43 | 只看该作者
里面本来就是3个LED,所以点亮时能够看到3个灯.
LED上加个毛玻璃一类的遮光罩.

使用特权

评论回复
5
程序会不会|  楼主 | 2016-11-17 09:59 | 只看该作者
JerryWu75 发表于 2016-11-17 09:43
里面本来就是3个LED,所以点亮时能够看到3个灯.
LED上加个毛玻璃一类的遮光罩.
...

那用那种雾装的LED是不是就好点 现在手头上没有

使用特权

评论回复
6
程序会不会|  楼主 | 2016-11-17 10:00 | 只看该作者
coody 发表于 2016-11-17 09:35
当很近的看电视机的屏幕时,你会看到好多的点。。。

恩 看来要在外部罩一个白色半透明的盖子   那用那种雾装的LED是不是就好点 现在手头上没有

使用特权

评论回复
7
JerryWu75| | 2016-11-17 10:02 | 只看该作者
程序会不会 发表于 2016-11-17 09:59
那用那种雾装的LED是不是就好点 现在手头上没有

做实验的话,先用一张白纸都可以

使用特权

评论回复
8
songchenping| | 2016-11-17 10:06 | 只看该作者
效果估计很差,RGB的值你是通过占空比来实现。估计只能在某一时刻能得到你想要的颜色

使用特权

评论回复
9
程序会不会|  楼主 | 2016-11-17 10:08 | 只看该作者
JerryWu75 发表于 2016-11-17 10:02
做实验的话,先用一张白纸都可以

我昨晚就是有一张抽纸盖住 还有有效果的

使用特权

评论回复
10
程序会不会|  楼主 | 2016-11-17 10:11 | 只看该作者
songchenping 发表于 2016-11-17 10:06
效果估计很差,RGB的值你是通过占空比来实现。估计只能在某一时刻能得到你想要的颜色 ...

是的,本来是想按照 RGB的比例来产生想要的颜色的,可是按照相应的数值来控制占空比的话,根本就不对!笨方法就是,保持其中一个不变!另外的占空比通过定时器慢慢的加!来得到的想要的颜色!最后得到的结果往往和标准相差很大!
版主有什么好办法

使用特权

评论回复
11
songchenping| | 2016-11-17 10:14 | 只看该作者
程序会不会 发表于 2016-11-17 10:11
是的,本来是想按照 RGB的比例来产生想要的颜色的,可是按照相应的数值来控制占空比的话,根本就不对!笨 ...

我建议用流过每个二极管通道的电流值的大小来实现。

当然,这样只能将显示效果划分为固定的几档,最起码可以用眼睛直观的观察到。

使用特权

评论回复
12
程序会不会|  楼主 | 2016-11-17 10:21 | 只看该作者
songchenping 发表于 2016-11-17 10:14
我建议用流过每个二极管通道的电流值的大小来实现。

当然,这样只能将显示效果划分为固定的几档,最起码 ...

那种运放做一个横流源电路,用单片的DAC来控制电流的方式来试试

使用特权

评论回复
13
程序会不会|  楼主 | 2016-11-17 11:21 | 只看该作者
songchenping 发表于 2016-11-17 10:14
我建议用流过每个二极管通道的电流值的大小来实现。

当然,这样只能将显示效果划分为固定的几档,最起码 ...

版主,我还是想问一下!雾状的是不是要比透明好呢?谢谢

使用特权

评论回复
14
songchenping| | 2016-11-17 12:43 | 只看该作者
程序会不会 发表于 2016-11-17 11:21
版主,我还是想问一下!雾状的是不是要比透明好呢?谢谢

相对的吧,能好一点

使用特权

评论回复
15
yu515301489| | 2016-11-17 12:59 | 只看该作者
songchenping 发表于 2016-11-17 10:06
效果估计很差,RGB的值你是通过占空比来实现。估计只能在某一时刻能得到你想要的颜色 ...

为啥呢 跳到什么不就是什么颜色啊。

使用特权

评论回复
16
songchenping| | 2016-11-17 13:02 | 只看该作者
yu515301489 发表于 2016-11-17 12:59
为啥呢 跳到什么不就是什么颜色啊。

建议看一下RGB的组成

使用特权

评论回复
17
欧阳鹬誌| | 2016-11-17 17:45 | 只看该作者
程序会不会 发表于 2016-11-17 10:11
是的,本来是想按照 RGB的比例来产生想要的颜色的,可是按照相应的数值来控制占空比的话,根本就不对!笨 ...

你的占空比是控制灯的导通时间、当你三个同时导通时、流过灯的电流值是否满足预定的比例(例如R:G:B是何种比例才会显示出黄色的灯),当你关断其中一种灯时、另外两个的电流也会随之变化,这种变化是否是你想要的;电压或电流变化会改变灯的强弱、会改变显示的效果

使用特权

评论回复
18
menfiss| | 2016-11-17 18:56 | 只看该作者
色视觉不仅有时间效应(视觉暂留),也有空间效应。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

46

主题

443

帖子

5

粉丝