實時時鐘 「RTC」的使用

2021-07-22 17:06:30 字數 2325 閱讀 1363

一、實時時鐘ds1302簡介

1. ds1302是美國dallas公司推出的一種高效能、低功耗、帶ram的實時時鐘電路。

2. 特點

a> ds1302可以對年月日周時分秒計數。時間最多計時到2023年。

b> 工作電壓:2.0 ~ 5.5 v。

c> 內部有31 x 8 ram存放臨時資料。

d> 工作溫度:-40 ~ 85℃。

e> 通過三根線通訊。

f> 雙電源供電(vcc2為主電源,vcc1為後備電源)。

g> 晶振為32.768khz。

3. 電源供電

當vcc2大於vcc1+0.2v時,vcc2給ds1302供電,否則vcc1給ds1302供電。

二、ds1302的驅動程式(僅供參考)

要改變時分秒的值,首先要知道它的位址。在上圖中可以找到對應資料的位址,然後根據位址改變它的值。

#define   ds1302_sec_add0x80

#define   ds1302_min_add0x82

#define   ds1302_hr_add0x84

#define   ds1302_date_add0x86

#define   ds1302_month_add0x88

#define   ds1302_day_add0x8a

#define   ds1302_year_add        0x8c

#define   ds1302_control_add0x8e

#define   ds1302_charger_add0x90

#define   ds1302_clkburst_add0xbe

1.write byte

時序圖如下所示,

程式僅供參考:

void ds1302_write_byte(unsigned char addr, unsigned char byte)

for(i = 0; i < 8; i++)

sck = 0;

rst = 0;

}

2.read byte時序圖如下所示,

程式僅供參考:

unsigned char ds1302_read_byte(unsigned char addr)

for(i = 0; i < 8; i++)

}rst = 0;

return temp;

}

3.write data

時序圖如下所示,

程式僅供參考:

(例-寫入時分秒)

void ds1302_write_time()

ds1302_write_byte(ds1302_control_add,0x00);

ds1302_write_byte(ds1302_hr_add,writebuf[0]);

ds1302_write_byte(ds1302_min_add,writebuf[1]);

ds1302_write_byte(ds1302_sec_add,writebuf[2]);

ds1302_write_byte(ds1302_control_add,0x80);

}

4.read data時序圖如下所示,

程式僅供參考:

(例-讀出時分秒)

void ds1302_read_time()

}

我們可以使用ds1302來計時並讀取時間,這樣可以減少微控制器的負擔。使用ds1302計時也十分精確,並且還可以在斷電的時候使用備用電池儲存時間資料。對於時間的處理也是十分的好,比如閏年的計算等。這是我自己對ds1302晶元的看法。

RTC實時時鐘

rtc的英文全稱是real time clock,翻譯過來是實時時鐘晶元.rtc是pc主機板上的晶振及相關電路組成的時鐘電路的生成脈衝,rtc經過8254電路的變頻產生乙個頻率較低一點的os 系統 時鐘tsc,系統時鐘每乙個cpu週期加一,每次系統時鐘在系統初起時通過rtc初始化。8254本身工作也...

RTC實時時鐘

系統在斷電後 需要rtc電池計時間並在系統啟動後 將這個時間給到系統時間。以此維護系統斷電後與現實時間同步 一般rtc電池需要3v的電壓 若經過擴充套件板連線 需要測量此電壓是否給到主控晶元 然後date命令可以檢視系統時間 date s 2008 08 08 12 00 00 可以通過這個命令修改...

實時時鐘RTC

1.簡述 外圍裝置控制器晶元 ich 內部,整合了實時時鐘電路 rtc 以及兩個cmos組成的靜態儲存器 cmos ram 通常為128b rtc負責計時,由1個32.768khz的石英晶體振盪器驅動,經分頻後用於cmos ram進行每秒一次的時間重新整理 cmos ram中時間資訊如下表所示,前1...