file:///C:/Users/ASUS/Desktop/绘图1.jpg
最近在分析一个LED驱动电路,大致如图:
软件上,采用扫描方式,每次导通2003所接阴极中的(0~11路)一路,阳极导通情况,就根据每组(A~F)需要开通阳极了。整个扫描一个周期分为12个时间片。
扫描函数用汇编写的,大致思想如下,:
saomiao()
{
关所有组LED阳极(A、B’。。。。。、F);
NOP;
NOP;
NOP;
关所有LED阴极(0、1、2、3。。。、11);
swtich(t)
{
case 0 : 开阴极为0的LED的阴极;break;
case 1 : 开阴极为1的LED的阴极;break;
。
。
。
case 11 : 开阴极为0的LED的阴极;break;
default:break;
if(t<10)
t++;
else
t=0;
}
}
我现在遇到的问题是:每次如现在扫描0端口所接LED(a0、b0、c0。。。)若其中有至少一个导通,则在扫描下一组1端口LED前,会在a0的阴阳两级产生短时的一个电压尖峰(但还是Vp>Vn);对于Vp已经远远超过了起导通是的值,大概是两倍多;Vn也是,但是***还是差别不大。
一开是我知道是怎么回事,仔细看看LED中PN结的书,感觉向是PN结扩散电容在起由正向导通转变为关闭时产生的。但是还是不不能很清楚的说明道理。我想了一个办法,在上面扫描程序中加了红色的几个NOP,尖峰就消失了。所以还请论坛的大虾帮忙分析分析,不吝赐教!谢谢 |