摘要:它通過(guò)一個(gè)簡(jiǎn)單的串行接口與微處理器通信。對(duì)于少于天的月份,月末日期會(huì)自動(dòng)調(diào)整,包括閏年的更正。通過(guò)使用同步串行通信簡(jiǎn)化了與微處理器的接口。否則寫(xiě)入將被禁用。讀取操作后立即發(fā)送的附加脈沖,數(shù)據(jù)將再次可供讀取。
DS1302 涓流充電計(jì)時(shí)芯片包含一個(gè)實(shí)時(shí)時(shí)鐘/日歷和 31 字節(jié)的靜態(tài) RAM。它通過(guò)一個(gè)簡(jiǎn)單的串行接口與微處理器通信。實(shí)時(shí)時(shí)鐘/日歷提供秒、分、小時(shí)、日、日、月和年信息。對(duì)于少于 31 天的月份,月末日期會(huì)自動(dòng)調(diào)整,包括閏年的更正。時(shí)鐘以 24 小時(shí)或 12 小時(shí)格式運(yùn)行,帶有 AM/PM 指示器。
通過(guò)使用同步串行通信簡(jiǎn)化了 DS1302 與微處理器的接口。與時(shí)鐘/RAM 通信只需要三根線:CE( R S T /over RST RST?)、I/O(數(shù)據(jù)線)和 SCLK(串行時(shí)鐘)。數(shù)據(jù)可以一次 1 個(gè)字節(jié)或最多 31 個(gè)字節(jié)的突發(fā)傳輸?shù)綍r(shí)鐘/RAM 或從時(shí)鐘/RAM 傳輸。 DS1302 旨在以極低的功耗運(yùn)行,并以低于 1μW 的功率保留數(shù)據(jù)和時(shí)鐘信息。 DS1302 是 DS1202 的后繼產(chǎn)品。除了 DS1202 的基本計(jì)時(shí)功能外,DS1302 還具有用于主電源和備用電源的雙電源引腳、用于 VCC1 的可編程涓流充電器和七個(gè)額外字節(jié)的暫存器存儲(chǔ)器的附加功能。
1)DS1302的命令組成
2)DS1302數(shù)據(jù)傳輸過(guò)程
在開(kāi)始傳輸任何內(nèi)容之前,必須將 CE 引腳拉高,以便與芯片通話。 (選擇)
之后,發(fā)送命令字節(jié),通知 DS1302 將進(jìn)行的操作。 (無(wú)論是讀還是寫(xiě),對(duì)時(shí)鐘還是 RAM。)
然后,如果執(zhí)行寫(xiě)操作,則將要寫(xiě)入的數(shù)據(jù)發(fā)送到 RAM 或時(shí)鐘中,或者如果執(zhí)行讀操作,則可以
從時(shí)鐘或 RAM 中讀取數(shù)據(jù)。
如果從 DS1302 讀取數(shù)據(jù),則在寫(xiě)入命令字節(jié)的最后一位后的第一個(gè)下降沿上,數(shù)據(jù)將可用。相反,寫(xiě)入 DS1302 發(fā)生在命令字節(jié)傳輸后的低電平到高電平轉(zhuǎn)換。要記住的四個(gè)注意事項(xiàng),是所有發(fā)送和接收字節(jié)都是 LSB 優(yōu)先,在命令字節(jié)和數(shù)據(jù)字節(jié)之后的寫(xiě)操作中發(fā)送到 DS1302 的附加 SCLK 脈沖將被忽略。
讀取操作后立即發(fā)送的附加 SCLK 脈沖,數(shù)據(jù)將再次可供讀取。最后,當(dāng)與 DS1302 通信時(shí),微控制器的時(shí)鐘應(yīng)處于 2MHZ 的最大速度,如下面的數(shù)據(jù)表所示。如果使用不同的速度,那么必須校準(zhǔn)頻率以滿足 DS1302 的需要,并將其重新校準(zhǔn)為之前的頻率。
3)DS1302設(shè)置
DS1302的寄存器如下:
從左邊開(kāi)始,前兩列是指命令字節(jié)。 是否要讀取或?qū)懭?RTC 或 RAM。從 (bit7 到 bit0) 的列是指它將在 RTC 或 RAM 中傳輸?shù)臄?shù)據(jù)字節(jié)。
1)發(fā)送數(shù)據(jù)
// 發(fā)送一位節(jié)數(shù)據(jù)void ds1302_send(unsigned char byte_t) { unsigned char mask = 0x01; IO_OUT(DS1302_DDR, DS1302_SIO); do { IO_CLR(DS1302_PORT, DS1302_SCK); if (byte_t & mask) IO_SET(DS1302_PORT, DS1302_SIO); else IO_CLR(DS1302_PORT, DS1302_SIO); IO_SET(DS1302_PORT, DS1302_SCK); mask = mask << 1; } while (mask); IO_CLR(DS1302_PORT, DS1302_SCK);}// 向指定寄存寫(xiě)數(shù)據(jù)void ds1302_write(unsigned char ch, unsigned char byte_t) { ds1302_select(DS1302_CS); ds1302_send(ch | DS1302_CMD_WRITE); ds1302_send(byte_t); ds1302_deselect(DS1302_CS); }
2)讀數(shù)據(jù)
// 讀取一位數(shù)據(jù)unsigned char ds1302_get(void) { unsigned char mask = 0x01; unsigned char tmp = 0x00; IO_IN(DS1302_DDR, DS1302_SIO); do { IO_CLR(DS1302_PORT, DS1302_SCK); NOP(); NOP(); if (DS1302_PORT_IN & DS1302_SIO) tmp |= mask; else tmp |= 0x00; IO_SET(DS1302_PORT, DS1302_SCK); mask = mask << 1; } while (mask); IO_CLR(DS1302_PORT, DS1302_SCK); return tmp;}// 讀指定寄存器數(shù)據(jù)unsigned char ds1302_read(unsigned char ch) { unsigned char tmp; ds1302_select(DS1302_CS); ds1302_send(ch | DS1302_CMD_READ); tmp = ds1302_get(); ds1302_deselect(DS1302_CS); return tmp; }
3)年、月、日、時(shí)、分秒設(shè)置與讀取
// 秒設(shè)置與讀取#define ds1302_sec_write(n) ds1302_write(DS1302_SEC, (n)) #define ds1302_sec_read() ds1302_read(DS1302_SEC) // 分設(shè)置與讀取#define ds1302_min_write(n) ds1302_write(DS1302_MIN, (n)) #define ds1302_min_read() ds1302_read(DS1302_MIN) // 時(shí)設(shè)置與讀取#define ds1302_hour_write(n) ds1302_write(DS1302_HOUR, (n))#define ds1302_hour_read() ds1302_read(DS1302_HOUR) // 一個(gè)月的日設(shè)置與讀取#define ds1302_mdat_write(n) ds1302_write(DS1302_MDAT, (n)) #define ds1302_mdat_read() ds1302_read(DS1302_MDAT) // 月讀取與設(shè)置#define ds1302_mon_write(n) ds1302_write(DS1302_MON, (n)) #define ds1302_mon_read() ds1302_read(DS1302_MON) // 一周的日設(shè)置與讀取#define ds1302_wday_write(n) ds1302_write(DS1302_WDAY, (n))#define ds1302_wday_read() ds1302_read(DS1302_WDAY)// 年的設(shè)置與讀取#define ds1302_year_write(n) ds1302_write(DS1302_YEAR, (n))#define ds1302_year_read() ds1302_read(DS1302_YEAR)
4)主程序
//#include //we use keil c51 #include "gpio.h"#include "delay.h"#include "ds1302.h"#include "uart.h"#include "i2c_sw.h"#include unsigned int year,month,day,hours,minutes,seconds;void mcu_init(void) { uart_init(); ds1302_init(); // 初始讀取 year = ds1302_year_read(); month = ds1302_mon_read(); day = ds1302_mdat_read(); hours = ds1302_hour_read(); minutes = ds1302_min_read(); seconds = ds1302_sec_read();}int main(void) { mcu_init(); //reset the mcu uart_send_str("****DS1302****/r/n"); while (1) { year = ds1302_year_read(); month = ds1302_mon_read(); day = ds1302_mdat_read(); hours = ds1302_hour_read(); minutes = ds1302_min_read(); seconds = ds1302_sec_read(); printf("%d-%d-%d %d:%d:%d/r/n",BCD2DEC(year),BCD2DEC(month),BCD2DEC(day),BCD2DEC(hours),BCD2DEC(minutes),BCD2DEC(seconds)); delay_ms(1000); }}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/122501.html
摘要:當(dāng)小于時(shí),由供電讀數(shù)據(jù)工作時(shí)序單字節(jié)寫(xiě)入上升沿置高電平,下降沿置低電平。當(dāng)總線控制器把數(shù)據(jù)線從高電平拉到低電平時(shí),讀時(shí)序開(kāi)始,數(shù)據(jù)線必須至少保持然后總線被釋放見(jiàn)圖。因此,總線控制器在讀時(shí)序開(kāi)始后必須停止把腳驅(qū)動(dòng)為低電平以讀取腳狀態(tài)。 目錄 一、前言 二、總體的設(shè)計(jì)思路 (一)使用器材 (二...
摘要:現(xiàn)在,單片機(jī)的名稱不再是特指公司推出的系列單片機(jī),而是對(duì)兼容英特爾指令系統(tǒng)的單片機(jī)的統(tǒng)稱。單片機(jī)主要品牌及其產(chǎn)品英特爾,等艾特梅爾,,等飛利浦華邦達(dá)拉斯西門(mén)子等公司的許多產(chǎn)品宏晶系列系列系列等。 ...
摘要:設(shè)計(jì)簡(jiǎn)介本設(shè)計(jì)是基于藍(lán)牙的超聲波無(wú)線測(cè)距的設(shè)計(jì),主要實(shí)現(xiàn)以下功能實(shí)現(xiàn)通過(guò)測(cè)量當(dāng)前溫度值實(shí)現(xiàn)通過(guò)溫差補(bǔ)償法公式修改超聲波在當(dāng)前空氣中的傳播速度實(shí)現(xiàn)通過(guò)超聲波傳感器測(cè)量距離值。 設(shè)計(jì)簡(jiǎn)介: 本設(shè)計(jì)是基于藍(lán)牙的超聲波無(wú)線測(cè)距的設(shè)計(jì),主要實(shí)現(xiàn)以下功能: ① 實(shí)現(xiàn)通過(guò)DS18B20測(cè)量當(dāng)前溫度值 ② ...
摘要:可是在現(xiàn)實(shí)操作過(guò)程中總有一種方式出現(xiàn)問(wèn)題,這就不得不提到現(xiàn)實(shí)情況下單片機(jī)的驅(qū)動(dòng)能力對(duì)實(shí)驗(yàn)結(jié)果的影響。但是在現(xiàn)實(shí)中由于單片機(jī)驅(qū)動(dòng)能力的影響往往第一種是無(wú)法點(diǎn)亮燈的。 一、LED燈與單片機(jī)的連接方式 ? ? ? ? ?在proteus仿真中,無(wú)論LED燈是負(fù)極連接IO端口,正極通過(guò)電阻連接VCC...
摘要:設(shè)計(jì)簡(jiǎn)介本設(shè)計(jì)是基于單片機(jī)的藍(lán)牙控制窗簾電路系統(tǒng),主要實(shí)現(xiàn)以下功能可通過(guò)顯示溫濕度光照強(qiáng)度窗簾狀態(tài)和模式可通過(guò)按鍵調(diào)整光照強(qiáng)度最小值可通過(guò)藍(lán)牙連接手機(jī)進(jìn)行遠(yuǎn)程控制可通過(guò)獲取溫濕度可通過(guò)光敏電阻獲取光照強(qiáng)度。 設(shè)計(jì)簡(jiǎn)介: 本設(shè)計(jì)是基于單片機(jī)的藍(lán)牙控制窗簾電路系統(tǒng),主要實(shí)現(xiàn)以下功能: 可通過(guò)LC...
閱讀 670·2023-04-26 02:03
閱讀 1041·2021-11-23 09:51
閱讀 1154·2021-10-14 09:42
閱讀 1747·2021-09-13 10:23
閱讀 971·2021-08-27 13:12
閱讀 848·2019-08-30 11:21
閱讀 1007·2019-08-30 11:14
閱讀 1051·2019-08-30 11:09