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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

51單片機(jī)開發(fā)板中如何用DS1302實(shí)現(xiàn)精準(zhǔn)時(shí)鐘

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:548414 發(fā)表于 2019-5-27 15:26 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#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);         }
哪里出錯(cuò)了??
       


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

使用道具 舉報(bào)

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


  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;  //<--------出錯(cuò)
  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);   -----出錯(cuò)
  167.         }
  168. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

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

感謝大佬
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产美女久久久 | 中文字幕黄色大片 | 亚洲精品乱码久久久久v最新版 | 九九九视频在线 | 欧美日韩精品久久久免费观看 | 久久成人精品视频 | 狠狠做深爱婷婷综合一区 | 国产91精品在线 | 国产成人午夜高潮毛片 | 中文字幕在线免费观看 | 欧美成人激情 | 日韩电影一区二区三区 | 黄色欧美视频 | 国产欧美日韩精品一区二区三区 | 久久乐国产精品 | 国产美女在线看 | 国产精品成人一区二区 | 欧美精品中文字幕久久二区 | 国产精品日韩欧美一区二区 | av看片网站 | 秋霞影院一区二区 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 欧美日韩一区二区在线观看 | 国产黄色电影 | 久久精品国产精品青草 | 一区二区三区高清 | 日韩在线| 亚洲高清在线 | 在线一区二区三区 | 紧缚调教一区二区三区视频 | 中文字幕国产视频 | 久久久久久亚洲欧洲 | 一区二区三区亚洲精品国 | 精品美女视频在线观看免费软件 | 特黄视频 | 成人久久久 | 伊人春色成人网 | 日韩欧美一区二区三区四区 | 97人人澡人人爽91综合色 | 色综合99 | 亚洲精品一区二区在线观看 |