久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 16887|回復: 7
收起左側

DS1302斷電后時間如何保持?

[復制鏈接]
ID:24736 發表于 2010-6-26 19:44 | 顯示全部樓層 |閱讀模式
各位大俠,我在51hei開發板上對DS1302實例進行修改,使其能在LCD1602上顯示,但是關閉開發板電源后時間不能保持!這個芯片不是能夠斷電保持時間嗎,怎樣開啟這個功能啊,我的板子上是有電池的。
回復

使用道具 舉報

ID:1 發表于 2010-6-26 21:00 | 顯示全部樓層

   原因在于你關閉電源后,程序他又重新初始化一次時間為你所設置的值,所以你每次開電源都是顯示的一樣的時間值,你必須要把那一段初始化的代碼刪掉才行.

 

   在開發板的例程中我給出了一個可以斷電保存的,你下載進去就可以發現他斷電后時間依然是在跑的.
源代碼下載地址是:http://www.zg4o1577.cn/bbs/dpj-2810-1.html

[此貼子已經被作者于2010-6-26 21:04:55編輯過]
回復

使用道具 舉報

ID:24736 發表于 2010-6-28 15:27 | 顯示全部樓層
  1. /************************************************
  2. 跳線設置:默認跳線位
  3. 晶振:11.0592M
  4. 硬件結構框架:
  5.             1,四位八段數碼管
  6.             2,MCU  STC89C52
  7. 顯示效果:
  8.             1,數碼管上顯示:時,分
  9.             2,數碼管分位的小數點閃爍表示秒
  10.             3,時間初始值10.59.50秒
  11. 相關知識點:
  12.             1,DS1302實時時鐘的操作
  13. ************************************************/

  14. #include"AT89x52.h"

  15. #define  uchar  unsigned char
  16. #define  unint   unsigned int

  17. sbit T_CLK=P1^0;  /* 實時時鐘的時鐘線引腳*/
  18. sbit T_IO=P1^1;   /* 實時時鐘的數據線*/
  19. sbit T_RST=P2^0;  /* 實時時鐘的復位線引腳*/

  20. sbit DUAN=P2^6;     //74HC573的LE端    LED的段選端
  21. sbit WEI=P2^7;      //74HC573的LE端    LED的位選端

  22. unint  a[6];//={0,0,0,0,0,0};             /*位段的數字*/
  23. uchar code ledk[]=
  24.       {
  25.         0x3f,/*0*/
  26.         0x06,/*1*/
  27.         0x5b,/*2*/
  28.         0x4f,/*3*/
  29.         0x66,/*4*/
  30.         0x6d,/*5*/
  31.         0x7d,/*6*/
  32.         0x07,/*7*/
  33.         0x7f,/*8*/
  34.         0x6f,/*9*/
  35.           0x40,}; /*-*/

  36. unint  ucCurtime[7]={50,59,10,6,4,1,9}; // 秒 分 時 日 月 星期 年
  37. unint temp;
  38. uchar jg1,jg2,temp1;

  39. void delay()               //延時
  40. {
  41.     uchar m,n;
  42.     for(m=10;m>0;m--)
  43.     for(n=100;n>0;n--);
  44. }

  45. void wei_1(uchar wei)       //鎖存器573的數碼管位控制
  46. {
  47.     WEI=1;
  48.     P0=wei;
  49.     WEI=0;
  50. }

  51. void duan_1(uchar duan)       //鎖存器573的數碼管段控制
  52. {
  53.     unint i;
  54.     DUAN=1;
  55.     P0=ledk[duan];
  56.     DUAN=0;
  57.     for(i=200;i>0;i--);
  58. }

  59. void v_RTInputByte(uchar ucDa)        //寫
  60. {
  61.     uchar i;
  62.     ACC=ucDa;
  63.     for(i=8;i>0;i--)
  64.     {
  65.         if((ACC&0x01)==1)  
  66.         //T_IO=ACC0;  /* 相當于匯編中的RRC */
  67.         T_IO=1;
  68.         else T_IO=0;//if((ACC&0x01)==0)
  69.         T_CLK=1;
  70.         T_CLK=0;
  71.         ACC=ACC>>1;
  72.     }
  73. }

  74. uchar uc_RTOutputByte(void)          //讀
  75. {
  76.     uchar i,ACC;
  77.     ACC=0;
  78.     for(i=0;i<8;i++)
  79.     {
  80.         ACC=ACC>>1;   /*相當于匯編中的RRC*/
  81.         if(T_IO==1)
  82.         ACC=ACC|0x80;
  83.         T_CLK=1;
  84.         T_CLK=0;
  85.     }
  86.     return(ACC);
  87. }

  88. void v_W1302(uchar ucAddr,uchar ucDa)     //指定地址寫數據
  89. {
  90.     T_RST=0;
  91.     T_CLK=0;
  92.     T_RST=1;
  93.     v_RTInputByte(ucAddr);  /*地址,命令*/
  94.     v_RTInputByte(ucDa);    /*寫1Byte數據*/
  95.     T_CLK=1;
  96.     T_RST=0;
  97. }

  98. uchar uc_R1302(uchar ucAddr)     //指定地址讀數據
  99. {
  100.     unsigned char ucDa,k;  //BCD轉換成16進制
  101.     k=0x00;
  102.     T_RST=0;
  103.     T_CLK=0;
  104.     T_RST=1;
  105.     v_RTInputByte(ucAddr);  /*地址,命令*/
  106.     ucDa=uc_RTOutputByte(); /*讀取1Byte數據*/
  107.     T_CLK=1;
  108.     T_RST=0;
  109.     k=ucDa/16;
  110.     ucDa=ucDa%16;
  111.     ucDa=ucDa+k*10;
  112.     return(ucDa);
  113. }

  114. void v_Set1302()//uchar *pSecDa)    設置初始時間值
  115. {
  116.     uchar i,j;
  117.     uchar ucAddr=0x80;         //秒寫地址
  118.     v_W1302(0x8e,0x00); /* 控制命令,WP=0,寫操作?*/
  119.     for(i=0;i<7;i++)       //連續寫入7個時間
  120.     {
  121.         j=ucCurtime[i];       //代入初始時間
  122.         v_W1302(ucAddr,j); /* 秒 分 時 日 月 星期 年 */
  123.         ucAddr +=2;         //地址+2
  124.     }
  125.     v_W1302(0x8e,0x80); /* 控制命令,WP=1,寫保護?*/
  126. }

  127. void v_Get1302()         //記錄時間
  128. {
  129.     uchar i;
  130.     uchar ucAddr=0x81;     //秒讀地址
  131.     for (i=0;i<7;i++)       //連續讀數據
  132.     {
  133.         ucCurtime[i]=uc_R1302(ucAddr);/*格式為: 秒 分 時 日 月 星期 年 */
  134.         ucAddr +=2;
  135.     }
  136. }

  137. void  t2_10()         //數碼管段數字顯示內容
  138. {
  139.     unint k;
  140.     a[5]=temp1/10;
  141.     a[4]=temp1%10;
  142.     a[3]=temp/1000;
  143.     k=temp%1000;
  144.     a[2]=k/100;
  145.     k=k%100;
  146.     a[1]=k/10;
  147.     a[0]=k%10;
  148. }

  149. void display2()         //顯示
  150. {
  151.     t2_10();
  152.     wei_1(0x7f);    /*秒*/
  153.     duan_1(a[0]);
  154.     wei_1(0xbf);
  155.     duan_1(a[1]);
  156.     wei_1(0xdf);    /*-*/
  157.     duan_1(10);
  158.     wei_1(0xef);   /*分*/
  159.     duan_1(a[2]);
  160.     wei_1(0xf7);
  161.     duan_1(a[3]);
  162.     wei_1(0xfb);    /*-*/
  163.     duan_1(10);
  164.     wei_1(0xfd);   /*時*/
  165.     duan_1(a[4]);
  166.     wei_1(0xfe);
  167.     duan_1(a[5]);
  168.     wei_1(0xff);   /*滅*/
  169. }

  170. void main2(void)
  171. {
  172.     v_Get1302();                              //記錄時間
  173.     temp1=ucCurtime[2];                       //時
  174.     temp=ucCurtime[1]*100+ucCurtime[0];       //分+秒
  175.     display2();                               //顯示
  176. }

  177. void main()
  178. {
  179.     unint i,k;
  180.     for(i=0;i<7;i++)       //將10進制轉換成16進制
  181.     {
  182.         k=ucCurtime[i]/10;
  183.         ucCurtime[i]=ucCurtime[i]%10;
  184.         ucCurtime[i]=ucCurtime[i]+16*k;
  185.     }
  186.     v_Set1302();           //時間初值
  187.     while(1)main2();
  188. }

