单片机与锁存器结合进行数码管的动态显示

如下是单片机与锁存器结合进行数码管的动态显示,可是显示一直在闪烁着不能稳定,仿真中提示是cpu过载了!simulationisnotrunninginrealtimedu... 如下是单片机与锁存器结合进行数码管的动态显示,可是显示一直在闪烁着不能稳定,仿真中提示是cpu 过载了!simulation is not running in real time due to excessive cpu load!
程序中延时已经比较的短了,也修改了几次延时都不行,而这里貌似也不存在消隐的问题啊!

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar tab1[]={0xc0,0xf9,0xa4,0xb0};
sbit cs=P3^6;
sbit ds=P3^7;
void delay()
{
uchar i,j;
for(i=0;i++;i<100)
for(j=0;j++;j<10);
}

void main()
{
while(1)
{
cs=1;
ds=0;
P1=0x01;
cs=0;
ds=1;
P1=tab1[0];
delay();
ds=0;
cs=1;
P1=0x02;
cs=0;
ds=1;
P1=tab1[1];
delay();
ds=0;
cs=1;
P1=0x04;
cs=0;
ds=1;
P1=tab1[2];
delay();
ds=0;
cs=1;
P1=0x08;
cs=0;
ds=1;
P1=tab1[3];
delay();
ds=0;
}
}
展开
 我来答 举报
做而论道
高能答主

2014-06-04 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3.1万
采纳率:82%
帮助的人:8465万
展开全部
芯片型号看不清,试试下列程序。

void main()
{
while(1) {

P1 = tab1[0]; cs = 1; cs = 0;
P1 = 0x01; ds = 1; ds = 0; delay();
P1 = 0x00; ds = 1; ds = 0;

P1 = tab1[1]; cs = 1; cs = 0;
P1 = 0x02; ds = 1; ds = 0; delay();
P1 = 0x00; ds = 1; ds = 0;

P1 = tab1[2]; cs = 1; cs = 0;
P1 = 0x04; ds = 1; ds = 0; delay();
P1 = 0x00; ds = 1; ds = 0;

P1 = tab1[3]; cs = 1; cs = 0;
P1 = 0x08; ds = 1; ds = 0; delay();
P1 = 0x00; ds = 1; ds = 0;

}
}
更多追问追答
追问
奥,芯片是74ls373!刚刚试了一下还是不停的闪烁(我估计你是把我片选和显示的搞反过来了,cs是片选的,ds是显示的),延时和消隐都不行,难道是仿真的问题?
追答
上述程序中的 cs、ds,反了,换过来即可。

换过来后,程序就是正确的,就可以使用。

动态显示,宜采用四位一体的数码管,不宜用单个的。

单个的数码管,反应慢,动态显示时,有闪烁现象。
zhxiufan
2014-06-03 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38391
国家科技进步奖

向TA提问 私信TA
展开全部
你按如下修改试试
void delay()
{
uchar i,j;
for(i=0;i<5;i++)
for(j=0;j<120;j++);
}
void main()
{
while(1)
{
cs=1;
P1=0x01;

cs=0;
ds=1;
P1=tab1[0];
ds=0;

delay();
cs=1;

P1=0x02;
cs=0;
ds=1;
P1=tab1[1];
ds=0;

delay();
cs=1;

P1=0x04;
cs=0;
ds=1;
P1=tab1[2];
ds=0;

delay();
cs=1;

P1=0x08;
cs=0;
ds=1;
P1=tab1[3];
ds=0;

delay();
}

}
更多追问追答
追问
貌似还是不行,就是一直闪烁!
追答
可能你的数码管是静态的。
本回答被网友采纳
抢首赞 已赞过 已踩过<
你对这个回答的评价是?
评论 举报 收起
乱月齐风
2014-06-03 · TA获得超过223个赞
知道小有建树答主
回答量:177
采纳率:0%
帮助的人:106万
展开全部
延时函数还有像你那么写的啊!难道是我孤陋寡闻。。
更多追问追答
追问
奥,我一直都是这样用的,那你的延时是什么样子啊!
追答
for(i = 0;i<100;i++)
抢首赞 已赞过 已踩过<
你对这个回答的评价是?
评论(1) 举报 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式