串行時(shí)鐘電路現(xiàn)在流行起來了,DS1302時(shí)鐘芯片便是其中最受歡迎的一種主要是因?yàn)樗?a target="_blank">接口簡單、價(jià)格低廉、使用方便,可以提供秒、分、小時(shí)、日期、月、年等信息,并且還有軟件自動(dòng)調(diào)整的能力,可以通過配置AM/PM來決定采用24小時(shí)格式還是12小時(shí)格式。今天我們就來了解一下ds1302時(shí)鐘芯片萬年歷,主要通過ds1302時(shí)鐘芯片萬年歷的原理和應(yīng)用、操作流程來具體分析,最后奉上DS1302萬年歷電路展示圖。
DS1302在萬年歷的原理和應(yīng)用
DS1302是DALLAS公司的一種具有涓細(xì)電流充電能力的電路,主要特點(diǎn)是采用串行數(shù)據(jù)傳輸,可為掉電保護(hù)電源提供可編程的充電功能,并且可以關(guān)閉充電功能。采用普通32.768kHz晶振。
是一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。
最值得談?wù)摰膽?yīng)該就是萬年歷的應(yīng)用了,因?yàn)樗?a href="http://hljzzgx.com/tags/寄存器/" target="_blank">寄存器讓萬年歷得一個(gè)更好的展示。DS1302有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時(shí)間寄存器及其控制字見表1。
此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。
DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個(gè)字節(jié),命令控制字為FEH(寫)、FFH(讀)。我們說一下關(guān)于DS1302萬年歷的具體操作流程。
DS1302萬年歷的操作流程
第一,首先要通過8eH將寫保護(hù)去掉,這樣我們才能將日期,時(shí)間的初值寫時(shí)各個(gè)寄存器。
第二,然后就可以對(duì)80H、82H、84H、86H、88H、8AH、8CH進(jìn)行初值的寫入。同時(shí)也通過秒寄存器將位7的CH值改成0,這樣DS1302就開始走時(shí)運(yùn)行了。
第三,將寫保護(hù)寄存器再寫為80H,防止誤改寫寄存器的值。
第四,不斷讀取80H-8CH的值,將他們轉(zhuǎn)化為十進(jìn)制后顯示出來就可以啦,之前我們說過,DS1302讀出的數(shù)據(jù)是BCD碼,所以需要轉(zhuǎn)換一下。
操作代碼
/*************時(shí)鐘顯示***************/
void init_1602_ds1302()
{
write_sfm2_ds1302(1,1,shi); //顯示時(shí)
write_sfm2_ds1302(1,4,fen); //顯示分
write_sfm2_ds1302(1,7,miao); //顯示秒
write_week(2,12,week);
//write_sfm1(1,14,week); //顯示星期
write_sfm3_18B20(1,11,temperature); //顯示溫度
if(flag_nl == 0) //顯示陽歷
{
write_sfm2_ds1302(2,2,nian); //顯示年
write_sfm2_ds1302(2,5,yue); //顯示月
write_sfm2_ds1302(2,8,ri); //顯示日
}
else //顯示農(nóng)歷
{
write_sfm2_ds1302(2,2,n_nian); //顯示年
write_sfm2_ds1302(2,5,n_yue); //顯示月
write_sfm2_ds1302(2,8,n_ri); //顯示日
}
評(píng)論
查看更多