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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1513|回復(fù): 0
收起左側(cè)

求大神指點(diǎn),幫忙看下那里出錯(cuò)了,為什么1302讀回的數(shù)據(jù)不對(duì)

[復(fù)制鏈接]
ID:723845 發(fā)表于 2020-5-11 20:26 | 顯示全部樓層 |閱讀模式
/*******************DS1302功能區(qū)****************/
void DS1302_write_byte(uchar byte)                                          //DS1302寫(xiě)入字節(jié)
{          uchar i;
          for(i=0;i<8;i++)
          {         DS1302_SCLK = 0;
                 DS1302_DATA=byte&0x01;                                                      //按位與
                 DS1302_SCLK = 1;
                 delay_us(2);
                 byte>>=1;                                                                              //右移1位
          }
}

void DS1302_write_data(uchar command,uchar DATA)                  //DS1302寫(xiě)入指令和數(shù)據(jù)
{          DS1302_REST = 0;
      DS1302_SCLK = 0;
          delay_us(2);
          DS1302_REST = 1;
          DS1302_write_byte(command);
          DS1302_write_byte(DATA);
          DS1302_REST = 0;
}

uchar DS1302_read(uchar command)                                                 //DS1302讀數(shù)據(jù)
{          uchar i,dat;
      DS1302_REST = 0;
      DS1302_SCLK = 0;
          delay_us(2);
          DS1302_REST = 1;
          DS1302_write_byte(command);

          for(i=0;i<8;i++)
          {         dat>>=1;                                                                                 //右移必需放在最前面,否則會(huì)在數(shù)據(jù)接收完成后多移一次
             if(DS1302_DATA==1)         dat|=0x80;
                 DS1302_SCLK = 0;                                          
                 delay_us(2);
                 DS1302_SCLK = 1;
                 delay_us(2);
          }
          DS1302_REST = 0;
          DS1302_SCLK = 1;
          return dat;
}                                            

void DS1302_read_second(void)                                                        //讀回的數(shù)據(jù)轉(zhuǎn)10進(jìn)制
{         uchar temp;
         temp=DS1302_read(0x81);
         second=(temp/16*10)+(temp%16);                                 //second 定義的全局變量
}

void LCD1602_time_display(void)                                                          //開(kāi)啟計(jì)時(shí)器后時(shí)間顯示
{            
          LCD1602_write_word(13,1,shuzi[second/10]);                  //更新秒
          LCD1602_write_word(14,1,shuzi[second%10]);
          LCD1602_write_word(10,1,shuzi[minute/10]);                  //更新分鐘
          LCD1602_write_word(11,1,shuzi[minute%10]);
          LCD1602_write_word(7,1,shuzi[hour/10]);                          //更新小時(shí)
          LCD1602_write_word(8,1,shuzi[hour%10]);                  
}

void main(void)
{//         DS1302_stop_work();
     LCD1602_init();
     delay_ms(5);
         LCD1602_kaiji_display();

         DS1302_read_second();                                             //讀秒

         while(1)
         {        
            LCD1602_time_display();                                      //顯示回讀的時(shí)間
                LCD1602_date_display();
                Key_manual();         
         }
}





1302.png
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表