个位暗,双位数据亮

wanghong   2010-3-17 15:15 楼主
一个比较怪异的问题, 595驱动,2块7*6的LED显示。 由于需要把个位数据移到中间显示,采取了shift_b595_out1(),双位的数据比较好处理,采取了shift_b595_out2.
  
  现在的问题是,都能显示出正确的数据,但个位数据时比双位数明显暗淡很多,我现在怀疑是不是这两个移位函数的复杂度不一样?
  595驱动还有其他的机关?

void   shift_b595_out1(uchar *dat, uchar count)
{
                    SRCK =0;
                    RCK =0;
                        data_tp =dat[count];
                        for(i=0; i<16; i++)   
                        {   
                                switch(i)
                                {
                                case 3:
                                case 4:
                                case 5:
                                case 8:
                                case 9:
                                        if(data_tp&0x80)     // Ensure the effecient bit is the higher 5 bits.
                                                SER_IN  =1;   
                                        else   
                                                SER_IN =0;
                                        data_tp <<=1;
                                        SRCK =1;
                                        _nop_();
                                        _nop_();
                                        SRCK= 0;
                                        break;
                                default:
                                        SER_IN =0;
                                        SRCK =1;
                                        _nop_();
                                        _nop_();
                                        SRCK =0;
                                        break;
                                }
                        }
                        RCK=   1;
                        _nop_();
                        _nop_();
                        RCK=   0;  

        }

//write  2  bytes   to   6b595   
void   shift_b595_out2(uchar *dat, uchar count1 , uchar count2)
        {   
               
                SRCK =0;
                RCK =0;     
            data_tp =dat[count1];
                        for(i=0; i<16; i++)   
                        {   
                                if(data_tp&0x80)   
                                        SER_IN  =1;   
                                else   
                                        SER_IN =0;                 
                                data_tp <<=1;
                                if(i==7)
                                        data_tp =dat[count2];       
                                SRCK =1;
                                _nop_();
                                _nop_();
                                SRCK= 0;
                        }   

                        RCK=  1;
                        _nop_();
                        _nop_();
                        RCK=  0;  
       
}   

回复评论 (9)

用同样的函数分别点亮各LED,看看亮度是否有差别,如果没有差别就是代码的问题了
点赞  2010-3-17 15:20
  因为单位数字,我要在中间移几个0,才可以把这个数字在拼起的两块LED上显示。我现在想知道是不是595的硬件有什么需要注意的。
点赞  2010-3-17 16:04
引用: 引用 2 楼 hallowwar 的回复:
因为单位数字,我要在中间移几个0,才可以把这个数字在拼起的两块LED上显示。我现在想知道是不是595的硬件有什么需要注意的。


楼主把对应的硬件原理图 贴出来看看吧。
点赞  2010-3-17 16:25
2块7*6的LED显示?显示数字?

楼主还是把原理图贴出来。

至于亮暗,最可能怀疑的地方 就是驱动电流不够,
具体还得看原理图再确定。

另外最好把具体显示单位数字 和双位数字 对应的LED屏上具体的图形说下。
点赞  2010-3-17 16:33


引用: 引用 4 楼 kyzf 的回复:

至于亮暗,最可能怀疑的地方 就是驱动电流不够,
具体还得看原理图再确定。


可是驱动而言双位数字的时候就很亮啊,你说到了关键,现在就是要确定是不是函数复杂度问题导致。
点赞  2010-3-17 19:21
    哪位碰到过类似的问题啊,我刚才测试了一下,行的驱动电压竟然不一样。着急啊
点赞  2010-3-17 22:40
引用: 引用 6 楼 hallowwar 的回复:
哪位碰到过类似的问题啊,我刚才测试了一下,行的驱动电压竟然不一样。着急啊


楼主把对应的原理图 贴出来吧,我给你再分析下。

另外你的行是采用什么驱动?三极管还是595,还是没有驱动?

一般对于LED点阵,其行列都需要驱动,IO的灌电流能力也非常有限。
点赞  2010-3-18 00:30
引用: 引用 5 楼 hallowwar 的回复:
引用 4 楼 kyzf 的回复:

至于亮暗,最可能怀疑的地方 就是驱动电流不够,
具体还得看原理图再确定。



可是驱动而言双位数字的时候就很亮啊,你说到了关键,现在就是要确定是不是函数复杂度问题导致。



对于IO以及SPI控制的LED点阵,函数最多能控制就是谁亮 谁灭。
以及亮的时间长短?以及灭的时间长短?

一般函数无法控制亮度,就像LCD的对比度以及背光亮度 都是在硬件支持下,软件才可调。
如果硬件本身就没支持亮度调整,软件是不可能控制整体的亮度。
代码对于没有硬件的支持,它就不存在对应的功能。

当然也可能你的眼睛欺骗了,也可能本身他们基本是一样亮,但你没看出来,多自己看看。

如果你确认,亮度的确存在很大差异,那楼主更应检查你的硬件设计。
点赞  2010-3-18 00:36
   搞定了,原因不在我贴到代码上,不是函数到原因,其实本不该怀疑这点,因为函数之间的执行时间差确实太小。后来发现是多了一个P1 =0; 我是把两种显示干脆换成一个函数,才发现了这个问题的。
点赞  2010-3-18 07:59
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复