论坛风格切换切换到宽版
  • 4949阅读
  • 21回复

求教各位达人,俺的LED为什么不亮呢? [复制链接]

上一主题 下一主题
离线bg4kc
 
发帖
2638
只看楼主 倒序阅读 0楼 发表于: 2009-01-15
程序只有ddrb ddrd portb portd这样的操作。

m8一个管脚不是能输出几十毫安电流吗? 俺这个怎么不行?
离线dkman
发帖
446
只看该作者 1楼 发表于: 2009-01-15
led灯是有方向性的啊!
离线bg4kc
发帖
2638
只看该作者 2楼 发表于: 2009-01-15
'
led灯是有方向性的啊!
'
俺没说明白。 俺的意思是:图中的接法,编好了程序
(pb1=1 其他口都弄成零)也不亮。

反过来,同时也把程序反过来(pb1=0 其它都等于1),就亮了。

感觉一个pb1脚驱动不了9个led,为什么呢?

有没有人有闲工夫也做下试验,搞明白这事儿。
离线子规
发帖
46
只看该作者 3楼 发表于: 2009-01-16
一个i/o的灌电流和吸电流最大20ma
先判断是程序还是硬件电路的问题
测一下pb1脚电压,是否为5v,如果电压低,估计是设成弱电上拉了
如果有5v,就是限流电阻大了,共用限流电阻时,每个led获得的电流会随着点亮led个数的增加而减小的
离线bg4kc
发帖
2638
只看该作者 4楼 发表于: 2009-01-16
pb1设成ddrb|=(1<<pb1);portb|=(1<<pb1); 只有这么两句。

另外今天测了我用的led,白发红透明的,只要50ua电流就能明显的亮。

板子给一个小学科普课借走了,等我拿回来好好研究一下这问题。
离线BG4XCR
发帖
33381
只看该作者 5楼 发表于: 2009-01-16
如图,每一个led串联一个1k的电阻。然后公共点从15脚断开接到+5v。
离线bg4kc
发帖
2638
只看该作者 6楼 发表于: 2009-01-16
'
如图,每一个led串联一个1k的电阻。然后公共点从15脚断开接到+5v。
'
那样就都亮了。

我的疑问还没搞清楚。
离线BG4XCR
发帖
33381
只看该作者 7楼 发表于: 2009-01-16
led点亮和持续点亮是不一样的电流的。。
怎么会都亮呢?端口置0的才会亮。。。
离线BG4UVR
发帖
11287
只看该作者 8楼 发表于: 2009-01-16
一共有三种可能:

1、led有问题。(接反)
2、mega8有问题。(坏了)
3、程序有问题。(错了)
离线FMer
发帖
2549
只看该作者 9楼 发表于: 2009-01-16
这种接法有很多隐患啊.首先是公共端拉电流不足以驱动led,反过来的话,公共端变成灌电流,其余io变成拉电流驱动.其次,led无法获得恒定电流,点亮不同数量的led会导致电流变化.
离线bg4kc
发帖
2638
只看该作者 10楼 发表于: 2009-01-17
'
这种接法有很多隐患啊.首先是公共端拉电流不足以驱动led,反过来的话,公共端变成灌电流,其余io变成拉电流驱动.其次,led无法获得恒定电流,点亮不同数量的led会导致电流变化.
'

我是想看看一个脚能输出多大电流。 为什么m8不能“对称输出”? 手册上讲得能。
离线bg4kc
发帖
2638
只看该作者 11楼 发表于: 2009-01-17
'
一共有三种可能:
1、led有问题。(接反)
2、mega8有问题。(坏了)
3、程序有问题。(错了)
'

1、我led两端都是可编程的,没有反正。
2、起先怀疑pb1坏了,换了好几片。无果。
3、程序只有几行
因为是随手接的线,led排列和管脚顺序就很乱,只好单个定义了。
#define led0 pb0
#define led1 pd6
#define led2 pb6
#define led3 pd4
#define led4 pd1
#define led5 pd7
#define led6 pd5
#define led7 pb7
#define led8 pd0

#define led027port portb
#define led027pin pinb
#define led027ddr ddrb

#define led134568port portd
#define led134568ddr ddrd
#define led134568pin pind

