標(biāo)題: DS3231模塊配合stc89c52程序與原理圖 [打印本頁]

作者: 425761    時間: 2017-12-12 16:02
標(biāo)題: DS3231模塊配合stc89c52程序與原理圖
這一階段一直在學(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)



作者: zgs660429    時間: 2018-4-25 13:29
下載學(xué)習(xí)一下
作者: fsj5098    時間: 2018-6-7 23:14
樓主辛苦了,下載學(xué)習(xí)一下
作者: shahuoa    時間: 2018-9-2 08:40
謝謝代碼
作者: shahuoa    時間: 2018-9-2 10:56
謝謝代碼
作者: 走丟的中二病    時間: 2018-10-25 11:43
辛苦了樓主,剛好用3231自己懶得寫,福利啊
作者: heziyi    時間: 2018-11-17 23:38
謝謝樓主分享。。。。。我以后下載了試一下能不能成功。。。。。。。。。。。
作者: heziyi    時間: 2018-11-18 19:08
樓主,我想問問那個附件的代碼哪一段是跟你上面這個代碼連接在一起的啊。。。。。。。。。還有附件里面的main函數(shù)是什么啊。。。。。。
作者: rzming    時間: 2018-11-25 11:43
支持原創(chuàng),為何發(fā)不了
作者: vistayi    時間: 2019-5-13 09:00
DS1302   什么玩意  浪費積分
作者: big土坑    時間: 2019-5-20 12:07
感謝樓主 哈哈哈哈
作者: X-TAO    時間: 2019-5-20 13:12
資料很給力!

作者: YCM1300741359    時間: 2019-6-1 21:56

下載學(xué)習(xí)一下
作者: wblqx    時間: 2020-1-7 20:59
非常好的資源。
作者: wgh008    時間: 2020-1-23 12:07
我也買了一塊3231模塊,但一直沒空動它,趁年假來弄下,謝謝你分享的資料
作者: bboroo    時間: 2020-1-30 21:01
我也是在用普中的開發(fā)板學(xué)習(xí)中,DS3231模塊也買了,正好拿來學(xué)習(xí)一下,謝謝樓主了。
作者: jonah    時間: 2020-1-30 21:47
1302和3231是通用的嗎??
作者: 匿名網(wǎng)友喲    時間: 2020-1-31 14:45
感謝分享
作者: 雪曉清笳2    時間: 2020-2-21 17:04
jonah 發(fā)表于 2020-1-30 21:47
1302和3231是通用的嗎??

得查資料才能確定,但是3231比1302精度高是肯定的
作者: whsbk    時間: 2020-2-22 17:32
疫情在家盤單片機,以前買的模塊看了商家給的是c++的代碼,能在論壇上找到這個真是太好了,謝謝樓主分享。
作者: 周工58    時間: 2020-10-6 11:16
同樣是普中的,新手多多指教,下載程序用不了。
作者: longzl    時間: 2020-11-26 16:27
看看~學(xué)習(xí)一下怎么用時鐘芯片




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1