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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 16989|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

DS1302斷電后時(shí)間如何保持?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:24736 發(fā)表于 2010-6-26 19:44 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
各位大俠,我在51hei開發(fā)板上對DS1302實(shí)例進(jìn)行修改,使其能在LCD1602上顯示,但是關(guān)閉開發(fā)板電源后時(shí)間不能保持!這個(gè)芯片不是能夠斷電保持時(shí)間嗎,怎樣開啟這個(gè)功能啊,我的板子上是有電池的。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2010-6-26 21:00 | 只看該作者

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

 

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

[此貼子已經(jīng)被作者于2010-6-26 21:04:55編輯過]
回復(fù)

使用道具 舉報(bào)

板凳
ID:24736 發(fā)表于 2010-6-28 15:27 | 只看該作者
  1. /************************************************
  2. 跳線設(shè)置:默認(rèn)跳線位
  3. 晶振:11.0592M
  4. 硬件結(jié)構(gòu)框架:
  5.             1,四位八段數(shù)碼管
  6.             2,MCU  STC89C52
  7. 顯示效果:
  8.             1,數(shù)碼管上顯示:時(shí),分
  9.             2,數(shù)碼管分位的小數(shù)點(diǎn)閃爍表示秒
  10.             3,時(shí)間初始值10.59.50秒
  11. 相關(guān)知識點(diǎn):
  12.             1,DS1302實(shí)時(shí)時(shí)鐘的操作
  13. ************************************************/

  14. #include"AT89x52.h"

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

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

  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};             /*位段的數(shù)字*/
  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}; // 秒 分 時(shí) 日 月 星期 年
  37. unint temp;
  38. uchar jg1,jg2,temp1;

  39. void delay()               //延時(shí)
  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的數(shù)碼管位控制
  46. {
  47.     WEI=1;
  48.     P0=wei;
  49.     WEI=0;
  50. }

  51. void duan_1(uchar duan)       //鎖存器573的數(shù)碼管段控制
  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;  /* 相當(dāng)于匯編中的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;   /*相當(dāng)于匯編中的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)     //指定地址寫數(shù)據(jù)
  89. {
  90.     T_RST=0;
  91.     T_CLK=0;
  92.     T_RST=1;
  93.     v_RTInputByte(ucAddr);  /*地址,命令*/
  94.     v_RTInputByte(ucDa);    /*寫1Byte數(shù)據(jù)*/
  95.     T_CLK=1;
  96.     T_RST=0;
  97. }

  98. uchar uc_R1302(uchar ucAddr)     //指定地址讀數(shù)據(jù)
  99. {
  100.     unsigned char ucDa,k;  //BCD轉(zhuǎn)換成16進(jìn)制
  101.     k=0x00;
  102.     T_RST=0;
  103.     T_CLK=0;
  104.     T_RST=1;
  105.     v_RTInputByte(ucAddr);  /*地址,命令*/
  106.     ucDa=uc_RTOutputByte(); /*讀取1Byte數(shù)據(jù)*/
  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)    設(shè)置初始時(shí)間值
  115. {
  116.     uchar i,j;
  117.     uchar ucAddr=0x80;         //秒寫地址
  118.     v_W1302(0x8e,0x00); /* 控制命令,WP=0,寫操作?*/
  119.     for(i=0;i<7;i++)       //連續(xù)寫入7個(gè)時(shí)間
  120.     {
  121.         j=ucCurtime[i];       //代入初始時(shí)間
  122.         v_W1302(ucAddr,j); /* 秒 分 時(shí) 日 月 星期 年 */
  123.         ucAddr +=2;         //地址+2
  124.     }
  125.     v_W1302(0x8e,0x80); /* 控制命令,WP=1,寫保護(hù)?*/
  126. }

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

  137. void  t2_10()         //數(shù)碼管段數(shù)字顯示內(nèi)容
  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);   /*時(shí)*/
  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();                              //記錄時(shí)間
  173.     temp1=ucCurtime[2];                       //時(shí)
  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進(jìn)制轉(zhuǎn)換成16進(jìn)制
  181.     {
  182.         k=ucCurtime[i]/10;
  183.         ucCurtime[i]=ucCurtime[i]%10;
  184.         ucCurtime[i]=ucCurtime[i]+16*k;
  185.     }
  186.     v_Set1302();           //時(shí)間初值
  187.     while(1)main2();
  188. }

復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

地板
ID:1 發(fā)表于 2010-6-29 02:54 | 只看該作者

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

v_Set1302();   //時(shí)間初值

回復(fù)

使用道具 舉報(bào)

5#
ID:92231 發(fā)表于 2015-11-6 14:50 來自手機(jī) | 只看該作者
很好的實(shí)例,學(xué)習(xí)中進(jìn)步
回復(fù)

使用道具 舉報(bào)

6#
ID:36359 發(fā)表于 2020-2-13 20:47 | 只看該作者
借鑒一下 學(xué)些學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

7#
ID:950830 發(fā)表于 2021-11-1 20:10 來自手機(jī) | 只看該作者
admin 發(fā)表于 2010-6-29 02:54
倒數(shù)第2行,干掉他就行了,不過干掉之前別忘記了裝上電池初始化ds1302的時(shí)間
v_Set1302();  &nb ...

有用,非常感謝
回復(fù)

使用道具 舉報(bào)

8#
ID:976070 發(fā)表于 2021-12-18 23:09 | 只看該作者
留爪,好用。。。。。111
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品一区二区视频 | 日本在线播放 | 夜夜爽99久久国产综合精品女不卡 | 欧美黄色录像 | 日本免费视频 | 91视频一88av | 国产激情偷乱视频一区二区三区 | 国产精品1区2区 | 亚洲黄色av | 精品国产乱码久久久久久老虎 | 蜜桃精品视频在线 | 中日字幕大片在线播放 | 国产精品美女久久久 | 精品日韩电影 | 手机看黄av免费网址 | 亚洲国产18 | 亚洲一区在线播放 | 亚洲精品高清视频在线观看 | 欧美一区不卡 | 亚洲色图综合 | 中文字幕国产 | 日韩精品在线视频免费观看 | 亚洲国产精品自拍 | 日本久久精品视频 | 91一区| 一区二区三区四区在线免费观看 | 综合自拍| 日韩欧美三级电影 | 亚洲美女网站 | 亚洲欧美国产精品久久 | 成人av免费在线观看 | 男人天堂网址 | 天天干b | 丁香婷婷在线视频 | 久久久久久综合 | 欧美 中文字幕 | 久久久久久综合 | 成人超碰 | 精品伊人久久 | 成人黄色av网站 | 狠狠操狠狠操 |