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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機開發板中如何用DS1302實現精準時鐘

[復制鏈接]
跳轉到指定樓層
樓主
ID:548414 發表于 2019-5-27 15:26 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg51.h>
#include<absacc.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit T_CLK=P1^3;
sbit T_IO=P1^4;
sbit T_RST=P1^2;
sbit RS=P1^7;
sbit RW=P1^6;
sbit EN=P1^5;
sbit ACC7=ACC^7;
sbit  ACC0=ACC^0;
uchar datechar[]={"DATA:"};
uchar timechar[]={"TIME:"};
uchar datebuffer[10]={0x32,0x30,0,0,0x2d,0,0,0x2d,0,0};
uchar timebuffer[8]={0,0,0x3a,0,0,0x3a,0,0};
uchar weekbuffer={0x3a};


void writeb(uchar ucda)
{
        uchar i;
        ACC=ucda;
        for(i=8;i>0;i--)
        {
            T_IO=ACC0;
                T_CLK=1;
                T_CLK=0;
                ACC>>1;
                }
}


uchar readb()
{
   uchar i;
   for(i=8;i>0;i--)
   {
      ACC=ACC>>1;
          ACC7=T_IO;T_CLK=1;T_CLK=0;
          }
          return(ACC);
}


void v_w1302(uchar ucaddr,uchar ucda)
{
   T_RST=0;
   T_CLK=0;
   _nop_();
   _nop_();
   T_RST=1;
   _nop_();
   _nop_();
   writeb(ucaddr);
   writeb(ucda);
   T_CLK=1;
   T_RST=0;
   }


uchar uc_r1302(uchar ucaddr)
{
   uchar ucda=0;
   T_RST=0;T_CLK=0;
   T_RST=1;
   writeb(ucaddr);
   ucda=readb();
   T_CLK=1;T_RST=0;
   return(ucda);
   }


void fbuzy()
{
   P2=0xff;
   RS=0;
   RW=1;
   EN=1;
   EN=0;
   while((P2&0x80))
   {
     EN=0;
         EN=1;
         }
}


void wc51r(uchar j)
{
   fbuzy();
   EN=0;
   RS=0;
   RW=0;
   EN=1;
   P2=j;
   EN=0;}


void wc51ddr(uchar j)
{
    fbuzy();
        EN=0;
        RS=1;
        RW=0;
        EN=1;
        P2=j;
        EN=0;
        }
       

void init()
{
    wc51r(0x01);
        wc51r(0x38);
        wc51r(0x0c);
        wc51r(0x06);
}


