用DS1302做时钟时仿真出现问题了,时间隔好几秒才走一下

2020-02-05 08:54发布

#include<reg51.h>
#include<intrins.h>
#include "delay.h"
#include "1602.h"
#include "DS1302.h"
unsigned char table_time1[]="2012-07-04  3";                                 //外部变量,DS1302中用到
unsigned char table_time2[]="8:23:00";                                                //同上
unsigned char table3[]="i love xxx";                //调试用
main()
{
        unsigned char i;
        init_1602();
        init_DS1302();                          //设定DS1302的初始时间
        while(1)
        {
                read_time();                                                           //DS130的读取时间函数
                /*for(i=0;i<13;i++)
                        display_1602(1,i+2,table_time1[0]);
                for(i=0;i<7;i++)
                        display_1602(2,i+6,table_time1[0]);*/
                for(i=0;i<10;i++)
                        display_1602(1,i,table3[i]);                        //1602的显示函数 第一行第i列显示数据table3[i]
        }
               
}
问题就是仿真的时候给ds1302设定时间了,但是它不按照1秒1秒的走,而是走的很慢,好几秒才走一次
但是如果我把1602的显示函数给注释的时候,芯片又能正常的走了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
23条回答
yangkuan85988
1楼-- · 2020-02-06 04:53
BXAK 发表于 2012-7-4 12:29
要显示秒位最好至少0.5s更新一次秒位数据,而你的超级循环里面执行周期太长(大于0.5s了,你的1602显示程序 ...

我1602里面没有用延时函数哦。你是不是指芯片本身再走但是我更新速度没有那么快是吗...按这样理解的画,那我的1602上显示的时间应该是在跳跃的发生变化啊....但用仿真的时候查看DS1602芯片它的时间就走的非常的慢呢
yangkuan85988
2楼-- · 2020-02-06 07:11
zpxa001 发表于 2012-7-4 12:43
芯片本身走时应该是正确的,问题出在你的软件上,读取时间->显示时间可能有问题。一般情况下,要显示秒的变 ...

我这仿真的现象就是,DS1302隔上好久然后还只是加上一秒,不是连续加上好几秒,就感觉DS1302没有按照1秒的顺寻在走的,我是在protues里面监视芯片的,不知道正不正确
BXAK
3楼-- · 2020-02-06 09:59
电路没错吧?
babytaomail
4楼-- · 2020-02-06 14:35
楼主应该把仿真工程和程序上传啊。方便大家给你看看。这样子说不清楚的
albert_w
5楼-- · 2020-02-06 18:52
 精彩回答 2  元偷偷看……
yangkuan85988
6楼-- · 2020-02-06 23:11
BXAK 发表于 2012-7-4 13:49
电路没错吧?

这是我的电路图了

一周热门 更多>