找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 9854|回復(fù): 21
打印 上一主題 下一主題
收起左側(cè)

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

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:212000 發(fā)表于 2017-12-12 16:02 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
這一階段一直在學(xué)習(xí)宋雪松老師的書,感覺寫的很棒,在普中開發(fā)板上寫了DS1302的時鐘(雖然很渣,自帶的時鐘芯片還有問題),心血來潮買了個時鐘模塊DS2321,買來不會用賣家提供的是Arduino的程序,源程序網(wǎng)上很多,但總想自己寫,看了半天的DS2321時序圖恍然大悟——這不是IIC時序么,趕緊把之前寫的IIC文件拿過來,寫了個下載進去,時鐘不動,檢查了一下是器件地址多加了<<1,改完走的一溜一溜的,程序名字是DS1302,因為是從1302改過來的,名字懶得改,并不是掛羊頭賣狗肉可以放心食用


單片機源程序如下:
  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();                   //讀一個字節(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. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

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


評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:48140 發(fā)表于 2018-4-25 13:29 | 只看該作者
下載學(xué)習(xí)一下
回復(fù)

使用道具 舉報

板凳
ID:78901 發(fā)表于 2018-6-7 23:14 | 只看該作者
樓主辛苦了,下載學(xué)習(xí)一下
回復(fù)

使用道具 舉報

地板
ID:392520 發(fā)表于 2018-9-2 08:40 | 只看該作者
謝謝代碼
回復(fù)

使用道具 舉報

5#
ID:392520 發(fā)表于 2018-9-2 10:56 | 只看該作者
謝謝代碼
回復(fù)

使用道具 舉報

6#
ID:393260 發(fā)表于 2018-10-25 11:43 來自手機 | 只看該作者
辛苦了樓主,剛好用3231自己懶得寫,福利啊
回復(fù)

使用道具 舉報

7#
ID:428494 發(fā)表于 2018-11-17 23:38 | 只看該作者
謝謝樓主分享。。。。。我以后下載了試一下能不能成功。。。。。。。。。。。
回復(fù)

使用道具 舉報

8#
ID:428494 發(fā)表于 2018-11-18 19:08 | 只看該作者
樓主,我想問問那個附件的代碼哪一段是跟你上面這個代碼連接在一起的啊。。。。。。。。。還有附件里面的main函數(shù)是什么啊。。。。。。
回復(fù)

使用道具 舉報

9#
ID:138285 發(fā)表于 2018-11-25 11:43 | 只看該作者
支持原創(chuàng),為何發(fā)不了
回復(fù)

使用道具 舉報

10#
ID:182535 發(fā)表于 2019-5-13 09:00 | 只看該作者
DS1302   什么玩意  浪費積分
回復(fù)

使用道具 舉報

11#
ID:184096 發(fā)表于 2019-5-20 12:07 | 只看該作者
感謝樓主 哈哈哈哈
回復(fù)

使用道具 舉報

12#
ID:542749 發(fā)表于 2019-5-20 13:12 | 只看該作者
資料很給力!
回復(fù)

使用道具 舉報

13#
ID:412994 發(fā)表于 2019-6-1 21:56 | 只看該作者

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

使用道具 舉報

14#
ID:356562 發(fā)表于 2020-1-7 20:59 | 只看該作者
非常好的資源。
回復(fù)

使用道具 舉報

15#
ID:59151 發(fā)表于 2020-1-23 12:07 | 只看該作者
我也買了一塊3231模塊,但一直沒空動它,趁年假來弄下,謝謝你分享的資料
回復(fù)

使用道具 舉報

16#
ID:634587 發(fā)表于 2020-1-30 21:01 | 只看該作者
我也是在用普中的開發(fā)板學(xué)習(xí)中,DS3231模塊也買了,正好拿來學(xué)習(xí)一下,謝謝樓主了。
回復(fù)

使用道具 舉報

17#
ID:299748 發(fā)表于 2020-1-30 21:47 | 只看該作者
1302和3231是通用的嗎??
回復(fù)

使用道具 舉報

18#
ID:656304 發(fā)表于 2020-1-31 14:45 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報

19#
ID:696160 發(fā)表于 2020-2-21 17:04 | 只看該作者
jonah 發(fā)表于 2020-1-30 21:47
1302和3231是通用的嗎??

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

使用道具 舉報

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

使用道具 舉報

21#
ID:562099 發(fā)表于 2020-10-6 11:16 | 只看該作者
同樣是普中的,新手多多指教,下載程序用不了。
回復(fù)

使用道具 舉報

22#
ID:726559 發(fā)表于 2020-11-26 16:27 | 只看該作者
看看~學(xué)習(xí)一下怎么用時鐘芯片
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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