10878|20

5979

帖子

8

TA的资源

版主

楼主
 

一个LED的N种玩法 (二)---渐变 [复制链接]

一个LEDN种玩法 ()---渐变

Author: chenzhufly

Email: chenzhufly@126.com

2010-4-28

 

在第一篇中我已经能够上LED闪烁起来了,还可以怎么玩呢?想到网络上曾经讨论过LED亮度渐变的程序,实现的方式很多,我这里挑个最简单的用延时的方式来实现LED亮度的渐变。说干就干……

 

接着前一篇的程序继续修改,如下:

int delay(int count)

{

    while(count--);

    return 0;

}

int main(void) {

    GPIOInit();

    GPIOSetDir(LED_PORT, LED_BIT, 1);

 

    while (1)

    {

       for(i=10;i<10000;i+=10) //由亮变暗

       {

           GPIOSetValue(LED_PORT, LED_BIT, LED_OFF );

           delay(i);

           GPIOSetValue(LED_PORT, LED_BIT, LED_ON );

           delay(10000-i);

       }

       for(i=10;i<10000;i+=10)//由暗变亮

       {

           GPIOSetValue(LED_PORT, LED_BIT, LED_ON );

           delay(i);

           GPIOSetValue(LED_PORT, LED_BIT, LED_OFF );

           delay(10000-i);

       }

    }

}

 改变LED亮度的本质是改变流过LED的电流大小,有两种方法:

1.  改变和LED串联的电阻,这样流过LED的电流就能够得到改变,从而改变亮度,但是我们板子上的电阻是固定的,不方便改动,所以此法行不通。

2.  改变01的占空比,这样通过led的电压均值就会产生变化,从而导致流过LED的电流产生变化,达到LED亮度调节的目的。这里采用的是这种方式。

    

实现占空比可变的方法很多,我这里采用的还是延时的方式,实现的关键是上面的for循环,由于我手头没有示波器,没有精确的测量,只是凭经验不断地尝试得到的一个经验值。

 

程序简单,就不做分析了,谁有兴趣可以跑跑看,是不是有渐变的效果,:

 

更多精彩 稍后继续

 

一个LED的N种玩法_二_----渐变.pdf (99.09 KB, 下载次数: 276)

此帖出自NXP MCU论坛

最新回复

不错,赞一个。  详情 回复 发表于 2015-4-28 10:47
点赞 关注
 

回复
举报

179

帖子

0

TA的资源

纯净的硅(初级)

沙发
 
人过留名。
其实抢沙发也是个技术活 !
讲究的是 快、准、狠 短、平、稳
一般人吧,他根本抢不了
视频是侮辱沙发的不敢抢
或者内容太让人震惊忘了抢
那都不行
要的就是个手快网好按键准
不得沙发誓不休
码字、验证都得练啊
F5?那是基础活
键盘全得换高弹力的
一定要学炼金造和工程
迅捷药水和钛合金F5吧,一样也不能少
这个年代,沙发楼容易吗
为了抢沙发,我披星戴月,风餐露宿,终于给我赶上了。
沙发作为整个视频最显眼的存在,能让你一夜出名
别小看沙发,这是一门技术话,科技含量高,讲究敏捷,智力,力量,稍不留神你就会在几秒内被其他人给抢了。
所以,我们抢沙发者要眼睛能正常旋转360度,耳听千里,讲究快准稳。手随心动,心随眼动,眼随脑算。
记住,抢了沙发,你就拥有了整个帖子!
此帖出自NXP MCU论坛
 
 
 

回复

802

帖子

24

TA的资源

五彩晶圆(中级)

板凳
 
这个可以试一下,以前见到笔计本 的指示灯是这样 暗到明的渐变,我还真是没想明白怎么做到的, :P
此帖出自NXP MCU论坛
 
个人签名生活在激情中 ... 希望 哈哈

https://home.eeworld.com.cn/?80086
 
 

回复

2万

帖子

71

TA的资源

管理员

4
 

回复 楼主 chenzhufly 的帖子

哈哈  没有最先看到 现在看到也不晚 咋不拍下来 嘿嘿
此帖出自NXP MCU论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

4996

帖子

19

TA的资源

裸片初长成(初级)

5
 
哎,我一天到晚就是写这种程序的(LED灯具)。
此帖出自NXP MCU论坛
 
 
 

回复

5979

帖子

8

TA的资源

版主

6
 
  分享一下你的成果
此帖出自NXP MCU论坛
 
 
 

回复

2955

帖子

0

TA的资源

纯净的硅(初级)

7
 
楼主也可以采用定时器做啊,呵呵
此帖出自NXP MCU论坛
 
个人签名不断地学习,才会有创新!
淘宝小店:手机、qq点卡、游戏点卡自动充值 http://shop63727265.taobao.com/
 
 

回复

2万

帖子

71

TA的资源

管理员

8
 
原帖由 zhaojun_xf 于 2010-4-28 16:39 发表 哎,我一天到晚就是写这种程序的(LED灯具)。


哇 太棒了 遇到高人了 可以讨论讨论啊
此帖出自NXP MCU论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

