打印

急!!!关于单片机控制74HC595的OE脚实现LED全局渐变的问题

[复制链接]
5030|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
awentian|  楼主 | 2011-2-26 11:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 awentian 于 2011-2-26 11:37 编辑

我用单片机控制595的OE脚,输出PWM波形,实现LED渐变,怎么在渐变的过程中,在刚渐亮,或刚熄灭的时候,LED要闪一下,有谁知道这个问题吗
主程序
       if (percent <150 && light==1) percent = percent+1;
       else light =0;
      
       if (percent >0 && light ==0) percent = percent-1;   
       else light =1;  
中断函数
void pulse() interrupt 1 using 0
{
TH0 = 0xfc;
TL0 = 0x66;

if (times++ == percent) oe= 0;
else if (times ==140)
{times =0;oe= 1;}

}

相关帖子

沙发
awentian|  楼主 | 2011-2-26 14:41 | 只看该作者
咱没人回复啊,自己顶个.
另外,单片机控制595,595IO口控制8050的基极.

使用特权

评论回复
板凳
xjycug| | 2011-2-26 22:27 | 只看该作者
呵呵,拿示波器看看LED的输入波形,然后再分析啦。波形可能不像你想象的那样哦

使用特权

评论回复
地板
xjycug| | 2011-2-26 22:28 | 只看该作者
同时 建议将以下程序  
     if (percent <150 && light==1) percent = percent+1;
       else light =0;
      
       if (percent >0 && light ==0) percent = percent-1;   
       else light =1;  

改为:
     if ( (percent <150) && (light==1) ) percent = percent+1;
       else light =0;
      
       if ( (percent >0) && (light ==0)) percent = percent-1;   
       else light =1;

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
awentian + 1
5
awentian|  楼主 | 2011-2-28 08:06 | 只看该作者
你这两个程序不是一样的吗?啥也没改啊

使用特权

评论回复
6
coody| | 2011-2-28 10:35 | 只看该作者
使用“分场扫描”,一个PWM周期扫8次就可以做到256级灰度,可以多片595串联,比如10片,就可以控制80个LED,每个单独的有256级灰度。

使用特权

评论回复
7
xjycug| | 2011-3-1 21:17 | 只看该作者
很明显麻if语句中加了括号

if (percent <150 && light==1) percent = percent+1;
改为
if ( (percent <150) && (light==1) ) percent = percent+1;
我05年做毕业设计时用Keil编译器时遇到这样一个问题,好像写成if (percent <150 && light==1) 优先级有问题,后来都加了括号。
干了几年项目,编程序我从来不用默认优先级,多用括号,呵呵。免得留后患啊。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
awentian + 1 我很赞同
8
awentian|  楼主 | 2011-3-2 15:17 | 只看该作者
谢谢了

使用特权

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

本版积分规则

2

主题

5

帖子

1

粉丝