8x8点阵,请问如何消除其余部分微弱的灯光?
除了被点亮的部分,其余未被点亮的部分怎么么会有微弱的灯光,怎么消除不了,昨天整了一整个晚上还是没有整出来 是鬼影, 什么ic的,查一下有没有CS,关一下试一下 那个不是微弱的灯光,也不是神马鬼影,不过是旁边的光亮照在上面的反射而已。 是旁边的照射的吧 时序不对。 是旁边的照的, 是鬼影,其实没亮 你把亮度调低点,看看周围的还亮不{:tongue:} 是什么驱动的点阵 longwu911 发表于 2012-4-12 13:02 static/image/common/back.gif
是什么驱动的点阵
用的是两个74HC5730的锁存器控制 lawdown 发表于 2012-4-12 12:57 static/image/common/back.gif
你把亮度调低点,看看周围的还亮不
这个8*8的点阵没有调节亮度的电位器 784956936 发表于 2012-4-12 12:53 static/image/common/back.gif
是鬼影,其实没亮
这种情况应该怎么样来消除??? caiseyuzhou 发表于 2012-4-12 12:35 static/image/common/back.gif
是旁边的照的,
不可能全都被照亮了吧!除去这几个亮的外,其余的都有微弱的光 fwluck 发表于 2012-4-12 12:26 static/image/common/back.gif
时序不对。
怎么样来把时序改动一下,我的理解控制这个应该和控制发光二极管使差不多的,好像与时序的关系不大额 上面有人都说了,时序不对。
换字型码的时候,而列控制还是上一个字符的,有个很短暂的重合~~~ babysnail 发表于 2012-4-12 11:34 static/image/common/back.gif
是鬼影, 什么ic的,查一下有没有CS,关一下试一下
这是我的源代码,搞了很长的时间还是没有解决掉,不知道问题出在哪里了?
#include <reg52.h>
#define uchar unsigned char
#define uintunsigned 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);
}
}
曾经做过数码管出现过鬼影,后来解决了,时序原理应该是这样:段变,显开,延时,显关。 每次输出断码前 先关闭所有列 这个是消影问题,你要知道你用的是573,是一个“锁存器”来的,所以即使你关闭了使能端,但数据还是被锁存在锁存器中,当你下次再打开使能端的时候,在你送入新的数据的时候,由于上次的数据还保存着,所以此时会在极短的时间还会输出,是二极管发光,最好是在显示完一次后就将573清零,然后再送下一次要显示的数据。做过了很多不同器件控制的点阵,经常这些问题都是由于时序引起的,所以要多注意语句的顺序和控制元器件的使能和关闭 楼上应该是正解 如17楼所说,你输入每列数据之后,延时显示一会,然后加入一个关闭显示的命令。亮--延时--灭。你的程序中好像没有看到“灭”的这部分程序。 是消隐的问题,即在下一次显示的时候先灭一次前一次显示的图像
这个问题之前也困扰了我很久 zyyn123 发表于 2012-4-16 19:22 static/image/common/back.gif
如17楼所说,你输入每列数据之后,延时显示一会,然后加入一个关闭显示的命令。亮--延时--灭。你的程序 ...
原来如此,我说怎么回事呢。 中国人 发表于 2012-4-15 14:17 static/image/common/back.gif
这个是消影问题,你要知道你用的是573,是一个“锁存器”来的,所以即使你关闭了使能端,但数据还是被锁存 ...
学习一下,原来573还要这样用。 我觉得是旁边的光的原因吧 梦的飞翔 发表于 2012-4-16 21:23 static/image/common/back.gif
原来如此,我说怎么回事呢。
19楼朋友的是正解
我再给你说细点:
先把你要显示的第一个数据送出去
让573的LE进行锁存
这时候点阵就会发光
然后延时0.5~1mS
再把关闭显示的数据送出去
让573再次锁存
点阵就被关闭不亮了
这时不要延时了
立即送出下一个要显示的数据
再让573锁存
。。。。。。
直到送完全部显示数据
这样就基本消除了“鬼影” airfex 发表于 2012-4-16 21:28 static/image/common/back.gif
学习一下,原来573还要这样用。
573的用法还有很多。。。 个人觉得延时太浪费时间,不如做个循环函数,每跑一圈就输出一行,之后立刻返回。这样既不影响时间,又不影响任务。我用FX2做异步通信就是这样的,效率提高了N倍。 受教了。 这个问题在数码管中应该就要研究过了
页:
[1]