標(biāo)題: 關(guān)于ds1302的問(wèn)題 [打印本頁(yè)]

作者: ccdd    時(shí)間: 2010-9-3 15:52
標(biāo)題: 關(guān)于ds1302的問(wèn)題
有個(gè)問(wèn)題就是,ds1302的晶振有沒(méi)必要加6PF的電容呢?我發(fā)現(xiàn)在51hei-5開(kāi)發(fā)板上用手放在晶振上,時(shí)間走的就明顯的快,不知道是怎么回事.
[此貼子已經(jīng)被作者于2010-9-3 15:52:27編輯過(guò)]

作者: admin    時(shí)間: 2010-9-3 16:52
完全沒(méi)有必要加6PF的電容,因?yàn)閐s1302芯片的內(nèi)部已經(jīng)集成了這個(gè)電容,用手摸那個(gè)很小的圓筒晶振會(huì)導(dǎo)致會(huì)導(dǎo)致各種不可預(yù)見(jiàn)的錯(cuò)誤,因?yàn)槟忝先ゾ褪歉淖兞怂姆植茧娙,以及人體所帶的靜電還有肯能造成干擾。所以一定不要用手去摸小圓筒晶振
作者: yejiaixiyi    時(shí)間: 2010-9-4 16:15
我用ds1302做的電子鐘,老是會(huì)自己走快。。 半個(gè)月大概快了兩分鐘
作者: admin    時(shí)間: 2010-9-5 01:12

  你的15天快120秒,算一起來(lái)一天也有8秒的誤差,你這種情況在實(shí)際應(yīng)用中是很常見(jiàn)的,解決方法:

 

   用DS1302制作電子時(shí)鐘,由于32678K的晶振誤差原因造成時(shí)鐘走時(shí)不準(zhǔn)確,在國(guó)內(nèi)能買(mǎi)到的晶振精度都不高,每天誤差都差6到10秒,如果購(gòu)買(mǎi)國(guó)外的高精度的晶振價(jià)格又非常高,不如用單片機(jī)的計(jì)時(shí)器編程走時(shí)更準(zhǔn)確,可以進(jìn)行誤差調(diào)整,本人作了幾個(gè)用DS1302時(shí)鐘,由于32678K晶振的原因,每天都快6-9秒之間,原來(lái)用的方法是每天自動(dòng)校一次,由于每天的誤差不是整數(shù),比如每天快7.6秒,這樣每天就得自動(dòng)校8秒,又造成每天慢0.4秒,每月誤差又是12秒,走時(shí)還是不準(zhǔn)確,本人改成了每差1秒校正一次的方法,原理是:比如每天快7.6秒,24*60/7.6=189,也就是189分鐘快1秒,每189分鐘就自動(dòng)校一次時(shí)鐘,這樣校時(shí)理論上每年的誤差最大不到6秒,本人的時(shí)鐘4個(gè)月誤差不到1秒,屬于相當(dāng)準(zhǔn)確嘍,現(xiàn)在提供給大家分享。

設(shè)計(jì)原理是:

由于程序的大小和原理不同,每分鐘讀取DS1302的次數(shù)也不同,這樣先設(shè)置二個(gè)變量,一個(gè)是分鐘比較變量,用于判斷分鐘不等相等時(shí)計(jì)數(shù)器變量加1,另一個(gè)是校時(shí)計(jì)數(shù)變量,用于校時(shí)時(shí)間計(jì)數(shù),當(dāng)計(jì)數(shù)器變量等于189時(shí),DS1302自動(dòng)修正一次,程序如下:
代碼:

變量設(shè)置
BJBL DATA 20H ;分鐘比較變量,用于判斷分鐘不等相等時(shí)計(jì)數(shù)器加1
JSBL DATA 21H ;校時(shí)計(jì)數(shù)變量,用于校時(shí)時(shí)間計(jì)數(shù)
MOV BJBL,#00H
MOV JSBL,#00H
自動(dòng)校時(shí)子程序
AUTOXS:
MOV A,MIN
CJNE A,BJBL,AS1
JMP AS2
AS1: MOV BJBL,A
MOV A,JSBL
INC A
MOV JSBL,A
AS2: MOV A,JSBL
CJNE A,#0D3H,AS5
MOV A,SEC
CJNE A,#01H,AS5 ;秒等于1時(shí);氐0秒

MOV R1,#8EH ;寫(xiě)保護(hù)寄存器
MOV R0,#00H ;允許寫(xiě)入
LCALL WRITE ;調(diào)用寫(xiě)DS1302程序

MOV R1,#80H ;寫(xiě)秒寄存器
MOV R0,#00H ;啟動(dòng)振蕩器工作
LCALL WRITE ;調(diào)用寫(xiě)DS1302程序

MOV R1,#8EH ;寫(xiě)保護(hù)寄存器
MOV R0,#80H ;禁止寫(xiě)入
LCALL WRITE ;調(diào)用寫(xiě)DS1302程序

MOV JSBL,#00H
AS5: RET
將此子程序在每次讀取DS1302時(shí)調(diào)用

作者: huojyxt    時(shí)間: 2010-10-11 22:39
管理員很耐心哦,樓主也不說(shuō)聲謝謝。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1