单片机在proteus上仿真时 四位数码管显示时不停闪烁移动,这是为什么? 5

这是程序#include<reg51.h>#defineucharunsignedchar#defineuintunsignedint#defineCodeoutP2//... 这是程序
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define Codeout P2//定义段码输出口
#define Dsout P0 //定义数码管位选输出口
uchar Code[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //显示段码
uchar Dscode[] = {0xf7,0xef,0xdf,0xbf}; //显示位选表
sbit beep=P1^7; //定义蜂鸣器
sbit rled=P3^5; //定义发光二极管
sbit gled=P3^6;
sbit S1=P1^0; //定义按键
sbit S2=P1^1;
sbit S3=P1^2;
uint a=1000,ssnd;

/*************延迟子程序*****************/
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

/****************LED和蜂鸣器报警*************/
void alarm()
{
uchar i;
if(ssnd<a)
{
gled=0;
rled=1;
}
else
{
rled=0;
gled=1;
for(i=0;i<10;i++)//喇叭发声的时间循环,改变大小可以改变发声时间长短
{
delay(20); //参数决定发声的频率,估算值,可以自行更改参数并
beep=~beep;
}
beep=1; //喇叭停止工作,间歇的时间,可更改

}

}

/*************浓度显示*************/
void display(uint nd)
{
P0=0xf7;
P2=Code[nd/1000]; //显示千位
delay(1);

P0=0xef;
P2=Code[nd%1000/100]; //显示百位
delay(1);

P0=0xdf;
P2=Code[nd%100/10]; //显示十位
delay(1);

P0=0xbf;
P2=Code[nd%10]; //显示个位
delay(1);

}
void main()
{

beep=1;
gled=0;
ssnd=999;
if(S2==0)
{delay(10);
a++;
}
if(S3==0)
{delay(10);
a--;
}
while(1)
{
display(ssnd);
alarm();
if(beep==0)
{ rled=1;
gled=0;
beep=~beep;

}
}
展开
 我来答
jianghe706
2012-04-27 · TA获得超过5145个赞
知道大有可为答主
回答量:2213
采纳率:77%
帮助的人:807万
展开全部
显然从你的图上看,你用的是动态显示,动态显示是每位的显示时间在1-2ms,如果你的时间大于此值就会出现闪烁。如果你的显示间隔时间没问题,那请不要纠结此事,因为在PROTEUS仿真中,如果你的计算机速度不够快,仿真的速度就慢了,即你看到的仿真动画是个慢动作的结果,它自然就是会闪烁,但用实物运行就正常。
提醒你一下,你看仿真的信息提示中是否有提示:由于你的计算机原因使的仿真不是在真实的速度下运行(大意),如果有这是这个原因了!
董卫卫14934
2012-04-30 · 超过11用户采纳过TA的回答
知道答主
回答量:83
采纳率:0%
帮助的人:36.3万
展开全部
proteus 中数码管动态显示,不是很好使;改用硬件实验吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
明目张胆君
2012-04-26 · 超过49用户采纳过TA的回答
知道小有建树答主
回答量:141
采纳率:0%
帮助的人:101万
展开全部
看着像延时时间太长,你把显示程序的延时去了试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鑽石眼淚_
2012-05-07
知道答主
回答量:42
采纳率:0%
帮助的人:27.6万
展开全部
应为扬声器SPEAKER的原因,你把SPEAKER去掉试一试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式