关于51单片机软件延时并用数码管显示的问题,请各位高手指教!

编写了如下一段软件延时并用数码管显示的程序,显示范围是0--60,在板子上显示时只显示了十位(其实个位也有显示的只是一闪而过,就像没显示一样),请问这是什么问题???(这... 编写了如下一段软件延时并用数码管显示的程序,显示范围是0--60,在板子上显示时只显示了十位(其实个位也有显示的只是一闪而过,就像没显示一样),请问这是什么问题???(这里给的是main部分,其他的可以不管,ADDR0,ADDR1,ADDR2是通过控制译码器的输入来控制数码管的位选,也可以不管)
void main()
{
ENLED=0;ADDR3=1; /*38译码器使能*/
while(1)
{
static uchar num=0;
delay(10000); /*调用前面的一个软件延时子函数*/
num++;
if(num<60)
{
ge=num%10;
shi=num/10%10;
ADDR0=0;ADDR1=0;ADDR2=0;P0=table1[ge];/*使用动态显示在P0口显示个位*/
ADDR0=1;ADDR1=0;ADDR2=0;P0=table1[shi]; /*使用动态显示在P0口显示十位*/
}
else num=0;

}
}
展开
 我来答
做而论道
高能答主

2013-08-13 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
显示一位后,要有一个延时,之后再显示下一位。

必要时,还要加上消隐,之后再显示下一位。

否则,显示必然混乱,总是在交换显示内容,看不清楚。

void main()
{
ENLED = 0; ADDR3 = 1; /*38译码器使能*/
uchar num = 0, i;

while(1) {
num++;
if(num > 60) num = 0;

ge = num% 10;
shi = num / 10 % 10;

ADDR1 = 0; ADDR2 = 0;

for (i = 0; i < 200; i++) {
ADDR0 = 0; P0 = table1[ge]; delay(10); /*调用前面的一个软件延时子函数*/
ADDR0 = 1; P0 = table1[shi]; delay(10); /*调用前面的一个软件延时子函数*/
}
}
}
kmust081151
2013-08-13 · TA获得超过149个赞
知道小有建树答主
回答量:156
采纳率:0%
帮助的人:76.5万
展开全部
原因在此:
ADDR0=1;ADDR1=0;ADDR2=0;P0=table1[shi]; /*使用动态显示在P0口显示十位*/
上一语句是:ADDR0=0;ADDR1=0;ADDR2=0;P0=table1[ge];/*使用动态显示在P0口显示个位*/
就相当于你刚把个位送去显示,接着就把十位送显示,是不是后面送去的十位显示就把前面的内容覆盖了,而且单片机的这个执行是很快的,所以,人眼看的话就像你说的出现一闪而过了,是显示了,只是速度太快,看不清楚,几乎看不到。

解决的办法:
1、如果IO口够用的话,可以把两次送显分开,P0口控制显示个位,P1口控制显示十位,这样就不会出现覆盖。
2、你用38译码器的话,一个IO口也够了,比如你的P0口,低四位控制显示个位,高四位控制显示十位。table做一个就可以(从0-60),对照38译码器真值表,还有你的数码管是共阳还是共阴,就可以编写程序了。

具体的还得看你的硬件电路,因为没有原理图,上述所讲,难免有不当之处,不当之处请见谅,大家共同学习,共同交流,共同进步。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳光小子009
2013-08-12 · 超过28用户采纳过TA的回答
知道答主
回答量:102
采纳率:0%
帮助的人:78.8万
展开全部
数码管显示个位时电平保持时间太短,显示个位后加一个小延时。
unsinged char i;

for(i=0;i<50;i++)
{
ADDR0=0;ADDR1=0;ADDR2=0;P0=table1[ge];/*使用动态显示在P0口显示个位*/
delay(50);
ADDR0=1;ADDR1=0;ADDR2=0;P0=table1[shi]; /*使用动态显示在P0口显示十位*/
delay(50);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
waterpool
2013-08-13 · 超过33用户采纳过TA的回答
知道答主
回答量:89
采纳率:0%
帮助的人:41.3万
展开全部
这两位回答挺好的,数码管显示主要是需要延时和消影
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式