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

QQ登錄

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

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

DS3231模塊配合stc89c52程序與原理圖

  [復(fù)制鏈接]
ID:212000 發(fā)表于 2017-12-12 16:02 | 顯示全部樓層 |閱讀模式
這一階段一直在學(xué)習(xí)宋雪松老師的書,感覺(jué)寫的很棒,在普中開(kāi)發(fā)板上寫了DS1302的時(shí)鐘(雖然很渣,自帶的時(shí)鐘芯片還有問(wèn)題),心血來(lái)潮買了個(gè)時(shí)鐘模塊DS2321,買來(lái)不會(huì)用賣家提供的是Arduino的程序,源程序網(wǎng)上很多,但總想自己寫,看了半天的DS2321時(shí)序圖恍然大悟——這不是IIC時(shí)序么,趕緊把之前寫的IIC文件拿過(guò)來(lái),寫了個(gè)下載進(jìn)去,時(shí)鐘不動(dòng),檢查了一下是器件地址多加了<<1,改完走的一溜一溜的,程序名字是DS1302,因?yàn)槭菑?302改過(guò)來(lái)的,名字懶得改,并不是掛羊頭賣狗肉可以放心食用

實(shí)物圖

實(shí)物圖


單片機(jī)源程序如下:
  1. #include <reg52.h>
  2. #include<intrins.h>
  3. typedef unsigned int u16;
  4. typedef unsigned char u8;

  5. struct sTime
  6. {
  7.         u16 year;
  8.         u8 mon;
  9.         u8 day;
  10.         u8 hour;
  11.         u8 min;
  12.         u8 sec;
  13.         u8 week;
  14. };

  15. extern void I2CStar();
  16. extern void I2CStop();
  17. extern bit I2CWrite(u16 dat);
  18. extern u8 I2CReadNAK();
  19. extern u8 I2CReadACK();

  20. void DS1302Read(u8 *buf,u8 addr,u8 len)                        //讀EEPROM中duo字節(jié)
  21. {
  22.         do{
  23.                 I2CStar();
  24.                 if(I2CWrite(0xD0))
  25.                 {
  26.                         break;
  27.                 }
  28.                 I2CStop();
  29.           }while(1);
  30.         I2CWrite(addr);
  31.         I2CStar();
  32.         I2CWrite((0xD0)|0x01);  //尋址,讀操作
  33.         while(len>1)
  34.         {
  35.                 *buf++=I2CReadACK();
  36.                 len--;
  37.         }
  38.         *buf=I2CReadNAK();                   //讀一個(gè)字節(jié)
  39.         I2CStop();
  40. }

  41. void DS1302Write(u8 *buf,u8 addr,u8 len)
  42. {
  43.         while(len>0)
  44.         {       
  45.                 do{
  46.                         I2CStar();
  47.                         if(I2CWrite(0xD0))
  48.                         {
  49.                                 break;
  50.                         }
  51.                         I2CStop();
  52.                   }while(1);

  53.                 I2CWrite(addr);
  54.                 while(len>0)
  55.                 {
  56.                         I2CWrite(*buf++);
  57.                         len--;
  58.                         addr++;
  59.                         if((addr&0x07)==0)
  60.                         {
  61.                                 break;
  62.                         }
  63.                 }
  64.                 I2CStop();
  65.         }
  66. }

  67. void GetRealTime(struct sTime *time)
  68. {
  69.          u8 buf[8];
  70.          
  71.          DS1302Read(buf,0x00,7);

  72.          time->year=buf[6]+0x2000;
  73.          time->mon=buf[5];
  74.          time->day=buf[4];
  75.          time->week=buf[3];
  76.          time->hour=buf[2];
  77.          time->min=buf[1];
  78.          time->sec=buf[0];

  79. }

  80. void SetRealTime(struct sTime *time)
  81. {
  82.          u8 buf[8];

  83.          buf[7]=0;
  84.          buf[6]=time->year;
  85.          buf[5]=time->mon;
  86.          buf[4]=time->day;
  87. ……………………

  88. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
DS3231可校時(shí),1602.zip (327.15 KB, 下載次數(shù): 373)


評(píng)分

參與人數(shù) 2黑幣 +55 收起 理由
A17094430 + 5 贊一個(gè)!
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:48140 發(fā)表于 2018-4-25 13:29 | 顯示全部樓層
下載學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

ID:78901 發(fā)表于 2018-6-7 23:14 | 顯示全部樓層
樓主辛苦了,下載學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

ID:392520 發(fā)表于 2018-9-2 08:40 | 顯示全部樓層
謝謝代碼
回復(fù)

使用道具 舉報(bào)

ID:392520 發(fā)表于 2018-9-2 10:56 | 顯示全部樓層
謝謝代碼
回復(fù)

使用道具 舉報(bào)

ID:393260 發(fā)表于 2018-10-25 11:43 來(lái)自觸屏版 | 顯示全部樓層
辛苦了樓主,剛好用3231自己懶得寫,福利啊
回復(fù)

使用道具 舉報(bào)

ID:428494 發(fā)表于 2018-11-17 23:38 | 顯示全部樓層
謝謝樓主分享。。。。。我以后下載了試一下能不能成功。。。。。。。。。。。
回復(fù)

使用道具 舉報(bào)

ID:428494 發(fā)表于 2018-11-18 19:08 | 顯示全部樓層
樓主,我想問(wèn)問(wèn)那個(gè)附件的代碼哪一段是跟你上面這個(gè)代碼連接在一起的啊。。。。。。。。。還有附件里面的main函數(shù)是什么啊。。。。。。
回復(fù)

使用道具 舉報(bào)

ID:138285 發(fā)表于 2018-11-25 11:43 | 顯示全部樓層
支持原創(chuàng),為何發(fā)不了
回復(fù)

使用道具 舉報(bào)

ID:182535 發(fā)表于 2019-5-13 09:00 | 顯示全部樓層
DS1302   什么玩意  浪費(fèi)積分
回復(fù)

使用道具 舉報(bào)

ID:184096 發(fā)表于 2019-5-20 12:07 | 顯示全部樓層
感謝樓主 哈哈哈哈
回復(fù)

使用道具 舉報(bào)

ID:542749 發(fā)表于 2019-5-20 13:12 | 顯示全部樓層
資料很給力!
回復(fù)

使用道具 舉報(bào)

ID:412994 發(fā)表于 2019-6-1 21:56 | 顯示全部樓層

下載學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

ID:356562 發(fā)表于 2020-1-7 20:59 | 顯示全部樓層
非常好的資源。
回復(fù)

使用道具 舉報(bào)

ID:59151 發(fā)表于 2020-1-23 12:07 | 顯示全部樓層
我也買了一塊3231模塊,但一直沒(méi)空動(dòng)它,趁年假來(lái)弄下,謝謝你分享的資料
回復(fù)

使用道具 舉報(bào)

ID:634587 發(fā)表于 2020-1-30 21:01 | 顯示全部樓層
我也是在用普中的開(kāi)發(fā)板學(xué)習(xí)中,DS3231模塊也買了,正好拿來(lái)學(xué)習(xí)一下,謝謝樓主了。
回復(fù)

使用道具 舉報(bào)

ID:299748 發(fā)表于 2020-1-30 21:47 | 顯示全部樓層
1302和3231是通用的嗎??
回復(fù)

使用道具 舉報(bào)

ID:656304 發(fā)表于 2020-1-31 14:45 | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報(bào)

ID:696160 發(fā)表于 2020-2-21 17:04 | 顯示全部樓層
jonah 發(fā)表于 2020-1-30 21:47
1302和3231是通用的嗎??

得查資料才能確定,但是3231比1302精度高是肯定的
回復(fù)

使用道具 舉報(bào)

ID:138343 發(fā)表于 2020-2-22 17:32 | 顯示全部樓層
疫情在家盤單片機(jī),以前買的模塊看了商家給的是c++的代碼,能在論壇上找到這個(gè)真是太好了,謝謝樓主分享。
回復(fù)

使用道具 舉報(bào)

ID:562099 發(fā)表于 2020-10-6 11:16 | 顯示全部樓層
同樣是普中的,新手多多指教,下載程序用不了。
回復(fù)

使用道具 舉報(bào)

ID:726559 發(fā)表于 2020-11-26 16:27 | 顯示全部樓層
看看~學(xué)習(xí)一下怎么用時(shí)鐘芯片
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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