void delay(uint i)
{
    uint y,j;
        for(j=0;j<i;j++){
        for(y=0;y<0xff;y++){;}
        }
}
void main()
{

  uchar i;
  uchar data temp;
  SP=0x50;
  delay(10);
  init();
  wc51r(0x80);
  for(i=0;i<5;i++)
  wc51ddr(datechar[i]);
  wc51r(0xc0);
  for(i=0;i<5;i++)
  wc51ddr(timechar[i]);
  wc51r(0xc0);
  v_w1302(0x8e,0);
  v_w1302(0x8c,0x19);         
  v_w1302(0x8a,0x06);
  v_w1302(0x88,0x05);
  v_w1302(0x86,0x21);
  v_w1302(0x84,0x21);
  v_w1302(0x82,0x00);
  v_w1302(0x80,0x00);
  v_w1302(0x8e,0x00);
  while(1)
  {
     temp=uc_r1302(0x8d);
         datebuffer[2]=0x30+temp/16;
         datebuffer[3]=0x30+temp%16;
       
         
            temp=uc_r1302(0x89);
         datebuffer[5]=0x30+temp/16;
         datebuffer[6]=0x30+temp%16;
            temp=uc_r1302(0x87);
         datebuffer[8]=0x30+temp/16;
         datebuffer[9]=0x30+temp%16;
             temp=uc_r1302(0x85);
           temp=temp&0x7f;
           timebuffer[0]=0x30+temp/16;
           timebuffer[1]=0x30+temp%16;
           temp=uc_r1302(0x83);
          
           timebuffer[3]=0x30+temp/16;
           timebuffer[4]=0x30+temp%16;
       temp=uc_r1302(0x81);
           temp=temp&0x7f;
           timebuffer[6]=0x30+temp/16;
           timebuffer[7]=0x30+temp%16;
           wc51r(0x86);
           for(i=0;i<10;i++)
           wc51ddr(datebuffer[i]);
           wc51r(0xc6);
           for(i=0;i<8;i++)
           wc51ddr(timebuffer[i]);
           wc51r(0x20);         }
哪里出錯了??
       


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

使用道具 舉報

沙發
ID:155507 發表于 2019-5-27 23:53 | 只看該作者
給你改了,對比一下就知道哪里錯了。


  1. #include<reg51.h>
  2. #include<absacc.h>
  3. #include<intrins.h>

  4. #define uchar unsigned char
  5. #define uint unsigned int

  6. sbit T_CLK=P1^3;
  7. sbit T_IO=P1^4;
  8. sbit T_RST=P1^2;
  9. sbit RS=P1^7;
  10. sbit RW=P1^6;
  11. sbit EN=P1^5;
  12. sbit ACC7=ACC^7;
  13. sbit  ACC0=ACC^0;
  14. uchar datechar[]={"DATA:"};
  15. uchar timechar[]={"TIME:"};
  16. uchar datebuffer[10]={0x32,0x30,0,0,0x2d,0,0,0x2d,0,0};
  17. uchar timebuffer[8]={0,0,0x3a,0,0,0x3a,0,0};
  18. uchar weekbuffer={0x3a};


  19. void writeb(uchar ucda)
  20. {
  21.         uchar i;
  22.         ACC=ucda;
  23.         for(i=8;i>0;i--)
  24.         {
  25.                 T_IO=ACC0;
  26.                 T_CLK=1;
  27.                 T_CLK=0;
  28.                 ACC=ACC>>1;  //<--------出錯
  29.         }
  30. }


  31. uchar readb()
  32. {
  33.         uchar i;
  34.         for(i=8;i>0;i--)
  35.         {
  36.                 ACC=ACC>>1;
  37.                 ACC7=T_IO;T_CLK=1;T_CLK=0;
  38.         }
  39.         return(ACC);
  40. }


  41. void v_w1302(uchar ucaddr,uchar ucda)
  42. {
  43.         T_RST=0;
  44.         T_CLK=0;
  45.         _nop_();
  46.         _nop_();
  47.         T_RST=1;
  48.         _nop_();
  49.         _nop_();
  50.         writeb(ucaddr);
  51.         writeb(ucda);
  52.         T_CLK=1;
  53.         T_RST=0;
  54. }


  55. uchar uc_r1302(uchar ucaddr)
  56. {
  57.         uchar ucda=0;
  58.         T_RST=0;T_CLK=0;
  59.         T_RST=1;
  60.         writeb(ucaddr);
  61.         ucda=readb();
  62.         T_CLK=1;T_RST=0;
  63.         return(ucda);
  64. }


  65. void fbuzy()
  66. {
  67.         //P2=0xff;
  68.         RS=0;
  69.         RW=1;
  70.         EN=1;
  71.         EN=0;
  72.         while((P2&0x80))
  73.         {
  74.                 EN=0;
  75.                 EN=1;
  76.         }
  77. }


  78. void wc51r(uchar j)
  79. {
  80.         fbuzy();
  81.         EN=0;
  82.         RS=0;
  83.         RW=0;
  84.         EN=1;
  85.         P2=j;
  86.         EN=0;
  87. }


  88. void wc51ddr(uchar j)
  89. {
  90.         fbuzy();
  91.         EN=0;
  92.         RS=1;
  93.         RW=0;
  94.         EN=1;
  95.         P2=j;
  96.         EN=0;
  97. }


  98. void init()
  99. {
  100.         wc51r(0x01);
  101.         wc51r(0x38);
  102.         wc51r(0x0c);
  103.         wc51r(0x06);
  104. }


  105. void delay(uint i)
  106. {
  107.         uint y,j;
  108.         for(j=0;j<i;j++){
  109.                 for(y=0;y<0xff;y++){;}
  110.         }
  111. }

  112. void main()
  113. {

  114.         uchar i;
  115.         uchar data temp;
  116.         SP=0x50;
  117.         delay(10);
  118.         init();
  119.         wc51r(0x80);
  120.         for(i=0;i<5;i++)
  121.         wc51ddr(datechar[i]);
  122.         wc51r(0xc0);
  123.         for(i=0;i<5;i++)
  124.         wc51ddr(timechar[i]);
  125.         wc51r(0xc0);
  126.         v_w1302(0x8e,0);
  127.         v_w1302(0x8c,0x19);         
  128.         v_w1302(0x8a,0x06);
  129.         v_w1302(0x88,0x05);
  130.         v_w1302(0x86,0x21);
  131.         v_w1302(0x84,0x21);
  132.         v_w1302(0x82,0x00);
  133.         v_w1302(0x80,0x00);
  134.         v_w1302(0x8e,0x00);
  135.         while(1)
  136.         {
  137.                 temp=uc_r1302(0x8d);
  138.                 datebuffer[2]=0x30+temp/16;
  139.                 datebuffer[3]=0x30+temp%16;
  140.                
  141.                
  142.                 temp=uc_r1302(0x89);
  143.                 datebuffer[5]=0x30+temp/16;
  144.                 datebuffer[6]=0x30+temp%16;
  145.                 temp=uc_r1302(0x87);
  146.                 datebuffer[8]=0x30+temp/16;
  147.                 datebuffer[9]=0x30+temp%16;
  148.                 temp=uc_r1302(0x85);
  149.                 temp=temp&0x7f;
  150.                 timebuffer[0]=0x30+temp/16;
  151.                 timebuffer[1]=0x30+temp%16;
  152.                 temp=uc_r1302(0x83);
  153.                
  154.                 timebuffer[3]=0x30+temp/16;
  155.                 timebuffer[4]=0x30+temp%16;
  156.                 temp=uc_r1302(0x81);
  157.                 temp=temp&0x7f;
  158.                 timebuffer[6]=0x30+temp/16;
  159.                 timebuffer[7]=0x30+temp%16;
  160.                 wc51r(0x86);
  161.                 for(i=0;i<10;i++)
  162.                 wc51ddr(datebuffer[i]);
  163.                 wc51r(0xc6);
  164.                 for(i=0;i<8;i++)
  165.                 wc51ddr(timebuffer[i]);
  166.                 //wc51r(0x20);   -----出錯
  167.         }
  168. }
復制代碼
回復

使用道具 舉報

板凳
ID:548414 發表于 2019-5-28 08:57 | 只看該作者
angmall 發表于 2019-5-27 23:53
給你改了,對比一下就知道哪里錯了。

感謝大佬
回復

使用道具 舉報

地板
ID:241273 發表于 2019-5-28 09:55 | 只看該作者
主要看datasheet
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 美女视频三区 | 国产一区二区三区四区三区四 | 午夜影院在线观看 | 亚洲v日韩v综合v精品v | 亚洲成av人片在线观看 | 午夜精品久久久久久久久久久久久 | 精品久久久久久亚洲综合网站 | 亚洲午夜精品 | 拍真实国产伦偷精品 | 精品国产31久久久久久 | 国产精品久久久久久久久久免费看 | 亚洲另类自拍 | 天天操天天天干 | 成人深夜小视频 | 成人免费视频观看视频 | 亚洲精品一区二区 | 在线观看日本高清二区 | 成年人黄色免费视频 | 久久精品一区 | 欧美成人一区二区三区 | 91综合网 | 亚洲三级在线观看 | 久久久91| 成人午夜免费网站 | 日本高清中文字幕 | 999热视频| 日本一区不卡 | 国产一区二 | 成人国产精品免费观看 | 最新日韩av | 久久99精品久久久久久噜噜 | 国产乱码精品1区2区3区 | 国产精品区二区三区日本 | 91xxx在线观看 | 国产在线资源 | 欧美国产亚洲一区二区 | 久久久女女女女999久久 | 欧美a在线 | 久久久精品一区二区三区四季av | 成人深夜福利网站 | 亚洲精品久久久久avwww潮水 |