关于proteus仿真数码管,动态扫描时有的数字不能显示问题!

求助朋友们一个问题~~我用proteus仿真时,仿真的6位数码管动态扫描时,每个数码管都有不能显示的数字~~比如第一个数码管不能显示2.换成其他数字就能显示。第二个数码管... 求助朋友们一个问题~~我用proteus仿真时,仿真的6位数码管动态扫描时, 每个数码管都有不能显示的数字~~比如第一个数码管不能显示2.换成其他数字就能显示。第二个数码管不能显示6、7 ,第三个不能显示0等。很奇怪,程序本身也没错。是不是proteus设置的问题。有没有朋友知道这怎么回事?如图,第三个数码管不能显示2~
换成其他数字就能动态扫描出来~~是不是软件本身的问题呢 ?希望有高手帮忙。小弟才一级,没法上图~请谅解
展开
 我来答
jianghe706
推荐于2016-05-13 · TA获得超过5145个赞
知道大有可为答主
回答量:2213
采纳率:77%
帮助的人:806万
展开全部

首先你要确定,你的程序是否对,这个可以在相应的地方设置断点来帮助你。

如果程序没太大的问题,可能是你的每个数码管显示的延时时间不够,至少要延时1-2ms,也不能太长,延时时间太长的话显示会出现闪烁。这个问题其实也是软件问题。

还有一点,PROTEUS的仿真实际上是动画,每秒20-50帧(可设定),因此有时程序正确,显示却有点问题(如你所说的问题),此时可以适当修改动画的帧速:在“系统”的菜单的倒数第三项就是。

福州大禹电子科技
2024-12-16 广告
福州大禹电子科技有限公司成立于2008年自创办以来,专注超声产品的研发和产业化,始终坚持技术创新是企业发展动力的理念,运用最基础的物理声学原理,攻克了一系列卡脖子难题,成功打破了国外垄断,把超声技术运用到了工控、水利、市政、环保、医疗,海洋... 点击进入详情页
本回答由福州大禹电子科技提供
水知余心
2019-01-24 · TA获得超过106个赞
知道答主
回答量:28
采纳率:100%
帮助的人:6万
展开全部

遇到相同的问题,我是这样解决的:

1、在位选和段选打开之前先赋值

2、添加延时

以下是我的程序(显示数字19930309),仅供参考,先截图修改的部分,贴上来的代码排版不行,不知道为啥:

#include <reg52.h>
#define uint  unsigned int
#define uchar unsigned char
sbit we = P2^7;
sbit du = P2^6;
void delay(uint z)
{
uint x,y;
for(x = z; x > 0; x--)
for(y = 120; y > 0; y--);
}

uchar code leddata[]={

0x3F,  //"0"
0x06,  //"1"
0x5B,  //"2"
0x4F,  //"3"
0x66,  //"4"
0x6D,  //"5"
0x7D,  //"6"
0x07,  //"7"
0x7F,  //"8"
0x6F,  //"9"
0x77,  //"A"
0x7C,  //"B"
0x39,  //"C"
0x5E,  //"D"
0x79,  //"E"
0x71,  //"F"
0x76,  //"H"
0x38,  //"L"
0x37,  //"n"
0x3E,  //"u"
0x73,  //"P"
0x5C,  //"o"
0x40,  //"-"
0x00,  //熄灭
0x00  //自定义
};


void main()
{

P0 = 0xfe;//先赋值
we = 1;//再打开位选
we = 0;

P0 = leddata[1];//先赋值
du = 1;//再打开段选
du = 0;
delay(1);//设置一个较短的延时,我的是设置接近1ms

P0 = 0xfd;
we = 1;
we = 0;

P0 = leddata[9];
du = 1;
du = 0;
delay(1);

P0 = 0xfb;
we = 1;
we = 0;

P0 = leddata[9];
du = 1;
du = 0;
delay(1);

P0 = 0xf7;
we = 1;
we = 0;

P0 = leddata[3];
du = 1;
du = 0;
delay(1);

P0 = 0xef;
we = 1;
we = 0;

P0 = leddata[0];
du = 1;
du = 0;
delay(1);

P0 = 0xdf;
we = 1;
we = 0;

P0 = leddata[3];
du = 1;
du = 0;
delay(1);

P0 = 0xbf;
we = 1;
we = 0;

P0 = leddata[0];
du = 1;
du = 0;
delay(1);

P0 = 0x7f;
we = 1;
we = 0;

P0 = leddata[9];
du = 1;
du = 0;
delay(1);
}

下面是效果图:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hackerkww
2012-10-25
知道答主
回答量:7
采纳率:100%
帮助的人:5107
展开全部
我也遇到和你一摸一样的问题,去掉两个八位锁存器之后就是正常,不知道,你有没有解决这个问题呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式