4996

帖子

19

TA的资源

裸片初长成(初级)

9
 

回复 8楼 soso 的帖子

哈哈,不要取笑我了,我们公司的产品就是LED灯具,所以就是根据客户要求实现这些效果的,什么流水啊、拖尾啊(流星)、七彩变幻啊、渐变啊、跳变啊等等,其实很无聊的。
此帖出自NXP MCU论坛
 
 
 

回复

4996

帖子

19

TA的资源

裸片初长成(初级)

10
 

在这里就转载一篇《用595驱动LED实现灰度调节》,其实可以直接在I/O口上实现灰度,当然也可以实现渐变效果,如果I/O口上有多个LED,则可以看到流星的效果,这也是显示屏实现图像显示的原理。

 

       一段时间在ouravr论坛里闲逛的时候看到一篇关于用595驱动LED现实等级灰度的求助贴,楼主的意思是用595驱动LED,并且每个LED的亮度值可以随意调节,来达到不同的灰度。我感觉挺有意思的,用595驱动LED并不难,整体亮度调节也不难,再用PWM控制所有595的OE就可以了,单个LED灰度的调节就比较麻烦了。有一位叫“polarbear 枫叶”回帖提出的思路比较简单新颖,我按照他的思路试验了,感觉效果还不错!硬件是M48+2片595+16个LED,用的硬件ISP主机模式。

 

 现在来说说实现的方法吧,转载一下枫叶的原话:

 

16个灰度,也就是 0--15,用4个BIT来表示, 8-4-2-1

 

用PWM产生4个联系不同占空比的脉冲

 

T8 8/16 对应BIT8

 

T4 4/16 对应BIT4

 

T2 2/16 对应BIT2

 

T1 1/16 对应BIT1

 

8/16表示的是把PWM的周期划分为16份,其中量的周期占8份,其他雷同 

 

当这4个脉冲运行后,由于人的生理特点。也会出现需他的灰度;同上面的方法比较,它需要4次个周期人眼才能感觉出灰度;

 

但是对PWM的要求就很低;比如256种灰度,不过送8次,1024也不过要10次大大减低了对硬件的要求,现在基本都是使用这种方法;

 

在一个595上+出现不同的灰度,就必须结合下面说的东东;

 

把一个灰度分解成4帧

 

例如灰度9: 1001

 

T8 8/16 对应BIT8

 

T4 不亮 对应BIT4

 

T2 不亮 对应BIT2

 

 T1 1/16 对应BIT1

 

所以我们的各个灰度分解为4帧,送4次都595,就可以了

 

例如在1个595上出现下面不同灰度的4个点,(就以4个点举例,)

 

4个点的灰度

 

3,12,10,7

 

转化为BIN码

 

0011 1100 1010 0111

 

把8-4-2-1码分割出来,得到独立的4帧

 

BIT8                  0 1 1 0

 

BIT4                  0 1 0 1

 

BIT2                  1 0 1 1

 

BIT1                  1 0 0 1

 

 步骤:

 

1.把BIT8的数据送到595,用PWM控制OE的脉冲为T8

 

2.把BIT4的数据送到595,用PWM控制OE的脉冲为T4

 

3.把BIT2的数据送到595,用PWM控制OE的脉冲为T2

 

4.把BIT1的数据送到595,用PWM控制OE的脉冲为T1

 

经过4帧的时间叠加后,就得到不同的灰度。

 

来源:ouravr.com/bbs/bbs_content_all.jsp?bbs_sn=985613]ICbuyouravr.com/bbs/bbs_content_all.jsp?bbs_sn=985613

此帖出自NXP MCU论坛
 
 
 

回复

4996

帖子

19

TA的资源

裸片初长成(初级)

11
 
代码如下:

9c3eed17-498b-4c54-b85e-c8d5305ef4f9.rar

31.95 KB, 下载次数: 57

avr实现的灰度代码

此帖出自NXP MCU论坛
 
 
 

回复

120

帖子

0

TA的资源

一粒金砂(初级)

12
 
很不错的内容。
此帖出自NXP MCU论坛
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

13
 
www。cnstl。com
此帖出自NXP MCU论坛
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

14
 
上我们的网站看看我们现成的产品
此帖出自NXP MCU论坛
 
 
 

回复

120

帖子

0

TA的资源

一粒金砂(高级)

15
 
以前做过一个,呵呵,当时费了点劲
此帖出自NXP MCU论坛
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

16
 
l楼主强
此帖出自NXP MCU论坛
 
 
 

回复

28

帖子

0

TA的资源

一粒金砂(初级)

17
 
谢谢分享。
方法很多。哪个最好?研究中。
此帖出自NXP MCU论坛
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(中级)

18
 
好东东,收下了。呵呵
此帖出自NXP MCU论坛
 
 
 

回复

77

帖子

0

TA的资源

纯净的硅(初级)

19
 
    不知楼主是来传授知识的还是来广告的?
此帖出自NXP MCU论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

20
 
见识见识,增长见闻
此帖出自NXP MCU论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表