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

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

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

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

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

公司介绍
2023-11-17 广告
深圳乐视芯科技有限公司主营业务有PCB抄板,BOM制作,软硬件的技术开发和功能完善等全套的技术服务以及完整的技术解决方案。从简单的单层PCB板,到多层 甚至于复杂的30层以上设备的PCB抄板... 还可为客户提供PCB改板服务,能够根据客户... 点击进入详情页
本回答由公司介绍提供
水知余心
2019-01-24 · TA获得超过106个赞
知道答主
回答量:28
采纳率:100%
帮助的人:5.8万
展开全部

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

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

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式