8x8点阵,请问如何消除其余部分微弱的灯光?

2020-02-04 09:07发布

20120412127.jpg (1.49 MB, 下载次数: 1) 下载附件 点阵显示 2012-4-12 11:24 上传

除了被点亮的部分,其余未被点亮的部分怎么么会有微弱的灯光,怎么消除不了,昨天整了一整个晚上还是没有整出来
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
30条回答
梦的飞翔
1楼-- · 2020-02-06 03:15
fwluck 发表于 2012-4-12 12:26
时序不对。

怎么样来把时序改动一下,我的理解控制这个应该和控制发光二极管使差不多的,好像与时序的关系不大额
erxun
2楼-- · 2020-02-06 07:51
 精彩回答 2  元偷偷看……
梦的飞翔
3楼-- · 2020-02-06 11:48
babysnail 发表于 2012-4-12 11:34
是鬼影, 什么ic的,查一下有没有CS,关一下试一下

这是我的源代码,搞了很长的时间还是没有解决掉,不知道问题出在哪里了?

#include <reg52.h>
#define uchar unsigned char
#define uint  unsigned int
sbit wela=P2^7;
sbit dula=P2^6;
sbit diola=P2^5;
void delay(uint z)   //延时子程序
  {
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
   }
void main(void)   //主程序
{

        while(1)    //重复遁环
                {
                        P0=0xff;                //清零
                        diola=1;
                        dula=1;
                        wela=1;
                        P0=0xff;
                        diola=0;
                        dula=0;
                        wela=0;

                        diola=1;
                        P0=0x01;
                        diola=0;
       
                        dula=1;         //第1列
                        P0=0xe7;
                        dula=0;
                        delay(3);
       
                        diola=1;
                        P0=0x02;
                        diola=0;

                        dula=1;         //第2列
                        P0=0xdb;
                        dula=0;
                        delay(3);

                        diola=1;
                        P0=0x04;
                        diola=0;

                        dula=1;         //第3列
                        P0=0xbd;
                        dula=0;
                        delay(3);

                        diola=1;
                        P0=0x08;
                        diola=0;

                        dula=1;         //第4列
                        P0=0x7e;
                        dula=0;
                        delay(3);

                        diola=1;
                        P0=0x10;
                        diola=0;

                        dula=1;         //第5列
                        P0=0x7e;
                        dula=0;
                        delay(3);

                        diola=1;
                        P0=0x20;
                        diola=0;

                        dula=1;         //第6列
                        P0=0xbd;
                        dula=0;
                        delay(3);

                        diola=1;
                        P0=0x40;
                        diola=0;

                        dula=1;         //第7列
                        P0=0xdb;
                        dula=0;
                        delay(3);

                        diola=1;
                        P0=0x80;
                        diola=0;

                        dula=1;         //第8列
                        P0=0xe7;
                        dula=0;
                        delay(3);

                }

}


p4s5j6
4楼-- · 2020-02-06 17:00
曾经做过数码管出现过鬼影,后来解决了,时序原理应该是这样:  段变,显开,延时,显关。   
xiaoziwen
5楼-- · 2020-02-06 20:04
每次输出断码前 先关闭所有列
中国人
6楼-- · 2020-02-06 21:36
这个是消影问题,你要知道你用的是573,是一个“锁存器”来的,所以即使你关闭了使能端,但数据还是被锁存在锁存器中,当你下次再打开使能端的时候,在你送入新的数据的时候,由于上次的数据还保存着,所以此时会在极短的时间还会输出,是二极管发光,最好是在显示完一次后就将573清零,然后再送下一次要显示的数据。做过了很多不同器件控制的点阵,经常这些问题都是由于时序引起的,所以要多注意语句的顺序和控制元器件的使能和关闭

一周热门 更多>