• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

LED渐变程序

请教大侠!我是单片机新手,我想编一LED渐变的程序,但总不理想,还请大侠指点迷津.1140837691.asm
全部回复(130)
正序查看
倒序查看
leasor
LV.3
2
2006-02-26 11:25
1.如果你用子程序来延时,很难得到一个精确值,建议用定时中断好些.
2.没想明白,用延时可以得到渐变的效果的原理,你说是否指一排LED的渐变,而非单个LED的渐变.
0
回复
tully
LV.5
3
2006-02-26 11:44
@leasor
1.如果你用子程序来延时,很难得到一个精确值,建议用定时中断好些.2.没想明白,用延时可以得到渐变的效果的原理,你说是否指一排LED的渐变,而非单个LED的渐变.
我是单个LED的渐变,我是让LED慢慢亮起来,然后慢慢灭掉,如此循环.
0
回复
leasor
LV.3
4
2006-02-26 12:10
@tully
我是单个LED的渐变,我是让LED慢慢亮起来,然后慢慢灭掉,如此循环.
你单纯用软件实现可能效果很差,让我想想给个硬件实现,明天可以吗??
0
回复
leasor
LV.3
5
2006-02-26 13:19
@leasor
你单纯用软件实现可能效果很差,让我想想给个硬件实现,明天可以吗??
1.增大1k电阻,1u电路可以增大电路的放电常数,1k电阻的增加影响到LED的亮度减小,LED的限流1K电阻减小可以增大它的亮度.
500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/38/1140931070.jpg');}" onmousewheel="return imgzoom(this);">
0
回复
tully
LV.5
6
2006-02-26 21:01
@leasor
你单纯用软件实现可能效果很差,让我想想给个硬件实现,明天可以吗??
非常感谢.我认为还是可以通过程序来实现的 .下面就是的 1140958850.asm
0
回复
2006-03-03 11:15
@tully
非常感谢.我认为还是可以通过程序来实现的.下面就是的1140958850.asm
用带PWM的IC搞不是更好吗???
0
回复
power_yan
LV.5
8
2006-03-07 17:26
@tully
非常感谢.我认为还是可以通过程序来实现的.下面就是的1140958850.asm
可以通过程序来实现的!!
我用软件做过扫频发生器,就是相同道理!!
不过,延时程序要够长,否则你看不到它的变化!!
0
回复
joanny
LV.5
9
2006-07-22 18:44
@joanny
哈哈,我自己删的
用89C2051  P1.7,P1.6,P1.5各接一个LED负输出,看看效果吧!!!!!!!!!!!!!!!!!!
0
回复
wangzai_he
LV.3
10
2006-07-24 00:08
LED渐变不就是一个简单的循环程序就可以了吗,用到三四个变量就可以搞定的,有那么复杂嘛,不过时间计算就比较麻烦一点
0
回复
xsw810810
LV.4
11
2006-07-30 20:43
@joanny
哈哈,我自己删的
感觉头痛..这样看的.
0
回复
xsw810810
LV.4
12
2006-07-30 20:44
@joanny
哈哈,我自己删的
强人
0
回复
njyd
LV.8
13
2006-07-30 22:24
  不就是控制通、断的占空比吗?
  怎么个不理想?
0
回复
zjman
LV.5
14
2006-07-31 11:13
@njyd
  不就是控制通、断的占空比吗?  怎么个不理想?
简单的问题,何必搞得这么复杂. 无非就是pwm控制,可选择有pwm输出功能的mcu,当然也可以用软件实现pwm(用中断计时),亮度的变化可以用计算+1或-1,变化过程流畅,无跳变..效果好,程序简单
0
回复
清风2024
LV.8
15
2006-08-06 19:22
顶!!!
0
回复
rzc123
LV.1
16
2006-08-18 20:35
@wangzai_he
LED渐变不就是一个简单的循环程序就可以了吗,用到三四个变量就可以搞定的,有那么复杂嘛,不过时间计算就比较麻烦一点
我是什么都不清白,前面有人提出用中断实现,是什么意思?
0
回复
rzc123
LV.1
17
2006-08-18 20:42
@zjman
简单的问题,何必搞得这么复杂.无非就是pwm控制,可选择有pwm输出功能的mcu,当然也可以用软件实现pwm(用中断计时),亮度的变化可以用计算+1或-1,变化过程流畅,无跳变..效果好,程序简单
可以讲更加详细一点吗?我地道一个莱鸟,讲得简练了听不懂.
0
回复
hotpower
LV.5
18
2006-08-18 21:39
用带PWM的MCU较好,控制相当简单.

附模拟PWM程序:

零耗时低频宽脉冲软PWM信号控制Keil C51演示程序http://blog.21ic.com/more.asp?name=hotpower&id=530
0
回复
杨成
LV.1
19
2006-11-04 11:23
#include
#define uchar unsigned char
#define R  0X01
#define G  0X02
#define B  0X04
#define Y  R|G
#define Q  G|B
#define Z  R|B
#define W  R|G|B
uchar code color[8]={R,Y,G,Q,B,Z,W,R};
/***************************************************************/