#define ledp pb1      //总开关,接在负极?正极不行吗?
#define ledpport portb
#define ledpddr ddrb
#define ledppin pinb
//上面是一系列定义
void port_init(void) //把所有用的口都做成输出
{
ledpddr|=(1<<ledp);
ledpddr|=(1<<ledpp);

led027ddr|=(1<<led0);
led027ddr|=(1<<led2);
led027ddr|=(1<<led7);

led134568ddr|=(1<<led1);
led134568ddr|=(1<<led3);
led134568ddr|=(1<<led4);
led134568ddr|=(1<<led5);
led134568ddr|=(1<<led6);
led134568ddr|=(1<<led8);
}

void all_on(void)
{
ledpport|=(1<<ledp);   //公共端=1

led027port&=~(1<<led0); //其它都是=0
led027port&=~(1<<led2);
led027port&=~(1<<led7);

led134568port&=~(1<<led1);
led134568port&=~(1<<led3);
led134568port&=~(1<<led4);
led134568port&=~(1<<led5);
led134568port&=~(1<<led6);
led134568port&=~(1<<led8);
}
void all_off(void)
{
ledpport&=~(1<<ledp);     //公共端=0

led027port|=(1<<led0);     //其它都是=1
led027port|=(1<<led2);
led027port|=(1<<led7);

led134568port|=(1<<led1);
led134568port|=(1<<led3);
led134568port|=(1<<led4);
led134568port|=(1<<led5);
led134568port|=(1<<led6);
led134568port|=(1<<led8);
}

int main(void)
{
uchar i;
uchar u,v;
port_init();
_delay_ms(1000);
//sei();
all_on(); //都亮?对应上面那个电路图,确实都不亮。
while(1){;}
}
离线bg4kc
发帖
2638
只看该作者 12楼 发表于: 2009-01-17
谁能做做类似的试验,确认一下avr的高电平驱动能力。
离线子规
发帖
46
只看该作者 13楼 发表于: 2009-01-17
用一个普通led共阳数码管,实验结果,pb1脚接180欧限流电阻,灌电流为18ma

#include <io.h>

int main(void)
{
     portd = 0x00;
     ddrd = 0xff;
     ddrb |= 1<<ddb1;
     portb |= 1<<pb1;
     while(1);
}
离线bg4kc
发帖
2638
只看该作者 14楼 发表于: 2009-01-17
[quote=子规]用一个普通led共阳数码管,实验结果,pb1脚接180欧限流电阻,灌电流为18ma
#include <io.h>
int main(void)
{
     portd = 0x00;
     ddrd = 0xff;
     ddrb |= 1<<ddb1;
     portb |= 1<<pb1;
     while(1);
}[/quote]

谢谢。看来电路可行,今天我竟然发现我这些led很奇怪,看内部平面是正极,长腿,触丝是负极短腿!使劲擦了擦眼才确信。测了10只,压降1.6v,50ua就亮,这一批都是这种结构,透明白发红的。 怪哉。
离线BG4UVR
发帖
11287
只看该作者 15楼 发表于: 2009-01-17
'
谢谢。看来电路可行,今天我竟然发现我这些led很奇怪,看内部平面是正极,长腿,触丝是负极短腿!使劲擦了擦眼才确信。测了10只,压降1.6v,50ua就亮,这一批都是这种结构,透明白发红的。 怪哉。
'

这种led我见过太多了,怀疑可能是工厂的副品 :d
离线bellstudio
发帖
2820
只看该作者 16楼 发表于: 2009-01-18
ls,什么叫“副品”,我也是遇到很多这样的
离线BG4UVR
发帖
11287
只看该作者 17楼 发表于: 2009-01-18
'
ls,什么叫“副品”,我也是遇到很多这样的
'

我的理解“副品”的含义,就是达不到合格标准,但又不是废品的元件(业内也有“b品”的叫法,含意相同)。

比如离散性关系,参数超出误差等级范围的产品;工艺控制错误,造成的尺寸偏差等。例如,某种电容器生产时,要求的误差等级是j级的(5%),产品在分选检测时,误差大于5%但又小于20%的产品,但其他检测性能又全部合格,就是b品了。

我对led的生产过程并不了解,不过我怀疑像这种正负极颠倒的led,就是工厂的错误生产出来的,实际属于不合格的产品。(但实际上厂家已经对这种错误进行了补救,就是在剪脚时,仍然把实际的正极脚给留长了,以区别正负极。结论就是,看led的正负极,不要看电极的形状,要看脚的长短。)
离线FMer
发帖
2549
只看该作者 18楼 发表于: 2009-01-18
高亮的led一般都是宽电极为正极.
离线bg4kc
发帖
2638
只看该作者 19楼 发表于: 2009-01-18
错版? 要是人民币就发财了。
是不是把pn结贴反了? 可是光线也能透出来。