欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 13057|回復: 7
打印 上一主題 下一主題
收起左側

驅動DS1302時鐘芯片通過數碼管顯示時間,時間可調

  [復制鏈接]
跳轉到指定樓層
樓主
ID:71259 發表于 2014-12-29 17:57 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. /****************************************************************/
  2. /******名字:DS1302**********************************************/
  3. /******功能:驅動DS1302時鐘芯片通過數碼管顯示時間,時間可調******/
  4. /******作者:WPM*************************************************/
  5. /******修改日期:2010年7月21日***********************************/
  6. /****************************************************************/
  7. /*這是本人在外編寫的第一個程序,目的只有一個,就是方便以后直接調用,
  8. 我要徹底改變我以往編寫程序的風格,為自己這份新工作做準備*/

  9. #include <reg52.h>//頭文件
  10. #include <intrins.h>
  11. #define uchar unsigned char//宏定義
  12. #define uint  unsigned int
  13. sbit DS1302_SCL2=P1^3;  //DS1302_SCL2定義為P1口的第3位腳,連接DS1302SCL和ADC0831SCL腳
  14. sbit DS1302_SDA2=P1^4;  //DS1302_SDA2定義為P1口的第4位腳,連接DS1302SCL和ADC0831SDA腳
  15. sbit DS1302_RST = P1^5;   // DS1302片選腳
  16. sbit DS1302_SPK=P3^4; //定義蜂鳴器的引腳

  17. uchar DS1302_tmpdate[8]={0x00,0x06,0x03,0x18,0x0c,0x07,0x06,0};//秒分時日月星期年
  18. uchar DS1302_tmpdisplay[8]={0x40,0x40,0x40,0x40,0x40,0x40,0x40,0};  //顯示“-”
  19. code uchar write_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c};//寫秒分時日月星期年的地址
  20. code uchar DS1302_Read_RTC_address[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d}; //讀取秒分時日月星期年的地址
  21. code uchar DS1302_table[]=    //共陰數碼管 0-9  '-' '熄滅‘表
  22. {0x3f,0x06,0x5b,0x4f,0x66,0x6d,
  23. 0x7d,0x07,0x7f,0x6f,0x40,0x00};
  24. uchar code DS1302_key_tab[]=
  25. {0xed,0x7e,0x7d,0x7b,
  26. 0xbe,0xbd,0xbb,0xde,
  27. 0xdd,0xdb,0x77,0xb7,
  28. 0xee,0xd7,0xeb,0xe7};
  29. //========================此數組為鍵盤編碼,
  30. //本人采用類式類似電話按鍵的編碼方式,方便以后設計
  31. // 1 2 3 a   0x01 0x02 0x03 0x0a
  32. // 4 5 6 b 對應16進制碼: 0x04 0x05 0x06 0x0b
  33. // 7 8 9 e   0x07 0x08 0x09 0x0e
  34. // * 0 # f   0x0c 0x00 0x0e 0x0f
  35. //打個比方,如果你按下0鍵,P0口讀到數據為0xed
  36. //如果你按下2鍵,P0口讀到數據為0x7d,按下9鍵為0xdb,
  37. //我們將讀到的P0口數據經過查表法就能得到相應的16進制碼
  38. //鍵盤的讀取,我們采用分時掃描

  39. void DS1302_delay();//延時子函數,5個空指令
  40. void DS1302_display(uchar *lp,uchar lc);//數字的顯示函數;lp為指向數組的地址,lc為顯示的個數
  41. void Write_Ds1302_byte(uchar temp);
  42. void Write_Ds1302( uchar address,uchar dat );
  43. uchar Read_Ds1302 ( uchar address );

  44. void DS1302_Read_RTC();//read RTC
  45. void DS1302_Set_RTC();//set RTC

  46. void Ds1302Play(uchar tmp);
  47. void Ds1302Menu();

  48. uchar DS1302_keyold,DS1302_key=0xff,DS1302_keytmp=0;
  49. /***************************************************/
  50. /******名字:main***********************************/
  51. /******功能:通過調用其它子函數,達到對應的功能*****/
  52. /******作者:WPM************************************/
  53. /******修改日期:2010年7月21日**********************/
  54. /***************************************************/
  55. void main()     //入口函數
  56. {
  57.     DS1302_RST=0;
  58.     DS1302_Set_RTC();
  59.     EA=1;   //開啟總中斷
  60.       EX0=1;    //開啟外部中斷 0
  61.       IT0=1;        // 設置成 下降沿觸發方式
  62.     while(1)
  63.      {
  64.          Ds1302Menu();
  65.     }
  66. }
  67. /*************************************************/
  68. /******名字:DS1302_display***********************/
  69. /******功能:八個數碼管顯示的數值*****************/
  70. /******作者:WPM**********************************/
  71. /******修改日期:2010年7月21日********************/
  72. /*************************************************/
  73. void DS1302_display(uchar *lp,uchar lc)//顯示
  74. {
  75.      uchar i;  //定義變量
  76.     P2=0;   //端口2為輸出
  77.     P1=P1&0xF8; //將P1口的前3位輸出0,對應138譯門輸入腳,全0為第一位數碼管
  78.     for(i=0;i<lc;i++) //循環顯示
  79.     {
  80.           P2=DS1302_table[lp[i]]; //查表法得到要顯示數字的數碼段
  81.           DS1302_delay();  //延時
  82.           P2=0;   //清0端口,準備顯示下位
  83.           if(i==7)    //檢測顯示完8位否,完成直接退出,不讓P1口再加1,否則進位影響到第四位數據
  84.                break;
  85.           P1++;  //下一位數碼管
  86.     }
  87. }
  88. /*************************************************/
  89. /******名字:DS1302_delay*************************/
  90. /******功能:起到一個延時的作用,用于掃描數碼管***/
  91. /******作者:WPM**********************************/
  92. /******修改日期:2010年7月21日********************/
  93. /*************************************************/
  94. void DS1302_delay()
  95. {
  96.     uchar i=10;
  97.     while(i)
  98.                i--;
  99. }

  100. /*************************************************/
  101. /******名字:Write_DS1302_Byte********************/
  102. /******功能:向DS1302芯片寫入一個字節的數據********/
  103. /******作者:WPM**********************************/
  104. /******修改日期:2010年7月21日********************/
  105. /************************************************/
  106. void Write_Ds1302_Byte(uchar temp)
  107. {
  108.       uchar i;
  109.       for (i=0;i<8;i++)      //循環8次 寫入數據
  110.        {

  111.         DS1302_SCL2=0;      //給一個上升沿脈沖,即可寫入一個位
  112.             DS1302_SDA2=temp&0x01;      //每次傳輸低字節
  113.             temp>>=1;    //右移一位
  114.             DS1302_SCL2=1;
  115.         }
  116. }  

  117. /*********************************************/
  118. /*********************************************/
  119. /******名字:Write_DS1302*********************/
  120. /******功能:向DS1302芯片寫入數據**************/
  121. /******作者:WPM******************************/
  122. /******修改日期:2010年7月21日****************/
  123. /*********************************************/
  124. void Write_Ds1302( uchar address,uchar dat )   
  125. {
  126.       DS1302_RST=0;
  127.      _nop_();
  128.       DS1302_SCL2=0;
  129.      _nop_();
  130.       DS1302_RST=1;
  131.          _nop_();   //啟動
  132.       Write_Ds1302_Byte(address); //發送地址
  133.       Write_Ds1302_Byte(dat);  //發送數據
  134.       DS1302_RST=0;    //恢復
  135. }
  136. /***********************************************/
  137. /***********************************************/
  138. /******名字:Read_DS1302************************/
  139. /******功能:讀取DS1302一個字節的數據************/
  140. /******作者:WPM********************************/
  141. /******修改日期:2010年7月21日******************/
  142. /***********************************************/
  143. uchar Read_Ds1302 ( uchar address )
  144. {
  145.       uchar i,temp=0x00;
  146.       DS1302_RST=0;
  147.       _nop_();
  148.         DS1302_SCL2=0;
  149.                  _nop_();
  150.       DS1302_RST=1;
  151.      _nop_();
  152.          Write_Ds1302_Byte(address);
  153.          for (i=0;i<8;i++)   //循環8次 讀取數據
  154.         {
  155.           DS1302_SCL2=1;
  156.                           _nop_();
  157.                           if(DS1302_SDA2)
  158.                                   temp|=0x80;   //每次傳輸低字節
  159.                           DS1302_SCL2=0;
  160.                           temp>>=1;   //右移一位
  161.                 }
  162.                 DS1302_RST=0;
  163.                 _nop_();  
  164.                 DS1302_SCL2=1;
  165.                 DS1302_SDA2=0;

  166.                 return (temp);   //返回
  167. }
  168. /*********************************************/
  169. /*********************************************/
  170. /******名字:Write_DS1302*********************/
  171. /******功能:向DS1302芯片讀取日歷**************/
  172. /******作者:WPM******************************/
  173. /******修改日期:2010年7月21日****************/
  174. /*********************************************/
  175. void DS1302_Read_RTC()  //讀取 日歷
  176. {
  177.      uchar i,*p;
  178.              p=DS1302_Read_RTC_address;  //地址傳遞
  179.              for(i=0;i<7;i++)  //分7次讀取 年月日時分秒星期
  180.              {
  181.                         DS1302_tmpdate[i]=Read_Ds1302(*p);
  182.                         p++;
  183.              }
  184. }
  185. /**********************************************/
  186. /**********************************************/
  187. /******名字:Write_DS1302**********************/
  188. /******功能: 設置DS1302芯片的日歷值************/
  189. /******作者:WPM*******************************/
  190. /******修改日期:2010年7月21日*****************/
  191. /**********************************************/
  192. void DS1302_Set_RTC()  //設定 日歷
  193. {
  194.             uchar i,*p,tmp; //DS1302的數據是以十進制存儲的,要轉化為十六進制顯示
  195.             for(i=0;i<7;i++)
  196.             {
  197.                     tmp=DS1302_tmpdate[i]/10;
  198.                     DS1302_tmpdate[i]=DS1302_tmpdate[i]%10;
  199.                     DS1302_tmpdate[i]=DS1302_tmpdate[i]+tmp*16;
  200.             }
  201.            Write_Ds1302(0x8E,0X00);//允許寫入數據

  202.            p=write_rtc_address; //傳地址
  203.            for(i=0;i<7;i++)  //7次寫入 年月日時分秒星期
  204.            {
  205.                    Write_Ds1302(*p,DS1302_tmpdate[i]);
  206.                    p++;
  207.            }
  208.            Write_Ds1302(0x8E,0x80);//禁止寫入數據
  209. }

  210. /**********************************************/
  211. /**********************************************/
  212. /******名字:ReadKey***************************/
  213. /******功能:鍵盤掃描子函數,讀取按下的按鍵值***/
  214. /******作者:WPM*******************************/
  215. /******修改日期:2010年7月21日*****************/  
  216. /**********************************************/
  217. void ReadKey() //鍵盤掃描函數,讀取鍵盤值
  218. {
  219.     uchar i,j,key;
  220.      j=0xfe;//賦初值
  221.     key=0xff;//判斷按鍵是否按下的標志
  222.     for (i=0;i<4;i++) //掃描鍵盤,判斷是否有按鍵按下
  223.     {
  224.           P0=j; //把J的值賦給P0口,用于下面判斷是否有按鍵按下
  225.           if ((P0&0xf0)!=0xf0) //判斷是否有按鍵按下
  226.          {
  227.                key=P0;  //有按鍵按下,讀取P0口的值,賦給KRY,保存該值
  228.                break; //跳出,結束
  229.          }
  230.          j=_crol_(j,1); //左循環
  231.                 }
  232.      if (key==0xff) //沒有按鍵,有抖動等
  233.     {
  234.           DS1302_keytmp=0xff;
  235.           P0=0xf0;
  236.           EX0=1; //打開外部中斷
  237.           DS1302_SPK=1; //關閉蜂鳴器
  238.           return; //返回
  239.     }
  240.     DS1302_SPK=0; //驅動蜂鳴器
  241.     if(DS1302_keytmp==key) //按鍵按下了,但沒有松手
  242.     {
  243.           TH0=0X2E;//給定時器賦初值   
  244.           TL0=0;
  245.           TR0=1;//啟動定時器  
  246.              return;  //返回
  247.     }
  248.     TH0=0X2E;//給定時器賦初值   
  249.     TL0=0;
  250.     TR0=1;//啟動定時器     
  251.     DS1302_keytmp=key;//把讀取的值賦給l-keytmp
  252.     for(i=0;i<17;i++)
  253.     {
  254.           if (key==DS1302_key_tab[i]) //通過對比代碼,判斷是那個按鍵按下
  255.           {
  256.                DS1302_key=i;//保存對比好的值,用于顯示??
  257.                break; //跳出,結束
  258.          }
  259.      }   
  260. }
  261. /*****************************************************************/
  262. /***************************************************** ***********/
  263. /******名字:Key_Scan*********************************************/
  264. /******功能:外部中斷0,用于有按鍵按下時,掃描鍵盤,讀取鍵盤值*****/
  265. /******作者:WPM**************************************************/
  266. /******修改日期:2010年7月21日************************************/
  267. /*****************************************************************/
  268. void Key_Scan()   interrupt 0    //外部中斷 0  的優先級最高        
  269. {
  270.     TMOD&=0XF1;//定時器工作在方式1,既TMOD=0x01
  271.     TH0=0X00;//定時時間為:(65536-65536)/晶振頻率/12
  272.     TL0=0X00;
  273.     ET0=1;  //開分控
  274.     TR0=1; //啟動定時器
  275. }
  276. /*****************************************************************/
  277. /***************************************************** ***********/
  278. /******名字:Timer0_isr*******************************************/
  279. /******功能:定時器0,用于每隔一段時間掃描鍵盤*********************/
  280. /******作者:WPM**************************************************/
  281. /******修改日期:2010年7月21日************************************/
  282. /*****************************************************************/
  283. void Timer0_isr() interrupt 1  //定時器0中斷
  284. {
  285.     TR0=0;    //關閉定時器
  286.     ReadKey();  //讀取鍵盤掃描值
  287. }

  288. /**************************************************/
  289. /**************************************************/
  290. /******名字:DS1302Menu****************************/
  291. /******功能:修改時鐘的時間*************************/
  292. /******作者:WPM***********************************/
  293. /******修改日期:2010年7月21日*********************/
  294. /**************************************************/
  295. void Ds1302Menu()//時鐘讀取,可修改,按A、B鍵更改顯示時間還是日
  296.       //期,再按#鍵可對其做修改
  297. {
  298.   uchar i,tmp,temp,oldtimer=0;
  299.   tmp=0;
  300.     while (1)
  301.   {
  302.      DS1302_Read_RTC();
  303.     if(tmp==0) //用于區別是否按下了B鍵
  304.      {
  305.        DS1302_tmpdisplay[0]=DS1302_tmpdate[2]/16; //十六進制轉化為十進制顯示,顯示時
  306.        DS1302_tmpdisplay[1]=DS1302_tmpdate[2]&0x0f; //顯示個位
  307.        DS1302_tmpdisplay[2]=10; //顯示‘-’
  308.        DS1302_tmpdisplay[3]=DS1302_tmpdate[1]/16; //顯示分的十位
  309.        DS1302_tmpdisplay[4]=DS1302_tmpdate[1]&0x0f;//顯示分的個位
  310.        DS1302_tmpdisplay[5]=10;  //顯示‘-’
  311.        DS1302_tmpdisplay[6]=DS1302_tmpdate[0]/16; //顯示秒的十位
  312.        DS1302_tmpdisplay[7]=DS1302_tmpdate[0]&0x0f;//顯示秒的個位
  313.              }
  314.      if((tmp==0)&&(oldtimer!=DS1302_tmpdate[0])) //tmp作為標志位,與秒作比較,
  315.            //判斷數據是否修改,修改時分秒
  316.      {
  317.         oldtimer=DS1302_tmpdate[0]; //暫存該值,用于比較
  318.         DS1302_tmpdisplay[0]=DS1302_tmpdate[2]/16; //十六進制轉化為十進制顯示,顯示時
  319.         DS1302_tmpdisplay[1]=DS1302_tmpdate[2]&0x0f; //顯示個位
  320.         DS1302_tmpdisplay[2]=10; //顯示‘-’
  321.         DS1302_tmpdisplay[3]=DS1302_tmpdate[1]/16; //顯示分的十位
  322.         DS1302_tmpdisplay[4]=DS1302_tmpdate[1]&0x0f;//顯示分的個位
  323.         DS1302_tmpdisplay[5]=10;  //顯示‘-’
  324.         DS1302_tmpdisplay[6]=DS1302_tmpdate[0]/16; //顯示秒的十位
  325.         DS1302_tmpdisplay[7]=DS1302_tmpdate[0]&0x0f;//顯示秒的個位
  326.      }            
  327.     if((tmp==1)&&(oldtimer!=DS1302_tmpdate[3]))//tmp作為標志位,與日作比較
  328.            //判斷數據是否修改,修改年月日
  329.      {
  330.        oldtimer=DS1302_tmpdate[3];//暫存該值,用于比較
  331.        DS1302_tmpdisplay[0]=DS1302_tmpdate[6]/16; //改為十進制顯示,顯示年的十位
  332.        DS1302_tmpdisplay[1]=DS1302_tmpdate[6]&0x0f;//顯示年的個位,
  333.        DS1302_tmpdisplay[2]=10; //顯示‘-’
  334.        DS1302_tmpdisplay[3]=DS1302_tmpdate[4]/16;//顯示月的十位
  335.           DS1302_tmpdisplay[4]=DS1302_tmpdate[4]&0x0f;//顯示月的個位
  336.        DS1302_tmpdisplay[5]=10; //顯示‘-’
  337.        DS1302_tmpdisplay[6]=DS1302_tmpdate[3]/16;  //顯示日的十位
  338.        DS1302_tmpdisplay[7]=DS1302_tmpdate[3]&0x0f; //顯示日的個位
  339.     }
  340.      DS1302_display(DS1302_tmpdisplay,8);//顯示時分秒,年月日
  341.      DS1302_display(DS1302_tmpdisplay,8); //增加亮度
  342.      DS1302_display(DS1302_tmpdisplay,8);
  343.      DS1302_display(DS1302_tmpdisplay,8);
  344.       ReadKey(); //讀取按下的按鍵值
  345.      if(DS1302_key==0x0c)
  346.      {
  347.             DS1302_key=0xff;//退出鍵按下了,結果退出
  348.             break;
  349.       }
  350.      if(DS1302_key==0x0e)  //確定鍵按下了
  351.         {
  352.          DS1302_key=0xff;   
  353.             for(i=0;i<7;i++) //保存當前的時間,用于作比較,判斷是否修改了時間
  354.             {
  355.               temp=DS1302_tmpdate[i]/16;  //數據處理,在前程序講過,時鐘I
  356.        //C它是以十進制對數據存儲,所以要將它轉為十進制
  357.              DS1302_tmpdate[i]=DS1302_tmpdate[i]%16;
  358.              DS1302_tmpdate[i]=temp*10+DS1302_tmpdate[i];
  359.           }
  360.            while(1)
  361.            {  
  362.              if(DS1302_key==0x0c)
  363.                {
  364.                      DS1302_key=0xff;
  365.              break;
  366.             }
  367.            if(DS1302_key==0x0e)
  368.            {   //按#鍵對修改的數據進行寫入時鐘IC1302
  369.                    DS1302_key=0xff;
  370.                    DS1302_Set_RTC();
  371.                    break;
  372.             }
  373.             switch(DS1302_key)
  374.             {
  375.                  case 0x01:    //按1鍵對小時,或年的加1
  376.                                   DS1302_key=0xff;
  377.                                if(tmp==0)
  378.                                {
  379.                                      if(DS1302_tmpdate[2]<23)
  380.                                                                   DS1302_tmpdate[2]++;
  381.                                              }
  382.                                              else
  383.                                              {
  384.                                                      if(DS1302_tmpdate[6]<99)
  385.                                                                  DS1302_tmpdate[6]++;
  386.                                              }
  387.                                              break;
  388.                                case 0x02:     //按2鍵對分鐘,或月的加1
  389.                                             DS1302_key=0xff;
  390.                                             if(tmp==0)
  391.                                             {
  392.                                                     if(DS1302_tmpdate[1]<59) //對分進行修改,判斷分是否小于59
  393.                                                             DS1302_tmpdate[1]++; //是,則加1
  394.                                             }
  395.                                             else    //其他情況對月進行修改
  396.                                             {
  397.                                                  if(DS1302_tmpdate[4]<12)
  398.                                                           DS1302_tmpdate[4]++;
  399.                                             }
  400.                                             break;
  401.                                case 0x03:     //按3鍵對秒,或日的加1
  402.                                             DS1302_key=0xff;
  403.                                             if(tmp==0)
  404.                                             {
  405.                                                       if(DS1302_tmpdate[0]<59)
  406.                                                                 DS1302_tmpdate[0]++;
  407.                                             }
  408.                                            else
  409.                                            {
  410.                                                      if(DS1302_tmpdate[3]<31)
  411.                                                               DS1302_tmpdate[3]++;
  412.                                             }
  413.                                             break;
  414.                                 case 0x04:     //按4鍵對小時,或年的減1
  415.                                             DS1302_key=0xff;
  416.                                             if(tmp==0)
  417.                                             {
  418.                                                    if(DS1302_tmpdate[2]>0)
  419.                                                                DS1302_tmpdate[2]--;
  420.                                             }
  421.                                             else
  422.                                             {
  423.                                                    if(DS1302_tmpdate[6]>0)
  424.                                                                 DS1302_tmpdate[6]--;
  425.                                             }
  426.                                             break;
  427.                                 case 0x05:    //按5鍵對分鐘,或月的減1
  428.                                             DS1302_key=0xff;
  429.                                             if(tmp==0)

  430.                                             {
  431.                                                    if(DS1302_tmpdate[1]>0)
  432.                                                           DS1302_tmpdate[1]--;
  433.                                             }
  434.                                             else
  435.                                             {
  436.                                                    if(DS1302_tmpdate[4]>0)
  437.                                                             DS1302_tmpdate[4]--;
  438.                                             }
  439.                                             break;
  440.                                 case 0x06:     //按6鍵對秒,或日的減1
  441.                                              DS1302_key=0xff;
  442.                                              if(tmp==0)
  443.                                             {
  444.                                                     if(DS1302_tmpdate[0]>0)
  445.                                                                DS1302_tmpdate[0]--;
  446.                                             }
  447.                                             else
  448.                                             {
  449.                                                    if(DS1302_tmpdate[3]>0)
  450.                                                            DS1302_tmpdate[3]--;
  451.                                            }
  452.                                            break;
  453.                                 }
  454.                               Ds1302Play(tmp);
  455.                      }
  456.            }
  457.           if(DS1302_key==0x0a)  //判斷是否按鍵A按下
  458.           {
  459.                   DS1302_key=0xff;
  460.                   tmp=0; //置標志位
  461.           }
  462.           if(DS1302_key==0x0b)
  463.           {
  464.                  DS1302_key=0xff;
  465.                  tmp=1;
  466.           }
  467.     }
  468. }
  469. /**************************************************/
  470. /**************************************************/
  471. /******名字:DS1302Play****************************/
  472. /******功能:用于判斷顯示時分秒還是年月日***********/
  473. /******作者:WPM***********************************/
  474. /******修改日期:2010年7月21日*********************/
  475. /**************************************************/
  476. void Ds1302Play(uchar tmp)
  477. {

  478.      if(tmp==0) //用于顯示時分秒
  479.      {
  480.            DS1302_tmpdisplay[0]=DS1302_tmpdate[2]/10;
  481.            DS1302_tmpdisplay[1]=DS1302_tmpdate[2]%10;
  482.            DS1302_tmpdisplay[2]=10;
  483.            DS1302_tmpdisplay[3]=DS1302_tmpdate[1]/10;
  484.            DS1302_tmpdisplay[4]=DS1302_tmpdate[1]%10;
  485.            DS1302_tmpdisplay[5]=10;
  486.            DS1302_tmpdisplay[6]=DS1302_tmpdate[0]/10;
  487.            DS1302_tmpdisplay[7]=DS1302_tmpdate[0]%10;
  488.     }
  489.     else  //其他情況顯示日月年
  490.     {
  491.           DS1302_tmpdisplay[0]=DS1302_tmpdate[6]/10;
  492.           DS1302_tmpdisplay[1]=DS1302_tmpdate[6]%10;
  493.          DS1302_tmpdisplay[2]=10;
  494.           DS1302_tmpdisplay[3]=DS1302_tmpdate[4]/10;
  495.           DS1302_tmpdisplay[4]=DS1302_tmpdate[4]%10;
  496.           DS1302_tmpdisplay[5]=10;
  497.           DS1302_tmpdisplay[6]=DS1302_tmpdate[3]/10;
  498.           DS1302_tmpdisplay[7]=DS1302_tmpdate[3]%10;
  499.     }
  500.     DS1302_display(DS1302_tmpdisplay,8);
  501. }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂2 踩
回復

使用道具 舉報

沙發
ID:187675 發表于 2017-5-15 20:45 | 只看該作者
樓主有電路圖提供?

謝謝分享!
回復

使用道具 舉報

板凳
ID:420208 發表于 2018-11-3 21:06 | 只看該作者

謝謝樓主分享,學習中
回復

使用道具 舉報

地板
ID:474005 發表于 2019-2-17 18:08 | 只看該作者
樓主我想請教下,我用DS1302的burst模式,我一開始初始DS1302,23,55,55,然后用burst模式去讀,我是用數碼管顯示,顯示一開始會顯示23,55,55,然后立馬變成00,00,00,時鐘顯示的那兩個數碼管會不斷跳動,
回復

使用道具 舉報

5#
ID:584538 發表于 2019-7-25 03:01 | 只看該作者
根本運行不了啊
回復

使用道具 舉報

6#
ID:584538 發表于 2019-7-25 03:01 | 只看該作者
蜂鳴器一直在響
回復

使用道具 舉報

7#
ID:660436 發表于 2019-12-10 11:32 | 只看該作者
有沒有接線圖呀
回復

使用道具 舉報

8#
ID:660548 發表于 2019-12-10 14:50 | 只看該作者
很不錯,謝謝分享。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表