DS1302是由美國(guó)DALLAS公司推出的具有涓細(xì)電流充電能力的低功耗實(shí)時(shí)時(shí)鐘芯片。我們知道DS1302 是實(shí)時(shí)時(shí)鐘芯片,既然是時(shí)鐘芯片它肯定還可以用作一般意義上的定時(shí)器(定時(shí)時(shí)間以秒為單位)。
DS1302的特點(diǎn)
DS1302是DALLAS(達(dá)拉斯)公司出的一款涓流充電時(shí)鐘芯片,2001年DALLAS被MAXIM(美信)收購(gòu),因此我們看到的DS1302的數(shù)據(jù)手冊(cè)既有DALLAS的標(biāo)志,又有MAXIM的標(biāo)志,大家了解即可。DS1302實(shí)時(shí)時(shí)鐘芯片廣泛應(yīng)用于電話、傳真、便攜式儀器等產(chǎn)品領(lǐng)域,他的主要性能指標(biāo)如下:
1、DS1302是一個(gè)實(shí)時(shí)時(shí)鐘芯片,可以提供秒、分、小時(shí)、日期、月、年等信息,并且還有軟件自動(dòng)調(diào)整的能力,可以通過配置AM/PM來決定采用24小時(shí)格式還是12小時(shí)格式。
2、擁有31字節(jié)數(shù)據(jù)存儲(chǔ)RAM。
3、串行I/O通信方式,相對(duì)并行來說比較節(jié)省IO口的使用。
4、DS1302的工作電壓比較寬,大概是2.0V~5.5V都可以正常工作。
5、DS1302這種時(shí)鐘芯片功耗一般都很低,它在工作電壓2.0V的時(shí)候,工作電流小于300nA。
6、DS1302共有8個(gè)引腳,有兩種封裝形式,一種是DIP-8封裝,芯片寬度(不含引腳)是300mil,一種是SOP-8封
裝,有兩種寬度,一種是150mil,一種是208mil.我1]看一下DS1302的引腳封裝圖,如圖1所示。

ds1302做計(jì)時(shí)器準(zhǔn)確嗎
ds1302是一塊高性能芯片,是專用的時(shí)鐘芯片,它的內(nèi)部有31個(gè)寄存器,具有閏年自動(dòng)補(bǔ)充功能,非常適合做計(jì)時(shí)器,那么ds1302是否準(zhǔn)確了?理論上來說是沒有絕對(duì)準(zhǔn)確,只是誤差小而已 上面說的定時(shí) 并不是讓你用定時(shí)器去讀取,定時(shí)不等于定時(shí)器只是讓你一定時(shí)間讀取一次時(shí)鐘芯片的時(shí)間。
網(wǎng)友關(guān)于ds1302做計(jì)時(shí)器是否準(zhǔn)確的問答
問:單片機(jī)需要定時(shí)去讀取1302內(nèi)部寄存器的數(shù)據(jù),就是時(shí)間,秒,分,時(shí),年,月,日等。
答:它是專業(yè)的時(shí)鐘芯片,內(nèi)部實(shí)現(xiàn)準(zhǔn)確計(jì)時(shí)功能,只有晶振搞準(zhǔn)了,負(fù)載電容對(duì)了就可以。
追問1:?jiǎn)纹瑱C(jī)的定時(shí)器本身不準(zhǔn)確,嗯,我有點(diǎn)不明白定時(shí)器既然不準(zhǔn)確,為什么還需要定時(shí)從時(shí)鐘芯片讀取時(shí)間數(shù)據(jù)??
? ? ? ? ? 2:時(shí)鐘芯片本身是否能實(shí)現(xiàn)準(zhǔn)確定時(shí),還是需要單片機(jī)的定時(shí)器配合才能完成定時(shí)?
追答定時(shí)從時(shí)鐘芯片讀取數(shù)據(jù),并一定要用定時(shí)器哦。時(shí)鐘芯片計(jì)時(shí)是比較準(zhǔn)確的,但也有誤差,不是絕對(duì)準(zhǔn)確。但比單片機(jī)定時(shí)器要好很多了。
程序功能:
1定時(shí)最大范圍:小時(shí)
2 隨時(shí)通過控制按鍵輸入定時(shí)時(shí)間
3一直顯示DS1302的實(shí)時(shí)時(shí)間
分析如F: 用DS1302 作為定時(shí)器首先需要定義兩個(gè)數(shù)組,一個(gè)用作讀取DS1302 的實(shí)
時(shí)時(shí)間now[]; 另一個(gè)用作需要定時(shí)時(shí)間暫存time[]; 我們知道從DS1302 中讀取的數(shù)據(jù)格
式是壓縮BCD碼,即now[7]={秒,分,時(shí),日,月,周,年}; 當(dāng)控制按鍵按下時(shí)time[]存放
的應(yīng)該是主觀定時(shí)時(shí)問,之后要將其修改成壓縮BCD碼并與當(dāng)前時(shí)間now[]的數(shù)據(jù)相加;
需要修正數(shù)據(jù)。
在控制按鍵按下后,一次輸入時(shí)兩位分兩位秒兩位; 若想要定時(shí)1分59秒,那么對(duì)
應(yīng)輸入的鍵值應(yīng)該是time[6]= {0,0,0,1,5,9}_》_-=[0Oltime[1]= 時(shí)time[2]time[3]= 分
time[4]time[5]= 秒這樣的表示與從DS1302讀出的數(shù)據(jù)不一致,需要如下修改:
1秒處理:
time[4]《《= 4;
time[4]= time[4]+ time[]//time[4] 為秒的BCD 石馬
time[2] 《《= 4;
2 分處理:
time[2]=time[2]+ timc[3];//ime[2] 為分的BCD 5 馬
time[0]《《= 4;
3 時(shí)處理:
time[0]= time[O] + time[ ];/im[O] 為時(shí)的BCD 碼
time[5]=time[0];
time[0]= time[4;秒
time[1]= time[2];分
docin.com
time[2]= time[$]/時(shí)
time[3]= time[4]= time[5]=0;
接下來就是要處理進(jìn)位關(guān)系:
for( DATA_A= 0; DATA_A 《 3 ;DATA_A++)
time[DATA_A]=time[DATA_A] +now[DATA_A];// 當(dāng)前8 間與定時(shí)時(shí)間相加
if(ime[DATA_A]&0x0)》0x09 )
if( DATA_A== 2 )break;
time[DATA_A] +=6;// 加6 修正
}
if(carry_flag )
time[DATA_A] += 1;
if(time[ DATA_A]&0x0f)== 0x0a)
{
time[DATA_A] &=0xf0;
time[DATA_A] +=0x10;
if((ime[DATA_A]&0xf0)》0X50)
{
time[DATA_A]-= 0x60;
carry_flag=1;
elsecarry_flag= 0;
}這樣基本上完成對(duì)DS1302的數(shù)據(jù)處理。

電子發(fā)燒友App























評(píng)論