串行時鐘電路現在流行起來了,DS1302時鐘芯片便是其中最受歡迎的一種主要是因為它的接口簡單、價格低廉、使用方便,可以提供秒、分、小時、日期、月、年等信息,并且還有軟件自動調整的能力,可以通過配置AM/PM來決定采用24小時格式還是12小時格式。今天我們就來了解一下ds1302時鐘芯片萬年歷,主要通過ds1302時鐘芯片萬年歷的原理和應用、操作流程來具體分析,最后奉上DS1302萬年歷電路展示圖。
DS1302在萬年歷的原理和應用
DS1302是DALLAS公司的一種具有涓細電流充電能力的電路,主要特點是采用串行數據傳輸,可為掉電保護電源提供可編程的充電功能,并且可以關閉充電功能。采用普通32.768kHz晶振。
是一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進行同步通信,并可采用突發方式一次傳送多個字節的時鐘信號或RAM數據。
最值得談論的應該就是萬年歷的應用了,因為它的寄存器讓萬年歷得一個更好的展示。DS1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關,存放的數據位為BCD碼形式,其日歷、時間寄存器及其控制字見表1。
此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發寄存器及與RAM相關的寄存器等。時鐘突發寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內容。
DS1302與RAM相關的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態為一個8位的字節,其命令控制字為C0H~FDH,其中奇數為讀操作,偶數為寫操作;另一類為突發方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個字節,命令控制字為FEH(寫)、FFH(讀)。我們說一下關于DS1302萬年歷的具體操作流程。
DS1302萬年歷的操作流程
第一,首先要通過8eH將寫保護去掉,這樣我們才能將日期,時間的初值寫時各個寄存器。
第二,然后就可以對80H、82H、84H、86H、88H、8AH、8CH進行初值的寫入。同時也通過秒寄存器將位7的CH值改成0,這樣DS1302就開始走時運行了。
第三,將寫保護寄存器再寫為80H,防止誤改寫寄存器的值。
第四,不斷讀取80H-8CH的值,將他們轉化為十進制后顯示出來就可以啦,之前我們說過,DS1302讀出的數據是BCD碼,所以需要轉換一下。
操作代碼
/*************時鐘顯示***************/
void init_1602_ds1302()
{
write_sfm2_ds1302(1,1,shi); //顯示時
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 //顯示農歷
{
write_sfm2_ds1302(2,2,n_nian); //顯示年
write_sfm2_ds1302(2,5,n_yue); //顯示月
write_sfm2_ds1302(2,8,n_ri); //顯示日
}
DS1302萬年歷電路圖展示

評論