復制代碼
回復

使用道具 舉報

ID:1 發表于 2010-6-29 02:54 | 顯示全部樓層

倒數第2行,干掉他就行了,不過干掉之前別忘記了裝上電池初始化ds1302的時間

v_Set1302();   //時間初值

回復

使用道具 舉報

ID:92231 發表于 2015-11-6 14:50 來自手機 | 顯示全部樓層
很好的實例,學習中進步
回復

使用道具 舉報

ID:36359 發表于 2020-2-13 20:47 | 顯示全部樓層
借鑒一下 學些學習
回復

使用道具 舉報

ID:950830 發表于 2021-11-1 20:10 來自手機 | 顯示全部樓層
admin 發表于 2010-6-29 02:54
倒數第2行,干掉他就行了,不過干掉之前別忘記了裝上電池初始化ds1302的時間
v_Set1302();  &nb ...

有用,非常感謝
回復

使用道具 舉報

ID:976070 發表于 2021-12-18 23:09 | 顯示全部樓層
留爪,好用。。。。。111
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久99国产精一区二区三区 | 偷牌自拍 | 午夜电影在线播放 | 欧美一级免费看 | 国产成人精品区一区二区不卡 | 北条麻妃av一区二区三区 | 亚洲二区视频 | 综合成人在线 | 久久9视频 | 谁有毛片| 国产高清视频在线 | 在线国产小视频 | www.99热.com | 国产电影一区二区在线观看 | 国产精品一区二 | 在线观看国产视频 | www.激情.com | 日本欧美在线 | 久久一| 99久久精品国产毛片 | 在线观看中文字幕视频 | 超碰精品在线 | 国产综合网址 | 久久香蕉精品视频 | 日韩在线播放一区 | 一级做受毛片免费大片 | 亚洲精品在线免费观看视频 | 久久久久久久久久久久一区二区 | 欧美精品久久久久久 | 久久久久国产 | 日韩一区二区免费视频 | 欧美精品一区二区三区蜜桃视频 | 99爱视频| 国产日韩在线观看一区 | 中文字幕一区二区三区四区 | 亚洲国产成人精品女人久久久 | 欧美成视频 | 国产欧美在线播放 | 国产免费va | 又黄又爽的网站 | 久久久久久免费毛片精品 |