打印

LED显示屏虚亮和错位,有时还有闪烁的问题。

[复制链接]
4420|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
luling5897|  楼主 | 2013-3-24 13:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void Byte_Data_in(uchar R1_data) //595移位
{
uchar i;

for(i=0; i<8; i++)
{
R1_data <<= 1;
shift_dataR1= CY;

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

void ROW_138(uchar word, uchar gg, uchar noread) //138扫描显示
{
uchar i,j,k;

if(!noread)
{
for(i=0;i<8;i++) //移位存储显示内容
{
if(left)
{
mov1_mov(l_word*2, gg, i, word_buffer0, led_display_data);//左 滚动显示时移位函数
}
if(middle)
{
mov1_mov(m_word*2, gg, i, word_buffer1, led_display_data+l_word*32);//中 滚动显示时移位函数
}
if(right)
{
mov1_mov(r_word*2, gg, i, word_buffer2, led_display_data+l_word*32+m_word*32);//右 滚动显示时移位函数
}
}
}

for(i=0;i<8;i++)
{
for(j=0;j<word*2;j++)
{
for(k=2;k>0;k--)
{
Byte_Data_in(led_display_data[j*16+(k-1)*8+i]);
}
}
//EN = 1; //关显示,消隐
latch_clk= 0;

row138_A = i&1;
row138_B = i&2;
row138_C = i&4; //138行选

latch_clk= 1; //锁存时钟(上升沿有效)

EN = 0;
timer0_val(); //T0初值重置,开定时器T0,定时1ms
delay_us(280); //延时1.4ms
}
delay_us(980); //延时4.9ms
EN = 1;
}

void timer0_val() //T0初值重置,开定时器T0
{
TH0 = 0xF8;
TL0 = 0xCD; //定时器定时1ms
TR0 = 1; //开定时器
}

void timer0_intrrupt() interrupt 1 //定时器T0中断服务程序
{
TR0 = 0; //关定时器
EN = 1; //关138使能
}

       程序是1/8扫描的,按照这些程序写,亮度足够,显示正常,就是有虚亮现象,如果把138扫描函数里面的EN=1不屏蔽的话,亮度足够,也没有了虚亮,但是滚动显示的时候有些灯会闪烁(即个别灯会跳动显示),不知道程序哪里可以改进,麻烦路过的各位指点指点,谢谢!以上是部分相关的程序。

相关帖子

沙发
luling5897|  楼主 | 2013-3-26 09:07 | 只看该作者
都是路过的,没人给点意见。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

35

帖子

1

粉丝