微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 新人求教!用单片机和DS1302写个万年历程序用LCD1602显示,为什么重新烧入程序后,并没用复位初值,这是什么原因呢?

新人求教!用单片机和DS1302写个万年历程序用LCD1602显示,为什么重新烧入程序后,并没用复位初值,这是什么原因呢?

时间:10-02 整理:3721RD 点击:
比如说我设置的初始化时间是2017-02-26:12时00分00秒。烧入程序,LCD液晶显示屏开始显示时间,过了30秒,LCD的显示屏的时间是2017-02-26:12时00分30秒.。那么这时候我重新再一次烧入程序,显示的时间不应该是重新写成2017-02-26:12时00分00秒了吗?但是实际上重新烧入程序后,时间并没有改变,仍是从017-02-26:12时00分30+烧入程序的时间秒,开始计时的,也就是说重新烧入数据对显示并没有影响,这是为什么呢?
extern uchar time[7]={0x00,0x00,0x12,0x25,0x02,0x06,0x17};//这是写入的初始时间
void main()
{
        uchar i;
        Lcdinit();
        Ds1302Write(0x8e,0x00);  //关闭写保护
        for(i=0;i<7;i++)  //写入初始时间
        {
                Ds1302Write(write_addr[i],time[i]);
        }
        Ds1302Write(0x8e,0x80); //打开写保护
        while(1)
        {
                for(i=0;i<7;i++)
                {
                        time[i]=Ds1302Read(read_addr[i]);
                }
                Lcddisplay();
                //delay(5);
        }
}

DS1302具有掉电保护,因此掉电时候能够保持掉电前的数据。新烧录程序显示之前的值应该是这个原因,没有复位是不是你下载程序后没有复位,所以新down的程序没有运行

此问答贴被选为2月27日的每日一答贴,活动详情见:http://bbs.elecfans.com/jishu_1111064_1_1.html  希望大家可以踊跃帮助坛友解决问题,谢谢。

应该是你的DS1302用的备用电源,纽扣电池之类的  你如果用单片机VCC供电试试就知道了  

是的 谢谢

要让板子彻底断电,如果实时时钟有单独的电源(纽扣电池)也要拿掉

小编如果对坛友的答案满意 请选为最佳答案哦~

如果有纽扣电池的供电的话,程序再烧进去一次 就没有什么作用吗?还是说程序就少不进去了?

下载程序后没有复位是什么意思?不就是按单片机开发板上的复位按键吗?如果是的话,按下没有作用

以下是来自电子发烧友网微信公众号的答案

会不会是LCD没有重新更新数据

单片机是否完全断电了?
LCD初始化是否清除数据了?

我复位之后还是一样的情况

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top