当前位置: 代码迷 >> 单片机 >> 个位暗,双位数据亮,该怎么解决
  详细解决方案

个位暗,双位数据亮,该怎么解决

热度:90   发布时间:2016-04-28 16:24:01.0
个位暗,双位数据亮
一个比较怪异的问题, 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;  

}  



------解决方案--------------------
用同样的函数分别点亮各LED,看看亮度是否有差别,如果没有差别就是代码的问题了
------解决方案--------------------
2块7*6的LED显示?显示数字?

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

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

另外最好把具体显示单位数字 和双位数字 对应的LED屏上具体的图形说下。
------解决方案--------------------
探讨
引用:

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



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