7330|16

70

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

请问时钟芯片DS1302和AT24C02能放在一起用么? [复制链接]

当程序开始运行时,DS1302总会读取一个我们设定好的值,然后我用AT24C02保存也不管用了,刚开始显示总是那个数,有没有人有什么办法?

此帖出自51单片机论坛

最新回复

24c02读取错误,把24c02函数贴上来看看  详情 回复 发表于 2012-2-14 16:06
点赞 关注
 

回复
举报

7228

帖子

192

TA的资源

五彩晶圆(高级)

沙发
 
可以一起用的 给一个不可以一起用的理由
此帖出自51单片机论坛
 
 
 

回复

315

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 

那得看你程序长啥样了

话说,你程序一开始难道有设置时间的函数?

此帖出自51单片机论坛
 
 
 

回复

514

帖子

5

TA的资源

纯净的硅(中级)

4
 
你是说让开机时显示上次关机时的时间?把你的初始化程序改成从24c02读取数据呗
此帖出自51单片机论坛
 
 
 

回复

170

帖子

0

TA的资源

一粒金砂(中级)

5
 
不明白你在说什么啊 ,,应该是你程序处理中总是先写个时间……
此帖出自51单片机论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(高级)

6
 

各位,以下是我的主程序

void main()
{
  lcd_init();       //液晶初始化
  at24c02_init();         //AT24C02初始化 
  
  time0[0]=at24c02_read_add(1);
  time0[1]=at24c02_read_add(2);
  time0[2]=at24c02_read_add(3);
  time0[3]=at24c02_read_add(4);
  time0[4]=at24c02_read_add(5);
  time0[5]=at24c02_read_add(6);
  time0[6]=at24c02_read_add(7);     //time0[ ]里面存着我初始化的值,年月日时分秒星期,但是第一次上电后,time0[ ]数组从AT24C02读出来是不是没东西啊???

 

  set_ds1302(); //初始化函数,显示年月日时分秒

 

  while(1)
  {
      keyscan();   //正常走时键盘扫描
      alarmkeyscan();    //闹钟键盘扫描
      if(helt==0&&alarmflag==0)//helt=0时正常运行,helt=1时,由于进行时间调整,所以跳过读取ds1302数据这部分,直接扫描键盘党调整好之后又令helt=0;
      {
        read_rtc() ;      //读取DS1302地址中的数
        date_pros();       //对读取出来的BCD码进行数据处理,转化成10进制
        display();        //数据处理好之后显示出来

 

   time0[0]=year;
   time0[1]=week;
   time0[2]=mon;
   time0[3]=day;
   time0[4]=hour;
   time0[5]=min;
   time0[6]=sec; //每改变一秒,都将它写入time0数组中
   
    at24c02_write_add(1,time0[0]);
    at24c02_write_add(2,time0[1]);
    at24c02_write_add(3,time0[2]);
    at24c02_write_add(4,time0[3]);
    at24c02_write_add(5,time0[4]);
    at24c02_write_add(6,time0[5]);
    at24c02_write_add(7,time0[6]);//并将改变好的值写入AT24C02中
   }
   /************一下判断是否到闹钟时间**************/ 
   if((hour==alarmhour)&&(min==alarmmin))
   {
   // beep=0;
   led=0;
   }
   else
   {
    led=1;
   }
  }
}
//我这样写好后,液晶显示的是乱码,要是我把set_ds1302(); 写到数组前面的话也不行,刚开始总会读取time0[ ]里面的数 怎么办呢?该怎么整好呢 ? 谁有高招帮帮忙

[ 本帖最后由 Learner_new 于 2012-2-8 13:21 编辑 ]
此帖出自51单片机论坛
 
 
 

回复

535

帖子

0

TA的资源

五彩晶圆(初级)

7
 

回复 6楼 Learner_new 的帖子

对不起这个程序看起来累死了。。。。
此帖出自51单片机论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(高级)

8
 

回复 7楼 小小白 的帖子

刚刚在编辑  呵呵 现在好了
此帖出自51单片机论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(高级)

9
 

回复 板凳 孤獨の快樂 的帖子

有的,就是我那个set_ds1302()函数  刚开始会显示一个初试时间
此帖出自51单片机论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(高级)

10
 

回复 沙发 常见泽1 的帖子

哦 ,那就好,能帮我稍微看看我的问题吗?麻烦了
此帖出自51单片机论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(高级)

11
 

回复 4楼 leekuip 的帖子

有的,但是读出来是乱码了,以上有我的函数,有空的话麻烦帮忙看看哦
此帖出自51单片机论坛
 
 
 

回复

315

帖子

0

TA的资源

五彩晶圆(初级)

12
 

原帖由 Learner_new 于 2012-2-8 13:25 发表 有的,就是我那个set_ds1302()函数 刚开始会显示一个初试时间

set_ds1302()是把timer0的值设置进去?

瞧瞧这个函数的代码

[ 本帖最后由 孤獨の快樂 于 2012-2-8 14:58 编辑 ]
此帖出自51单片机论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(高级)

13
 

回复 12楼 孤獨の快樂 的帖子

time0[7]={12,7,2,5,1,59,45};这个是初始化值  年 星期 月日 时分秒

void set_ds1302(void)
{
          uchar i,a,b;
          for(i=0;i<7;i++) //芯片只能识别16进制,以下把十进制转化为十六进制,注意掌握
          {
                     a=time0%10;//分离个位
                   b=time0/10;//分离十位
                   time0=a+b*16;//此时time0里面是16进制数。
          }

          write_ds1302(0x8e,0x00); //保护位 置0,可以进行写操作
          
          for(i=0;i<7;i++)
          {
                     write_ds1302(write_add,time0);
          }

          write_ds1302(0x8e,0x80);        //加上写保护  
}
此帖出自51单片机论坛
 
 
 

回复

315

帖子

0

TA的资源

五彩晶圆(初级)

14
 

回复 13楼 Learner_new 的帖子

time0[7]={12,7,2,5,1,59,45};

你每次上电都是显示该数组里的值?

此帖出自51单片机论坛
 
 
 

回复

308

帖子

0

TA的资源

纯净的硅(中级)

15
 
每次上电的时候,都运行了这个啊
time0[7]={12,7,2,5,1,59,45};
每次开始都把这个放进24c02中啊,当然每次都一样了 啊
估计你还是没懂24C02怎么用的啊
此帖出自51单片机论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(高级)

16
 

回复 15楼 xiaojiong886 的帖子

我在主函数里面先读取AT24C02里面的东西在初始化,在执行set_ds1302的时候time0[7]里面的值应该已经改掉了吧   我这样做的时候显示的是乱码?不知道为什么
此帖出自51单片机论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(中级)

17
 
24c02读取错误,把24c02函数贴上来看看
此帖出自51单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表