一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 5426|回复: 9
收起左侧

请教如何消除残影

[复制链接]
发表于 2010-5-5 20:06 | 显示全部楼层 |阅读模式
本帖最后由 dmhs31 于 2010-5-5 20:07 编辑

前几天在淘宝收了块32*80的点阵,第一次玩,用M8驱动,现在可以显示汉字不过会有残影,特来请教各位怎么处理,谢谢

残影

残影

3.c (3.89 KB, 下载次数: 202)
发表于 2010-5-5 22:52 | 显示全部楼层
本帖最后由 efan 于 2010-5-5 22:54 编辑

把你的硬件原理图贴上来看看。不过我觉得应该是扫描的问题,在更换行/列扫描前先送一个“灭”(全0或者全1),然后再更换行/列,就应该可以解决这个问题。循环顺序:灭-->更换行/列-->送数,要是先送数后换行/列的话就会有这个问题。
 楼主| 发表于 2010-5-5 23:40 | 显示全部楼层
回复 2# efan
硬件是常见的595+156,应该是你说的,换行没有清零的问题了,再研究,谢谢
 楼主| 发表于 2010-5-6 23:54 | 显示全部楼层
试过每行显示后发送0x00,还是会有残影啊,列是两片156组成的电路如下,不知怎么把所有的端口(0~16)置1清行显示啊,现实是清行行不通,清列想不通,希望得到指教,谢谢

156

156

复件 3.c (4.49 KB, 下载次数: 179)
发表于 2010-5-7 01:17 | 显示全部楼层
本帖最后由 狗狗百里游 于 2010-5-7 06:13 编辑

你代码中


void display()       //显示,j是要显示的个数
{
  unsigned char i,j,s,m ;
  
char h_d=0 ;
  
  for(i=0;i<16;i++)
  {  
     
   
    for(j=0;j<5;j++)
     {  
          m=2*i;
      data_b=(led_code[j][m]) ;
            
      hc595_send(data_b );
      
             s=2*i+1;
     data_a=(led_code[j]);      
      hc595_send(data_a );      //取两次,凑成16位  
                  
      }
      

hc595_oe=1;//595的13脚输入高电位,输出端为高阻。
//在595更新数据前,让595都不输出就是黑屏了,就不会有残影。
delay_us(2);       //这里决定黑屏时间
      PORTB=h_d;            
      hc595_stb=0;
          hc595_stb=1;
  hc595_oe=0;//595的13脚输入低电位,输出端为状态。   


delay_us(10);       //这里决定十六选一显示的时间停留多久,太快人眼会觉得很闪,亮度又不够,太慢,人眼会看出一行一行的扫描。你自己调节,

PORTB=h_d;           //列数据
                  
     hc595_stb=1;
     

           
      delay_us(80);

       h_d++;   
      
           for(j=0;j<5;j++)                 //发送0x00行清零
     {  

      data_b=(led_code[5][0]) ;
            
      hc595_send(data_b );
      
     data_a=(led_code[5][0]);      

      hc595_send(data_a );      //取两次,凑成16位  
                  
      }
     hc595_stb=0;   
     
     hc595_stb=1;  
            
        
  }
  
}

红色的是你原来弄得黑屏代码吧?,没有用的,去掉
蓝色的是黑屏代码
 楼主| 发表于 2010-5-7 13:23 | 显示全部楼层
谢谢 狗狗百里游 的回复,不过买的这个屏那个595的OE脚没有引出,是直接接地的,在程序开始时定义是为以后剪断另焊一条OE线出来玩灰阶的,难道现在就要动手剪断OE对地?不知原来是怎么控制的。
发表于 2010-5-7 14:55 | 显示全部楼层
那个不常用的74ls156,的2脚跟14脚接高电平,74ls156输出全部为高,找说明书看看
 楼主| 发表于 2010-5-7 15:22 | 显示全部楼层
谢谢,狗狗百里游 的再次回复,74HC156的datasheet看来好几次了,因为电路时有两片156用74ls00连起来的组成4-16译码器(如4楼的图),如果第一片156输出全部H,那么第二片就会有输出L,想不出怎么使16个输出都为H,还请指教,谢谢
发表于 2010-5-7 16:09 | 显示全部楼层
本帖最后由 狗狗百里游 于 2010-5-7 17:09 编辑

只要74ls00的2脚跟5脚是低电平,74ls00的3脚跟6脚输出一定是高电平......你再看看74ls00的说明书


我想了一下,不改变你原来的电路,通过程序也有办法实现消除残影。效果就不知道好不好了,你自己原来的清零过程,顺序不对
做几个函数合成一个函数
hc595_send_需要显示的一行数据()
{
hc595_send_清零;//在原来的行号,发送一行清零数据,并显示

delay_us(2);       //这里决定黑屏时间

{ }//然后在这里设置要显示的行号。然后

hc595_send_一行数据;//发送一行数据,并显示
delay_us(10);       //这里决定十六选一显示的时间停留多久,太快人眼会觉得很闪,亮度又不够,太慢,人眼会看出一行一行的扫描。你自己调节,
}
 楼主| 发表于 2010-5-8 00:43 | 显示全部楼层
真的太对不起狗狗百里游兄弟了,原来是我自己画错电路了,74LS00的2跟5是接到OE端的,这样的话就可以把156全清零了,不过现在把引脚重新定义,又出现问题了,看来还得努力,谢谢楼上两位指教

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-4-28 19:31 , Processed in 0.049783 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表