/***************************************************************/
//渐变函数
void jianbian(){
uchar ww,xx,HUIDU,BAOCI,COLORMOD;

  for(COLORMOD=0;COLORMOD<7;COLORMOD++)
       {
     for(HUIDU=0;HUIDU<255;HUIDU++)//为占空比,
       {
           for(BAOCI=0;BAOCI<30;BAOCI++)
                 {
      for(ww=0;ww
                       for(xx=0;xx<255-HUIDU;xx++){P1=color[COLORMOD];}
                                              
}
}
}
}
/***********************************************************/
/*            */
/*                       主程序                    */
/*    */
/***********************************************************/
void main(void)
{

P0=0;
do{

jianbian();
   }
while(1);}
0
回复
杨成
LV.1
20
2006-11-04 11:24
#include
#define uchar unsigned char
#define R  0X01
#define G  0X02
#define B  0X04
#define Y  R|G
#define Q  G|B
#define Z  R|B
#define W  R|G|B
uchar code color[8]={R,Y,G,Q,B,Z,W,R};
/***************************************************************/


/***************************************************************/
//渐变函数
void jianbian(){
uchar ww,xx,HUIDU,BAOCI,COLORMOD;

  for(COLORMOD=0;COLORMOD<7;COLORMOD++)
       {
     for(HUIDU=0;HUIDU<255;HUIDU++)//为占空比,
       {
           for(BAOCI=0;BAOCI<30;BAOCI++)
                 {
      for(ww=0;ww
                       for(xx=0;xx<255-HUIDU;xx++){P1=color[COLORMOD];}
                                              
}
}
}
}
/***********************************************************/
/*            */
/*                       主程序                    */
/*    */
/***********************************************************/
void main(void)
{

P0=0;
do{

jianbian();
   }
while(1);}
0
回复
清风2024
LV.8
21
2006-11-06 11:11
顶!!!!
0
回复
zhugjbest
LV.2
22
2006-11-07 08:44
@杨成
#include#defineucharunsignedchar#defineR  0X01#defineG  0X02#defineB  0X04#defineY  R|G#defineQ  G|B#defineZ  R|B#defineW  R|G|Bucharcodecolor[8]={R,Y,G,Q,B,Z,W,R};/***************************************************************//***************************************************************///渐变函数voidjianbian(){ucharww,xx,HUIDU,BAOCI,COLORMOD;  for(COLORMOD=0;COLORMOD
兄弟,你的程序怎么看不懂啊?
0
回复
清风2024
LV.8
23
2006-11-07 10:51
@joanny
用89C2051  P1.7,P1.6,P1.5各接一个LED负输出,看看效果吧!!!!!!!!!!!!!!!!!!
能同步吗?
0
回复
dfstar
LV.2
24
2006-11-07 12:21
@清风2024
能同步吗?
你如果能够保证给单片机上电是同步,或许可以.这种简单问题扔给专用IC做就可以,用单片机做性价比不高.
0
回复
xsw810810
LV.4
25
2006-11-07 14:24
@清风2024
顶!!!!
用C语言搞51,我不知乍样下手..
0
回复
清风2024
LV.8
26
2006-11-07 18:35
@dfstar
你如果能够保证给单片机上电是同步,或许可以.这种简单问题扔给专用IC做就可以,用单片机做性价比不高.
我说的同步就上片同上程序同时上电的单片机,这个程序做的到吗?
0
回复
njyd
LV.8
27
2006-11-07 21:25
@xsw810810
用C语言搞51,我不知乍样下手..
  输出至少16Hz以上,最好是大于25Hz的脉冲.
  通的时间短点就暗点,长就亮点,
0
回复
2006-11-08 19:47
@tully
我是单个LED的渐变,我是让LED慢慢亮起来,然后慢慢灭掉,如此循环.
這其實就是PWM的簡單應用啊,可以這樣來做:
先用定時器設置好某一個占空比,然後輸出控制燈的明亮.每當定時器中斷到來時,就把占空比變化一定量,直到滅了為止,再反過來控制不就行了嗎?
0
回复
led ic
LV.1
29
2006-11-16 01:16
@清风2024
能同步吗?
我这个同步IC你了解一下FONGLQ@126.COM 0752-21334761163610934.pdf
0
回复
qindebing1
LV.1
30
2007-01-04 10:50
@joanny
哈哈,我自己删的
各位单片机师傅,我是一个标准初学的菜鸟,单片机对我来说,是一点也不懂,我以前是在三雄极光做电子镇流器和节能灯的,突然改行做LED,我对这单片几确实没多大信心,是我中山的一个老乡鼓励我学习单片机的,他说他以前也和我一样,学了一年不到就会了,我也想学着试试;我看到你们渐变程序,心里有说不出的高兴,我将你们的程序抄下来,在KEIL里面进行编译,显示有6处错误,我对KEIL也不熟悉,很难实现能用的程序,我希望各位高手能多指教,俗话说"拜师不如访友嘛",我真诚的希望我们能成为朋友,我用的是89C2051,因此,我对单片机没信心学习好.
0
回复
hnzz1232003
LV.5
31
2007-02-10 10:03
@njyd
  输出至少16Hz以上,最好是大于25Hz的脉冲.  通的时间短点就暗点,长就亮点,
各位大哥!现在大家只是考虑几个LED,几个LED渐变也没多大意义,要上百个LED,渐变才好看,对吧!这个渐变硬件电路不好接,用可控硅导通角控制.
0
回复