51单片机中写数码管59秒循环计时的程序可以不用计时器吗?用延时函数可能实现吗?

[复制链接]
查看11 | 回复3 | 2011-7-16 22:57:48 | 显示全部楼层 |阅读模式
我用的是void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)

for(j=110;j>0;j--);
这种延时程序但是写了很久都写不好i。显示十位的数码管总是灭的,也就是说个位可以从0-9,但是不会显示十位。关键是哪个延时程序放在那个地方的问题。
求大师赐教啊!

回复

使用道具 举报

千问 | 2011-7-16 22:57:48 | 显示全部楼层
可以实现。不过这样的定时精度比较低。既然能计数,那说明是你的数码管部分的程序没写好。直接delay(1000)就约等于1s 了,不过你这样最好计数小一点,因为这个延时程序执行完了之后还要执行显示函数。还有一种方法就是自己估算一下显示函数需要花多长时间,然后在while里同时执行delay和显示函数,这时候就要定义一个变量,全局变量...
回复

使用道具 举报

千问 | 2011-7-16 22:57:48 | 显示全部楼层
延时函数可以完成循环,但是有误差 ,不过你可以吧程序段拆开这样可以有效减小误差至于你写的程序 没看出有什么实际用处...
回复

使用道具 举报

千问 | 2011-7-16 22:57:48 | 显示全部楼层
可以用单片机的定时器,可参看有关资料。十位不亮与延时函数没啥关系,看看自己管脚设置。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行