日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DS1302时钟模块简单介绍

發布時間:2023/12/10 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DS1302时钟模块简单介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2018/4/30

1.功能

1.可以計算2100年之前的秒,分,時,日,日期,星期,月,年的能力

2.在其內部有著31個字節的靜態RAM,提供用戶使用

3.采用串行數據傳送,采用SPI三線接口

4.工作電壓(2.0v--5.5v),工作溫度:-40c--85c

5.可以采用雙電源進行供應

2.SPI 總線

SPI(Secial Peripheral Interface) ?串行外圍接口

信號類型:

1.MOSI:主機輸出,從機輸入

2.MISO:主機輸入,從機輸出

3.SCLK:時鐘信號

4./cs(RST):復位功能



2.DS1302引腳設置



1.特點:

有著兩個VCC(內部電源和外部電源),SLCK,IO,RST模擬了SPI總線

x1,x2連接的是兩個32.768KHZ晶振


3.DS1302片內RAM介紹(重點)

1.在DS1302中有著一個控制寄存器,12個日歷,時鐘寄存器和31個可讀寫RAM


注:D7位固定為1,D6位選擇RAM/CK(選擇是片內RAM還是日歷,時鐘寄存器),D5到D1為用于讀寫的時間寄存器或者片內RAM.

對于時鐘寄存器的具體介紹圖解:



注:時鐘均由BCD碼進行寫入,從低位寫入高位

4.片內RAM

1.操作方式:單字節方式和多字節方式

2.奇數為讀操作,偶數為寫操作

5.相關代碼詳解(寫入是以兩位為一個單元,控制命令和數據,讀取以一位為一個單元,數據)

0.時序圖分析



1.寫操作


void Ds1302Write(uchar addr, uchar dat)//寫入控制位和數據位 {uchar n;RST = 0;_nop_();//延時一個機器周期SCLK = 0;//先將SCLK置低電平。//低電平進行寫入_nop_();RST = 1; //然后將RST(CE)置高電平。_nop_();for (n=0; n<8; n++)//開始傳送八位地址命令{DSIO=addr&0x01;addr>>=1;//數據右移SCLK=1;//數據上升沿 開始讀取數據_nop_();SCLK=0;//數據在下降沿 開始寫入數據_nop_();}for (n=0; n<8; n++)//寫入8位數據{DSIO = dat & 0x01;//從最低位開始傳送dat >>= 1;SCLK = 1;//數據在上升沿時,DS1302讀取數據_nop_();SCLK = 0;_nop_(); } RST = 0;//傳送數據結束_nop_(); }

2.讀操作


uchar Ds1302Read(uchar addr) {uchar n,dat,dat1;RST = 0;_nop_();SCLK = 0;//先將SCLK置低電平。_nop_();RST = 1;//然后將RST(CE)置高電平。_nop_();for(n=0; n<8; n++)//開始傳送八位地址命令{DSIO = addr & 0x01;//數據從低位開始傳送addr >>= 1;SCLK = 1;//數據在上升沿時,DS1302讀取數據_nop_();SCLK = 0;//DS1302下降沿時,放置數據_nop_();}_nop_();for(n=0; n<8; n++)//讀取8位數據{dat1 = DSIO;//從最低位開始接收dat = (dat>>1) | (dat1<<7);SCLK = 1;_nop_();SCLK = 0;//DS1302下降沿時,放置數據_nop_();}RST = 0;_nop_(); //以下為DS1302復位的穩定時間,必須的。SCLK = 1;_nop_();DSIO = 0;_nop_();DSIO = 1;_nop_();return dat; }

3.初始化

void Ds1302Init() {uchar n;Ds1302Write(0x8E,0X00); //禁止寫保護,就是關閉寫保護功能for (n=0; n<7; n++)//寫入7個字節的時鐘信號:分秒時日月周年{Ds1302Write(WRITE_RTC_ADDR[n],TIME[n]); }Ds1302Write(0x8E,0x80); //打開寫保護功能 }

4.讀取時鐘信息

void Ds1302ReadTime() {uchar n;for (n=0; n<7; n++)//讀取7個字節的時鐘信號:分秒時日月周年{TIME[n] = Ds1302Read(READ_RTC_ADDR[n]);}}




總結

以上是生活随笔為你收集整理的DS1302时钟模块简单介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。