打印

数码管显示重叠问题!

[复制链接]
3291|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
甄蔡组合|  楼主 | 2007-12-9 18:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟搞的控制器控制方面很正常.但发现数码管显示出现重叠.
我用6个数码管,在显示负值时第一位和第六位重叠,就是说第六位也显示负号,稍微比正常显示暗一点.当显示正值时,我把第一位关闭了,没有出现重叠现象.
我改了延时也不管用.
请问大虾们.谁遇到过这样的问题,给小弟点提示!
非常感谢

相关帖子

沙发
computer00| | 2007-12-9 19:12 | 只看该作者

消隐没做好。 切换时需要先灭掉所有显示,然后再切换到下

使用特权

评论回复
板凳
huangqi412| | 2007-12-9 19:15 | 只看该作者

00正解

使用特权

评论回复
地板
hotpower| | 2007-12-9 19:19 | 只看该作者

00!

使用特权

评论回复
5
甄蔡组合|  楼主 | 2007-12-9 23:02 | 只看该作者

很感谢

多谢指点!!
我已经是显示后关闭所有数码管.哪位显示在点亮.我用的是动态刷新.
我关断第一位显示没问题,最后一位不会出重影.但我第一位要显示负号呀1最后那位就会把负号也显示出来!显示后我关断了.
定时器会有影响吗!

使用特权

评论回复
6
computer00| | 2007-12-9 23:49 | 只看该作者

负号也没什么特殊的地方啊,也就一个普通的LED,跟其他一

使用特权

评论回复
7
甄蔡组合|  楼主 | 2007-12-10 09:46 | 只看该作者

我也感到奇怪呀!!

程序就是开关数码管.没什么特别的!!
但就是出问题!!疑惑

使用特权

评论回复
8
农民讲习所| | 2007-12-10 09:48 | 只看该作者

能不能提供更多的信息?

使用特权

评论回复
9
microcheng| | 2007-12-10 09:59 | 只看该作者

我有专用的数码管驱动IC不知道能不能帮得上你?

芯片优点:
1,对于显示部分程序不再需要时刻去扫描刷新了
2,省掉了所有的限流电阻和驱动三极管,简化了加工工序,当然也降低了故障几率,减少PCB占用面积
3,占用MCU口线少,通信只需要三根线(CLK,DAT,STB)
4,程序直接读键值,不用自己再去扫描
5.可以通过软件调节调节数码管亮度(即发送相应命令到寄存器)

使用特权

评论回复
10
甄蔡组合|  楼主 | 2007-12-10 10:12 | 只看该作者

晚些我把显示程序传上来

使用特权

评论回复
11
gyt| | 2007-12-10 11:59 | 只看该作者

严格按照2楼00说的做

一定可以解决的

除非有漏电之类的硬件问题

使用特权

评论回复
12
甄蔡组合|  楼主 | 2007-12-12 20:10 | 只看该作者

这是我的显示程序!!应该没错吧

void standarddisplay() 
{
    P0_0=0;
    if(inbuf[0]==45)
    {
        P2=0xBF;
        delay();
        P0=0xff;
    }
    else
    {
        P2=0x0FF;
        delay();
        P0=0xff;
    }
    //delay();
    //P0=0xff;
    P0_1=0;
    P2=table[(inbuf[3]-48)]&0x7F;
    delay();
    P0=0xff;
    P0_2=0;
    P2=table[inbuf[5]-48];
    delay();
    P0=0xff;
    P0_3=0;
    P2=table[inbuf[6]-48];
    delay();
    P0=0xff;
    P0_4=0;
    P2=table[inbuf[7]-48];
    delay();
    P0=0xff;
    P0_5=0;
    P2=table[inbuf[8]-48];
    delay();

}

使用特权

评论回复
13
甄蔡组合|  楼主 | 2007-12-12 20:14 | 只看该作者

漏电应该不会!!在别的扳子上也是有同样的问题

使用特权

评论回复
14
hellomcu| | 2007-12-12 20:36 | 只看该作者

用示波器看看吧

使用特权

评论回复
15
dai_weis| | 2007-12-12 20:48 | 只看该作者

改个位置看看

原来部分代码:
   delay();
    P0=0xff;
    P0_2=0;
    P2=table[inbuf[5]-48];
    delay();
修改后的:
    delay();
    P0=0xff;
    P2=table[inbuf[5]-48];
    P0_2=0;
    delay();

因为P0被赋值0XFF后马上就给了其他值,所以该步骤会被优化掉

使用特权

评论回复
16
程序匠人| | 2007-12-12 22:05 | 只看该作者

如果是匠人,会先去检查一下LST文件

看看汇编出来的代码是什么样子滴……

使用特权

评论回复
17
甄蔡组合|  楼主 | 2007-12-13 20:50 | 只看该作者

谢谢15楼!!我试试看!!

匠人可以给些指点!如何判断汇编是否正常!!

使用特权

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

本版积分规则

33

主题

198

帖子

0

粉丝