qq_57842208 2021-05-27 18:32 采纳率: 0%
浏览 43

51单片机程序烧录后时间不动

lcd1602上显示实时时间,仿真的时候后都没问题,烧录到开发板后时间变成“27:01:81”而且一直不变,这是为什么啊

  • 写回答

1条回答 默认 最新

  • 无限虚空 2024-05-27 17:55
    关注

    是使用DS1302时钟芯片吗?还是单片机定时器产生的定时;
    1、如果是DS1302芯片。需要设置芯片重新上电;
    1、先把程序烧录进51单片机中,然后把程序中的写时间函数注释掉,再烧录进去就可以了
    解释:
    第一次烧录相当于给DS1302时钟芯片写入一个初始时间,第二次烧录前由于有备用电源DS1302一直在工作,所以第二次烧录不需要设置初始时间,应把源程序中的写入初始时间的程序注释掉

    2、在DS1302的RAM里面写入一个标志数(因为DS1302有备用电池,外部电源关闭后,RAM里的值不会丢掉依然保留),程序中的DS1302写入时间函数是否执行需要用该标志进行判断,程序如下

    unsigned char flag; //定义一个标志位
    flag= Ds1302_Read_Byte(0xc0); //0xc0为DS1302内部RAM的首地址,每次执行程序 先读出该地址的数据
    if(flag==0) //RAM数据默认为0
    {
    Ds1302_Init(); //DS1302初始化
    Ds1302_Write_Time(); //DS1302写入时间
    Ds1302_Write_Byte(0xc0,1); //执行一次程序后,在RAM里写入一个数1,所以该程序段只会被执行一次
    }
    2、如果是定时器,就需要看看定时器是否开启,定时中断标志位清除等

    评论

报告相同问题?

悬赏问题

  • ¥20 家用射频美容仪技术规格
  • ¥25 matlab数值溢出该怎么解决?
  • ¥15 大家帮我看看为什么错了
  • ¥15 unity互动琴弦抖动效果
  • ¥15 做了个的二极管反向饱和电流测量电路,但是测试达不到效果
  • ¥15 nginx无证书访问https失败
  • ¥15 树莓派启动AP热点传入数据
  • ¥15 multisim中关于74ls192n和DSWPK开关的问题(相关搜索:计数器)
  • ¥15 在误装Windows server2019 后如何利用Windows.old恢复?
  • ¥20 代码实现状态连接包过滤防火墙的设计与实现